From 588737a12e6407c1f6e366b09bee289ca64b9aec Mon Sep 17 00:00:00 2001 From: Ion Dormenco Date: Thu, 7 Aug 2025 16:52:13 +0300 Subject: [PATCH 01/61] Upgrade strapi --- server2/.env.example | 19 + server2/.gitignore | 131 + server2/README.md | 61 + server2/config/admin.ts | 20 + server2/config/api.ts | 7 + server2/config/database.ts | 77 + server2/config/middlewares.ts | 47 + server2/config/plugins.ts | 112 + server2/config/server.ts | 7 + .../config/sync/user-role.authenticated.json | 61 + server2/config/sync/user-role.fdsc.json | 70 + server2/config/sync/user-role.mentor.json | 46 + server2/config/sync/user-role.public.json | 55 + server2/database/migrations/.gitkeep | 0 server2/favicon.png | Bin 0 -> 497 bytes server2/package.json | 48 + server2/pnpm-lock.yaml | 15475 ++++++++++++++++ server2/public/robots.txt | 3 + server2/public/uploads/.gitkeep | 0 server2/src/admin/app.example.tsx | 37 + server2/src/admin/tsconfig.json | 20 + server2/src/admin/vite.config.example.ts | 12 + server2/src/api/.gitkeep | 0 .../content-types/activity-type/schema.json | 17 + .../controllers/activity-type.ts | 7 + .../api/activity-type/routes/activity-type.ts | 7 + .../activity-type/services/activity-type.ts | 7 + .../content-types/activity/schema.json | 47 + .../src/api/activity/controllers/activity.ts | 7 + server2/src/api/activity/routes/activity.ts | 7 + server2/src/api/activity/services/activity.ts | 7 + .../content-types/dimension/schema.json | 38 + .../api/dimension/controllers/dimension.ts | 7 + server2/src/api/dimension/routes/dimension.ts | 7 + .../src/api/dimension/services/dimension.ts | 7 + .../domain/content-types/domain/schema.json | 23 + server2/src/api/domain/controllers/domain.ts | 7 + server2/src/api/domain/routes/domain.ts | 7 + server2/src/api/domain/services/domain.ts | 7 + .../content-types/evaluation/schema.json | 30 + .../api/evaluation/controllers/evaluation.ts | 7 + .../src/api/evaluation/routes/evaluation.ts | 7 + .../src/api/evaluation/services/evaluation.ts | 7 + .../matrix/content-types/matrix/schema.json | 19 + server2/src/api/matrix/controllers/matrix.ts | 7 + server2/src/api/matrix/routes/matrix.ts | 7 + server2/src/api/matrix/services/matrix.ts | 7 + .../mentorship-request/schema.json | 26 + .../controllers/mentorship-request.ts | 7 + .../routes/mentorship-request.ts | 7 + .../services/mentorship-request.ts | 7 + .../program/content-types/program/schema.json | 41 + .../src/api/program/controllers/program.ts | 7 + server2/src/api/program/routes/program.ts | 7 + server2/src/api/program/services/program.ts | 7 + .../report/content-types/report/schema.json | 35 + server2/src/api/report/controllers/report.ts | 7 + server2/src/api/report/routes/report.ts | 7 + server2/src/api/report/services/report.ts | 7 + .../src/components/evaluation/dimension.json | 20 + .../src/components/evaluation/question.json | 16 + server2/src/components/matrix/dimension.json | 16 + server2/src/components/matrix/question.json | 31 + server2/src/extensions/.gitkeep | 0 .../content-types/user/lifecycles.ts | 91 + .../content-types/user/schema.json | 212 + .../users-permissions/routes/user.ts | 69 + .../users-permissions/services/magic-link.ts | 38 + .../users-permissions/strapi-server.ts | 53 + server2/src/index.ts | 20 + server2/tsconfig.json | 43 + server2/types/generated/components.d.ts | 72 + server2/types/generated/contentTypes.d.ts | 1328 ++ 73 files changed, 18782 insertions(+) create mode 100644 server2/.env.example create mode 100644 server2/.gitignore create mode 100644 server2/README.md create mode 100644 server2/config/admin.ts create mode 100644 server2/config/api.ts create mode 100644 server2/config/database.ts create mode 100644 server2/config/middlewares.ts create mode 100644 server2/config/plugins.ts create mode 100644 server2/config/server.ts create mode 100644 server2/config/sync/user-role.authenticated.json create mode 100644 server2/config/sync/user-role.fdsc.json create mode 100644 server2/config/sync/user-role.mentor.json create mode 100644 server2/config/sync/user-role.public.json create mode 100644 server2/database/migrations/.gitkeep create mode 100644 server2/favicon.png create mode 100644 server2/package.json create mode 100644 server2/pnpm-lock.yaml create mode 100644 server2/public/robots.txt create mode 100644 server2/public/uploads/.gitkeep create mode 100644 server2/src/admin/app.example.tsx create mode 100644 server2/src/admin/tsconfig.json create mode 100644 server2/src/admin/vite.config.example.ts create mode 100644 server2/src/api/.gitkeep create mode 100644 server2/src/api/activity-type/content-types/activity-type/schema.json create mode 100644 server2/src/api/activity-type/controllers/activity-type.ts create mode 100644 server2/src/api/activity-type/routes/activity-type.ts create mode 100644 server2/src/api/activity-type/services/activity-type.ts create mode 100644 server2/src/api/activity/content-types/activity/schema.json create mode 100644 server2/src/api/activity/controllers/activity.ts create mode 100644 server2/src/api/activity/routes/activity.ts create mode 100644 server2/src/api/activity/services/activity.ts create mode 100644 server2/src/api/dimension/content-types/dimension/schema.json create mode 100644 server2/src/api/dimension/controllers/dimension.ts create mode 100644 server2/src/api/dimension/routes/dimension.ts create mode 100644 server2/src/api/dimension/services/dimension.ts create mode 100644 server2/src/api/domain/content-types/domain/schema.json create mode 100644 server2/src/api/domain/controllers/domain.ts create mode 100644 server2/src/api/domain/routes/domain.ts create mode 100644 server2/src/api/domain/services/domain.ts create mode 100644 server2/src/api/evaluation/content-types/evaluation/schema.json create mode 100644 server2/src/api/evaluation/controllers/evaluation.ts create mode 100644 server2/src/api/evaluation/routes/evaluation.ts create mode 100644 server2/src/api/evaluation/services/evaluation.ts create mode 100644 server2/src/api/matrix/content-types/matrix/schema.json create mode 100644 server2/src/api/matrix/controllers/matrix.ts create mode 100644 server2/src/api/matrix/routes/matrix.ts create mode 100644 server2/src/api/matrix/services/matrix.ts create mode 100644 server2/src/api/mentorship-request/content-types/mentorship-request/schema.json create mode 100644 server2/src/api/mentorship-request/controllers/mentorship-request.ts create mode 100644 server2/src/api/mentorship-request/routes/mentorship-request.ts create mode 100644 server2/src/api/mentorship-request/services/mentorship-request.ts create mode 100644 server2/src/api/program/content-types/program/schema.json create mode 100644 server2/src/api/program/controllers/program.ts create mode 100644 server2/src/api/program/routes/program.ts create mode 100644 server2/src/api/program/services/program.ts create mode 100644 server2/src/api/report/content-types/report/schema.json create mode 100644 server2/src/api/report/controllers/report.ts create mode 100644 server2/src/api/report/routes/report.ts create mode 100644 server2/src/api/report/services/report.ts create mode 100644 server2/src/components/evaluation/dimension.json create mode 100644 server2/src/components/evaluation/question.json create mode 100644 server2/src/components/matrix/dimension.json create mode 100644 server2/src/components/matrix/question.json create mode 100644 server2/src/extensions/.gitkeep create mode 100644 server2/src/extensions/users-permissions/content-types/user/lifecycles.ts create mode 100644 server2/src/extensions/users-permissions/content-types/user/schema.json create mode 100644 server2/src/extensions/users-permissions/routes/user.ts create mode 100644 server2/src/extensions/users-permissions/services/magic-link.ts create mode 100644 server2/src/extensions/users-permissions/strapi-server.ts create mode 100644 server2/src/index.ts create mode 100644 server2/tsconfig.json create mode 100644 server2/types/generated/components.d.ts create mode 100644 server2/types/generated/contentTypes.d.ts diff --git a/server2/.env.example b/server2/.env.example new file mode 100644 index 00000000..5667c4e5 --- /dev/null +++ b/server2/.env.example @@ -0,0 +1,19 @@ + +HOST=0.0.0.0 +PORT=1337 +APP_KEYS="toBeModified1,toBeModified2" +API_TOKEN_SALT=tobemodified +ADMIN_JWT_SECRET=tobemodified +JWT_SECRET=tobemodified +CLIENT_PUBLIC_URL=tobemodified + +# @strapi-community/dockerize variables + +DATABASE_HOST=localhost +DATABASE_PORT=5432 +DATABASE_NAME=strapi +DATABASE_USERNAME=strapi +DATABASE_PASSWORD=strapi +NODE_ENV=development +DATABASE_CLIENT=postgres +# @strapi-community/dockerize end variables diff --git a/server2/.gitignore b/server2/.gitignore new file mode 100644 index 00000000..bc4262f4 --- /dev/null +++ b/server2/.gitignore @@ -0,0 +1,131 @@ +############################ +# OS X +############################ + +.DS_Store +.AppleDouble +.LSOverride +Icon +.Spotlight-V100 +.Trashes +._* + + +############################ +# Linux +############################ + +*~ + + +############################ +# Windows +############################ + +Thumbs.db +ehthumbs.db +Desktop.ini +$RECYCLE.BIN/ +*.cab +*.msi +*.msm +*.msp + + +############################ +# Packages +############################ + +*.7z +*.csv +*.dat +*.dmg +*.gz +*.iso +*.jar +*.rar +*.tar +*.zip +*.com +*.class +*.dll +*.exe +*.o +*.seed +*.so +*.swo +*.swp +*.swn +*.swm +*.out +*.pid + + +############################ +# Logs and databases +############################ + +.tmp +*.log +*.sql +*.sqlite +*.sqlite3 + + +############################ +# Misc. +############################ + +*# +ssl +.idea +nbproject +public/uploads/* +!public/uploads/.gitkeep +.tsbuildinfo +.eslintcache + +############################ +# Node.js +############################ + +lib-cov +lcov.info +pids +logs +results +node_modules +.node_history + +############################ +# Package managers +############################ + +.yarn/* +!.yarn/cache +!.yarn/unplugged +!.yarn/patches +!.yarn/releases +!.yarn/sdks +!.yarn/versions +.pnp.* +yarn-error.log + +############################ +# Tests +############################ + +coverage + +############################ +# Strapi +############################ + +.env +license.txt +exports +.strapi +dist +build +.strapi-updater.json +.strapi-cloud.json \ No newline at end of file diff --git a/server2/README.md b/server2/README.md new file mode 100644 index 00000000..931729f1 --- /dev/null +++ b/server2/README.md @@ -0,0 +1,61 @@ +# 🚀 Getting started with Strapi + +Strapi comes with a full featured [Command Line Interface](https://docs.strapi.io/dev-docs/cli) (CLI) which lets you scaffold and manage your project in seconds. + +### `develop` + +Start your Strapi application with autoReload enabled. [Learn more](https://docs.strapi.io/dev-docs/cli#strapi-develop) + +``` +npm run develop +# or +yarn develop +``` + +### `start` + +Start your Strapi application with autoReload disabled. [Learn more](https://docs.strapi.io/dev-docs/cli#strapi-start) + +``` +npm run start +# or +yarn start +``` + +### `build` + +Build your admin panel. [Learn more](https://docs.strapi.io/dev-docs/cli#strapi-build) + +``` +npm run build +# or +yarn build +``` + +## ⚙️ Deployment + +Strapi gives you many possible deployment options for your project including [Strapi Cloud](https://cloud.strapi.io). Browse the [deployment section of the documentation](https://docs.strapi.io/dev-docs/deployment) to find the best solution for your use case. + +``` +yarn strapi deploy +``` + +## 📚 Learn more + +- [Resource center](https://strapi.io/resource-center) - Strapi resource center. +- [Strapi documentation](https://docs.strapi.io) - Official Strapi documentation. +- [Strapi tutorials](https://strapi.io/tutorials) - List of tutorials made by the core team and the community. +- [Strapi blog](https://strapi.io/blog) - Official Strapi blog containing articles made by the Strapi team and the community. +- [Changelog](https://strapi.io/changelog) - Find out about the Strapi product updates, new features and general improvements. + +Feel free to check out the [Strapi GitHub repository](https://github.com/strapi/strapi). Your feedback and contributions are welcome! + +## ✨ Community + +- [Discord](https://discord.strapi.io) - Come chat with the Strapi community including the core team. +- [Forum](https://forum.strapi.io/) - Place to discuss, ask questions and find answers, show your Strapi project and get feedback or just talk with other Community members. +- [Awesome Strapi](https://github.com/strapi/awesome-strapi) - A curated list of awesome things related to Strapi. + +--- + +🤫 Psst! [Strapi is hiring](https://strapi.io/careers). diff --git a/server2/config/admin.ts b/server2/config/admin.ts new file mode 100644 index 00000000..fd21d06b --- /dev/null +++ b/server2/config/admin.ts @@ -0,0 +1,20 @@ +export default ({ env }) => ({ + auth: { + secret: env('ADMIN_JWT_SECRET'), + }, + apiToken: { + salt: env('API_TOKEN_SALT'), + }, + transfer: { + token: { + salt: env('TRANSFER_TOKEN_SALT'), + }, + }, + secrets: { + encryptionKey: env('ENCRYPTION_KEY'), + }, + flags: { + nps: env.bool('FLAG_NPS', true), + promoteEE: env.bool('FLAG_PROMOTE_EE', true), + }, +}); diff --git a/server2/config/api.ts b/server2/config/api.ts new file mode 100644 index 00000000..37f7c14a --- /dev/null +++ b/server2/config/api.ts @@ -0,0 +1,7 @@ +export default { + rest: { + defaultLimit: 25, + maxLimit: 100, + withCount: true, + }, +}; diff --git a/server2/config/database.ts b/server2/config/database.ts new file mode 100644 index 00000000..b4822227 --- /dev/null +++ b/server2/config/database.ts @@ -0,0 +1,77 @@ +import path from "path"; + +export default ({ env }) => { + const client = env("DATABASE_CLIENT", "sqlite"); + + const connections = { + mysql: { + connection: { + host: env("DATABASE_HOST", "localhost"), + port: env.int("DATABASE_PORT", 3306), + database: env("DATABASE_NAME", "strapi"), + user: env("DATABASE_USERNAME", "strapi"), + password: env("DATABASE_PASSWORD", "strapi"), + ssl: env.bool("DATABASE_SSL", false) && { + key: env("DATABASE_SSL_KEY", undefined), + cert: env("DATABASE_SSL_CERT", undefined), + ca: env("DATABASE_SSL_CA", undefined), + capath: env("DATABASE_SSL_CAPATH", undefined), + cipher: env("DATABASE_SSL_CIPHER", undefined), + rejectUnauthorized: env.bool( + "DATABASE_SSL_REJECT_UNAUTHORIZED", + true + ), + }, + }, + pool: { + min: env.int("DATABASE_POOL_MIN", 2), + max: env.int("DATABASE_POOL_MAX", 10), + }, + }, + postgres: { + connection: { + connectionString: env("DATABASE_URL"), + host: env("DATABASE_HOST", "localhost"), + port: env.int("DATABASE_PORT", 5432), + database: env("DATABASE_NAME", "strapi"), + user: env("DATABASE_USERNAME", "strapi"), + password: env("DATABASE_PASSWORD", "strapi"), + ssl: env.bool("DATABASE_SSL", false) && { + key: env("DATABASE_SSL_KEY", undefined), + cert: env("DATABASE_SSL_CERT", undefined), + ca: env("DATABASE_SSL_CA", undefined), + capath: env("DATABASE_SSL_CAPATH", undefined), + cipher: env("DATABASE_SSL_CIPHER", undefined), + rejectUnauthorized: env.bool( + "DATABASE_SSL_REJECT_UNAUTHORIZED", + true + ), + }, + schema: env("DATABASE_SCHEMA", "public"), + }, + pool: { + min: env.int("DATABASE_POOL_MIN", 2), + max: env.int("DATABASE_POOL_MAX", 10), + }, + }, + sqlite: { + connection: { + filename: path.join( + __dirname, + "..", + "..", + env("DATABASE_FILENAME", ".tmp/data.db") + ), + }, + useNullAsDefault: true, + }, + }; + + return { + connection: { + client, + ...connections[client], + acquireConnectionTimeout: env.int("DATABASE_CONNECTION_TIMEOUT", 60000), + }, + }; +}; diff --git a/server2/config/middlewares.ts b/server2/config/middlewares.ts new file mode 100644 index 00000000..3cda76b6 --- /dev/null +++ b/server2/config/middlewares.ts @@ -0,0 +1,47 @@ +export default ({ env }) => [ + "strapi::errors", + { + name: "strapi::security", + config: { + contentSecurityPolicy: { + directives: { + "script-src": ["'self'", "editor.unlayer.com"], + "frame-src": ["'self'", "editor.unlayer.com"], + "img-src": [ + "'self'", + "data:", + "blob:", + "cdn.jsdelivr.net", + "strapi.io", + "s3.amazonaws.com", + `${env("AWS_BUCKET")}.s3.${env("AWS_REGION")}.amazonaws.com`, + `${env("CDN_BASE_URL")}`, + ], + "media-src": [ + "'self'", + "data:", + "blob:", + "cdn.jsdelivr.net", + "strapi.io", + "s3.amazonaws.com", + `${env("AWS_BUCKET")}.s3.${env("AWS_REGION")}.amazonaws.com`, + `${env("CDN_BASE_URL")}`, + ], + }, + }, + }, + }, + "strapi::cors", + "strapi::poweredBy", + "strapi::logger", + "strapi::query", + { + name: "strapi::body", + config: { + jsonLimit: "10mb", + }, + }, + "strapi::session", + "strapi::favicon", + "strapi::public", +]; diff --git a/server2/config/plugins.ts b/server2/config/plugins.ts new file mode 100644 index 00000000..531b6e0d --- /dev/null +++ b/server2/config/plugins.ts @@ -0,0 +1,112 @@ +export default ({ env }) => ({ + email: { + config: { + provider: "amazon-ses", + providerOptions: { + key: env("AWS_SES_KEY"), + secret: env("AWS_SES_SECRET"), + amazon: "https://email.eu-central-1.amazonaws.com", + }, + settings: { + defaultFrom: env("DEFAULT_FROM"), + defaultReplyTo: env("DEFAULT_REPLY_TO"), + }, + }, + }, + upload: { + config: { + provider: "strapi-provider-upload-aws-s3-advanced", + providerOptions: { + accessKeyId: env("AWS_ACCESS_KEY_ID"), + secretAccessKey: env("AWS_ACCESS_SECRET"), + region: env("AWS_REGION"), + params: { + bucket: env("AWS_BUCKET"), // or "Bucket", @aws-sdk requires capitalized properties, but the convention for this file is lowercased, but the plugin understands both + acl: env("AWS_BUCKET_ACL"), // or "ACL", see above + }, + baseUrl: env("CDN_BASE_URL"), // e.g. "https://cdn.example.com", this is stored in strapi's database to point to the file + prefix: env("BUCKET_PREFIX"), // e.g. "strapi-assets". If BUCKET_PREFIX contains leading or trailing slashes, they are removed internally to construct the URL safely + }, + }, + }, + "email-designer-5": { + enabled: true, + + // ⬇︎ Add the config property + config: { + editor: { + // optional - if you have a premium unlayer account + // projectId: [UNLAYER_PROJECT_ID], + + tools: { + heading: { + properties: { + text: { + value: "This is the new default text!", + }, + }, + }, + }, + options: { + features: { + colorPicker: { + presets: ["#D9E3F0", "#F47373", "#697689", "#37D67A"], + }, + }, + fonts: { + showDefaultFonts: false, + /* + * If you want use a custom font you need a premium unlayer account and pass a projectId number :-( + */ + customFonts: [ + { + label: "Anton", + value: "'Anton', sans-serif", + url: "https://fonts.googleapis.com/css?family=Anton", + }, + { + label: "Lato", + value: "'Lato', Tahoma, Verdana, sans-serif", + url: "https://fonts.googleapis.com/css?family=Lato", + }, + // ... + ], + }, + // mergeTags: [ + // { + // name: "Email", + // value: "{{= USER.username }}", + // sample: "john@doe.com", + // }, + // // ... + // ], + }, + appearance: { + theme: "dark", + panels: { + tools: { + dock: "left", + }, + }, + }, + }, + }, + }, + "config-sync": { + enabled: true, + config: { + syncDir: "config/sync/", + minify: false, + soft: false, + importOnBootstrap: false, + customTypes: [], + excludedTypes: [], + excludedConfig: [ + "core-store.plugin_users-permissions_grant", + "core-store.plugin_upload_metrics", + "core-store.strapi_content_types_schema", + "core-store.ee_information", + ], + }, + }, +}); diff --git a/server2/config/server.ts b/server2/config/server.ts new file mode 100644 index 00000000..31c8997c --- /dev/null +++ b/server2/config/server.ts @@ -0,0 +1,7 @@ +export default ({ env }) => ({ + host: env('HOST', '0.0.0.0'), + port: env.int('PORT', 1337), + app: { + keys: env.array('APP_KEYS'), + }, +}); diff --git a/server2/config/sync/user-role.authenticated.json b/server2/config/sync/user-role.authenticated.json new file mode 100644 index 00000000..53a0e1b2 --- /dev/null +++ b/server2/config/sync/user-role.authenticated.json @@ -0,0 +1,61 @@ +{ + "name": "Authenticated", + "description": "Default role given to authenticated user.", + "type": "authenticated", + "permissions": [ + { + "action": "api::dimension.dimension.find" + }, + { + "action": "api::evaluation.evaluation.create" + }, + { + "action": "api::evaluation.evaluation.find" + }, + { + "action": "api::evaluation.evaluation.findOne" + }, + { + "action": "api::evaluation.evaluation.update" + }, + { + "action": "api::matrix.matrix.find" + }, + { + "action": "api::mentorship-request.mentorship-request.create" + }, + { + "action": "api::program.program.find" + }, + { + "action": "api::report.report.create" + }, + { + "action": "api::report.report.find" + }, + { + "action": "api::report.report.findOne" + }, + { + "action": "api::report.report.update" + }, + { + "action": "plugin::upload.content-api.upload" + }, + { + "action": "plugin::users-permissions.auth.changePassword" + }, + { + "action": "plugin::users-permissions.role.find" + }, + { + "action": "plugin::users-permissions.user.find" + }, + { + "action": "plugin::users-permissions.user.findOne" + }, + { + "action": "plugin::users-permissions.user.me" + } + ] +} \ No newline at end of file diff --git a/server2/config/sync/user-role.fdsc.json b/server2/config/sync/user-role.fdsc.json new file mode 100644 index 00000000..1e3a56e5 --- /dev/null +++ b/server2/config/sync/user-role.fdsc.json @@ -0,0 +1,70 @@ +{ + "name": "FDSC", + "description": "FDSC", + "type": "fdsc", + "permissions": [ + { + "action": "api::activity-type.activity-type.find" + }, + { + "action": "api::activity.activity.find" + }, + { + "action": "api::dimension.dimension.find" + }, + { + "action": "api::dimension.dimension.findOne" + }, + { + "action": "api::domain.domain.find" + }, + { + "action": "api::evaluation.evaluation.find" + }, + { + "action": "api::evaluation.evaluation.findOne" + }, + { + "action": "api::evaluation.evaluation.update" + }, + { + "action": "api::matrix.matrix.find" + }, + { + "action": "api::program.program.create" + }, + { + "action": "api::program.program.find" + }, + { + "action": "api::program.program.findOne" + }, + { + "action": "api::program.program.update" + }, + { + "action": "api::report.report.find" + }, + { + "action": "api::report.report.findOne" + }, + { + "action": "api::report.report.update" + }, + { + "action": "plugin::users-permissions.role.find" + }, + { + "action": "plugin::users-permissions.user.create" + }, + { + "action": "plugin::users-permissions.user.find" + }, + { + "action": "plugin::users-permissions.user.findOne" + }, + { + "action": "plugin::users-permissions.user.me" + } + ] +} \ No newline at end of file diff --git a/server2/config/sync/user-role.mentor.json b/server2/config/sync/user-role.mentor.json new file mode 100644 index 00000000..befb3d9c --- /dev/null +++ b/server2/config/sync/user-role.mentor.json @@ -0,0 +1,46 @@ +{ + "name": "Mentor", + "description": "Persoana program", + "type": "mentor", + "permissions": [ + { + "action": "api::activity-type.activity-type.find" + }, + { + "action": "api::activity.activity.create" + }, + { + "action": "api::activity.activity.find" + }, + { + "action": "api::dimension.dimension.find" + }, + { + "action": "api::domain.domain.find" + }, + { + "action": "api::evaluation.evaluation.find" + }, + { + "action": "api::matrix.matrix.find" + }, + { + "action": "api::program.program.find" + }, + { + "action": "api::report.report.find" + }, + { + "action": "plugin::users-permissions.role.find" + }, + { + "action": "plugin::users-permissions.user.find" + }, + { + "action": "plugin::users-permissions.user.me" + }, + { + "action": "plugin::users-permissions.user.update" + } + ] +} \ No newline at end of file diff --git a/server2/config/sync/user-role.public.json b/server2/config/sync/user-role.public.json new file mode 100644 index 00000000..be26d3af --- /dev/null +++ b/server2/config/sync/user-role.public.json @@ -0,0 +1,55 @@ +{ + "name": "Public", + "description": "Default role given to unauthenticated user.", + "type": "public", + "permissions": [ + { + "action": "api::dimension.dimension.find" + }, + { + "action": "api::domain.domain.find" + }, + { + "action": "api::evaluation.evaluation.find" + }, + { + "action": "api::evaluation.evaluation.findOne" + }, + { + "action": "api::evaluation.evaluation.update" + }, + { + "action": "api::matrix.matrix.find" + }, + { + "action": "plugin::users-permissions.auth.callback" + }, + { + "action": "plugin::users-permissions.auth.changePassword" + }, + { + "action": "plugin::users-permissions.auth.connect" + }, + { + "action": "plugin::users-permissions.auth.emailConfirmation" + }, + { + "action": "plugin::users-permissions.auth.findRegistrationInfo" + }, + { + "action": "plugin::users-permissions.auth.forgotPassword" + }, + { + "action": "plugin::users-permissions.auth.register" + }, + { + "action": "plugin::users-permissions.auth.registerWithConfirmation" + }, + { + "action": "plugin::users-permissions.auth.resetPassword" + }, + { + "action": "plugin::users-permissions.auth.sendEmailConfirmation" + } + ] +} \ No newline at end of file diff --git a/server2/database/migrations/.gitkeep b/server2/database/migrations/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/server2/favicon.png b/server2/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..df668a881b58175effdf6e6d667cd0a29ce98075 GIT binary patch literal 497 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I3?%1nZ+ru!Vgr0aT!FNQ%YPz~r|W+YAaeN! zM4m4Hfm|S%I{E+RP5<}p{hyZnKR5G#ea-*Q_WyV8{15c~egC1S$L^sn@(SnS%da63LSXaQ`%;7gOVpveiyr7nQL9IZ= z-A`pVKgIF>S>*T2kpBVWANdax|AfbLJG@L@l;9x3(=mx{2S>{97;cxH>_3zyyzXAU zjjdxQ^WxPEN$-xlJne8sF0xqg#Mjh={AZcjd`yxKaLoVx;=zr@liB5BU%YW{PhSw- uckQM0zm%HSf9!WG&HHyg{qyDQlnaA`#FRum$ErX}4pUXO@geCwXjqE-E literal 0 HcmV?d00001 diff --git a/server2/package.json b/server2/package.json new file mode 100644 index 00000000..0ce78d68 --- /dev/null +++ b/server2/package.json @@ -0,0 +1,48 @@ +{ + "name": "server-2", + "version": "0.1.0", + "private": true, + "description": "A Strapi application", + "scripts": { + "build": "strapi build", + "console": "strapi console", + "deploy": "strapi deploy", + "dev": "strapi develop", + "develop": "strapi develop", + "start": "strapi start", + "strapi": "strapi", + "upgrade": "npx @strapi/upgrade latest", + "upgrade:dry": "npx @strapi/upgrade latest --dry" + }, + "dependencies": { + "@strapi/plugin-cloud": "5.21.0", + "@strapi/plugin-sentry": "^5.21.0", + "@strapi/plugin-users-permissions": "^5.21.0", + "@strapi/provider-email-amazon-ses": "^5.21.0", + "@strapi/strapi": "5.21.0", + "jsonwebtoken": "^9.0.2", + "pg": "8.8.0", + "react": "^18.0.0", + "react-dom": "^18.0.0", + "react-router-dom": "^6.0.0", + "remeda": "^2.29.0", + "strapi-plugin-config-sync": "^3.1.2", + "strapi-plugin-email-designer-5": "^0.0.7", + "strapi-provider-upload-aws-s3-advanced": "^5.0.1", + "styled-components": "^6.0.0" + }, + "devDependencies": { + "@types/node": "^20", + "@types/react": "^18", + "@types/react-dom": "^18", + "typescript": "^5" + }, + "engines": { + "node": ">=18.0.0 <=22.x.x", + "npm": ">=6.0.0" + }, + "strapi": { + "uuid": "6878e53a-439e-4519-b790-3a9234d5f843", + "installId": "9c77ef4df6b1d353a71764bfec73b344f6f34b8a9d35828c77d0ca9166e0acdb" + } +} diff --git a/server2/pnpm-lock.yaml b/server2/pnpm-lock.yaml new file mode 100644 index 00000000..622af777 --- /dev/null +++ b/server2/pnpm-lock.yaml @@ -0,0 +1,15475 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: + dependencies: + '@strapi/plugin-cloud': + specifier: 5.21.0 + version: 5.21.0(b78edc8e6032cc93fefd648fba2b1773) + '@strapi/plugin-sentry': + specifier: ^5.21.0 + version: 5.21.0(49919b52d571c5aa24a3c5910cc24b78) + '@strapi/plugin-users-permissions': + specifier: ^5.21.0 + version: 5.21.0(afbaa5d9706a16fc6f0a3a153d49a5f8) + '@strapi/provider-email-amazon-ses': + specifier: ^5.21.0 + version: 5.21.0 + '@strapi/strapi': + specifier: 5.21.0 + version: 5.21.0(@babel/runtime@7.28.2)(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.11.2)(@codemirror/lint@6.8.5)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/theme-one-dark@6.1.3)(@codemirror/view@6.38.1)(@swc/helpers@0.5.17)(@types/hoist-non-react-statics@3.3.7(@types/react@18.3.23))(@types/node@20.19.9)(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(codemirror@5.65.19)(esbuild@0.25.8)(koa@2.16.1)(pg@8.8.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@6.30.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(terser@5.43.1)(type-fest@4.41.0) + jsonwebtoken: + specifier: ^9.0.2 + version: 9.0.2 + pg: + specifier: 8.8.0 + version: 8.8.0 + react: + specifier: ^18.0.0 + version: 18.3.1 + react-dom: + specifier: ^18.0.0 + version: 18.3.1(react@18.3.1) + react-router-dom: + specifier: ^6.0.0 + version: 6.30.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + remeda: + specifier: ^2.29.0 + version: 2.29.0 + strapi-plugin-config-sync: + specifier: ^3.1.2 + version: 3.1.2(3ea19e63023fc365216b0eadad674f29) + strapi-plugin-email-designer-5: + specifier: ^0.0.7 + version: 0.0.7(14e4c45c83df9dbd43a1192c3d17303b) + strapi-provider-upload-aws-s3-advanced: + specifier: ^5.0.1 + version: 5.0.1 + styled-components: + specifier: ^6.0.0 + version: 6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + devDependencies: + '@types/node': + specifier: ^20 + version: 20.19.9 + '@types/react': + specifier: ^18 + version: 18.3.23 + '@types/react-dom': + specifier: ^18 + version: 18.3.7(@types/react@18.3.23) + typescript: + specifier: ^5 + version: 5.9.2 + +packages: + + '@aws-crypto/crc32@5.2.0': + resolution: {integrity: sha512-nLbCWqQNgUiwwtFsen1AdzAtvuLRsQS8rYgMuxCrdKf9kOssamGLuPwyTY9wyYblNr9+1XM8v6zoDTPPSIeANg==} + engines: {node: '>=16.0.0'} + + '@aws-crypto/crc32c@5.2.0': + resolution: {integrity: sha512-+iWb8qaHLYKrNvGRbiYRHSdKRWhto5XlZUEBwDjYNf+ly5SVYG6zEoYIdxvf5R3zyeP16w4PLBn3rH1xc74Rag==} + + '@aws-crypto/sha1-browser@5.2.0': + resolution: {integrity: sha512-OH6lveCFfcDjX4dbAvCFSYUjJZjDr/3XJ3xHtjn3Oj5b9RjojQo8npoLeA/bNwkOkrSQ0wgrHzXk4tDRxGKJeg==} + + '@aws-crypto/sha256-browser@5.2.0': + resolution: {integrity: sha512-AXfN/lGotSQwu6HNcEsIASo7kWXZ5HYWvfOmSNKDsEqC4OashTp8alTmaz+F7TC2L083SFv5RdB+qU3Vs1kZqw==} + + '@aws-crypto/sha256-js@5.2.0': + resolution: {integrity: sha512-FFQQyu7edu4ufvIZ+OadFpHHOt+eSTBaYaki44c+akjg7qZg9oOQeLlk77F6tSYqjDAFClrHJk9tMf0HdVyOvA==} + engines: {node: '>=16.0.0'} + + '@aws-crypto/supports-web-crypto@5.2.0': + resolution: {integrity: sha512-iAvUotm021kM33eCdNfwIN//F77/IADDSs58i+MDaOqFrVjZo9bAal0NK7HurRuWLLpF1iLX7gbWrjHjeo+YFg==} + + '@aws-crypto/util@5.2.0': + resolution: {integrity: sha512-4RkU9EsI6ZpBve5fseQlGNUWKMa1RLPQ1dnjnQoe07ldfIzcsGb5hC5W0Dm7u423KWzawlrpbjXBrXCEv9zazQ==} + + '@aws-sdk/client-s3@3.862.0': + resolution: {integrity: sha512-sPmqv2qKORtGRN51cRoHyTOK/SMejG1snXUQytuximeDPn5e/p6cCsYwOI8QuQNW+/7HbmosEz91lPcbClWXxg==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/client-sso@3.862.0': + resolution: {integrity: sha512-zHf7Bn22K09BdFgiGg6yWfy927djGhs58KB5qpqD2ie7u796TvetPH14p6UUAOGyk6aah+wR/WLFFoc+51uADA==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/core@3.862.0': + resolution: {integrity: sha512-oJ5Au3QCAQmOmh7PD7dUxnPDxWsT9Z95XEOiJV027//11pwRSUMiNSvW8srPa3i7CZRNjz5QHX6O4KqX9PxNsQ==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/credential-provider-env@3.862.0': + resolution: {integrity: sha512-/nafSJMuixcrCN1SmsOBIQ5m1fhr9ZnCxw3JZD9qJm3yNXhAshqAC+KcA3JGFnvdBVLhY/pUpdoQmxZmuFJItQ==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/credential-provider-http@3.862.0': + resolution: {integrity: sha512-JnF3vH6GxvPuMGSI5QsmVlmWc0ebElEiJvUGByTMSr/BfzywZdJBKzPVqViwNqAW5cBWiZ/rpL+ekZ24Nb0Vow==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/credential-provider-ini@3.862.0': + resolution: {integrity: sha512-LkpZ2S9DQCTHTPu1p0Qg5bM5DN/b/cEflW269RoeuYpiznxdV8r/mqYuhh/VPXQKkBZdiILe4/OODtg+vk4S0A==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/credential-provider-node@3.862.0': + resolution: {integrity: sha512-4+X/LdEGPCBMlhn6MCcNJ5yJ8k+yDXeSO1l9X49NNQiG60SH/yObB3VvotcHWC+A3EEZx4dOw/ylcPt86e7Irg==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/credential-provider-process@3.862.0': + resolution: {integrity: sha512-bR/eRCjRsilAuaUpNzTWWE4sUxJC4k571+4LLxE6Xo+0oYHfH+Ih00+sQRX06s4SqZZROdppissm3OOr5d26qA==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/credential-provider-sso@3.862.0': + resolution: {integrity: sha512-1E1rTKWJAbzN/uiIXFPCVAS2PrZgy87O6BEO69404bI7o/iYHOfohfn66bdSqBnZ7Tn/hFJdCk6i23U3pibf5w==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/credential-provider-web-identity@3.862.0': + resolution: {integrity: sha512-Skv07eOS4usDf/Bna3FWKIo0/35qhxb22Z/OxrbNtx2Hxa/upp42S+Y6fA9qzgLqXMNYDZngKYwwMPtzrbkMAg==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/lib-storage@3.862.0': + resolution: {integrity: sha512-LonTzJcUZh9wg5NsqT5lWy2VRLrbjLu/EpmQSC6vr1x2Eqj/T47HPEMXomeQyEChRM3c4e3KXFt3qPpz4d61rQ==} + engines: {node: '>=18.0.0'} + peerDependencies: + '@aws-sdk/client-s3': ^3.862.0 + + '@aws-sdk/middleware-bucket-endpoint@3.862.0': + resolution: {integrity: sha512-Wcsc7VPLjImQw+CP1/YkwyofMs9Ab6dVq96iS8p0zv0C6YTaMjvillkau4zFfrrrTshdzFWKptIFhKK8Zsei1g==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/middleware-expect-continue@3.862.0': + resolution: {integrity: sha512-oG3AaVUJ+26p0ESU4INFn6MmqqiBFZGrebST66Or+YBhteed2rbbFl7mCfjtPWUFgquQlvT1UP19P3LjQKeKpw==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/middleware-flexible-checksums@3.862.0': + resolution: {integrity: sha512-3PuTNJs43GmtNIfj4R/aNPGX6lfIq0gjfekVPUO/MnP/eV+RVgkCvEqWYyN6RZyOzrzsJydXbmydwLHAwMzxiw==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/middleware-host-header@3.862.0': + resolution: {integrity: sha512-jDje8dCFeFHfuCAxMDXBs8hy8q9NCTlyK4ThyyfAj3U4Pixly2mmzY2u7b7AyGhWsjJNx8uhTjlYq5zkQPQCYw==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/middleware-location-constraint@3.862.0': + resolution: {integrity: sha512-MnwLxCw7Cc9OngEH3SHFhrLlDI9WVxaBkp3oTsdY9JE7v8OE38wQ9vtjaRsynjwu0WRtrctSHbpd7h/QVvtjyA==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/middleware-logger@3.862.0': + resolution: {integrity: sha512-N/bXSJznNBR/i7Ofmf9+gM6dx/SPBK09ZWLKsW5iQjqKxAKn/2DozlnE54uiEs1saHZWoNDRg69Ww4XYYSlG1Q==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/middleware-recursion-detection@3.862.0': + resolution: {integrity: sha512-KVoo3IOzEkTq97YKM4uxZcYFSNnMkhW/qj22csofLegZi5fk90ztUnnaeKfaEJHfHp/tm1Y3uSoOXH45s++kKQ==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/middleware-sdk-s3@3.862.0': + resolution: {integrity: sha512-rDRHxxZuY9E7py/OVYN1VQRAw0efEThvK5sZ3HfNNpL6Zk4HeOGtc6NtULSfeCeyHCVlJsdOVkIxJge2Ax5vSA==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/middleware-ssec@3.862.0': + resolution: {integrity: sha512-72VtP7DZC8lYTE2L3Efx2BrD98oe9WTK8X6hmd3WTLkbIjvgWQWIdjgaFXBs8WevsXkewIctfyA3KEezvL5ggw==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/middleware-user-agent@3.862.0': + resolution: {integrity: sha512-7OOaGbAw7Kg1zoKO9wV8cA5NnJC+RYsocjmP3FZ0FiKa7gbmeQ6Cfheunzd1Re9fgelgL3OIRjqO5mSmOIhyhA==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/nested-clients@3.862.0': + resolution: {integrity: sha512-fPrfXa+m9S0DA5l8+p4A9NFQ22lEHm/ezaUWWWs6F3/U49lR6yKhNAGji3LlIG7b7ZdTJ3smAcaxNHclJsoQIg==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/region-config-resolver@3.862.0': + resolution: {integrity: sha512-VisR+/HuVFICrBPY+q9novEiE4b3mvDofWqyvmxHcWM7HumTz9ZQSuEtnlB/92GVM3KDUrR9EmBHNRrfXYZkcQ==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/signature-v4-multi-region@3.862.0': + resolution: {integrity: sha512-ZAjrbXnu3yTxXMPiEVxDP/I8zfssrLQGgUi0NgJP6Cz/mOS/S/3hfOZrMown1jLhkTrzLpjNE8Q2n18VtRbScQ==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/token-providers@3.862.0': + resolution: {integrity: sha512-p3u7aom3WQ7ArFByNbccRIkCssk5BB4IUX9oFQa2P0MOFCbkKFBLG7WMegRXhq5grOHmI4SRftEDDy3CcoTqSQ==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/types@3.862.0': + resolution: {integrity: sha512-Bei+RL0cDxxV+lW2UezLbCYYNeJm6Nzee0TpW0FfyTRBhH9C1XQh4+x+IClriXvgBnRquTMMYsmJfvx8iyLKrg==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/util-arn-parser@3.804.0': + resolution: {integrity: sha512-wmBJqn1DRXnZu3b4EkE6CWnoWMo1ZMvlfkqU5zPz67xx1GMaXlDCchFvKAXMjk4jn/L1O3tKnoFDNsoLV1kgNQ==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/util-endpoints@3.862.0': + resolution: {integrity: sha512-eCZuScdE9MWWkHGM2BJxm726MCmWk/dlHjOKvkM0sN1zxBellBMw5JohNss1Z8/TUmnW2gb9XHTOiHuGjOdksA==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/util-locate-window@3.804.0': + resolution: {integrity: sha512-zVoRfpmBVPodYlnMjgVjfGoEZagyRF5IPn3Uo6ZvOZp24chnW/FRstH7ESDHDDRga4z3V+ElUQHKpFDXWyBW5A==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/util-user-agent-browser@3.862.0': + resolution: {integrity: sha512-BmPTlm0r9/10MMr5ND9E92r8KMZbq5ltYXYpVcUbAsnB1RJ8ASJuRoLne5F7mB3YMx0FJoOTuSq7LdQM3LgW3Q==} + + '@aws-sdk/util-user-agent-node@3.862.0': + resolution: {integrity: sha512-KtJdSoa1Vmwquy+zwiqRQjtsuKaHlVcZm8tsTchHbc6809/VeaC+ZZOqlil9IWOOyWNGIX8GTRwP9TEb8cT5Gw==} + engines: {node: '>=18.0.0'} + peerDependencies: + aws-crt: '>=1.0.0' + peerDependenciesMeta: + aws-crt: + optional: true + + '@aws-sdk/xml-builder@3.862.0': + resolution: {integrity: sha512-6Ed0kmC1NMbuFTEgNmamAUU1h5gShgxL1hBVLbEzUa3trX5aJBz1vU4bXaBTvOYUAnOHtiy1Ml4AMStd6hJnFA==} + engines: {node: '>=18.0.0'} + + '@babel/code-frame@7.27.1': + resolution: {integrity: sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==} + engines: {node: '>=6.9.0'} + + '@babel/generator@7.28.0': + resolution: {integrity: sha512-lJjzvrbEeWrhB4P3QBsH7tey117PjLZnDbLiQEKjQ/fNJTjuq4HSqgFA+UNSwZT8D7dxxbnuSBMsa1lrWzKlQg==} + engines: {node: '>=6.9.0'} + + '@babel/helper-globals@7.28.0': + resolution: {integrity: sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-module-imports@7.27.1': + resolution: {integrity: sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==} + engines: {node: '>=6.9.0'} + + '@babel/helper-string-parser@7.27.1': + resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-identifier@7.27.1': + resolution: {integrity: sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==} + engines: {node: '>=6.9.0'} + + '@babel/parser@7.28.0': + resolution: {integrity: sha512-jVZGvOxOuNSsuQuLRTh13nU0AogFlw32w/MT+LV6D3sP5WdbW61E77RnkbaO2dUvmPAYrBDJXGn5gGS6tH4j8g==} + engines: {node: '>=6.0.0'} + hasBin: true + + '@babel/runtime@7.28.2': + resolution: {integrity: sha512-KHp2IflsnGywDjBWDkR9iEqiWSpc8GIi0lgTT3mOElT0PP1tG26P4tmFI2YvAdzgq9RGyoHZQEIEdZy6Ec5xCA==} + engines: {node: '>=6.9.0'} + + '@babel/template@7.27.2': + resolution: {integrity: sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==} + engines: {node: '>=6.9.0'} + + '@babel/traverse@7.28.0': + resolution: {integrity: sha512-mGe7UK5wWyh0bKRfupsUchrQGqvDbZDbKJw+kcRGSmdHVYrv+ltd0pnpDTVpiTqnaBru9iEvA8pz8W46v0Amwg==} + engines: {node: '>=6.9.0'} + + '@babel/types@7.28.2': + resolution: {integrity: sha512-ruv7Ae4J5dUYULmeXw1gmb7rYRz57OWCPM57pHojnLq/3Z1CK2lNSLTCVjxVk1F/TZHwOZZrOWi0ur95BbLxNQ==} + engines: {node: '>=6.9.0'} + + '@casl/ability@6.5.0': + resolution: {integrity: sha512-3guc94ugr5ylZQIpJTLz0CDfwNi0mxKVECj1vJUPAvs+Lwunh/dcuUjwzc4MHM9D8JOYX0XUZMEPedpB3vIbOw==} + + '@codemirror/autocomplete@6.18.6': + resolution: {integrity: sha512-PHHBXFomUs5DF+9tCOM/UoW6XQ4R44lLNNhRaW9PKPTU0D7lIjRg3ElxaJnTwsl/oHiR93WSXDBrekhoUGCPtg==} + + '@codemirror/commands@6.8.1': + resolution: {integrity: sha512-KlGVYufHMQzxbdQONiLyGQDUW0itrLZwq3CcY7xpv9ZLRHqzkBSoteocBHtMCoY7/Ci4xhzSrToIeLg7FxHuaw==} + + '@codemirror/lang-json@6.0.1': + resolution: {integrity: sha512-+T1flHdgpqDDlJZ2Lkil/rLiRy684WMLc74xUnjJH48GQdfJo/pudlTRreZmKwzP8/tGdKf83wlbAdOCzlJOGQ==} + + '@codemirror/language@6.11.2': + resolution: {integrity: sha512-p44TsNArL4IVXDTbapUmEkAlvWs2CFQbcfc0ymDsis1kH2wh0gcY96AS29c/vp2d0y2Tquk1EDSaawpzilUiAw==} + + '@codemirror/lint@6.8.5': + resolution: {integrity: sha512-s3n3KisH7dx3vsoeGMxsbRAgKe4O1vbrnKBClm99PU0fWxmxsx5rR2PfqQgIt+2MMJBHbiJ5rfIdLYfB9NNvsA==} + + '@codemirror/search@6.5.11': + resolution: {integrity: sha512-KmWepDE6jUdL6n8cAAqIpRmLPBZ5ZKnicE8oGU/s3QrAVID+0VhLFrzUucVKHG5035/BSykhExDL/Xm7dHthiA==} + + '@codemirror/state@6.5.2': + resolution: {integrity: sha512-FVqsPqtPWKVVL3dPSxy8wEF/ymIEuVzF1PK3VbUgrxXpJUSHQWWZz4JMToquRxnkw+36LTamCZG2iua2Ptq0fA==} + + '@codemirror/theme-one-dark@6.1.3': + resolution: {integrity: sha512-NzBdIvEJmx6fjeremiGp3t/okrLPYT0d9orIc7AFun8oZcRk58aejkqhv6spnz4MLAevrKNPMQYXEWMg4s+sKA==} + + '@codemirror/view@6.38.1': + resolution: {integrity: sha512-RmTOkE7hRU3OVREqFVITWHz6ocgBjv08GoePscAakgVQfciA3SGCEk7mb9IzwW61cKKmlTpHXG6DUE5Ubx+MGQ==} + + '@colors/colors@1.5.0': + resolution: {integrity: sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==} + engines: {node: '>=0.1.90'} + + '@colors/colors@1.6.0': + resolution: {integrity: sha512-Ir+AOibqzrIsL6ajt3Rz3LskB7OiMVHqltZmspbW/TJuTVuyOMirVqAkjfY6JISiLHgyNqicAC8AyHHGzNd/dA==} + engines: {node: '>=0.1.90'} + + '@dabh/diagnostics@2.0.3': + resolution: {integrity: sha512-hrlQOIi7hAfzsMqlGSFyVucrx38O+j6wiGOf//H2ecvIEqYN4ADBSS2iLMh5UFyDunCNniUIPk/q3riFv45xRA==} + + '@discoveryjs/json-ext@0.5.7': + resolution: {integrity: sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==} + engines: {node: '>=10.0.0'} + + '@dnd-kit/accessibility@3.1.1': + resolution: {integrity: sha512-2P+YgaXF+gRsIihwwY1gCsQSYnu9Zyj2py8kY5fFvUM1qm2WA2u639R6YNVfU4GWr+ZM5mqEsfHZZLoRONbemw==} + peerDependencies: + react: '>=16.8.0' + + '@dnd-kit/core@6.3.1': + resolution: {integrity: sha512-xkGBRQQab4RLwgXxoqETICr6S5JlogafbhNsidmrkVv2YRs5MLwpjoF2qpiGjQt8S9AoxtIV603s0GIUpY5eYQ==} + peerDependencies: + react: '>=16.8.0' + react-dom: '>=16.8.0' + + '@dnd-kit/modifiers@9.0.0': + resolution: {integrity: sha512-ybiLc66qRGuZoC20wdSSG6pDXFikui/dCNGthxv4Ndy8ylErY0N3KVxY2bgo7AWwIbxDmXDg3ylAFmnrjcbVvw==} + peerDependencies: + '@dnd-kit/core': ^6.3.0 + react: '>=16.8.0' + + '@dnd-kit/sortable@10.0.0': + resolution: {integrity: sha512-+xqhmIIzvAYMGfBYYnbKuNicfSsk4RksY2XdmJhT+HAC01nix6fHCztU68jooFiMUB01Ky3F0FyOvhG/BZrWkg==} + peerDependencies: + '@dnd-kit/core': ^6.3.0 + react: '>=16.8.0' + + '@dnd-kit/utilities@3.2.2': + resolution: {integrity: sha512-+MKAJEOfaBe5SmV6t34p80MMKhjvUz0vRrvVJbPT0WElzaOJ/1xs+D+KDv+tD/NE5ujfrChEcshd4fLn0wpiqg==} + peerDependencies: + react: '>=16.8.0' + + '@emnapi/runtime@1.4.5': + resolution: {integrity: sha512-++LApOtY0pEEz1zrd9vy1/zXVaVJJ/EbAF3u0fXIzPJEDtnITsBGbbK0EkM72amhl/R5b+5xx0Y/QhcVOpuulg==} + + '@emotion/babel-plugin@11.13.5': + resolution: {integrity: sha512-pxHCpT2ex+0q+HH91/zsdHkw/lXd468DIN2zvfvLtPKLLMo6gQj7oLObq8PhkrxOZb/gGCq03S3Z7PDhS8pduQ==} + + '@emotion/cache@11.14.0': + resolution: {integrity: sha512-L/B1lc/TViYk4DcpGxtAVbx0ZyiKM5ktoIyafGkH6zg/tj+mA+NE//aPYKG0k8kCHSHVJrpLpcAlOBEXQ3SavA==} + + '@emotion/css@11.13.5': + resolution: {integrity: sha512-wQdD0Xhkn3Qy2VNcIzbLP9MR8TafI0MJb7BEAXKp+w4+XqErksWR4OXomuDzPsN4InLdGhVe6EYcn2ZIUCpB8w==} + + '@emotion/hash@0.9.2': + resolution: {integrity: sha512-MyqliTZGuOm3+5ZRSaaBGP3USLw6+EGykkwZns2EPC5g8jJ4z9OrdZY9apkl3+UP9+sdz76YYkwCKP5gh8iY3g==} + + '@emotion/is-prop-valid@1.2.2': + resolution: {integrity: sha512-uNsoYd37AFmaCdXlg6EYD1KaPOaRWRByMCYzbKUX4+hhMfrxdVSelShywL4JVaAeM/eHUOSprYBQls+/neX3pw==} + + '@emotion/memoize@0.8.1': + resolution: {integrity: sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA==} + + '@emotion/memoize@0.9.0': + resolution: {integrity: sha512-30FAj7/EoJ5mwVPOWhAyCX+FPfMDrVecJAM+Iw9NRoSl4BBAQeqj4cApHHUXOVvIPgLVDsCFoz/hGD+5QQD1GQ==} + + '@emotion/react@11.14.0': + resolution: {integrity: sha512-O000MLDBDdk/EohJPFUqvnp4qnHeYkVP5B0xEG0D/L7cOKP9kefu2DXn8dj74cQfsEzUqh+sr1RzFqiL1o+PpA==} + peerDependencies: + '@types/react': '*' + react: '>=16.8.0' + peerDependenciesMeta: + '@types/react': + optional: true + + '@emotion/serialize@1.3.3': + resolution: {integrity: sha512-EISGqt7sSNWHGI76hC7x1CksiXPahbxEOrC5RjmFRJTqLyEK9/9hZvBbiYn70dw4wuwMKiEMCUlR6ZXTSWQqxA==} + + '@emotion/sheet@1.4.0': + resolution: {integrity: sha512-fTBW9/8r2w3dXWYM4HCB1Rdp8NLibOw2+XELH5m5+AkWiL/KqYX6dc0kKYlaYyKjrQ6ds33MCdMPEwgs2z1rqg==} + + '@emotion/unitless@0.10.0': + resolution: {integrity: sha512-dFoMUuQA20zvtVTuxZww6OHoJYgrzfKM1t52mVySDJnMSEa08ruEvdYQbhvyu6soU+NeLVd3yKfTfT0NeV6qGg==} + + '@emotion/unitless@0.8.1': + resolution: {integrity: sha512-KOEGMu6dmJZtpadb476IsZBclKvILjopjUii3V+7MnXIQCYh8W3NgNcgwo21n9LXZX6EDIKvqfjYxXebDwxKmQ==} + + '@emotion/use-insertion-effect-with-fallbacks@1.2.0': + resolution: {integrity: sha512-yJMtVdH59sxi/aVJBpk9FQq+OR8ll5GT8oWd57UpeaKEVGab41JWaCFA7FRLoMLloOZF/c/wsPoe+bfGmRKgDg==} + peerDependencies: + react: '>=16.8.0' + + '@emotion/utils@1.4.2': + resolution: {integrity: sha512-3vLclRofFziIa3J2wDh9jjbkUz9qk5Vi3IZ/FSTKViB0k+ef0fPV7dYrUIugbgupYDx7v9ud/SjrtEP8Y4xLoA==} + + '@emotion/weak-memoize@0.4.0': + resolution: {integrity: sha512-snKqtPW01tN0ui7yu9rGv69aJXr/a/Ywvl11sUjNtEcRc+ng/mQriFL0wLXMef74iHa/EkftbDzU9F8iFbH+zg==} + + '@esbuild/aix-ppc64@0.20.2': + resolution: {integrity: sha512-D+EBOJHXdNZcLJRBkhENNG8Wji2kgc9AZ9KiPr1JuZjsNtyHzrsfLRrY0tk2H2aoFu6RANO1y1iPPUCDYWkb5g==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [aix] + + '@esbuild/aix-ppc64@0.21.5': + resolution: {integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [aix] + + '@esbuild/aix-ppc64@0.25.8': + resolution: {integrity: sha512-urAvrUedIqEiFR3FYSLTWQgLu5tb+m0qZw0NBEasUeo6wuqatkMDaRT+1uABiGXEu5vqgPd7FGE1BhsAIy9QVA==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [aix] + + '@esbuild/android-arm64@0.20.2': + resolution: {integrity: sha512-mRzjLacRtl/tWU0SvD8lUEwb61yP9cqQo6noDZP/O8VkwafSYwZ4yWy24kan8jE/IMERpYncRt2dw438LP3Xmg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + + '@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.25.8': + resolution: {integrity: sha512-OD3p7LYzWpLhZEyATcTSJ67qB5D+20vbtr6vHlHWSQYhKtzUYrETuWThmzFpZtFsBIxRvhO07+UgVA9m0i/O1w==} + engines: {node: '>=18'} + cpu: [arm64] + os: [android] + + '@esbuild/android-arm@0.20.2': + resolution: {integrity: sha512-t98Ra6pw2VaDhqNWO2Oph2LXbz/EJcnLmKLGBJwEwXX/JAN83Fym1rU8l0JUWK6HkIbWONCSSatf4sf2NBRx/w==} + engines: {node: '>=12'} + cpu: [arm] + 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.25.8': + resolution: {integrity: sha512-RONsAvGCz5oWyePVnLdZY/HHwA++nxYWIX1atInlaW6SEkwq6XkP3+cb825EUcRs5Vss/lGh/2YxAb5xqc07Uw==} + engines: {node: '>=18'} + cpu: [arm] + os: [android] + + '@esbuild/android-x64@0.20.2': + resolution: {integrity: sha512-btzExgV+/lMGDDa194CcUQm53ncxzeBrWJcncOBxuC6ndBkKxnHdFJn86mCIgTELsooUmwUm9FkhSp5HYu00Rg==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + + '@esbuild/android-x64@0.21.5': + resolution: {integrity: sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + + '@esbuild/android-x64@0.25.8': + resolution: {integrity: sha512-yJAVPklM5+4+9dTeKwHOaA+LQkmrKFX96BM0A/2zQrbS6ENCmxc4OVoBs5dPkCCak2roAD+jKCdnmOqKszPkjA==} + engines: {node: '>=18'} + cpu: [x64] + os: [android] + + '@esbuild/darwin-arm64@0.20.2': + resolution: {integrity: sha512-4J6IRT+10J3aJH3l1yzEg9y3wkTDgDk7TSDFX+wKFiWjqWp/iCfLIYzGyasx9l0SAFPT1HwSCR+0w/h1ES/MjA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-arm64@0.21.5': + resolution: {integrity: sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-arm64@0.25.8': + resolution: {integrity: sha512-Jw0mxgIaYX6R8ODrdkLLPwBqHTtYHJSmzzd+QeytSugzQ0Vg4c5rDky5VgkoowbZQahCbsv1rT1KW72MPIkevw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-x64@0.20.2': + resolution: {integrity: sha512-tBcXp9KNphnNH0dfhv8KYkZhjc+H3XBkF5DKtswJblV7KlT9EI2+jeA8DgBjp908WEuYll6pF+UStUCfEpdysA==} + engines: {node: '>=12'} + cpu: [x64] + 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.25.8': + resolution: {integrity: sha512-Vh2gLxxHnuoQ+GjPNvDSDRpoBCUzY4Pu0kBqMBDlK4fuWbKgGtmDIeEC081xi26PPjn+1tct+Bh8FjyLlw1Zlg==} + engines: {node: '>=18'} + cpu: [x64] + os: [darwin] + + '@esbuild/freebsd-arm64@0.20.2': + resolution: {integrity: sha512-d3qI41G4SuLiCGCFGUrKsSeTXyWG6yem1KcGZVS+3FYlYhtNoNgYrWcvkOoaqMhwXSMrZRl69ArHsGJ9mYdbbw==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-arm64@0.21.5': + resolution: {integrity: sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-arm64@0.25.8': + resolution: {integrity: sha512-YPJ7hDQ9DnNe5vxOm6jaie9QsTwcKedPvizTVlqWG9GBSq+BuyWEDazlGaDTC5NGU4QJd666V0yqCBL2oWKPfA==} + engines: {node: '>=18'} + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.20.2': + resolution: {integrity: sha512-d+DipyvHRuqEeM5zDivKV1KuXn9WeRX6vqSqIDgwIfPQtwMP4jaDsQsDncjTDDsExT4lR/91OLjRo8bmC1e+Cw==} + engines: {node: '>=12'} + cpu: [x64] + 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.25.8': + resolution: {integrity: sha512-MmaEXxQRdXNFsRN/KcIimLnSJrk2r5H8v+WVafRWz5xdSVmWLoITZQXcgehI2ZE6gioE6HirAEToM/RvFBeuhw==} + engines: {node: '>=18'} + cpu: [x64] + os: [freebsd] + + '@esbuild/linux-arm64@0.20.2': + resolution: {integrity: sha512-9pb6rBjGvTFNira2FLIWqDk/uaf42sSyLE8j1rnUpuzsODBq7FvpwHYZxQ/It/8b+QOS1RYfqgGFNLRI+qlq2A==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm64@0.21.5': + resolution: {integrity: sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm64@0.25.8': + resolution: {integrity: sha512-WIgg00ARWv/uYLU7lsuDK00d/hHSfES5BzdWAdAig1ioV5kaFNrtK8EqGcUBJhYqotlUByUKz5Qo6u8tt7iD/w==} + engines: {node: '>=18'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm@0.20.2': + resolution: {integrity: sha512-VhLPeR8HTMPccbuWWcEUD1Az68TqaTYyj6nfE4QByZIQEQVWBB8vup8PpR7y1QHL3CpcF6xd5WVBU/+SBEvGTg==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-arm@0.21.5': + resolution: {integrity: sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-arm@0.25.8': + resolution: {integrity: sha512-FuzEP9BixzZohl1kLf76KEVOsxtIBFwCaLupVuk4eFVnOZfU+Wsn+x5Ryam7nILV2pkq2TqQM9EZPsOBuMC+kg==} + engines: {node: '>=18'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-ia32@0.20.2': + resolution: {integrity: sha512-o10utieEkNPFDZFQm9CoP7Tvb33UutoJqg3qKf1PWVeeJhJw0Q347PxMvBgVVFgouYLGIhFYG0UGdBumROyiig==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + + '@esbuild/linux-ia32@0.21.5': + resolution: {integrity: sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + + '@esbuild/linux-ia32@0.25.8': + resolution: {integrity: sha512-A1D9YzRX1i+1AJZuFFUMP1E9fMaYY+GnSQil9Tlw05utlE86EKTUA7RjwHDkEitmLYiFsRd9HwKBPEftNdBfjg==} + engines: {node: '>=18'} + cpu: [ia32] + os: [linux] + + '@esbuild/linux-loong64@0.20.2': + resolution: {integrity: sha512-PR7sp6R/UC4CFVomVINKJ80pMFlfDfMQMYynX7t1tNTeivQ6XdX5r2XovMmha/VjR1YN/HgHWsVcTRIMkymrgQ==} + engines: {node: '>=12'} + cpu: [loong64] + 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.25.8': + resolution: {integrity: sha512-O7k1J/dwHkY1RMVvglFHl1HzutGEFFZ3kNiDMSOyUrB7WcoHGf96Sh+64nTRT26l3GMbCW01Ekh/ThKM5iI7hQ==} + engines: {node: '>=18'} + cpu: [loong64] + os: [linux] + + '@esbuild/linux-mips64el@0.20.2': + resolution: {integrity: sha512-4BlTqeutE/KnOiTG5Y6Sb/Hw6hsBOZapOVF6njAESHInhlQAghVVZL1ZpIctBOoTFbQyGW+LsVYZ8lSSB3wkjA==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-mips64el@0.21.5': + resolution: {integrity: sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-mips64el@0.25.8': + resolution: {integrity: sha512-uv+dqfRazte3BzfMp8PAQXmdGHQt2oC/y2ovwpTteqrMx2lwaksiFZ/bdkXJC19ttTvNXBuWH53zy/aTj1FgGw==} + engines: {node: '>=18'} + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-ppc64@0.20.2': + resolution: {integrity: sha512-rD3KsaDprDcfajSKdn25ooz5J5/fWBylaaXkuotBDGnMnDP1Uv5DLAN/45qfnf3JDYyJv/ytGHQaziHUdyzaAg==} + engines: {node: '>=12'} + cpu: [ppc64] + 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.25.8': + resolution: {integrity: sha512-GyG0KcMi1GBavP5JgAkkstMGyMholMDybAf8wF5A70CALlDM2p/f7YFE7H92eDeH/VBtFJA5MT4nRPDGg4JuzQ==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-riscv64@0.20.2': + resolution: {integrity: sha512-snwmBKacKmwTMmhLlz/3aH1Q9T8v45bKYGE3j26TsaOVtjIag4wLfWSiZykXzXuE1kbCE+zJRmwp+ZbIHinnVg==} + engines: {node: '>=12'} + cpu: [riscv64] + 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.25.8': + resolution: {integrity: sha512-rAqDYFv3yzMrq7GIcen3XP7TUEG/4LK86LUPMIz6RT8A6pRIDn0sDcvjudVZBiiTcZCY9y2SgYX2lgK3AF+1eg==} + engines: {node: '>=18'} + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-s390x@0.20.2': + resolution: {integrity: sha512-wcWISOobRWNm3cezm5HOZcYz1sKoHLd8VL1dl309DiixxVFoFe/o8HnwuIwn6sXre88Nwj+VwZUvJf4AFxkyrQ==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-s390x@0.21.5': + resolution: {integrity: sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-s390x@0.25.8': + resolution: {integrity: sha512-Xutvh6VjlbcHpsIIbwY8GVRbwoviWT19tFhgdA7DlenLGC/mbc3lBoVb7jxj9Z+eyGqvcnSyIltYUrkKzWqSvg==} + engines: {node: '>=18'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-x64@0.20.2': + resolution: {integrity: sha512-1MdwI6OOTsfQfek8sLwgyjOXAu+wKhLEoaOLTjbijk6E2WONYpH9ZU2mNtR+lZ2B4uwr+usqGuVfFT9tMtGvGw==} + engines: {node: '>=12'} + cpu: [x64] + 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.25.8': + resolution: {integrity: sha512-ASFQhgY4ElXh3nDcOMTkQero4b1lgubskNlhIfJrsH5OKZXDpUAKBlNS0Kx81jwOBp+HCeZqmoJuihTv57/jvQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [linux] + + '@esbuild/netbsd-arm64@0.25.8': + resolution: {integrity: sha512-d1KfruIeohqAi6SA+gENMuObDbEjn22olAR7egqnkCD9DGBG0wsEARotkLgXDu6c4ncgWTZJtN5vcgxzWRMzcw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [netbsd] + + '@esbuild/netbsd-x64@0.20.2': + resolution: {integrity: sha512-K8/DhBxcVQkzYc43yJXDSyjlFeHQJBiowJ0uVL6Tor3jGQfSGHNNJcWxNbOI8v5k82prYqzPuwkzHt3J1T1iZQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + + '@esbuild/netbsd-x64@0.21.5': + resolution: {integrity: sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + + '@esbuild/netbsd-x64@0.25.8': + resolution: {integrity: sha512-nVDCkrvx2ua+XQNyfrujIG38+YGyuy2Ru9kKVNyh5jAys6n+l44tTtToqHjino2My8VAY6Lw9H7RI73XFi66Cg==} + engines: {node: '>=18'} + cpu: [x64] + os: [netbsd] + + '@esbuild/openbsd-arm64@0.25.8': + resolution: {integrity: sha512-j8HgrDuSJFAujkivSMSfPQSAa5Fxbvk4rgNAS5i3K+r8s1X0p1uOO2Hl2xNsGFppOeHOLAVgYwDVlmxhq5h+SQ==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openbsd] + + '@esbuild/openbsd-x64@0.20.2': + resolution: {integrity: sha512-eMpKlV0SThJmmJgiVyN9jTPJ2VBPquf6Kt/nAoo6DgHAoN57K15ZghiHaMvqjCye/uU4X5u3YSMgVBI1h3vKrQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + + '@esbuild/openbsd-x64@0.21.5': + resolution: {integrity: sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + + '@esbuild/openbsd-x64@0.25.8': + resolution: {integrity: sha512-1h8MUAwa0VhNCDp6Af0HToI2TJFAn1uqT9Al6DJVzdIBAd21m/G0Yfc77KDM3uF3T/YaOgQq3qTJHPbTOInaIQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [openbsd] + + '@esbuild/openharmony-arm64@0.25.8': + resolution: {integrity: sha512-r2nVa5SIK9tSWd0kJd9HCffnDHKchTGikb//9c7HX+r+wHYCpQrSgxhlY6KWV1nFo1l4KFbsMlHk+L6fekLsUg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openharmony] + + '@esbuild/sunos-x64@0.20.2': + resolution: {integrity: sha512-2UyFtRC6cXLyejf/YEld4Hajo7UHILetzE1vsRcGL3earZEW77JxrFjH4Ez2qaTiEfMgAXxfAZCm1fvM/G/o8w==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + + '@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.25.8': + resolution: {integrity: sha512-zUlaP2S12YhQ2UzUfcCuMDHQFJyKABkAjvO5YSndMiIkMimPmxA+BYSBikWgsRpvyxuRnow4nS5NPnf9fpv41w==} + engines: {node: '>=18'} + cpu: [x64] + os: [sunos] + + '@esbuild/win32-arm64@0.20.2': + resolution: {integrity: sha512-GRibxoawM9ZCnDxnP3usoUDO9vUkpAxIIZ6GQI+IlVmr5kP3zUq+l17xELTHMWTWzjxa2guPNyrpq1GWmPvcGQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + + '@esbuild/win32-arm64@0.21.5': + resolution: {integrity: sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + + '@esbuild/win32-arm64@0.25.8': + resolution: {integrity: sha512-YEGFFWESlPva8hGL+zvj2z/SaK+pH0SwOM0Nc/d+rVnW7GSTFlLBGzZkuSU9kFIGIo8q9X3ucpZhu8PDN5A2sQ==} + engines: {node: '>=18'} + cpu: [arm64] + os: [win32] + + '@esbuild/win32-ia32@0.20.2': + resolution: {integrity: sha512-HfLOfn9YWmkSKRQqovpnITazdtquEW8/SoHW7pWpuEeguaZI4QnCRW6b+oZTztdBnZOS2hqJ6im/D5cPzBTTlQ==} + engines: {node: '>=12'} + cpu: [ia32] + 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.25.8': + resolution: {integrity: sha512-hiGgGC6KZ5LZz58OL/+qVVoZiuZlUYlYHNAmczOm7bs2oE1XriPFi5ZHHrS8ACpV5EjySrnoCKmcbQMN+ojnHg==} + engines: {node: '>=18'} + cpu: [ia32] + os: [win32] + + '@esbuild/win32-x64@0.20.2': + resolution: {integrity: sha512-N49X4lJX27+l9jbLKSqZ6bKNjzQvHaT8IIFUy+YIqmXQdjYCToGWwOItDrfby14c78aDd5NHQl29xingXfCdLQ==} + engines: {node: '>=12'} + cpu: [x64] + 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.25.8': + resolution: {integrity: sha512-cn3Yr7+OaaZq1c+2pe+8yxC8E144SReCQjN6/2ynubzYjvyqZjTXfQJpAcQpsdJq3My7XADANiYGHoFC69pLQw==} + engines: {node: '>=18'} + cpu: [x64] + os: [win32] + + '@floating-ui/core@1.7.3': + resolution: {integrity: sha512-sGnvb5dmrJaKEZ+LDIpguvdX3bDlEllmv4/ClQ9awcmCZrlx5jQyyMWFM5kBI+EyNOCDDiKk8il0zeuX3Zlg/w==} + + '@floating-ui/dom@1.7.3': + resolution: {integrity: sha512-uZA413QEpNuhtb3/iIKoYMSK07keHPYeXF02Zhd6e213j+d1NamLix/mCLxBUDW/Gx52sPH2m+chlUsyaBs/Ag==} + + '@floating-ui/react-dom@2.1.0': + resolution: {integrity: sha512-lNzj5EQmEKn5FFKc04+zasr09h/uX8RtJRNj5gUXsSQIXHVWTVh+hVAg1vOMCexkX8EgvemMvIFpQfkosnVNyA==} + peerDependencies: + react: '>=16.8.0' + react-dom: '>=16.8.0' + + '@floating-ui/utils@0.2.10': + resolution: {integrity: sha512-aGTxbpbg8/b5JfU1HXSrbH3wXZuLPJcNEcZQFMxLs3oSzgtVu6nFPkbbGGUvBcUjKV2YyB9Wxxabo+HEH9tcRQ==} + + '@formatjs/ecma402-abstract@1.18.2': + resolution: {integrity: sha512-+QoPW4csYALsQIl8GbN14igZzDbuwzcpWrku9nyMXlaqAlwRBgl5V+p0vWMGFqHOw37czNXaP/lEk4wbLgcmtA==} + + '@formatjs/ecma402-abstract@2.2.4': + resolution: {integrity: sha512-lFyiQDVvSbQOpU+WFd//ILolGj4UgA/qXrKeZxdV14uKiAUiPAtX6XAn7WBCRi7Mx6I7EybM9E5yYn4BIpZWYg==} + + '@formatjs/fast-memoize@2.2.0': + resolution: {integrity: sha512-hnk/nY8FyrL5YxwP9e4r9dqeM6cAbo8PeU9UjyXojZMNvVad2Z06FAVHyR3Ecw6fza+0GH7vdJgiKIVXTMbSBA==} + + '@formatjs/fast-memoize@2.2.3': + resolution: {integrity: sha512-3jeJ+HyOfu8osl3GNSL4vVHUuWFXR03Iz9jjgI7RwjG6ysu/Ymdr0JRCPHfF5yGbTE6JCrd63EpvX1/WybYRbA==} + + '@formatjs/icu-messageformat-parser@2.7.6': + resolution: {integrity: sha512-etVau26po9+eewJKYoiBKP6743I1br0/Ie00Pb/S/PtmYfmjTcOn2YCh2yNkSZI12h6Rg+BOgQYborXk46BvkA==} + + '@formatjs/icu-messageformat-parser@2.9.4': + resolution: {integrity: sha512-Tbvp5a9IWuxUcpWNIW6GlMQYEc4rwNHR259uUFoKWNN1jM9obf9Ul0e+7r7MvFOBNcN+13K7NuKCKqQiAn1QEg==} + + '@formatjs/icu-skeleton-parser@1.8.0': + resolution: {integrity: sha512-QWLAYvM0n8hv7Nq5BEs4LKIjevpVpbGLAJgOaYzg9wABEoX1j0JO1q2/jVkO6CVlq0dbsxZCngS5aXbysYueqA==} + + '@formatjs/icu-skeleton-parser@1.8.8': + resolution: {integrity: sha512-vHwK3piXwamFcx5YQdCdJxUQ1WdTl6ANclt5xba5zLGDv5Bsur7qz8AD7BevaKxITwpgDeU0u8My3AIibW9ywA==} + + '@formatjs/intl-displaynames@6.6.6': + resolution: {integrity: sha512-Dg5URSjx0uzF8VZXtHb6KYZ6LFEEhCbAbKoYChYHEOnMFTw/ZU3jIo/NrujzQD2EfKPgQzIq73LOUvW6Z/LpFA==} + + '@formatjs/intl-displaynames@6.8.5': + resolution: {integrity: sha512-85b+GdAKCsleS6cqVxf/Aw/uBd+20EM0wDpgaxzHo3RIR3bxF4xCJqH/Grbzx8CXurTgDDZHPdPdwJC+May41w==} + + '@formatjs/intl-listformat@7.5.5': + resolution: {integrity: sha512-XoI52qrU6aBGJC9KJddqnacuBbPlb/bXFN+lIFVFhQ1RnFHpzuFrlFdjD9am2O7ZSYsyqzYRpkVcXeT1GHkwDQ==} + + '@formatjs/intl-listformat@7.7.5': + resolution: {integrity: sha512-Wzes10SMNeYgnxYiKsda4rnHP3Q3II4XT2tZyOgnH5fWuHDtIkceuWlRQNsvrI3uiwP4hLqp2XdQTCsfkhXulg==} + + '@formatjs/intl-localematcher@0.5.4': + resolution: {integrity: sha512-zTwEpWOzZ2CiKcB93BLngUX59hQkuZjT2+SAQEscSm52peDW/getsawMcWF1rGRpMCX6D7nSJA3CzJ8gn13N/g==} + + '@formatjs/intl-localematcher@0.5.8': + resolution: {integrity: sha512-I+WDNWWJFZie+jkfkiK5Mp4hEDyRSEvmyfYadflOno/mmKJKcB17fEpEH0oJu/OWhhCJ8kJBDz2YMd/6cDl7Mg==} + + '@formatjs/intl@2.10.0': + resolution: {integrity: sha512-X3xT9guVkKDS86EKV80lS0KxoazUglkJTGZO66sKY7otgl0VeStPA8B3u8UkKT47PexVV98fUzjpkchYmbe9nw==} + peerDependencies: + typescript: ^4.7 || 5 + peerDependenciesMeta: + typescript: + optional: true + + '@formatjs/intl@2.10.15': + resolution: {integrity: sha512-i6+xVqT+6KCz7nBfk4ybMXmbKO36tKvbMKtgFz9KV+8idYFyFbfwKooYk8kGjyA5+T5f1kEPQM5IDLXucTAQ9g==} + peerDependencies: + typescript: ^4.7 || 5 + peerDependenciesMeta: + typescript: + optional: true + + '@hapi/bourne@3.0.0': + resolution: {integrity: sha512-Waj1cwPXJDucOib4a3bAISsKJVb15MKi9IvmTI/7ssVEm6sywXGjVJDhl6/umt1pK1ZS7PacXU3A1PmFKHEZ2w==} + + '@img/sharp-darwin-arm64@0.33.5': + resolution: {integrity: sha512-UT4p+iz/2H4twwAoLCqfA9UH5pI6DggwKEGuaPy7nCVQ8ZsiY5PIcrRvD1DzuY3qYL07NtIQcWnBSY/heikIFQ==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm64] + os: [darwin] + + '@img/sharp-darwin-x64@0.33.5': + resolution: {integrity: sha512-fyHac4jIc1ANYGRDxtiqelIbdWkIuQaI84Mv45KvGRRxSAa7o7d1ZKAOBaYbnepLC1WqxfpimdeWfvqqSGwR2Q==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [x64] + os: [darwin] + + '@img/sharp-libvips-darwin-arm64@1.0.4': + resolution: {integrity: sha512-XblONe153h0O2zuFfTAbQYAX2JhYmDHeWikp1LM9Hul9gVPjFY427k6dFEcOL72O01QxQsWi761svJ/ev9xEDg==} + cpu: [arm64] + os: [darwin] + + '@img/sharp-libvips-darwin-x64@1.0.4': + resolution: {integrity: sha512-xnGR8YuZYfJGmWPvmlunFaWJsb9T/AO2ykoP3Fz/0X5XV2aoYBPkX6xqCQvUTKKiLddarLaxpzNe+b1hjeWHAQ==} + cpu: [x64] + os: [darwin] + + '@img/sharp-libvips-linux-arm64@1.0.4': + resolution: {integrity: sha512-9B+taZ8DlyyqzZQnoeIvDVR/2F4EbMepXMc/NdVbkzsJbzkUjhXv/70GQJ7tdLA4YJgNP25zukcxpX2/SueNrA==} + cpu: [arm64] + os: [linux] + + '@img/sharp-libvips-linux-arm@1.0.5': + resolution: {integrity: sha512-gvcC4ACAOPRNATg/ov8/MnbxFDJqf/pDePbBnuBDcjsI8PssmjoKMAz4LtLaVi+OnSb5FK/yIOamqDwGmXW32g==} + cpu: [arm] + os: [linux] + + '@img/sharp-libvips-linux-s390x@1.0.4': + resolution: {integrity: sha512-u7Wz6ntiSSgGSGcjZ55im6uvTrOxSIS8/dgoVMoiGE9I6JAfU50yH5BoDlYA1tcuGS7g/QNtetJnxA6QEsCVTA==} + cpu: [s390x] + os: [linux] + + '@img/sharp-libvips-linux-x64@1.0.4': + resolution: {integrity: sha512-MmWmQ3iPFZr0Iev+BAgVMb3ZyC4KeFc3jFxnNbEPas60e1cIfevbtuyf9nDGIzOaW9PdnDciJm+wFFaTlj5xYw==} + cpu: [x64] + os: [linux] + + '@img/sharp-libvips-linuxmusl-arm64@1.0.4': + resolution: {integrity: sha512-9Ti+BbTYDcsbp4wfYib8Ctm1ilkugkA/uscUn6UXK1ldpC1JjiXbLfFZtRlBhjPZ5o1NCLiDbg8fhUPKStHoTA==} + cpu: [arm64] + os: [linux] + + '@img/sharp-libvips-linuxmusl-x64@1.0.4': + resolution: {integrity: sha512-viYN1KX9m+/hGkJtvYYp+CCLgnJXwiQB39damAO7WMdKWlIhmYTfHjwSbQeUK/20vY154mwezd9HflVFM1wVSw==} + cpu: [x64] + os: [linux] + + '@img/sharp-linux-arm64@0.33.5': + resolution: {integrity: sha512-JMVv+AMRyGOHtO1RFBiJy/MBsgz0x4AWrT6QoEVVTyh1E39TrCUpTRI7mx9VksGX4awWASxqCYLCV4wBZHAYxA==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm64] + os: [linux] + + '@img/sharp-linux-arm@0.33.5': + resolution: {integrity: sha512-JTS1eldqZbJxjvKaAkxhZmBqPRGmxgu+qFKSInv8moZ2AmT5Yib3EQ1c6gp493HvrvV8QgdOXdyaIBrhvFhBMQ==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm] + os: [linux] + + '@img/sharp-linux-s390x@0.33.5': + resolution: {integrity: sha512-y/5PCd+mP4CA/sPDKl2961b+C9d+vPAveS33s6Z3zfASk2j5upL6fXVPZi7ztePZ5CuH+1kW8JtvxgbuXHRa4Q==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [s390x] + os: [linux] + + '@img/sharp-linux-x64@0.33.5': + resolution: {integrity: sha512-opC+Ok5pRNAzuvq1AG0ar+1owsu842/Ab+4qvU879ippJBHvyY5n2mxF1izXqkPYlGuP/M556uh53jRLJmzTWA==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [x64] + os: [linux] + + '@img/sharp-linuxmusl-arm64@0.33.5': + resolution: {integrity: sha512-XrHMZwGQGvJg2V/oRSUfSAfjfPxO+4DkiRh6p2AFjLQztWUuY/o8Mq0eMQVIY7HJ1CDQUJlxGGZRw1a5bqmd1g==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm64] + os: [linux] + + '@img/sharp-linuxmusl-x64@0.33.5': + resolution: {integrity: sha512-WT+d/cgqKkkKySYmqoZ8y3pxx7lx9vVejxW/W4DOFMYVSkErR+w7mf2u8m/y4+xHe7yY9DAXQMWQhpnMuFfScw==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [x64] + os: [linux] + + '@img/sharp-wasm32@0.33.5': + resolution: {integrity: sha512-ykUW4LVGaMcU9lu9thv85CbRMAwfeadCJHRsg2GmeRa/cJxsVY9Rbd57JcMxBkKHag5U/x7TSBpScF4U8ElVzg==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [wasm32] + + '@img/sharp-win32-ia32@0.33.5': + resolution: {integrity: sha512-T36PblLaTwuVJ/zw/LaH0PdZkRz5rd3SmMHX8GSmR7vtNSP5Z6bQkExdSK7xGWyxLw4sUknBuugTelgw2faBbQ==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [ia32] + os: [win32] + + '@img/sharp-win32-x64@0.33.5': + resolution: {integrity: sha512-MpY/o8/8kj+EcnxwvrP4aTJSWw/aZ7JIGR4aBeZkZw5B7/Jn+tY9/VNwtcoGmdT7GfggGIU4kygOMSbYnOrAbg==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [x64] + os: [win32] + + '@inquirer/figures@1.0.13': + resolution: {integrity: sha512-lGPVU3yO9ZNqA7vTYz26jny41lE7yoQansmqdMLBEfqaGsmdg7V3W9mK9Pvb5IL4EVZ9GnSDGMO/cJXud5dMaw==} + engines: {node: '>=18'} + + '@internationalized/date@3.5.4': + resolution: {integrity: sha512-qoVJVro+O0rBaw+8HPjUB1iH8Ihf8oziEnqMnvhJUSuVIrHOuZ6eNLHNvzXJKUvAtaDiqMnRlg8Z2mgh09BlUw==} + + '@internationalized/number@3.5.3': + resolution: {integrity: sha512-rd1wA3ebzlp0Mehj5YTuTI50AQEx80gWFyHcQu+u91/5NgdwBecO8BH6ipPfE+lmQ9d63vpB3H9SHoIUiupllw==} + + '@isaacs/cliui@8.0.2': + resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} + engines: {node: '>=12'} + + '@jridgewell/gen-mapping@0.3.12': + resolution: {integrity: sha512-OuLGC46TjB5BbN1dH8JULVVZY4WTdkF7tV9Ys6wLL1rubZnCMstOhNHueU5bLCrnRuDhKPDM4g6sw4Bel5Gzqg==} + + '@jridgewell/resolve-uri@3.1.2': + resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} + engines: {node: '>=6.0.0'} + + '@jridgewell/source-map@0.3.10': + resolution: {integrity: sha512-0pPkgz9dY+bijgistcTTJ5mR+ocqRXLuhXHYdzoMmmoJ2C9S46RCm2GMUbatPEUK9Yjy26IrAy8D/M00lLkv+Q==} + + '@jridgewell/sourcemap-codec@1.5.4': + resolution: {integrity: sha512-VT2+G1VQs/9oz078bLrYbecdZKs912zQlkelYpuf+SXF+QvZDYJlbx/LSx+meSAwdDFnF8FVXW92AVjjkVmgFw==} + + '@jridgewell/trace-mapping@0.3.29': + resolution: {integrity: sha512-uw6guiW/gcAGPDhLmd77/6lW8QLeiV5RUTsAX46Db6oLhGaVj4lhnPwb184s1bkc8kdVg/+h988dro8GRDpmYQ==} + + '@juggle/resize-observer@3.4.0': + resolution: {integrity: sha512-dfLbk+PwWvFzSxwk3n5ySL0hfBog779o8h68wK/7/APo/7cgyWp5jcXockbxdk5kFRkbeXWm4Fbi9FrdN381sA==} + + '@koa/cors@5.0.0': + resolution: {integrity: sha512-x/iUDjcS90W69PryLDIMgFyV21YLTnG9zOpPXS7Bkt2b8AsY3zZsIpOLBkYr9fBcF3HbkKaER5hOBZLfpLgYNw==} + engines: {node: '>= 14.0.0'} + + '@koa/router@12.0.2': + resolution: {integrity: sha512-sYcHglGKTxGF+hQ6x67xDfkE9o+NhVlRHBqq6gLywaMc6CojK/5vFZByphdonKinYlMLkEkacm+HEse9HzwgTA==} + engines: {node: '>= 12'} + + '@lezer/common@1.2.3': + resolution: {integrity: sha512-w7ojc8ejBqr2REPsWxJjrMFsA/ysDCFICn8zEOR9mrqzOu2amhITYuLD8ag6XZf0CFXDrhKqw7+tW8cX66NaDA==} + + '@lezer/highlight@1.2.1': + resolution: {integrity: sha512-Z5duk4RN/3zuVO7Jq0pGLJ3qynpxUVsh7IbUbGj88+uV2ApSAn6kWg2au3iJb+0Zi7kKtqffIESgNcRXWZWmSA==} + + '@lezer/json@1.0.3': + resolution: {integrity: sha512-BP9KzdF9Y35PDpv04r0VeSTKDeox5vVr3efE7eBbx3r4s3oNLfunchejZhjArmeieBH+nVOpgIiBJpEAv8ilqQ==} + + '@lezer/lr@1.4.2': + resolution: {integrity: sha512-pu0K1jCIdnQ12aWNaAVU5bzi7Bd1w54J3ECgANPmYLtQKP0HBj2cE/5coBD66MT10xbtIuUr7tg0Shbsvk0mDA==} + + '@marijn/find-cluster-break@1.0.2': + resolution: {integrity: sha512-l0h88YhZFyKdXIFNfSWpyjStDjGHwZ/U7iobcK1cQQD8sejsONdQtTVU+1wVN1PBw40PiiHB1vA5S7VTfQiP9g==} + + '@mux/mux-player-react@3.1.0': + resolution: {integrity: sha512-oJWcRtDNE84KKSi/5tz7CKGHBLA34V9XlLnv30qqVMAvfifa3S0lY82gP41YA0OfYANwp5Sg29bbh3quekusPg==} + peerDependencies: + '@types/react': ^17.0.0 || ^17.0.0-0 || ^18 || ^18.0.0-0 || ^19 || ^19.0.0-0 + '@types/react-dom': '*' + react: ^17.0.2 || ^17.0.0-0 || ^18 || ^18.0.0-0 || ^19 || ^19.0.0-0 + react-dom: ^17.0.2 || ^17.0.2-0 || ^18 || ^18.0.0-0 || ^19 || ^19.0.0-0 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@mux/mux-player@3.1.0': + resolution: {integrity: sha512-vU7HjvM3KLDfMwMfjbotlhjQrakwm9A4zixxtzBdxwDMLKf0FUKiFOGyTGOdsIKNBRVlS5Ffz9ERU+3Hh+XcBQ==} + + '@mux/mux-video@0.22.0': + resolution: {integrity: sha512-VrY4AVc6KkQcG0EPOtHf7aGXFwO1DTLZKtRRdPCx0KWSAlwR1II5YnHcEAwPbi1Uv94Hykq3Lbjt5dLqRNXKtA==} + + '@mux/playback-core@0.27.0': + resolution: {integrity: sha512-9kzpGRJNXLNMfFV6hvOde2+Uy3HyllwwEt9H5r4gYXOmrivQ6IWIGr9nXrUy7fmNkx6H05W+96zt1GhtBTlSDQ==} + + '@noble/hashes@1.8.0': + resolution: {integrity: sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==} + engines: {node: ^14.21.3 || >=16} + + '@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'} + + '@paralleldrive/cuid2@2.2.2': + resolution: {integrity: sha512-ZOBkgDwEdoYVlSeRbYYXs0S9MejQofiVYoTbKzy/6GQa39/q5tQU2IX46+shYnUkpEl3wc+J6wRlar7r2EK2xA==} + + '@pkgjs/parseargs@0.11.0': + resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} + engines: {node: '>=14'} + + '@pkgr/core@0.1.2': + resolution: {integrity: sha512-fdDH1LSGfZdTH2sxdpVMw31BanV28K/Gry0cVFxaNP77neJSkd82mM8ErPNYs9e+0O7SdHBLTDzDgwUuy18RnQ==} + engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} + + '@pmmmwh/react-refresh-webpack-plugin@0.5.15': + resolution: {integrity: sha512-LFWllMA55pzB9D34w/wXUCf8+c+IYKuJDgxiZ3qMhl64KRMBHYM1I3VdGaD2BV5FNPV2/S2596bppxHbv2ZydQ==} + engines: {node: '>= 10.13'} + peerDependencies: + '@types/webpack': 4.x || 5.x + react-refresh: '>=0.10.0 <1.0.0' + sockjs-client: ^1.4.0 + type-fest: '>=0.17.0 <5.0.0' + webpack: '>=4.43.0 <6.0.0' + webpack-dev-server: 3.x || 4.x || 5.x + webpack-hot-middleware: 2.x + webpack-plugin-serve: 0.x || 1.x + peerDependenciesMeta: + '@types/webpack': + optional: true + sockjs-client: + optional: true + type-fest: + optional: true + webpack-dev-server: + optional: true + webpack-hot-middleware: + optional: true + webpack-plugin-serve: + optional: true + + '@pnpm/config.env-replace@1.1.0': + resolution: {integrity: sha512-htyl8TWnKL7K/ESFa1oW2UB5lVDxuF5DpM7tBi6Hu2LNL3mWkIzNLG6N4zoCUP1lCKNxWy/3iu8mS8MvToGd6w==} + engines: {node: '>=12.22.0'} + + '@pnpm/network.ca-file@1.0.2': + resolution: {integrity: sha512-YcPQ8a0jwYU9bTdJDpXjMi7Brhkr1mXsXrUJvjqM2mQDgkRiz8jFaQGOdaLxgjtUfQgZhKy/O3cG/YwmgKaxLA==} + engines: {node: '>=12.22.0'} + + '@pnpm/npm-conf@2.3.1': + resolution: {integrity: sha512-c83qWb22rNRuB0UaVCI0uRPNRr8Z0FWnEIvT47jiHAmOIUHbBOg5XvV7pM5x+rKn9HRpjxquDbXYSXr3fAKFcw==} + engines: {node: '>=12'} + + '@polka/url@1.0.0-next.29': + resolution: {integrity: sha512-wwQAWhWSuHaag8c4q/KN/vCoeOJYshAIvMQwD4GpSb3OiZklFfvAgmj0VCBBImRpuF/aFgIRzllXlVX93Jevww==} + + '@radix-ui/number@1.0.1': + resolution: {integrity: sha512-T5gIdVO2mmPW3NNhjNgEP3cqMXjXL9UbO0BzWcXfvdBs+BohbQxvd/K5hSVKmn9/lbTdsQVKbUcP5WLCwvUbBg==} + + '@radix-ui/primitive@1.0.1': + resolution: {integrity: sha512-yQ8oGX2GVsEYMWGxcovu1uGWPCxV5BFfeeYxqPmuAzUyLT9qmaMXSAhXpb0WrspIeqYzdJpkh2vHModJPgRIaw==} + + '@radix-ui/react-accordion@1.1.2': + resolution: {integrity: sha512-fDG7jcoNKVjSK6yfmuAs0EnPDro0WMXIhMtXdTBWqEioVW206ku+4Lw07e+13lUkFkpoEQ2PdeMIAGpdqEAmDg==} + 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-alert-dialog@1.0.5': + resolution: {integrity: sha512-OrVIOcZL0tl6xibeuGt5/+UxoT2N27KCFOPjFyfXMnchxSHZ/OW7cCX2nGlIYJrbHK/fczPcFzAwvNBB6XBNMA==} + 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-arrow@1.0.3': + resolution: {integrity: sha512-wSP+pHsB/jQRaL6voubsQ/ZlrGBHHrOjmBnr19hxYgtS0WvAFwZhK2WP/YY5yF9uKECCEEDGxuLxq1NBK51wFA==} + 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-avatar@1.0.4': + resolution: {integrity: sha512-kVK2K7ZD3wwj3qhle0ElXhOjbezIgyl2hVvgwfIdexL3rN6zJmy5AqqIf+D31lxVppdzV8CjAfZ6PklkmInZLw==} + 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-checkbox@1.0.4': + resolution: {integrity: sha512-CBuGQa52aAYnADZVt/KBQzXrwx6TqnlwtcIPGtVt5JkkzQwMOLJjPukimhfKEr4GQNd43C+djUh5Ikopj8pSLg==} + 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-collapsible@1.0.3': + resolution: {integrity: sha512-UBmVDkmR6IvDsloHVN+3rtx4Mi5TFvylYXpluuv0f37dtaz3H99bp8No0LGXRigVpl3UAT4l9j6bIchh42S/Gg==} + 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-collection@1.0.3': + resolution: {integrity: sha512-3SzW+0PW7yBBoQlT8wNcGtaxaD0XSu0uLUFgrtHY08Acx05TaHaOmVLR73c0j/cqpDy53KBMO7s0dx2wmOIDIA==} + 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-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-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-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-direction@1.0.1': + resolution: {integrity: sha512-RXcvnXgyvYvBEOhCBuddKecVkoMiI10Jcm5cTI7abJRAHYfFxeu+FBQs/DvdxSYucxR5mna0dNsL6QFlds5TMA==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 + 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-dropdown-menu@2.0.6': + resolution: {integrity: sha512-i6TuFOoWmLWq+M/eCLGd/bQ2HfAX1RJgvrBQ6AQLmzfvsLdefxbWu8G9zczcPFfcSPehz9GcpF6K9QYreFV8hA==} + 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-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-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-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-menu@2.0.6': + resolution: {integrity: sha512-BVkFLS+bUC8HcImkRKPSiVumA1VPOOEC5WBMiT+QAVsPzW1FJzI9KnqgGxVDPBcql5xXrHkD3JOVoXWEXD8SYA==} + 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-popover@1.0.7': + resolution: {integrity: sha512-shtvVnlsxT6faMnK/a7n0wptwBD23xc1Z5mdrtKLwVEfsEMXodS0r5s0/g5P0hX//EKYZS2sxUjqfzlg52ZSnQ==} + 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-popper@1.1.3': + resolution: {integrity: sha512-cKpopj/5RHZWjrbF2846jBNacjQVwkP068DfmgrNJXpvVWrOvlAmE9xSiy5OqeE+Gi8D9fP+oDhUnPqNMY8/5w==} + 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.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-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-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-progress@1.0.3': + resolution: {integrity: sha512-5G6Om/tYSxjSeEdrb1VfKkfZfn/1IlPWd731h2RfPuSbIfNUgfqAwbKfJCg/PP6nuUCTrYzalwHSpSinoWoCag==} + 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-radio-group@1.1.3': + resolution: {integrity: sha512-x+yELayyefNeKeTx4fjK6j99Fs6c4qKm3aY38G3swQVTN6xMpsrbigC0uHs2L//g8q4qR7qOcww8430jJmi2ag==} + 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-roving-focus@1.0.4': + resolution: {integrity: sha512-2mUg5Mgcu001VkGy+FfzZyzbmuUWzgWkj3rvv4yu+mLw03+mTzbxZHvfcGyFp2b8EkQeMkpRQ5FiA2Vr2O6TeQ==} + 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-scroll-area@1.0.5': + resolution: {integrity: sha512-b6PAgH4GQf9QEn8zbT2XUHpW5z8BzqEc7Kl11TwDrvuTrxlkcjTD5qa/bxgKr+nmuXKu4L/W5UZ4mlP/VG/5Gw==} + 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-separator@1.0.3': + resolution: {integrity: sha512-itYmTy/kokS21aiV5+Z56MZB54KrhPgn6eHDKkFeOLR34HMN2s8PaN47qZZAGnvupcjxHaFZnW4pQEh0BvvVuw==} + 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-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-switch@1.0.3': + resolution: {integrity: sha512-mxm87F88HyHztsI7N+ZUmEoARGkC22YVW5CaC+Byc+HRpuvCrOBPTAnXgf+tZ/7i0Sg/eOePGdMhUKhPaQEqow==} + 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-tabs@1.0.4': + resolution: {integrity: sha512-egZfYY/+wRNCflXNHx+dePvnz9FbmssDTJBtgRfDY7e8SE5oIo3Py2eCB1ckAbh1Q7cQ/6yJZThJ++sgbxibog==} + 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-toggle-group@1.0.4': + resolution: {integrity: sha512-Uaj/M/cMyiyT9Bx6fOZO0SAG4Cls0GptBWiBmBxofmDbNVnYYoyRWj/2M/6VCi/7qcXFWnHhRUfdfZFvvkuu8A==} + 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-toggle@1.0.3': + resolution: {integrity: sha512-Pkqg3+Bc98ftZGsl60CLANXQBBQ4W3mTFS9EJvNxKMZ7magklKV69/id1mlAlOFDDfHvlCms0fx8fA4CMKDJHg==} + 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-toolbar@1.0.4': + resolution: {integrity: sha512-tBgmM/O7a07xbaEkYJWYTXkIdU/1pW4/KZORR43toC/4XWyBCURK0ei9kMUdp+gTPPKBgYLxXmRSH1EVcIDp8Q==} + 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-tooltip@1.0.7': + resolution: {integrity: sha512-lPh5iKNFVQ/jav/j6ZrWq3blfDJ0OH9R6FlNUHPMqdLuQ9vwDgFsRxvl8b7Asuy5c8xmoojHUxKHQSOAvMHxyw==} + 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-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-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-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-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-previous@1.0.1': + resolution: {integrity: sha512-cV5La9DPwiQ7S0gf/0qiD6YgNqM5Fk97Kdrlc5yBcrF3jyEZQwm7vYFqMo4IfeHgJXsRaMvLABFtd0OVEmZhDw==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-rect@1.0.1': + resolution: {integrity: sha512-Cq5DLuSiuYVKNU8orzJMbl15TXilTnJKUCltMVQg53BQOF1/C5toAaGrowkgksdBQ9H+SRL23g0HDmg9tvmxXw==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-size@1.0.1': + resolution: {integrity: sha512-ibay+VqrgcaI6veAojjofPATwledXiSmX+C0KrBk/xgpX9rBzPV3OsfwlhQdUOFbh+LKQorLYT+xTXW9V8yd0g==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-visually-hidden@1.0.3': + resolution: {integrity: sha512-D4w41yN5YRKtu464TLnByKzMDG/JlMPHtfZgQAu9v6mNakUqGUI9vUrfQKz8NK41VMm/xbZbh76NUTVtIYqOMA==} + 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/rect@1.0.1': + resolution: {integrity: sha512-fyrgCaedtvMg9NK3en0pnOYJdtfwxUcNolezkNPUsoX57X8oQk+NkqcvzHXD2uKNij6GXmWU9NDru2IWjrO4BQ==} + + '@react-dnd/asap@5.0.2': + resolution: {integrity: sha512-WLyfoHvxhs0V9U+GTsGilGgf2QsPl6ZZ44fnv0/b8T3nQyvzxidxsg/ZltbWssbsRDlYW8UKSQMTGotuTotZ6A==} + + '@react-dnd/invariant@4.0.2': + resolution: {integrity: sha512-xKCTqAK/FFauOM9Ta2pswIyT3D8AQlfrYdOi/toTPEhqCuAs1v5tcJ3Y08Izh1cJ5Jchwy9SeAXmMg6zrKs2iw==} + + '@react-dnd/shallowequal@4.0.2': + resolution: {integrity: sha512-/RVXdLvJxLg4QKvMoM5WlwNR9ViO9z8B/qPcc+C0Sa/teJY7QG7kJ441DwzOjMYEY7GmU4dj5EcGHIkKZiQZCA==} + + '@reduxjs/toolkit@1.9.7': + resolution: {integrity: sha512-t7v8ZPxhhKgOKtU+uyJT13lu4vL7az5aFi4IdoDs/eS548edn2M8Ik9h8fxgvMjGoAUVFSt6ZC1P5cWmQ014QQ==} + peerDependencies: + react: ^16.9.0 || ^17.0.0 || ^18 + react-redux: ^7.2.1 || ^8.0.2 + peerDependenciesMeta: + react: + optional: true + react-redux: + optional: true + + '@remix-run/router@1.23.0': + resolution: {integrity: sha512-O3rHJzAQKamUz1fvE0Qaw0xSFqsA/yafi2iqeE0pvdFtCO1viYx8QL6f3Ln/aCCTLxs68SLf0KPM9eSeM8yBnA==} + engines: {node: '>=14.0.0'} + + '@rollup/rollup-android-arm-eabi@4.46.2': + resolution: {integrity: sha512-Zj3Hl6sN34xJtMv7Anwb5Gu01yujyE/cLBDB2gnHTAHaWS1Z38L7kuSG+oAh0giZMqG060f/YBStXtMH6FvPMA==} + cpu: [arm] + os: [android] + + '@rollup/rollup-android-arm64@4.46.2': + resolution: {integrity: sha512-nTeCWY83kN64oQ5MGz3CgtPx8NSOhC5lWtsjTs+8JAJNLcP3QbLCtDDgUKQc/Ro/frpMq4SHUaHN6AMltcEoLQ==} + cpu: [arm64] + os: [android] + + '@rollup/rollup-darwin-arm64@4.46.2': + resolution: {integrity: sha512-HV7bW2Fb/F5KPdM/9bApunQh68YVDU8sO8BvcW9OngQVN3HHHkw99wFupuUJfGR9pYLLAjcAOA6iO+evsbBaPQ==} + cpu: [arm64] + os: [darwin] + + '@rollup/rollup-darwin-x64@4.46.2': + resolution: {integrity: sha512-SSj8TlYV5nJixSsm/y3QXfhspSiLYP11zpfwp6G/YDXctf3Xkdnk4woJIF5VQe0of2OjzTt8EsxnJDCdHd2xMA==} + cpu: [x64] + os: [darwin] + + '@rollup/rollup-freebsd-arm64@4.46.2': + resolution: {integrity: sha512-ZyrsG4TIT9xnOlLsSSi9w/X29tCbK1yegE49RYm3tu3wF1L/B6LVMqnEWyDB26d9Ecx9zrmXCiPmIabVuLmNSg==} + cpu: [arm64] + os: [freebsd] + + '@rollup/rollup-freebsd-x64@4.46.2': + resolution: {integrity: sha512-pCgHFoOECwVCJ5GFq8+gR8SBKnMO+xe5UEqbemxBpCKYQddRQMgomv1104RnLSg7nNvgKy05sLsY51+OVRyiVw==} + cpu: [x64] + os: [freebsd] + + '@rollup/rollup-linux-arm-gnueabihf@4.46.2': + resolution: {integrity: sha512-EtP8aquZ0xQg0ETFcxUbU71MZlHaw9MChwrQzatiE8U/bvi5uv/oChExXC4mWhjiqK7azGJBqU0tt5H123SzVA==} + cpu: [arm] + os: [linux] + + '@rollup/rollup-linux-arm-musleabihf@4.46.2': + resolution: {integrity: sha512-qO7F7U3u1nfxYRPM8HqFtLd+raev2K137dsV08q/LRKRLEc7RsiDWihUnrINdsWQxPR9jqZ8DIIZ1zJJAm5PjQ==} + cpu: [arm] + os: [linux] + + '@rollup/rollup-linux-arm64-gnu@4.46.2': + resolution: {integrity: sha512-3dRaqLfcOXYsfvw5xMrxAk9Lb1f395gkoBYzSFcc/scgRFptRXL9DOaDpMiehf9CO8ZDRJW2z45b6fpU5nwjng==} + cpu: [arm64] + os: [linux] + + '@rollup/rollup-linux-arm64-musl@4.46.2': + resolution: {integrity: sha512-fhHFTutA7SM+IrR6lIfiHskxmpmPTJUXpWIsBXpeEwNgZzZZSg/q4i6FU4J8qOGyJ0TR+wXBwx/L7Ho9z0+uDg==} + cpu: [arm64] + os: [linux] + + '@rollup/rollup-linux-loongarch64-gnu@4.46.2': + resolution: {integrity: sha512-i7wfGFXu8x4+FRqPymzjD+Hyav8l95UIZ773j7J7zRYc3Xsxy2wIn4x+llpunexXe6laaO72iEjeeGyUFmjKeA==} + cpu: [loong64] + os: [linux] + + '@rollup/rollup-linux-ppc64-gnu@4.46.2': + resolution: {integrity: sha512-B/l0dFcHVUnqcGZWKcWBSV2PF01YUt0Rvlurci5P+neqY/yMKchGU8ullZvIv5e8Y1C6wOn+U03mrDylP5q9Yw==} + cpu: [ppc64] + os: [linux] + + '@rollup/rollup-linux-riscv64-gnu@4.46.2': + resolution: {integrity: sha512-32k4ENb5ygtkMwPMucAb8MtV8olkPT03oiTxJbgkJa7lJ7dZMr0GCFJlyvy+K8iq7F/iuOr41ZdUHaOiqyR3iQ==} + cpu: [riscv64] + os: [linux] + + '@rollup/rollup-linux-riscv64-musl@4.46.2': + resolution: {integrity: sha512-t5B2loThlFEauloaQkZg9gxV05BYeITLvLkWOkRXogP4qHXLkWSbSHKM9S6H1schf/0YGP/qNKtiISlxvfmmZw==} + cpu: [riscv64] + os: [linux] + + '@rollup/rollup-linux-s390x-gnu@4.46.2': + resolution: {integrity: sha512-YKjekwTEKgbB7n17gmODSmJVUIvj8CX7q5442/CK80L8nqOUbMtf8b01QkG3jOqyr1rotrAnW6B/qiHwfcuWQA==} + cpu: [s390x] + os: [linux] + + '@rollup/rollup-linux-x64-gnu@4.46.2': + resolution: {integrity: sha512-Jj5a9RUoe5ra+MEyERkDKLwTXVu6s3aACP51nkfnK9wJTraCC8IMe3snOfALkrjTYd2G1ViE1hICj0fZ7ALBPA==} + cpu: [x64] + os: [linux] + + '@rollup/rollup-linux-x64-musl@4.46.2': + resolution: {integrity: sha512-7kX69DIrBeD7yNp4A5b81izs8BqoZkCIaxQaOpumcJ1S/kmqNFjPhDu1LHeVXv0SexfHQv5cqHsxLOjETuqDuA==} + cpu: [x64] + os: [linux] + + '@rollup/rollup-win32-arm64-msvc@4.46.2': + resolution: {integrity: sha512-wiJWMIpeaak/jsbaq2HMh/rzZxHVW1rU6coyeNNpMwk5isiPjSTx0a4YLSlYDwBH/WBvLz+EtsNqQScZTLJy3g==} + cpu: [arm64] + os: [win32] + + '@rollup/rollup-win32-ia32-msvc@4.46.2': + resolution: {integrity: sha512-gBgaUDESVzMgWZhcyjfs9QFK16D8K6QZpwAaVNJxYDLHWayOta4ZMjGm/vsAEy3hvlS2GosVFlBlP9/Wb85DqQ==} + cpu: [ia32] + os: [win32] + + '@rollup/rollup-win32-x64-msvc@4.46.2': + resolution: {integrity: sha512-CvUo2ixeIQGtF6WvuB87XWqPQkoFAFqW+HUo/WzHwuHDvIwZCtjdWXoYCcr06iKGydiqTclC4jU/TNObC/xKZg==} + cpu: [x64] + os: [win32] + + '@rushstack/node-core-library@5.13.0': + resolution: {integrity: sha512-IGVhy+JgUacAdCGXKUrRhwHMTzqhWwZUI+qEPcdzsb80heOw0QPbhhoVsoiMF7Klp8eYsp7hzpScMXmOa3Uhfg==} + peerDependencies: + '@types/node': '*' + peerDependenciesMeta: + '@types/node': + optional: true + + '@rushstack/terminal@0.15.2': + resolution: {integrity: sha512-7Hmc0ysK5077R/IkLS9hYu0QuNafm+TbZbtYVzCMbeOdMjaRboLKrhryjwZSRJGJzu+TV1ON7qZHeqf58XfLpA==} + peerDependencies: + '@types/node': '*' + peerDependenciesMeta: + '@types/node': + optional: true + + '@rushstack/ts-command-line@4.23.7': + resolution: {integrity: sha512-Gr9cB7DGe6uz5vq2wdr89WbVDKz0UeuFEn5H2CfWDe7JvjFFaiV15gi6mqDBTbHhHCWS7w8mF1h3BnIfUndqdA==} + + '@sec-ant/readable-stream@0.4.1': + resolution: {integrity: sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==} + + '@selderee/plugin-htmlparser2@0.11.0': + resolution: {integrity: sha512-P33hHGdldxGabLFjPPpaTxVolMrzrcegejx+0GxjrIb9Zv48D8yAIA/QTDR2dFl7Uz7urX8aX6+5bCZslr+gWQ==} + + '@sentry-internal/tracing@7.112.2': + resolution: {integrity: sha512-fT1Y46J4lfXZkgFkb03YMNeIEs2xS6jdKMoukMFQfRfVvL9fSWEbTgZpHPd/YTT8r2i082XzjtAoQNgklm/0Hw==} + engines: {node: '>=8'} + + '@sentry/core@7.112.2': + resolution: {integrity: sha512-gHPCcJobbMkk0VR18J65WYQTt3ED4qC6X9lHKp27Ddt63E+MDGkG6lvYBU1LS8cV7CdyBGC1XXDCfor61GvLsA==} + engines: {node: '>=8'} + + '@sentry/integrations@7.112.2': + resolution: {integrity: sha512-ioC2yyU6DqtLkdmWnm87oNvdn2+9oKctJeA4t+jkS6JaJ10DcezjCwiLscX4rhB9aWJV3IWF7Op0O6K3w0t2Hg==} + engines: {node: '>=8'} + + '@sentry/node@7.112.2': + resolution: {integrity: sha512-MNzkqER8jc2xOS3ArkCLH5hakzu15tcjeC7qjU7rQ1Ms4WuV+MG0docSRESux0/p23Qjzf9tZOc8C5Eq+Sxduw==} + engines: {node: '>=8'} + + '@sentry/types@7.112.2': + resolution: {integrity: sha512-kCMLt7yhY5OkWE9MeowlTNmox9pqDxcpvqguMo4BDNZM5+v9SEb1AauAdR78E1a1V8TyCzjBD7JDfXWhvpYBcQ==} + engines: {node: '>=8'} + + '@sentry/utils@7.112.2': + resolution: {integrity: sha512-OjLh0hx0t1EcL4ZIjf+4svlmmP+tHUDGcr5qpFWH78tjmkPW4+cqPuZCZfHSuWcDdeiaXi8TnYoVRqDcJKK/eQ==} + engines: {node: '>=8'} + + '@simov/deep-extend@1.0.0': + resolution: {integrity: sha512-Arv8/ZPcdKAMJnNF8cks35mPq1y3JnwH1lWpfWDKlJoj+Vw2xmA4+oL7m9GVHTgdX0mGFR7bCPTBTGbxhnfJJw==} + engines: {node: '>=4.0.0'} + + '@sindresorhus/is@4.6.0': + resolution: {integrity: sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==} + engines: {node: '>=10'} + + '@sindresorhus/merge-streams@4.0.0': + resolution: {integrity: sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==} + engines: {node: '>=18'} + + '@sindresorhus/slugify@1.1.0': + resolution: {integrity: sha512-ujZRbmmizX26yS/HnB3P9QNlNa4+UvHh+rIse3RbOXLp8yl6n1TxB4t7NHggtVgS8QmmOtzXo48kCxZGACpkPw==} + engines: {node: '>=10'} + + '@sindresorhus/transliterate@0.1.2': + resolution: {integrity: sha512-5/kmIOY9FF32nicXH+5yLNTX4NJ4atl7jRgqAJuIn/iyDFXBktOKDxCvyGE/EzmF4ngSUvjXxQUQlQiZ5lfw+w==} + engines: {node: '>=10'} + + '@smithy/abort-controller@4.0.5': + resolution: {integrity: sha512-jcrqdTQurIrBbUm4W2YdLVMQDoL0sA9DTxYd2s+R/y+2U9NLOP7Xf/YqfSg1FZhlZIYEnvk2mwbyvIfdLEPo8g==} + engines: {node: '>=18.0.0'} + + '@smithy/chunked-blob-reader-native@4.0.0': + resolution: {integrity: sha512-R9wM2yPmfEMsUmlMlIgSzOyICs0x9uu7UTHoccMyt7BWw8shcGM8HqB355+BZCPBcySvbTYMs62EgEQkNxz2ig==} + engines: {node: '>=18.0.0'} + + '@smithy/chunked-blob-reader@5.0.0': + resolution: {integrity: sha512-+sKqDBQqb036hh4NPaUiEkYFkTUGYzRsn3EuFhyfQfMy6oGHEUJDurLP9Ufb5dasr/XiAmPNMr6wa9afjQB+Gw==} + engines: {node: '>=18.0.0'} + + '@smithy/config-resolver@4.1.5': + resolution: {integrity: sha512-viuHMxBAqydkB0AfWwHIdwf/PRH2z5KHGUzqyRtS/Wv+n3IHI993Sk76VCA7dD/+GzgGOmlJDITfPcJC1nIVIw==} + engines: {node: '>=18.0.0'} + + '@smithy/core@3.8.0': + resolution: {integrity: sha512-EYqsIYJmkR1VhVE9pccnk353xhs+lB6btdutJEtsp7R055haMJp2yE16eSxw8fv+G0WUY6vqxyYOP8kOqawxYQ==} + engines: {node: '>=18.0.0'} + + '@smithy/credential-provider-imds@4.0.7': + resolution: {integrity: sha512-dDzrMXA8d8riFNiPvytxn0mNwR4B3h8lgrQ5UjAGu6T9z/kRg/Xncf4tEQHE/+t25sY8IH3CowcmWi+1U5B1Gw==} + engines: {node: '>=18.0.0'} + + '@smithy/eventstream-codec@4.0.5': + resolution: {integrity: sha512-miEUN+nz2UTNoRYRhRqVTJCx7jMeILdAurStT2XoS+mhokkmz1xAPp95DFW9Gxt4iF2VBqpeF9HbTQ3kY1viOA==} + engines: {node: '>=18.0.0'} + + '@smithy/eventstream-serde-browser@4.0.5': + resolution: {integrity: sha512-LCUQUVTbM6HFKzImYlSB9w4xafZmpdmZsOh9rIl7riPC3osCgGFVP+wwvYVw6pXda9PPT9TcEZxaq3XE81EdJQ==} + engines: {node: '>=18.0.0'} + + '@smithy/eventstream-serde-config-resolver@4.1.3': + resolution: {integrity: sha512-yTTzw2jZjn/MbHu1pURbHdpjGbCuMHWncNBpJnQAPxOVnFUAbSIUSwafiphVDjNV93TdBJWmeVAds7yl5QCkcA==} + engines: {node: '>=18.0.0'} + + '@smithy/eventstream-serde-node@4.0.5': + resolution: {integrity: sha512-lGS10urI4CNzz6YlTe5EYG0YOpsSp3ra8MXyco4aqSkQDuyZPIw2hcaxDU82OUVtK7UY9hrSvgWtpsW5D4rb4g==} + engines: {node: '>=18.0.0'} + + '@smithy/eventstream-serde-universal@4.0.5': + resolution: {integrity: sha512-JFnmu4SU36YYw3DIBVao3FsJh4Uw65vVDIqlWT4LzR6gXA0F3KP0IXFKKJrhaVzCBhAuMsrUUaT5I+/4ZhF7aw==} + engines: {node: '>=18.0.0'} + + '@smithy/fetch-http-handler@5.1.1': + resolution: {integrity: sha512-61WjM0PWmZJR+SnmzaKI7t7G0UkkNFboDpzIdzSoy7TByUzlxo18Qlh9s71qug4AY4hlH/CwXdubMtkcNEb/sQ==} + engines: {node: '>=18.0.0'} + + '@smithy/hash-blob-browser@4.0.5': + resolution: {integrity: sha512-F7MmCd3FH/Q2edhcKd+qulWkwfChHbc9nhguBlVjSUE6hVHhec3q6uPQ+0u69S6ppvLtR3eStfCuEKMXBXhvvA==} + engines: {node: '>=18.0.0'} + + '@smithy/hash-node@4.0.5': + resolution: {integrity: sha512-cv1HHkKhpyRb6ahD8Vcfb2Hgz67vNIXEp2vnhzfxLFGRukLCNEA5QdsorbUEzXma1Rco0u3rx5VTqbM06GcZqQ==} + engines: {node: '>=18.0.0'} + + '@smithy/hash-stream-node@4.0.5': + resolution: {integrity: sha512-IJuDS3+VfWB67UC0GU0uYBG/TA30w+PlOaSo0GPm9UHS88A6rCP6uZxNjNYiyRtOcjv7TXn/60cW8ox1yuZsLg==} + engines: {node: '>=18.0.0'} + + '@smithy/invalid-dependency@4.0.5': + resolution: {integrity: sha512-IVnb78Qtf7EJpoEVo7qJ8BEXQwgC4n3igeJNNKEj/MLYtapnx8A67Zt/J3RXAj2xSO1910zk0LdFiygSemuLow==} + engines: {node: '>=18.0.0'} + + '@smithy/is-array-buffer@2.2.0': + resolution: {integrity: sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==} + engines: {node: '>=14.0.0'} + + '@smithy/is-array-buffer@4.0.0': + resolution: {integrity: sha512-saYhF8ZZNoJDTvJBEWgeBccCg+yvp1CX+ed12yORU3NilJScfc6gfch2oVb4QgxZrGUx3/ZJlb+c/dJbyupxlw==} + engines: {node: '>=18.0.0'} + + '@smithy/md5-js@4.0.5': + resolution: {integrity: sha512-8n2XCwdUbGr8W/XhMTaxILkVlw2QebkVTn5tm3HOcbPbOpWg89zr6dPXsH8xbeTsbTXlJvlJNTQsKAIoqQGbdA==} + engines: {node: '>=18.0.0'} + + '@smithy/middleware-content-length@4.0.5': + resolution: {integrity: sha512-l1jlNZoYzoCC7p0zCtBDE5OBXZ95yMKlRlftooE5jPWQn4YBPLgsp+oeHp7iMHaTGoUdFqmHOPa8c9G3gBsRpQ==} + engines: {node: '>=18.0.0'} + + '@smithy/middleware-endpoint@4.1.18': + resolution: {integrity: sha512-ZhvqcVRPZxnZlokcPaTwb+r+h4yOIOCJmx0v2d1bpVlmP465g3qpVSf7wxcq5zZdu4jb0H4yIMxuPwDJSQc3MQ==} + engines: {node: '>=18.0.0'} + + '@smithy/middleware-retry@4.1.19': + resolution: {integrity: sha512-X58zx/NVECjeuUB6A8HBu4bhx72EoUz+T5jTMIyeNKx2lf+Gs9TmWPNNkH+5QF0COjpInP/xSpJGJ7xEnAklQQ==} + engines: {node: '>=18.0.0'} + + '@smithy/middleware-serde@4.0.9': + resolution: {integrity: sha512-uAFFR4dpeoJPGz8x9mhxp+RPjo5wW0QEEIPPPbLXiRRWeCATf/Km3gKIVR5vaP8bN1kgsPhcEeh+IZvUlBv6Xg==} + engines: {node: '>=18.0.0'} + + '@smithy/middleware-stack@4.0.5': + resolution: {integrity: sha512-/yoHDXZPh3ocRVyeWQFvC44u8seu3eYzZRveCMfgMOBcNKnAmOvjbL9+Cp5XKSIi9iYA9PECUuW2teDAk8T+OQ==} + engines: {node: '>=18.0.0'} + + '@smithy/node-config-provider@4.1.4': + resolution: {integrity: sha512-+UDQV/k42jLEPPHSn39l0Bmc4sB1xtdI9Gd47fzo/0PbXzJ7ylgaOByVjF5EeQIumkepnrJyfx86dPa9p47Y+w==} + engines: {node: '>=18.0.0'} + + '@smithy/node-http-handler@4.1.1': + resolution: {integrity: sha512-RHnlHqFpoVdjSPPiYy/t40Zovf3BBHc2oemgD7VsVTFFZrU5erFFe0n52OANZZ/5sbshgD93sOh5r6I35Xmpaw==} + engines: {node: '>=18.0.0'} + + '@smithy/property-provider@4.0.5': + resolution: {integrity: sha512-R/bswf59T/n9ZgfgUICAZoWYKBHcsVDurAGX88zsiUtOTA/xUAPyiT+qkNCPwFn43pZqN84M4MiUsbSGQmgFIQ==} + engines: {node: '>=18.0.0'} + + '@smithy/protocol-http@5.1.3': + resolution: {integrity: sha512-fCJd2ZR7D22XhDY0l+92pUag/7je2BztPRQ01gU5bMChcyI0rlly7QFibnYHzcxDvccMjlpM/Q1ev8ceRIb48w==} + engines: {node: '>=18.0.0'} + + '@smithy/querystring-builder@4.0.5': + resolution: {integrity: sha512-NJeSCU57piZ56c+/wY+AbAw6rxCCAOZLCIniRE7wqvndqxcKKDOXzwWjrY7wGKEISfhL9gBbAaWWgHsUGedk+A==} + engines: {node: '>=18.0.0'} + + '@smithy/querystring-parser@4.0.5': + resolution: {integrity: sha512-6SV7md2CzNG/WUeTjVe6Dj8noH32r4MnUeFKZrnVYsQxpGSIcphAanQMayi8jJLZAWm6pdM9ZXvKCpWOsIGg0w==} + engines: {node: '>=18.0.0'} + + '@smithy/service-error-classification@4.0.7': + resolution: {integrity: sha512-XvRHOipqpwNhEjDf2L5gJowZEm5nsxC16pAZOeEcsygdjv9A2jdOh3YoDQvOXBGTsaJk6mNWtzWalOB9976Wlg==} + engines: {node: '>=18.0.0'} + + '@smithy/shared-ini-file-loader@4.0.5': + resolution: {integrity: sha512-YVVwehRDuehgoXdEL4r1tAAzdaDgaC9EQvhK0lEbfnbrd0bd5+CTQumbdPryX3J2shT7ZqQE+jPW4lmNBAB8JQ==} + engines: {node: '>=18.0.0'} + + '@smithy/signature-v4@5.1.3': + resolution: {integrity: sha512-mARDSXSEgllNzMw6N+mC+r1AQlEBO3meEAkR/UlfAgnMzJUB3goRBWgip1EAMG99wh36MDqzo86SfIX5Y+VEaw==} + engines: {node: '>=18.0.0'} + + '@smithy/smithy-client@4.4.10': + resolution: {integrity: sha512-iW6HjXqN0oPtRS0NK/zzZ4zZeGESIFcxj2FkWed3mcK8jdSdHzvnCKXSjvewESKAgGKAbJRA+OsaqKhkdYRbQQ==} + engines: {node: '>=18.0.0'} + + '@smithy/types@4.3.2': + resolution: {integrity: sha512-QO4zghLxiQ5W9UZmX2Lo0nta2PuE1sSrXUYDoaB6HMR762C0P7v/HEPHf6ZdglTVssJG1bsrSBxdc3quvDSihw==} + engines: {node: '>=18.0.0'} + + '@smithy/url-parser@4.0.5': + resolution: {integrity: sha512-j+733Um7f1/DXjYhCbvNXABV53NyCRRA54C7bNEIxNPs0YjfRxeMKjjgm2jvTYrciZyCjsicHwQ6Q0ylo+NAUw==} + engines: {node: '>=18.0.0'} + + '@smithy/util-base64@4.0.0': + resolution: {integrity: sha512-CvHfCmO2mchox9kjrtzoHkWHxjHZzaFojLc8quxXY7WAAMAg43nuxwv95tATVgQFNDwd4M9S1qFzj40Ul41Kmg==} + engines: {node: '>=18.0.0'} + + '@smithy/util-body-length-browser@4.0.0': + resolution: {integrity: sha512-sNi3DL0/k64/LO3A256M+m3CDdG6V7WKWHdAiBBMUN8S3hK3aMPhwnPik2A/a2ONN+9doY9UxaLfgqsIRg69QA==} + engines: {node: '>=18.0.0'} + + '@smithy/util-body-length-node@4.0.0': + resolution: {integrity: sha512-q0iDP3VsZzqJyje8xJWEJCNIu3lktUGVoSy1KB0UWym2CL1siV3artm+u1DFYTLejpsrdGyCSWBdGNjJzfDPjg==} + engines: {node: '>=18.0.0'} + + '@smithy/util-buffer-from@2.2.0': + resolution: {integrity: sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==} + engines: {node: '>=14.0.0'} + + '@smithy/util-buffer-from@4.0.0': + resolution: {integrity: sha512-9TOQ7781sZvddgO8nxueKi3+yGvkY35kotA0Y6BWRajAv8jjmigQ1sBwz0UX47pQMYXJPahSKEKYFgt+rXdcug==} + engines: {node: '>=18.0.0'} + + '@smithy/util-config-provider@4.0.0': + resolution: {integrity: sha512-L1RBVzLyfE8OXH+1hsJ8p+acNUSirQnWQ6/EgpchV88G6zGBTDPdXiiExei6Z1wR2RxYvxY/XLw6AMNCCt8H3w==} + engines: {node: '>=18.0.0'} + + '@smithy/util-defaults-mode-browser@4.0.26': + resolution: {integrity: sha512-xgl75aHIS/3rrGp7iTxQAOELYeyiwBu+eEgAk4xfKwJJ0L8VUjhO2shsDpeil54BOFsqmk5xfdesiewbUY5tKQ==} + engines: {node: '>=18.0.0'} + + '@smithy/util-defaults-mode-node@4.0.26': + resolution: {integrity: sha512-z81yyIkGiLLYVDetKTUeCZQ8x20EEzvQjrqJtb/mXnevLq2+w3XCEWTJ2pMp401b6BkEkHVfXb/cROBpVauLMQ==} + engines: {node: '>=18.0.0'} + + '@smithy/util-endpoints@3.0.7': + resolution: {integrity: sha512-klGBP+RpBp6V5JbrY2C/VKnHXn3d5V2YrifZbmMY8os7M6m8wdYFoO6w/fe5VkP+YVwrEktW3IWYaSQVNZJ8oQ==} + engines: {node: '>=18.0.0'} + + '@smithy/util-hex-encoding@4.0.0': + resolution: {integrity: sha512-Yk5mLhHtfIgW2W2WQZWSg5kuMZCVbvhFmC7rV4IO2QqnZdbEFPmQnCcGMAX2z/8Qj3B9hYYNjZOhWym+RwhePw==} + engines: {node: '>=18.0.0'} + + '@smithy/util-middleware@4.0.5': + resolution: {integrity: sha512-N40PfqsZHRSsByGB81HhSo+uvMxEHT+9e255S53pfBw/wI6WKDI7Jw9oyu5tJTLwZzV5DsMha3ji8jk9dsHmQQ==} + engines: {node: '>=18.0.0'} + + '@smithy/util-retry@4.0.7': + resolution: {integrity: sha512-TTO6rt0ppK70alZpkjwy+3nQlTiqNfoXja+qwuAchIEAIoSZW8Qyd76dvBv3I5bCpE38APafG23Y/u270NspiQ==} + engines: {node: '>=18.0.0'} + + '@smithy/util-stream@4.2.4': + resolution: {integrity: sha512-vSKnvNZX2BXzl0U2RgCLOwWaAP9x/ddd/XobPK02pCbzRm5s55M53uwb1rl/Ts7RXZvdJZerPkA+en2FDghLuQ==} + engines: {node: '>=18.0.0'} + + '@smithy/util-uri-escape@4.0.0': + resolution: {integrity: sha512-77yfbCbQMtgtTylO9itEAdpPXSog3ZxMe09AEhm0dU0NLTalV70ghDZFR+Nfi1C60jnJoh/Re4090/DuZh2Omg==} + engines: {node: '>=18.0.0'} + + '@smithy/util-utf8@2.3.0': + resolution: {integrity: sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==} + engines: {node: '>=14.0.0'} + + '@smithy/util-utf8@4.0.0': + resolution: {integrity: sha512-b+zebfKCfRdgNJDknHCob3O7FpeYQN6ZG6YLExMcasDHsCXlsXCEuiPZeLnJLpwa5dvPetGlnGCiMHuLwGvFow==} + engines: {node: '>=18.0.0'} + + '@smithy/util-waiter@4.0.7': + resolution: {integrity: sha512-mYqtQXPmrwvUljaHyGxYUIIRI3qjBTEb/f5QFi3A6VlxhpmZd5mWXn9W+qUkf2pVE1Hv3SqxefiZOPGdxmO64A==} + engines: {node: '>=18.0.0'} + + '@strapi/admin@5.21.0': + resolution: {integrity: sha512-fCxQSfkJJU9tV4SG56GpIcNQWoOzK5ZRAhELvv+lrdW1NlLUqt453pqMImIIvFRP6VSMobWv5cx6qtGpJ/ewwg==} + engines: {node: '>=18.0.0 <=22.x.x', npm: '>=6.0.0'} + peerDependencies: + '@strapi/data-transfer': ^5.0.0 + react: ^17.0.0 || ^18.0.0 + react-dom: ^17.0.0 || ^18.0.0 + react-router-dom: ^6.0.0 + styled-components: ^6.0.0 + + '@strapi/cloud-cli@5.21.0': + resolution: {integrity: sha512-j0q16MPvR2jlVXq+oTVxCAf2xFMtZENAe8ac7yDFniWNNICI3kX+eRjdPmVUL9lyArs9ZPqPeEmoKiLmV5+BFA==} + engines: {node: '>=18.0.0 <=22.x.x', npm: '>=6.0.0'} + hasBin: true + + '@strapi/content-manager@5.21.0': + resolution: {integrity: sha512-qEKECBfNM5uVdON75oRPhQeeBGqQ6Ynf94dEugX/XV0S7QjlKxD+FnyO9m8TC7gJIubSmafHJNbk2rq52aNAZw==} + engines: {node: '>=18.0.0 <=22.x.x', npm: '>=6.0.0'} + peerDependencies: + '@strapi/admin': ^5.0.0 + react: ^17.0.0 || ^18.0.0 + react-dom: ^17.0.0 || ^18.0.0 + react-router-dom: ^6.0.0 + styled-components: ^6.0.0 + + '@strapi/content-releases@5.21.0': + resolution: {integrity: sha512-Ewg2u5uIHJdZpzH5iY8vKFwKhQ7ptZyoJnTtHEen6YyLyCKcLdHByv5XAwf1i7mh2ph38ZeLf7dQZ5IpeC/dmA==} + engines: {node: '>=18.0.0 <=22.x.x', npm: '>=6.0.0'} + peerDependencies: + '@strapi/admin': ^5.0.0 + '@strapi/content-manager': ^5.0.0 + react: ^17.0.0 || ^18.0.0 + react-dom: ^17.0.0 || ^18.0.0 + react-router-dom: ^6.0.0 + styled-components: ^6.0.0 + + '@strapi/content-type-builder@5.21.0': + resolution: {integrity: sha512-jKE+iyuQy0d0IZM41dBmSfxZ0zh3TCfmCy8AsBry3Y4eN1qdpTxjzuuO9c+YfSspGfFm2tUKMYzUALe97I+h+w==} + engines: {node: '>=18.0.0 <=22.x.x', npm: '>=6.0.0'} + peerDependencies: + '@strapi/admin': ^5.0.0 + react: ^17.0.0 || ^18.0.0 + react-dom: ^17.0.0 || ^18.0.0 + react-router-dom: ^6.0.0 + styled-components: ^6.0.0 + + '@strapi/core@5.21.0': + resolution: {integrity: sha512-f0s9ErTPGtTsI3m9H44xl3gg8Q1IIAOAFEr4udLOoMkqfelVPdbjjV8UDsFRX514Bsv8ZaLzOG9UkFrdhBlbRQ==} + engines: {node: '>=18.0.0 <=22.x.x', npm: '>=6.0.0'} + + '@strapi/data-transfer@5.21.0': + resolution: {integrity: sha512-57+E7P5Qom8+XG1JiRyMMUhW+CJ6s7AZXIyeGSxiMO9qrsvpdyYjmOGv5oIXxg5RmIAyzJceJjgU4aaPAIb7eA==} + engines: {node: '>=18.0.0 <=22.x.x', npm: '>=6.0.0'} + + '@strapi/database@5.21.0': + resolution: {integrity: sha512-fFujURfIC1v3mLopUvovX4HI9YVhpqfKY4afnEK7l0WKYW/42KuM9EyRNRgrtvqx7SE1R73Ylj/tcfGG2hWpag==} + engines: {node: '>=18.0.0 <=22.x.x', npm: '>=6.0.0'} + + '@strapi/design-system@2.0.0-rc.29': + resolution: {integrity: sha512-Up8wGVdo1mvTK/F/u7qEgHn298rRaitBI+hn0RgtU90CynLO+Lo+b2mo7aGY+ZRk6hYp7xkXBW9fgS+DrnDNZA==} + peerDependencies: + '@strapi/icons': ^2.0.0 || ^2.0.0-beta || ^2.0.0-alpha + react: ^17.0.0 || ^18.0.0 + react-dom: ^17.0.0 || ^18.0.0 + styled-components: ^6.0.0 + + '@strapi/email@5.21.0': + resolution: {integrity: sha512-Nl7CqFZ8FAfuNrbRnfCCSMJIUl3thoYbhpsD0DTA+pMOg4Hpnin+2OHnM4gDBsnepTGEgKzK1cuuQubI0ZiKPg==} + engines: {node: '>=18.0.0 <=22.x.x', npm: '>=6.0.0'} + peerDependencies: + '@strapi/admin': ^5.0.0 + koa: ^2.15.2 + react: ^17.0.0 || ^18.0.0 + react-dom: ^17.0.0 || ^18.0.0 + react-router-dom: ^6.0.0 + styled-components: ^6.0.0 + + '@strapi/generators@5.21.0': + resolution: {integrity: sha512-aoaErWK+5ma6SwaIEpKWjPJPRv86CznJE4kIteNnHDWaIA7BVX74c/MEuVJtBAm9LDEyXe0TKcVl1FgUIwxYYA==} + engines: {node: '>=18.0.0 <=22.x.x', npm: '>=6.0.0'} + + '@strapi/i18n@5.21.0': + resolution: {integrity: sha512-sUU72eJ8hxoAdKdiVmvAqwlGw/Npv8qI2qpKOfDtZaiailxiecwBeEEuAYFM2U67H1yKKvUi9M+fU4wXv86F1g==} + engines: {node: '>=18.0.0 <=22.x.x', npm: '>=6.0.0'} + peerDependencies: + '@strapi/admin': ^5.0.0 + '@strapi/content-manager': ^5.0.0 + react: ^17.0.0 || ^18.0.0 + react-dom: ^17.0.0 || ^18.0.0 + react-router-dom: ^6.0.0 + styled-components: ^6.0.0 + + '@strapi/icons@2.0.0-rc.29': + resolution: {integrity: sha512-VFmvS41vYq6qgRShIMlZZPkr6DteINYya67Ghxtd5b+agWziKSpV6W1yMyFLJwSEXEyPxhvaVHw/xG4BUfpYNg==} + peerDependencies: + react: ^17.0.0 || ^18.0.0 + react-dom: ^17.0.0 || ^18.0.0 + styled-components: ^6.0.0 + + '@strapi/logger@5.21.0': + resolution: {integrity: sha512-TOJvY1vEmqBtpdXwr7FdYusbiXTPtvMG5c8VXiSeXX75dbZJUBlsELf9uZmafHeF14EvhV6NIgeYp7aED1s9bA==} + engines: {node: '>=18.0.0 <=22.x.x', npm: '>=6.0.0'} + + '@strapi/openapi@5.21.0': + resolution: {integrity: sha512-FRlnXV/5+WGCJ4c429b8UUe4Or8TgFAqX9O6pVGdJjweQS3ZvLk7u2uIDx3v26j1tSxqHrfZKyJszyQH89eyKQ==} + engines: {node: '>=18.0.0 <=22.x.x', npm: '>=6.0.0'} + + '@strapi/pack-up@5.1.0': + resolution: {integrity: sha512-Mi0hVkt3WgKVTlLCe4aUqGlhHWZesXTEr8PiDgYbcDexEozLgbTjcNcRoK6omehDlL4fBQ5XvwWoO+XmhQttUA==} + hasBin: true + + '@strapi/permissions@5.21.0': + resolution: {integrity: sha512-yFhnBCuf9SvEv3xNradyM6coGUrM72VeQwhdIJueM71pTtb3sQruWnPEO04WJLoFqj++PW/FPb264jrhvezCLw==} + engines: {node: '>=18.0.0 <=22.x.x', npm: '>=6.0.0'} + + '@strapi/plugin-cloud@5.21.0': + resolution: {integrity: sha512-leFUDxUNU0zUXuUlcZkNkVeDgvpKDS9U0Xddt8Whdrmwjat/r2//rBMg0qP+ZP4vv07g1AVqC1VV7ARmVep7jQ==} + engines: {node: '>=18.0.0 <=22.x.x', npm: '>=6.0.0'} + peerDependencies: + '@strapi/admin': ^5.0.0 + '@strapi/strapi': ^5.0.0 + react: ^17.0.0 || ^18.0.0 + react-dom: ^17.0.0 || ^18.0.0 + react-router-dom: ^6.0.0 + styled-components: ^6.0.0 + + '@strapi/plugin-sentry@5.21.0': + resolution: {integrity: sha512-wtbDDlZX6cLBAM/GoCYCUSWUEs68F+29IzUPRYpJDY8XJJVWS6WokJ3JnthYru68/77edOHOW/6xlte68WvPQQ==} + engines: {node: '>=18.0.0 <=22.x.x', npm: '>=6.0.0'} + peerDependencies: + '@strapi/strapi': ^5.0.0 + react: ^17.0.0 || ^18.0.0 + react-dom: ^17.0.0 || ^18.0.0 + react-router-dom: ^6.0.0 + styled-components: ^6.0.0 + + '@strapi/plugin-users-permissions@5.21.0': + resolution: {integrity: sha512-FYBEB2iixuTYtMby5hL7nfctvipTD8BfmuEZQGBAGoiDPRwKvKR9+PLcJF7fEwkQVtRKpOl2C+7YQwg1bP2oow==} + engines: {node: '>=18.0.0 <=22.x.x', npm: '>=6.0.0'} + peerDependencies: + '@strapi/strapi': ^5.0.0 + react: ^17.0.0 || ^18.0.0 + react-dom: ^17.0.0 || ^18.0.0 + react-router-dom: ^6.0.0 + styled-components: ^6.0.0 + + '@strapi/provider-email-amazon-ses@5.21.0': + resolution: {integrity: sha512-BeXpHFI0uS6Us3AkYQHq27HbtFu6J6yzjHpHIvhBPRE4mvmubGj3zKiYG6tQEXYoLnOw4LHt7XNfb1zKKMjFTg==} + engines: {node: '>=18.0.0 <=22.x.x', npm: '>=6.0.0'} + + '@strapi/provider-email-sendmail@5.21.0': + resolution: {integrity: sha512-1mAGu59HJmGP07z4pDPFkjBfCnsox8GZN/p2UoSiuchMZSUurA8R0Fuoa6lukf+bq+w2n0diM8WvQWPOi66/Jw==} + engines: {node: '>=18.0.0 <=22.x.x', npm: '>=6.0.0'} + + '@strapi/provider-upload-local@5.21.0': + resolution: {integrity: sha512-dNGfUhWLcANpM9vd6Ef2oorgmI9JFWlXH16Qbkx9oh/Zatas73GF8e9JsS0FEYAD9133CS+TryEqdctYXIFG8g==} + engines: {node: '>=18.0.0 <=22.x.x', npm: '>=6.0.0'} + + '@strapi/review-workflows@5.21.0': + resolution: {integrity: sha512-Wxa7D4CURXD81hiaK+fvNa9KcbJ2/HBNZ7q+YhlW/KWl6bzj7Wf1lf/cnd3JrpS3RTXn3GOCaZFOQKHuHntHCw==} + engines: {node: '>=18.0.0 <=22.x.x', npm: '>=6.0.0'} + peerDependencies: + '@strapi/admin': ^5.0.0 + '@strapi/content-manager': ^5.0.0 + react: ^17.0.0 || ^18.0.0 + react-dom: ^17.0.0 || ^18.0.0 + react-router-dom: ^6.0.0 + styled-components: ^6.0.0 + + '@strapi/sdk-plugin@5.3.2': + resolution: {integrity: sha512-BQTVhnLIIOg9nfP1VbH3Uw4AXZKyy8ULU1u6lhiMFlNZCn8P4rG22pnWiBWEVU3dR9aWdaFSZLrYzVDFeoNxUQ==} + engines: {node: '>=18.0.0 <=22.x.x', npm: '>=6.0.0'} + hasBin: true + + '@strapi/strapi@5.21.0': + resolution: {integrity: sha512-jy5D3x/cGftJ+BFu8pa3EnzELEoXH0j80AnjHW7zaCY1brI9ksdqc5ENcArRGVvbBJGNuZWdUF45tB7yb8ONYw==} + engines: {node: '>=18.0.0 <=22.x.x', npm: '>=6.0.0'} + hasBin: true + peerDependencies: + react: ^17.0.0 || ^18.0.0 + react-dom: ^17.0.0 || ^18.0.0 + react-router-dom: ^6.0.0 + styled-components: ^6.0.0 + + '@strapi/types@5.21.0': + resolution: {integrity: sha512-QAk317VGpHmvk6HlN0h+mlsuceP0uZHvHWNL8VcPORWVZNYbP+mbdKw0mgu6ot22mtlalTDgZuktjw4S666i3Q==} + engines: {node: '>=18.0.0 <=22.x.x', npm: '>=6.0.0'} + + '@strapi/typescript-utils@5.21.0': + resolution: {integrity: sha512-PR1/KewnUu/Y1bNN/dog6QMgT6GyWoVfokevc6Qhdm0YTxR/q62u/z7a/XqT8M2+ST2B0bdKittBp3UsqlUwdQ==} + engines: {node: '>=18.0.0 <=22.x.x', npm: '>=6.0.0'} + + '@strapi/ui-primitives@2.0.0-rc.29': + resolution: {integrity: sha512-jLVuK0BMEG11INhdNgEuzvRQovxSEgcJ0BKCmOf4i5V2nygtliaBmhqy1bsu4sz+D/pEP4ZZLjjHzEnqr0XYoQ==} + peerDependencies: + react: ^17.0.0 || ^18.0.0 + react-dom: ^17.0.0 || ^18.0.0 + + '@strapi/upload@5.21.0': + resolution: {integrity: sha512-HU85C2zZW6WP5UZgYSIm4HUJdDKX3KKMwes2cqihJ/dRXIj0Dl5Fdt/AymBfnxSn8ntl3/LRgQzrAo+Ez33Svw==} + engines: {node: '>=18.0.0 <=22.x.x', npm: '>=6.0.0'} + peerDependencies: + '@strapi/admin': ^5.0.0 + react: ^17.0.0 || ^18.0.0 + react-dom: ^17.0.0 || ^18.0.0 + react-router-dom: ^6.0.0 + styled-components: ^6.0.0 + + '@strapi/utils@5.21.0': + resolution: {integrity: sha512-w3pJzi0KnxOe7grpaJOgZOSUz6p7k2UYJXKgV/6Kia6+Pqjb8UkV3gNFOJucJyK9LVf1aD6dDUAFUXPWGQiv/A==} + engines: {node: '>=18.0.0 <=22.x.x', npm: '>=6.0.0'} + + '@swc/core-darwin-arm64@1.13.3': + resolution: {integrity: sha512-ux0Ws4pSpBTqbDS9GlVP354MekB1DwYlbxXU3VhnDr4GBcCOimpocx62x7cFJkSpEBF8bmX8+/TTCGKh4PbyXw==} + engines: {node: '>=10'} + cpu: [arm64] + os: [darwin] + + '@swc/core-darwin-x64@1.13.3': + resolution: {integrity: sha512-p0X6yhxmNUOMZrbeZ3ZNsPige8lSlSe1llllXvpCLkKKxN/k5vZt1sULoq6Nj4eQ7KeHQVm81/+AwKZyf/e0TA==} + engines: {node: '>=10'} + cpu: [x64] + os: [darwin] + + '@swc/core-linux-arm-gnueabihf@1.13.3': + resolution: {integrity: sha512-OmDoiexL2fVWvQTCtoh0xHMyEkZweQAlh4dRyvl8ugqIPEVARSYtaj55TBMUJIP44mSUOJ5tytjzhn2KFxFcBA==} + engines: {node: '>=10'} + cpu: [arm] + os: [linux] + + '@swc/core-linux-arm64-gnu@1.13.3': + resolution: {integrity: sha512-STfKku3QfnuUj6k3g9ld4vwhtgCGYIFQmsGPPgT9MK/dI3Lwnpe5Gs5t1inoUIoGNP8sIOLlBB4HV4MmBjQuhw==} + engines: {node: '>=10'} + cpu: [arm64] + os: [linux] + + '@swc/core-linux-arm64-musl@1.13.3': + resolution: {integrity: sha512-bc+CXYlFc1t8pv9yZJGus372ldzOVscBl7encUBlU1m/Sig0+NDJLz6cXXRcFyl6ABNOApWeR4Yl7iUWx6C8og==} + engines: {node: '>=10'} + cpu: [arm64] + os: [linux] + + '@swc/core-linux-x64-gnu@1.13.3': + resolution: {integrity: sha512-dFXoa0TEhohrKcxn/54YKs1iwNeW6tUkHJgXW33H381SvjKFUV53WR231jh1sWVJETjA3vsAwxKwR23s7UCmUA==} + engines: {node: '>=10'} + cpu: [x64] + os: [linux] + + '@swc/core-linux-x64-musl@1.13.3': + resolution: {integrity: sha512-ieyjisLB+ldexiE/yD8uomaZuZIbTc8tjquYln9Quh5ykOBY7LpJJYBWvWtm1g3pHv6AXlBI8Jay7Fffb6aLfA==} + engines: {node: '>=10'} + cpu: [x64] + os: [linux] + + '@swc/core-win32-arm64-msvc@1.13.3': + resolution: {integrity: sha512-elTQpnaX5vESSbhCEgcwXjpMsnUbqqHfEpB7ewpkAsLzKEXZaK67ihSRYAuAx6ewRQTo7DS5iTT6X5aQD3MzMw==} + engines: {node: '>=10'} + cpu: [arm64] + os: [win32] + + '@swc/core-win32-ia32-msvc@1.13.3': + resolution: {integrity: sha512-nvehQVEOdI1BleJpuUgPLrclJ0TzbEMc+MarXDmmiRFwEUGqj+pnfkTSb7RZyS1puU74IXdK/YhTirHurtbI9w==} + engines: {node: '>=10'} + cpu: [ia32] + os: [win32] + + '@swc/core-win32-x64-msvc@1.13.3': + resolution: {integrity: sha512-A+JSKGkRbPLVV2Kwx8TaDAV0yXIXm/gc8m98hSkVDGlPBBmydgzNdWy3X7HTUBM7IDk7YlWE7w2+RUGjdgpTmg==} + engines: {node: '>=10'} + cpu: [x64] + os: [win32] + + '@swc/core@1.13.3': + resolution: {integrity: sha512-ZaDETVWnm6FE0fc+c2UE8MHYVS3Fe91o5vkmGfgwGXFbxYvAjKSqxM/j4cRc9T7VZNSJjriXq58XkfCp3Y6f+w==} + engines: {node: '>=10'} + peerDependencies: + '@swc/helpers': '>=0.5.17' + peerDependenciesMeta: + '@swc/helpers': + optional: true + + '@swc/counter@0.1.3': + resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==} + + '@swc/helpers@0.5.17': + resolution: {integrity: sha512-5IKx/Y13RsYd+sauPb2x+U/xZikHjolzfuDgTAl/Tdf3Q8rslRvC19NKDLgAJQ6wsqADk10ntlv08nPFw/gO/A==} + + '@swc/types@0.1.24': + resolution: {integrity: sha512-tjTMh3V4vAORHtdTprLlfoMptu1WfTZG9Rsca6yOKyNYsRr+MUXutKmliB17orgSZk5DpnDxs8GUdd/qwYxOng==} + + '@szmarczak/http-timer@4.0.6': + resolution: {integrity: sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==} + engines: {node: '>=10'} + + '@testing-library/dom@10.1.0': + resolution: {integrity: sha512-wdsYKy5zupPyLCW2Je5DLHSxSfbIp6h80WoHOQc+RPtmPGA52O9x5MJEkv92Sjonpq+poOAtUKhh1kBGAXBrNA==} + engines: {node: '>=18'} + + '@testing-library/react@15.0.7': + resolution: {integrity: sha512-cg0RvEdD1TIhhkm1IeYMQxrzy0MtUNfa3minv4MjbgcYzJAZ7yD0i0lwoPOTPr+INtiXFezt2o8xMSnyHhEn2Q==} + engines: {node: '>=18'} + peerDependencies: + '@types/react': ^18.0.0 + react: ^18.0.0 + react-dom: ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + + '@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/accepts@1.3.7': + resolution: {integrity: sha512-Pay9fq2lM2wXPWbteBsRAGiWH2hig4ZE2asK+mm7kUzlxRTfL961rj89I6zV/E3PcIkDqyuBEcMxFT7rccugeQ==} + + '@types/argparse@1.0.38': + resolution: {integrity: sha512-ebDJ9b0e702Yr7pWgB0jzm+CX4Srzz8RcXtLJDJB+BSccqMa36uyH/zUsSYao5+BD1ytv3k3rPYCq4mAE1hsXA==} + + '@types/aria-query@5.0.4': + resolution: {integrity: sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==} + + '@types/body-parser@1.19.6': + resolution: {integrity: sha512-HLFeCYgz89uk22N5Qg3dvGvsv46B8GLvKKo1zKG4NybA8U2DiEO3w9lqGg29t/tfLRJpJ6iQxnVw4OnB7MoM9g==} + + '@types/cacheable-request@6.0.3': + resolution: {integrity: sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw==} + + '@types/co-body@6.1.3': + resolution: {integrity: sha512-UhuhrQ5hclX6UJctv5m4Rfp52AfG9o9+d9/HwjxhVB5NjXxr5t9oKgJxN8xRHgr35oo8meUEHUPFWiKg6y71aA==} + + '@types/connect@3.4.38': + resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==} + + '@types/content-disposition@0.5.9': + resolution: {integrity: sha512-8uYXI3Gw35MhiVYhG3s295oihrxRyytcRHjSjqnqZVDDy/xcGBRny7+Xj1Wgfhv5QzRtN2hB2dVRBUX9XW3UcQ==} + + '@types/cookies@0.9.1': + resolution: {integrity: sha512-E/DPgzifH4sM1UMadJMWd6mO2jOd4g1Ejwzx8/uRCDpJis1IrlyQEcGAYEomtAqRYmD5ORbNXMeI9U0RiVGZbg==} + + '@types/eslint-scope@3.7.7': + resolution: {integrity: sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==} + + '@types/eslint@9.6.1': + resolution: {integrity: sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==} + + '@types/estree@1.0.8': + resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} + + '@types/express-serve-static-core@4.19.6': + resolution: {integrity: sha512-N4LZ2xG7DatVqhCZzOGb1Yi5lMbXSZcmdLDe9EzSndPV2HpWYWzRbaerl2n27irrm94EPpprqa8KpskPT085+A==} + + '@types/express-serve-static-core@5.0.7': + resolution: {integrity: sha512-R+33OsgWw7rOhD1emjU7dzCDHucJrgJXMA5PYCzJxVil0dsyx5iBEPHqpPfiKNJQb7lZ1vxwoLR4Z87bBUpeGQ==} + + '@types/express@4.17.23': + resolution: {integrity: sha512-Crp6WY9aTYP3qPi2wGDo9iUe/rceX01UMhnF1jmwDcKCFM6cx7YhGP/Mpr3y9AASpfHixIG0E6azCcL5OcDHsQ==} + + '@types/express@5.0.3': + resolution: {integrity: sha512-wGA0NX93b19/dZC1J18tKWVIYWyyF2ZjT9vin/NRu0qzzvfVzWjs04iq2rQ3H65vCTQYlRqs3YHfY7zjdV+9Kw==} + + '@types/fined@1.1.5': + resolution: {integrity: sha512-2N93vadEGDFhASTIRbizbl4bNqpMOId5zZfj6hHqYZfEzEfO9onnU4Im8xvzo8uudySDveDHBOOSlTWf38ErfQ==} + + '@types/follow-redirects@1.14.4': + resolution: {integrity: sha512-GWXfsD0Jc1RWiFmMuMFCpXMzi9L7oPDVwxUnZdg89kDNnqsRfUKXEtUYtA98A6lig1WXH/CYY/fvPW9HuN5fTA==} + + '@types/formidable@2.0.6': + resolution: {integrity: sha512-L4HcrA05IgQyNYJj6kItuIkXrInJvsXTPC5B1i64FggWKKqSL+4hgt7asiSNva75AoLQjq29oPxFfU4GAQ6Z2w==} + + '@types/hoist-non-react-statics@3.3.7': + resolution: {integrity: sha512-PQTyIulDkIDro8P+IHbKCsw7U2xxBYflVzW/FgWdCAePD9xGSidgA76/GeJ6lBKoblyhf9pBY763gbrN+1dI8g==} + peerDependencies: + '@types/react': '*' + + '@types/html-minifier-terser@6.1.0': + resolution: {integrity: sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg==} + + '@types/http-assert@1.5.6': + resolution: {integrity: sha512-TTEwmtjgVbYAzZYWyeHPrrtWnfVkm8tQkP8P21uQifPgMRgjrow3XDEYqucuC8SKZJT7pUnhU/JymvjggxO9vw==} + + '@types/http-cache-semantics@4.0.4': + resolution: {integrity: sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA==} + + '@types/http-errors@2.0.5': + resolution: {integrity: sha512-r8Tayk8HJnX0FztbZN7oVqGccWgw98T/0neJphO91KkmOzug1KkofZURD4UaD5uH8AqcFLfdPErnBod0u71/qg==} + + '@types/inquirer@9.0.9': + resolution: {integrity: sha512-/mWx5136gts2Z2e5izdoRCo46lPp5TMs9R15GTSsgg/XnZyxDWVqoVU3R9lWnccKpqwsJLvRoxbCjoJtZB7DSw==} + + '@types/is-hotkey@0.1.10': + resolution: {integrity: sha512-RvC8KMw5BCac1NvRRyaHgMMEtBaZ6wh0pyPTBu7izn4Sj/AX9Y4aXU5c7rX8PnM/knsuUpC1IeoBkANtxBypsQ==} + + '@types/json-schema@7.0.15': + resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} + + '@types/jsonwebtoken@9.0.10': + resolution: {integrity: sha512-asx5hIG9Qmf/1oStypjanR7iKTv0gXQ1Ov/jfrX6kS/EO0OFni8orbmGCn0672NHR3kXHwpAwR+B368ZGN/2rA==} + + '@types/keygrip@1.0.6': + resolution: {integrity: sha512-lZuNAY9xeJt7Bx4t4dx0rYCDqGPW8RXhQZK1td7d4H6E9zYbLoOtjBvfwdTKpsyxQI/2jv+armjX/RW+ZNpXOQ==} + + '@types/keyv@3.1.4': + resolution: {integrity: sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==} + + '@types/koa-compose@3.2.8': + resolution: {integrity: sha512-4Olc63RY+MKvxMwVknCUDhRQX1pFQoBZ/lXcRLP69PQkEpze/0cr8LNqJQe5NFb/b19DWi2a5bTi2VAlQzhJuA==} + + '@types/koa@2.15.0': + resolution: {integrity: sha512-7QFsywoE5URbuVnG3loe03QXuGajrnotr3gQkXcEBShORai23MePfFYdhz90FEtBBpkyIYQbVD+evKtloCgX3g==} + + '@types/liftoff@4.0.3': + resolution: {integrity: sha512-UgbL2kR5pLrWICvr8+fuSg0u43LY250q7ZMkC+XKC3E+rs/YBDEnQIzsnhU5dYsLlwMi3R75UvCL87pObP1sxw==} + + '@types/lodash@4.17.20': + resolution: {integrity: sha512-H3MHACvFUEiujabxhaI/ImO6gUrd8oOurg7LQtS7mbwIXA/cUqWrvBsaeJ23aZEPk1TAYkurjfMbSELfoCXlGA==} + + '@types/mime@1.3.5': + resolution: {integrity: sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==} + + '@types/ms@2.1.0': + resolution: {integrity: sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==} + + '@types/node@20.19.9': + resolution: {integrity: sha512-cuVNgarYWZqxRJDQHEB58GEONhOK79QVR/qYx4S7kcUObQvUwvFnYxJuuHUKm2aieN9X3yZB4LZsuYNU1Qphsw==} + + '@types/nodemon@1.19.6': + resolution: {integrity: sha512-vjKuaQOLUA5EY2zkUmWG1ipXbKt9Wd+H/0SiIuHVeH4cHtt6509iRUGH9ZR0iqgUrtj3BrP9KqoTuV3ZCbQcYA==} + + '@types/normalize-package-data@2.4.4': + resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==} + + '@types/parse-json@4.0.2': + resolution: {integrity: sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==} + + '@types/prompts@2.4.9': + resolution: {integrity: sha512-qTxFi6Buiu8+50/+3DGIWLHM6QuWsEKugJnnP6iv2Mc4ncxE4A/OJkjuVOA+5X0X1S/nq5VJRa8Lu+nwcvbrKA==} + + '@types/prop-types@15.7.15': + resolution: {integrity: sha512-F6bEyamV9jKGAFBEmlQnesRPGOQqS2+Uwi0Em15xenOxHaf2hv6L8YCVn3rPdPJOiJfPiCnLIRyvwVaqMY3MIw==} + + '@types/qs@6.14.0': + resolution: {integrity: sha512-eOunJqu0K1923aExK6y8p6fsihYEn/BYuQ4g0CxAAgFc4b/ZLN4CrsRZ55srTdqoiLzU2B2evC+apEIxprEzkQ==} + + '@types/range-parser@1.2.7': + resolution: {integrity: sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==} + + '@types/react-dom@18.3.7': + resolution: {integrity: sha512-MEe3UeoENYVFXzoXEWsvcpg6ZvlrFNlOQ7EOsvhI3CfAXwzPfO8Qwuxd40nepsYKqyyVQnTdEfv68q91yLcKrQ==} + peerDependencies: + '@types/react': ^18.0.0 + + '@types/react-redux@7.1.34': + resolution: {integrity: sha512-GdFaVjEbYv4Fthm2ZLvj1VSCedV7TqE5y1kNwnjSdBOTXuRSgowux6J8TAct15T3CKBr63UMk+2CO7ilRhyrAQ==} + + '@types/react-transition-group@4.4.12': + resolution: {integrity: sha512-8TV6R3h2j7a91c+1DXdJi3Syo69zzIZbz7Lg5tORM5LEJG7X/E6a1V3drRyBRZq7/utz7A+c4OgYLiLcYGHG6w==} + peerDependencies: + '@types/react': '*' + + '@types/react@18.3.23': + resolution: {integrity: sha512-/LDXMQh55EzZQ0uVAZmKKhfENivEvWz6E+EYzh+/MCjMhNsotd+ZHhBGIjFDTi6+fz0OhQQQLbTgdQIxxCsC0w==} + + '@types/responselike@1.0.3': + resolution: {integrity: sha512-H/+L+UkTV33uf49PH5pCAUBVPNj2nDBXTN+qS1dOwyyg24l3CcicicCA7ca+HMvJBZcFgl5r8e+RR6elsb4Lyw==} + + '@types/send@0.17.5': + resolution: {integrity: sha512-z6F2D3cOStZvuk2SaP6YrwkNO65iTZcwA2ZkSABegdkAh/lf+Aa/YQndZVfmEXT5vgAp6zv06VQ3ejSVjAny4w==} + + '@types/serve-static@1.15.8': + resolution: {integrity: sha512-roei0UY3LhpOJvjbIP6ZZFngyLKl5dskOtDhxY5THRSpO+ZI+nzJ+m5yUMzGrp89YRa7lvknKkMYjqQFGwA7Sg==} + + '@types/stylis@4.2.5': + resolution: {integrity: sha512-1Xve+NMN7FWjY14vLoY5tL3BVEQ/n42YLwaqJIPYhotZ9uBHt87VceMwWQpzmdEt2TNXIorIFG+YeCUUW7RInw==} + + '@types/through@0.0.33': + resolution: {integrity: sha512-HsJ+z3QuETzP3cswwtzt2vEIiHBk/dCcHGhbmG5X3ecnwFD/lPrMpliGXxSCg03L9AhrdwA4Oz/qfspkDW+xGQ==} + + '@types/triple-beam@1.3.5': + resolution: {integrity: sha512-6WaYesThRMCl19iryMYP7/x2OVgCtbIVflDGFpWnb9irXI3UjYE4AzmYuiUKY1AJstGijoY+MgUszMgRxIYTYw==} + + '@types/use-sync-external-store@0.0.3': + resolution: {integrity: sha512-EwmlvuaxPNej9+T4v5AuBPJa2x2UOJVdjCtDHgcDqitUeOtjnJKJ+apYjVcAoBEMjKW1VVFGZLUb5+qqa09XFA==} + + '@types/uuid@9.0.8': + resolution: {integrity: sha512-jg+97EGIcY9AGHJJRaaPVgetKDsrTgbRjQ5Msgjh/DQKEFl0DtyRr/VCOyD1T2R1MNeWPK/u7JoGhlDZnKBAfA==} + + '@ucast/core@1.10.2': + resolution: {integrity: sha512-ons5CwXZ/51wrUPfoduC+cO7AS1/wRb0ybpQJ9RrssossDxVy4t49QxWoWgfBDvVKsz9VXzBk9z0wqTdZ+Cq8g==} + + '@ucast/js@3.0.4': + resolution: {integrity: sha512-TgG1aIaCMdcaEyckOZKQozn1hazE0w90SVdlpIJ/er8xVumE11gYAtSbw/LBeUnA4fFnFWTcw3t6reqseeH/4Q==} + + '@ucast/mongo2js@1.4.0': + resolution: {integrity: sha512-vR9RJ3BHlkI3RfKJIZFdVktxWvBCQRiSTeJSWN9NPxP5YJkpfXvcBWAMLwvyJx4HbB+qib5/AlSDEmQiuQyx2w==} + + '@ucast/mongo@2.4.3': + resolution: {integrity: sha512-XcI8LclrHWP83H+7H2anGCEeDq0n+12FU2mXCTz6/Tva9/9ddK/iacvvhCyW6cijAAOILmt0tWplRyRhVyZLsA==} + + '@uiw/codemirror-extensions-basic-setup@4.22.2': + resolution: {integrity: sha512-zcHGkldLFN3cGoI5XdOGAkeW24yaAgrDEYoyPyWHODmPiNwybQQoZGnH3qUdzZwUaXtAcLWoAeOPzfNRW2yGww==} + peerDependencies: + '@codemirror/autocomplete': '>=6.0.0' + '@codemirror/commands': '>=6.0.0' + '@codemirror/language': '>=6.0.0' + '@codemirror/lint': '>=6.0.0' + '@codemirror/search': '>=6.0.0' + '@codemirror/state': '>=6.0.0' + '@codemirror/view': '>=6.0.0' + + '@uiw/react-codemirror@4.22.2': + resolution: {integrity: sha512-okCSl+WJG63gRx8Fdz7v0C6RakBQnbb3pHhuzIgDB+fwhipgFodSnu2n9oOsQesJ5YQ7mSOcKMgX0JEsu4nnfQ==} + peerDependencies: + '@babel/runtime': '>=7.11.0' + '@codemirror/state': '>=6.0.0' + '@codemirror/theme-one-dark': '>=6.0.0' + '@codemirror/view': '>=6.0.0' + codemirror: '>=6.0.0' + react: '>=16.8.0' + react-dom: '>=16.8.0' + + '@vitejs/plugin-react-swc@3.6.0': + resolution: {integrity: sha512-XFRbsGgpGxGzEV5i5+vRiro1bwcIaZDIdBRP16qwm+jP68ue/S8FJTBEgOeojtVDYrbSua3XFp71kC8VJE6v+g==} + peerDependencies: + vite: ^4 || ^5 + + '@vitejs/plugin-react-swc@3.7.0': + resolution: {integrity: sha512-yrknSb3Dci6svCd/qhHqhFPDSw0QtjumcqdKMoNNzmOl5lMXTTiqzjWtG4Qask2HdvvzaNgSunbQGet8/GrKdA==} + peerDependencies: + vite: ^4 || ^5 + + '@webassemblyjs/ast@1.14.1': + resolution: {integrity: sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==} + + '@webassemblyjs/floating-point-hex-parser@1.13.2': + resolution: {integrity: sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA==} + + '@webassemblyjs/helper-api-error@1.13.2': + resolution: {integrity: sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ==} + + '@webassemblyjs/helper-buffer@1.14.1': + resolution: {integrity: sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA==} + + '@webassemblyjs/helper-numbers@1.13.2': + resolution: {integrity: sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA==} + + '@webassemblyjs/helper-wasm-bytecode@1.13.2': + resolution: {integrity: sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA==} + + '@webassemblyjs/helper-wasm-section@1.14.1': + resolution: {integrity: sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw==} + + '@webassemblyjs/ieee754@1.13.2': + resolution: {integrity: sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw==} + + '@webassemblyjs/leb128@1.13.2': + resolution: {integrity: sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw==} + + '@webassemblyjs/utf8@1.13.2': + resolution: {integrity: sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ==} + + '@webassemblyjs/wasm-edit@1.14.1': + resolution: {integrity: sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ==} + + '@webassemblyjs/wasm-gen@1.14.1': + resolution: {integrity: sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg==} + + '@webassemblyjs/wasm-opt@1.14.1': + resolution: {integrity: sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw==} + + '@webassemblyjs/wasm-parser@1.14.1': + resolution: {integrity: sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ==} + + '@webassemblyjs/wast-printer@1.14.1': + resolution: {integrity: sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw==} + + '@xtuc/ieee754@1.2.0': + resolution: {integrity: sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==} + + '@xtuc/long@4.2.2': + resolution: {integrity: sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==} + + accepts@1.3.8: + resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} + engines: {node: '>= 0.6'} + + acorn-import-phases@1.0.4: + resolution: {integrity: sha512-wKmbr/DDiIXzEOiWrTTUcDm24kQ2vGfZQvM2fwg2vXqR5uW6aapr7ObPtj1th32b9u90/Pf4AItvdTh42fBmVQ==} + engines: {node: '>=10.13.0'} + peerDependencies: + acorn: ^8.14.0 + + acorn-walk@8.3.4: + resolution: {integrity: sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==} + engines: {node: '>=0.4.0'} + + acorn@8.15.0: + resolution: {integrity: sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==} + engines: {node: '>=0.4.0'} + hasBin: true + + addressparser@1.0.1: + resolution: {integrity: sha512-aQX7AISOMM7HFE0iZ3+YnD07oIeJqWGVnJ+ZIKaBZAk03ftmVYVqsGas/rbXKR21n4D/hKCSHypvcyOkds/xzg==} + + adm-zip@0.5.16: + resolution: {integrity: sha512-TGw5yVi4saajsSEgz25grObGHEUaDrniwvA2qwSC060KfqGPdglhvPMA2lPIoxs3PQIItj2iag35fONcQqgUaQ==} + engines: {node: '>=12.0'} + + aggregate-error@3.1.0: + resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==} + engines: {node: '>=8'} + + aggregate-error@4.0.1: + resolution: {integrity: sha512-0poP0T7el6Vq3rstR8Mn4V/IQrpBLO6POkUSrN7RhyY+GF/InCFShQzsQ39T25gkHhLgSLByyAz+Kjb+c2L98w==} + engines: {node: '>=12'} + + ajv-draft-04@1.0.0: + resolution: {integrity: sha512-mv00Te6nmYbRp5DCwclxtt7yV/joXJPGS7nM+97GdxvuttCOfgI3K4U25zboyeX0O+myI8ERluxQe5wljMmVIw==} + peerDependencies: + ajv: ^8.5.0 + peerDependenciesMeta: + ajv: + optional: true + + ajv-formats@2.1.1: + resolution: {integrity: sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==} + peerDependencies: + ajv: ^8.0.0 + peerDependenciesMeta: + ajv: + optional: true + + ajv-formats@3.0.1: + resolution: {integrity: sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==} + peerDependencies: + ajv: ^8.0.0 + peerDependenciesMeta: + ajv: + optional: true + + ajv-keywords@3.5.2: + resolution: {integrity: sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==} + peerDependencies: + ajv: ^6.9.1 + + ajv-keywords@5.1.0: + resolution: {integrity: sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==} + peerDependencies: + ajv: ^8.8.2 + + ajv@6.12.6: + resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} + + ajv@8.13.0: + resolution: {integrity: sha512-PRA911Blj99jR5RMeTunVbNXMF6Lp4vZXnk5GQjcnUWUTsrXtekg/pnmFFI2u/I36Y/2bITGS30GZCXei6uNkA==} + + ajv@8.16.0: + resolution: {integrity: sha512-F0twR8U1ZU67JIEtekUcLkXkoO5mMMmgGD8sK/xUFzJ805jxHQl92hImFAqqXMyMYjSPOyUPAwHYhB72g5sTXw==} + + ajv@8.17.1: + resolution: {integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==} + + ansi-align@3.0.1: + resolution: {integrity: sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==} + + ansi-escapes@4.3.2: + resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} + engines: {node: '>=8'} + + ansi-html-community@0.0.8: + resolution: {integrity: sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==} + engines: {'0': node >= 0.8.0} + hasBin: true + + ansi-html@0.0.9: + resolution: {integrity: sha512-ozbS3LuenHVxNRh/wdnN16QapUHzauqSomAl1jwwJRRsGwFwtj644lIhxfWu0Fy0acCij2+AEgHvjscq3dlVXg==} + engines: {'0': node >= 0.8.0} + hasBin: true + + 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-sequence-parser@1.1.3: + resolution: {integrity: sha512-+fksAx9eG3Ab6LDnLs3ZqZa8KVJ/jYnX+D4Qe1azX+LFGFAXqynCQLOdLpNYN/l9e7l6hMWwZbrnctqr6eSQSw==} + + 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'} + + argparse@1.0.10: + resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} + + 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-hidden@1.2.6: + resolution: {integrity: sha512-ik3ZgC9dY/lYVVM++OISsaYDeg1tb0VtP5uL3ouh1koGOaUMDPpbFIei4JkFimWUFPn90sbMNMXQAIVOlnYKJA==} + engines: {node: '>=10'} + + aria-query@5.3.0: + resolution: {integrity: sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==} + + array-each@1.0.1: + resolution: {integrity: sha512-zHjL5SZa68hkKHBFBK6DJCTtr9sfTCPCaph/L7tMSLcTFgy+zX7E+6q5UArbtOtMBCtxdICpfTCspRse+ywyXA==} + engines: {node: '>=0.10.0'} + + array-slice@1.1.0: + resolution: {integrity: sha512-B1qMD3RBP7O8o0H2KbrXDyB0IccejMF15+87Lvlor12ONPRHP6gTjXMNkt/d3ZuOGbAe66hFmaCfECI24Ufp6w==} + engines: {node: '>=0.10.0'} + + asap@2.0.6: + resolution: {integrity: sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==} + + asn1.js@5.4.1: + resolution: {integrity: sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==} + + asn1@0.2.6: + resolution: {integrity: sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==} + + assert-plus@1.0.0: + resolution: {integrity: sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==} + engines: {node: '>=0.8'} + + async@3.2.6: + resolution: {integrity: sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==} + + asynckit@0.4.0: + resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} + + aws-sign2@0.7.0: + resolution: {integrity: sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==} + + aws4@1.9.1: + resolution: {integrity: sha512-wMHVg2EOHaMRxbzgFJ9gtjOOCrI80OHLG14rxi28XwOW8ux6IiEbRCGGGqCtdAIg4FQCbW20k9RsT4y3gJlFug==} + + axios@1.8.4: + resolution: {integrity: sha512-eBSYY4Y68NNlHbHBMdeDmKNtDgXWhQsJcGqzO3iLUM0GraQFSS9cVgPX5I9b3lbdFKyYoAEGAZF1DwhTaljNAw==} + + babel-plugin-macros@3.1.0: + resolution: {integrity: sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==} + engines: {node: '>=10', npm: '>=6'} + + balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + + base64-js@1.5.1: + resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} + + bcrypt-pbkdf@1.0.2: + resolution: {integrity: sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==} + + bcryptjs@2.4.3: + resolution: {integrity: sha512-V/Hy/X9Vt7f3BbPJEi8BdVFMByHi+jNXrYkW3huaybV/kQ0KJg0Y6PkEMbn+zeT+i+SiKZ/HMqJGIIt4LZDqNQ==} + + big-integer@1.6.52: + resolution: {integrity: sha512-QxD8cf2eVqJOOz63z6JIN9BzvVs/dlySa5HGSBH5xtR8dPteIRQnBxxKqkNTiT6jbDTF6jAfrd4oMcND9RGbQg==} + engines: {node: '>=0.6'} + + big.js@5.2.2: + resolution: {integrity: sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==} + + binary-extensions@2.3.0: + resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} + engines: {node: '>=8'} + + bl@4.1.0: + resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} + + bn.js@4.12.2: + resolution: {integrity: sha512-n4DSx829VRTRByMRGdjQ9iqsN0Bh4OolPsFnaZBLcbi8iXcB+kJ9s7EnRt4wILZNV3kPLHkRVfOc/HvhC3ovDw==} + + boolbase@1.0.0: + resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} + + boolean@3.2.0: + resolution: {integrity: sha512-d0II/GO9uf9lfUHH2BQsjxzRJZBdsjgsBiW4BvhWk/3qoKwQFjIDVN19PfX8F2D/r9PCMTtLWjYVCFrpeYUzsw==} + deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. + + bowser@2.11.0: + resolution: {integrity: sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA==} + + boxen@5.1.2: + resolution: {integrity: sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ==} + engines: {node: '>=10'} + + brace-expansion@1.1.12: + resolution: {integrity: sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==} + + brace-expansion@2.0.2: + resolution: {integrity: sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==} + + braces@3.0.3: + resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} + engines: {node: '>=8'} + + broadcast-channel@3.7.0: + resolution: {integrity: sha512-cIAKJXAxGJceNZGTZSBzMxzyOn72cVgPnKx4dc6LRjQgbaJUQqhy5rzL3zbMxkMWsGKkv2hSFkPRMEXfoMZ2Mg==} + + brorand@1.1.0: + resolution: {integrity: sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==} + + browserslist-to-esbuild@1.2.0: + resolution: {integrity: sha512-ftrrbI/VHBgEnmnSyhkqvQVMp6jAKybfs0qMIlm7SLBrQTGMsdCIP4q3BoKeLsZTBQllIQtY9kbxgRYV2WU47g==} + engines: {node: '>=12'} + + browserslist@4.25.1: + resolution: {integrity: sha512-KGj0KoOMXLpSNkkEI6Z6mShmQy0bc1I+T7K9N81k4WWMrfz+6fQ6es80B/YLAeRoKvjYE1YSHHOW1qe9xIVzHw==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + + buffer-equal-constant-time@1.0.1: + resolution: {integrity: sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==} + + buffer-from@1.1.2: + resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} + + buffer-writer@2.0.0: + resolution: {integrity: sha512-a7ZpuTZU1TRtnwyCNW3I5dc0wWNC3VR9S++Ewyk2HHZdrO3CQJqSpd+95Us590V6AL7JqUAH2IwZ/398PmNFgw==} + engines: {node: '>=4'} + + buffer@5.6.0: + resolution: {integrity: sha512-/gDYp/UtU0eA1ys8bOs9J6a+E/KWIY+DZ+Q2WESNUA0jFRsJOc0SNUO6xJ5SGA1xueg3NL65W6s+NY5l9cunuw==} + + buffer@5.7.1: + resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} + + buildmail@3.10.0: + resolution: {integrity: sha512-6e5sDN/pl3en5Klqdfyir7LEIBiFr9oqZuvYaEyVwjxpIbBZN+98e0j87Fz2Ukl8ud32rbk9VGOZAnsOZ7pkaA==} + deprecated: This project is unmaintained + + byte-size@8.1.1: + resolution: {integrity: sha512-tUkzZWK0M/qdoLEqikxBWe4kumyuwjl3HO6zHTr4yEI23EojPtLYXdG1+AQY7MN0cGyNDvEaJ8wiYQm6P2bPxg==} + engines: {node: '>=12.17'} + + bytes@3.1.2: + resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} + engines: {node: '>= 0.8'} + + cache-content-type@1.0.1: + resolution: {integrity: sha512-IKufZ1o4Ut42YUrZSo8+qnMTrFuKkvyoLXUywKz9GJ5BrhOFGhLdkx9sG4KAnVvbY6kEcSFjLQul+DVmBm2bgA==} + engines: {node: '>= 6.0.0'} + + cacheable-lookup@5.0.4: + resolution: {integrity: sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==} + engines: {node: '>=10.6.0'} + + cacheable-request@7.0.4: + resolution: {integrity: sha512-v+p6ongsrp0yTGbJXjgxPow2+DL93DASP4kXCDKb8/bwRtt9OEF3whggkkDkGNzgcWy2XaF4a8nZglC7uElscg==} + engines: {node: '>=8'} + + call-bind-apply-helpers@1.0.2: + resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==} + engines: {node: '>= 0.4'} + + call-bound@1.0.4: + resolution: {integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==} + engines: {node: '>= 0.4'} + + callsites@3.1.0: + resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} + engines: {node: '>=6'} + + camel-case@4.1.2: + resolution: {integrity: sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==} + + camelcase@6.3.0: + resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} + engines: {node: '>=10'} + + camelize@1.0.1: + resolution: {integrity: sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ==} + + caniuse-lite@1.0.30001731: + resolution: {integrity: sha512-lDdp2/wrOmTRWuoB5DpfNkC0rJDU8DqRa6nYL6HK6sytw70QMopt/NIc/9SM7ylItlBWfACXk0tEn37UWM/+mg==} + + capital-case@1.0.4: + resolution: {integrity: sha512-ds37W8CytHgwnhGGTi88pcPyR15qoNkOpYwmMMfnWqqWgESapLqvDx6huFjQ5vqWSn2Z06173XNA7LtMOeUh1A==} + + caseless@0.12.0: + resolution: {integrity: sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==} + + castable-video@1.1.10: + resolution: {integrity: sha512-/T1I0A4VG769wTEZ8gWuy1Crn9saAfRTd1UYTb8xbOPlN78+zOi/1nU2dD5koNkfE5VWvgabkIqrGKmyNXOjSQ==} + + chalk@2.4.2: + resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} + engines: {node: '>=4'} + + chalk@4.1.2: + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} + engines: {node: '>=10'} + + chalk@5.5.0: + resolution: {integrity: sha512-1tm8DTaJhPBG3bIkVeZt1iZM9GfSX2lzOeDVZH9R9ffRHpmHvxZ/QhgQH/aDTkswQVt+YHdXAdS/In/30OjCbg==} + engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} + + change-case@4.1.2: + resolution: {integrity: sha512-bSxY2ws9OtviILG1EiY5K7NNxkqg/JnRnFxLtKQ96JaviiIxi7djMrSd0ECT9AC+lttClmYwKw53BWpOMblo7A==} + + chardet@0.7.0: + resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} + + chokidar@3.6.0: + resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} + engines: {node: '>= 8.10.0'} + + chokidar@4.0.1: + resolution: {integrity: sha512-n8enUVCED/KVRQlab1hr3MVpcVMvxtZjmEa956u+4YijlmQED223XMSYj2tLuKvr4jcCTzNNMpQDUer72MMmzA==} + engines: {node: '>= 14.16.0'} + + chownr@2.0.0: + resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==} + engines: {node: '>=10'} + + chrome-trace-event@1.0.4: + resolution: {integrity: sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==} + engines: {node: '>=6.0'} + + ci-info@3.8.0: + resolution: {integrity: sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==} + engines: {node: '>=8'} + + ci-info@4.0.0: + resolution: {integrity: sha512-TdHqgGf9odd8SXNuxtUBVx8Nv+qZOejE6qyqiy5NtbYYQOeFa6zmHkxlPzmaLxWWHsU6nJmB7AETdVPi+2NBUg==} + engines: {node: '>=8'} + + classnames@2.5.1: + resolution: {integrity: sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow==} + + clean-css@5.3.3: + resolution: {integrity: sha512-D5J+kHaVb/wKSFcyyV75uCn8fiY4sV38XJoe4CUyGQ+mOU/fMVYUdH1hJC+CJQ5uY3EnW27SbJYS4X8BiLrAFg==} + engines: {node: '>= 10.0'} + + clean-stack@2.2.0: + resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==} + engines: {node: '>=6'} + + clean-stack@4.2.0: + resolution: {integrity: sha512-LYv6XPxoyODi36Dp976riBtSY27VmFo+MKqEU9QCCWyTrdEPDog+RWA7xQWHi6Vbp61j5c4cdzzX1NidnwtUWg==} + engines: {node: '>=12'} + + cli-boxes@2.2.1: + resolution: {integrity: sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==} + engines: {node: '>=6'} + + cli-cursor@3.1.0: + resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==} + engines: {node: '>=8'} + + cli-cursor@5.0.0: + resolution: {integrity: sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==} + engines: {node: '>=18'} + + cli-progress@3.12.0: + resolution: {integrity: sha512-tRkV3HJ1ASwm19THiiLIXLO7Im7wlTuKnvkYaTkyoAPefqjNg7W7DHKUlGRxy9vxDvbyCYQkQozvptuMkGCg8A==} + engines: {node: '>=4'} + + cli-spinners@2.9.2: + resolution: {integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==} + engines: {node: '>=6'} + + cli-table3@0.6.2: + resolution: {integrity: sha512-QyavHCaIC80cMivimWu4aWHilIpiDpfm3hGmqAmXVL1UsnbLuBSMd21hTX6VY4ZSDSM73ESLeF8TOYId3rBTbw==} + engines: {node: 10.* || >= 12.*} + + cli-table3@0.6.5: + resolution: {integrity: sha512-+W/5efTR7y5HRD7gACw9yQjqMVvEMLBHmboM/kPWam+H+Hmyrgjh6YncVKK122YZkXrLudzTuAukUw9FnMf7IQ==} + engines: {node: 10.* || >= 12.*} + + cli-table@0.3.11: + resolution: {integrity: sha512-IqLQi4lO0nIB4tcdTpN4LCB9FI3uqrJZK7RC515EnhZ6qBaglkIgICb1wjeAqpdoOabm1+SuQtkXIPdYC93jhQ==} + engines: {node: '>= 0.2.0'} + + cli-width@3.0.0: + resolution: {integrity: sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==} + engines: {node: '>= 10'} + + cli-width@4.1.0: + resolution: {integrity: sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==} + engines: {node: '>= 12'} + + cliui@7.0.4: + resolution: {integrity: sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==} + + cliui@8.0.1: + resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} + engines: {node: '>=12'} + + clone-response@1.0.3: + resolution: {integrity: sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==} + + clone@1.0.4: + resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} + engines: {node: '>=0.8'} + + co-body@6.2.0: + resolution: {integrity: sha512-Kbpv2Yd1NdL1V/V4cwLVxraHDV6K8ayohr2rmH0J87Er8+zJjcTa6dAn9QMPC9CRgU8+aNajKbSf1TzDB1yKPA==} + engines: {node: '>=8.0.0'} + + co@4.6.0: + resolution: {integrity: sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==} + engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'} + + codemirror@5.65.19: + resolution: {integrity: sha512-+aFkvqhaAVr1gferNMuN8vkTSrWIFvzlMV9I2KBLCWS2WpZ2+UAkZjlMZmEuT+gcXTi6RrGQCkWq1/bDtGqhIA==} + + 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==} + + color-string@1.9.1: + resolution: {integrity: sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==} + + color@3.2.1: + resolution: {integrity: sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==} + + color@4.2.3: + resolution: {integrity: sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==} + engines: {node: '>=12.5.0'} + + colorette@2.0.19: + resolution: {integrity: sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==} + + colorette@2.0.20: + resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} + + colors@1.0.3: + resolution: {integrity: sha512-pFGrxThWcWQ2MsAz6RtgeWe4NK2kUE1WfsrvvlctdII745EW9I0yflqhe7++M5LEc7bV2c/9/5zc8sFcpL0Drw==} + engines: {node: '>=0.1.90'} + + colorspace@1.1.4: + resolution: {integrity: sha512-BgvKJiuVu1igBUF2kEjRCZXol6wiiGbY5ipL/oVPwm0BL9sIpMIzM8IK7vwuxIIzOXMV3Ey5w+vxhm0rR/TN8w==} + + combined-stream@1.0.8: + resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} + engines: {node: '>= 0.8'} + + commander@10.0.1: + resolution: {integrity: sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==} + engines: {node: '>=14'} + + commander@12.1.0: + resolution: {integrity: sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==} + engines: {node: '>=18'} + + commander@2.20.3: + resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} + + commander@7.2.0: + resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==} + engines: {node: '>= 10'} + + commander@8.3.0: + resolution: {integrity: sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==} + engines: {node: '>= 12'} + + compressible@2.0.18: + resolution: {integrity: sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==} + engines: {node: '>= 0.6'} + + compute-scroll-into-view@1.0.20: + resolution: {integrity: sha512-UCB0ioiyj8CRjtrvaceBLqqhZCVP+1B8+NWQhmdsm0VXOJtobBCf1dBQmebCCo34qZmUwZfIH2MZLqNHazrfjg==} + + concat-map@0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + + concurrently@8.2.2: + resolution: {integrity: sha512-1dP4gpXFhei8IOtlXRE/T/4H88ElHgTiUzh71YUmtjTEHMSRS2Z/fgOxHSxxusGHogsRfxNq1vyAwxSC+EVyDg==} + engines: {node: ^14.13.0 || >=16.0.0} + hasBin: true + + config-chain@1.1.13: + resolution: {integrity: sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==} + + configstore@5.0.1: + resolution: {integrity: sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA==} + engines: {node: '>=8'} + + constant-case@3.0.4: + resolution: {integrity: sha512-I2hSBi7Vvs7BEuJDr5dDHfzb/Ruj3FyvFyh7KLilAjNQw3Be+xgqUBA2W6scVEcL0hL1dwPRtIqEPVUCKkSsyQ==} + + 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'} + + convert-source-map@1.9.0: + resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==} + + cookie-signature@1.2.2: + resolution: {integrity: sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==} + engines: {node: '>=6.6.0'} + + cookie@0.7.2: + resolution: {integrity: sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==} + engines: {node: '>= 0.6'} + + cookies@0.9.1: + resolution: {integrity: sha512-TG2hpqe4ELx54QER/S3HQ9SRVnQnGBtKUz5bLQWtYAQ+o6GpgMs6sYUvaiJjVxb+UXwhRhAEP3m7LbsIZ77Hmw==} + engines: {node: '>= 0.8'} + + copyfiles@2.4.1: + resolution: {integrity: sha512-fereAvAvxDrQDOXybk3Qu3dPbOoKoysFMWtkY3mv5BsL8//OSZVL5DCLYqgRfY5cWirgRzlC+WSrxp6Bo3eNZg==} + hasBin: true + + core-js-pure@3.45.0: + resolution: {integrity: sha512-OtwjqcDpY2X/eIIg1ol/n0y/X8A9foliaNt1dSK0gV3J2/zw+89FcNG3mPK+N8YWts4ZFUPxnrAzsxs/lf8yDA==} + + core-util-is@1.0.2: + resolution: {integrity: sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==} + + core-util-is@1.0.3: + resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} + + cosmiconfig@7.1.0: + resolution: {integrity: sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==} + engines: {node: '>=10'} + + crc@3.8.0: + resolution: {integrity: sha512-iX3mfgcTMIq3ZKLIsVFAbv7+Mc10kxabAGQb8HvjA1o3T1PIYprbakQ65d3I+2HGHt6nSKkM9PYjgoJO2KcFBQ==} + + crelt@1.0.6: + resolution: {integrity: sha512-VQ2MBenTq1fWZUH9DJNGti7kKv6EeAuYr3cLwxUWhIu1baTaXh4Ib5W2CqHVqib4/MqbYGJqiL3Zb8GJZr3l4g==} + + cron-parser@4.9.0: + resolution: {integrity: sha512-p0SaNjrHOnQeR8/VnfGbmg9te2kfyYSQ7Sc/j/6DtPL3JQvKxmjO9TSjNFpujqV3vEYYBvNNvXSxzyksBWAx1Q==} + engines: {node: '>=12.0.0'} + + cropperjs@1.6.1: + resolution: {integrity: sha512-F4wsi+XkDHCOMrHMYjrTEE4QBOrsHHN5/2VsVAaRq8P7E5z7xQpT75S+f/9WikmBEailas3+yo+6zPIomW+NOA==} + + cross-env@7.0.3: + resolution: {integrity: sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==} + engines: {node: '>=10.14', npm: '>=6', yarn: '>=1'} + hasBin: true + + cross-spawn@7.0.6: + resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} + engines: {node: '>= 8'} + + crypto-random-string@2.0.0: + resolution: {integrity: sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==} + engines: {node: '>=8'} + + css-color-keywords@1.0.0: + resolution: {integrity: sha512-FyyrDHZKEjXDpNJYvVsV960FiqQyXc/LlYmsxl2BcdMb2WPx0OGRVgTg55rPSyLSNMqP52R9r8geSp7apN3Ofg==} + engines: {node: '>=4'} + + css-loader@6.11.0: + resolution: {integrity: sha512-CTJ+AEQJjq5NzLga5pE39qdiSV56F8ywCIsqNIRF0r7BDgWsN25aazToqAFg7ZrtA/U016xudB3ffgweORxX7g==} + engines: {node: '>= 12.13.0'} + peerDependencies: + '@rspack/core': 0.x || 1.x + webpack: ^5.0.0 + peerDependenciesMeta: + '@rspack/core': + optional: true + webpack: + optional: true + + css-select@4.3.0: + resolution: {integrity: sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==} + + css-to-react-native@3.2.0: + resolution: {integrity: sha512-e8RKaLXMOFii+02mOlqwjbD00KSEKqblnpO9e++1aXS1fPQOpS1YoqdVHBqPjHNoxeF2mimzVqawm2KCbEdtHQ==} + + css-what@6.2.2: + resolution: {integrity: sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA==} + engines: {node: '>= 6'} + + 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==} + + custom-media-element@1.3.3: + resolution: {integrity: sha512-5Tenv3iLP8ZiLHcT0qSyfDPrqzkCMxczeLY7cTndbsMF7EkVgL/74a6hxNrn/F6RuD74TLK6R2r0GsmntTTtRg==} + + custom-media-element@1.4.5: + resolution: {integrity: sha512-cjrsQufETwxjvwZbYbKBCJNvmQ2++G9AvT45zDi7NXL9k2PdVcs2h0jQz96J6G4TMKRCcEsoJ+QTgQD00Igtjw==} + + dashdash@1.14.1: + resolution: {integrity: sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==} + engines: {node: '>=0.10'} + + date-fns-tz@2.0.1: + resolution: {integrity: sha512-fJCG3Pwx8HUoLhkepdsP7Z5RsucUi+ZBOxyM5d0ZZ6c4SdYustq0VMmOu6Wf7bli+yS/Jwp91TOCqn9jMcVrUA==} + peerDependencies: + date-fns: 2.x + + date-fns@2.30.0: + resolution: {integrity: sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==} + engines: {node: '>=0.11'} + + dayjs@1.11.13: + resolution: {integrity: sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==} + + debounce@1.2.1: + resolution: {integrity: sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug==} + + 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.4: + resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + debug@4.4.1: + resolution: {integrity: sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + decode-html@2.0.0: + resolution: {integrity: sha512-lVJ+EBozhAXA2nSQG+xAgcD0P5K3uejnIIvM09uoQfS8AALkQ+HhHcEUvKovXi0EIpIZWjm0y8X7ULjaJpgY9w==} + + decompress-response@6.0.0: + resolution: {integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==} + engines: {node: '>=10'} + + decompress-response@7.0.0: + resolution: {integrity: sha512-6IvPrADQyyPGLpMnUh6kfKiqy7SrbXbjoUuZ90WMBJKErzv2pCiwlGEXjRX9/54OnTq+XFVnkOnOMzclLI5aEA==} + engines: {node: '>=10'} + + deep-equal@1.0.1: + resolution: {integrity: sha512-bHtC0iYvWhyaTzvV3CZgPeZQqCOBGyGsVV7v4eevpdkLHfiSrXUdBG+qAuSz4RI70sszvjQ1QSZ98An1yNwpSw==} + + deep-extend@0.6.0: + resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==} + engines: {node: '>=4.0.0'} + + deepmerge@2.2.1: + resolution: {integrity: sha512-R9hc1Xa/NOBi9WRVUWg19rl1UB7Tt4kuPd+thNJgFZoxXsTz7ncaPaeIm+40oSGuP33DfMb4sZt1QIGiJzC4EA==} + engines: {node: '>=0.10.0'} + + deepmerge@4.3.1: + resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} + engines: {node: '>=0.10.0'} + + defaults@1.0.4: + resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==} + + defer-to-connect@2.0.1: + resolution: {integrity: sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==} + engines: {node: '>=10'} + + 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'} + + defu@6.1.4: + resolution: {integrity: sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==} + + del@7.1.0: + resolution: {integrity: sha512-v2KyNk7efxhlyHpjEvfyxaAihKKK0nWCuf6ZtqZcFFpQRG0bJ12Qsr0RpvsICMjAAZ8DOVCxrlqpxISlMHC4Kg==} + engines: {node: '>=14.16'} + + delayed-stream@1.0.0: + resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} + engines: {node: '>=0.4.0'} + + delegates@1.0.0: + resolution: {integrity: sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==} + + depd@1.1.2: + resolution: {integrity: sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==} + engines: {node: '>= 0.6'} + + 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'} + + destr@2.0.5: + resolution: {integrity: sha512-ugFTXCtDZunbzasqBxrK93Ik/DRYsO6S/fedkWEMKqt04xZ4csmnmwGDBAb07QWNaGMAmnTIemsYZCksjATwsA==} + + destroy@1.2.0: + resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} + engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} + + detect-file@1.0.0: + resolution: {integrity: sha512-DtCOLG98P007x7wiiOmfI0fi3eIKyWiLTGJ2MDnVi/E04lWGbf+JzrRHMm0rgIIZJGtHpKpbVgLWHrv8xXpc3Q==} + engines: {node: '>=0.10.0'} + + detect-indent@6.1.0: + resolution: {integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==} + engines: {node: '>=8'} + + detect-indent@7.0.1: + resolution: {integrity: sha512-Mc7QhQ8s+cLrnUfU/Ji94vG/r8M26m8f++vyres4ZoojaRDpZ1eSIh/EpzLNwlWuvzSZ3UbDFspjFvTDXe6e/g==} + engines: {node: '>=12.20'} + + detect-libc@2.0.4: + resolution: {integrity: sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA==} + engines: {node: '>=8'} + + detect-newline@4.0.1: + resolution: {integrity: sha512-qE3Veg1YXzGHQhlA6jzebZN2qVf6NX+A7m7qlhCGG30dJixrAQhYOsJjsnBjJkCSmuOPpCk30145fr8FV0bzog==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + detect-node-es@1.1.0: + resolution: {integrity: sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==} + + detect-node@2.1.0: + resolution: {integrity: sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==} + + dezalgo@1.0.4: + resolution: {integrity: sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig==} + + diff@3.5.0: + resolution: {integrity: sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==} + engines: {node: '>=0.3.1'} + + diff@5.2.0: + resolution: {integrity: sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==} + engines: {node: '>=0.3.1'} + + dir-glob@3.0.1: + resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} + engines: {node: '>=8'} + + direction@1.0.4: + resolution: {integrity: sha512-GYqKi1aH7PJXxdhTeZBFrg8vUBeKXi+cNprXsC1kpJcbcVnV9wBsrOu1cQEdG0WeQwlfHiy3XvnKfIrJ2R0NzQ==} + hasBin: true + + dkim-signer@0.2.2: + resolution: {integrity: sha512-24OZ3cCA30UTRz+Plpg+ibfPq3h7tDtsJRg75Bo0pGakZePXcPBddY80bKi1Bi7Jsz7tL5Cw527mhCRDvNFgfg==} + + dnd-core@16.0.1: + resolution: {integrity: sha512-HK294sl7tbw6F6IeuK16YSBUoorvHpY8RHO+9yFfaJyCDVb6n7PRcezrOEOa2SBCqiYpemh5Jx20ZcjKdFAVng==} + + dom-accessibility-api@0.5.16: + resolution: {integrity: sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==} + + dom-converter@0.2.0: + resolution: {integrity: sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==} + + dom-helpers@5.2.1: + resolution: {integrity: sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==} + + dom-serializer@1.4.1: + resolution: {integrity: sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==} + + dom-serializer@2.0.0: + resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==} + + domelementtype@2.3.0: + resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} + + domhandler@4.3.1: + resolution: {integrity: sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==} + engines: {node: '>= 4'} + + domhandler@5.0.3: + resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==} + engines: {node: '>= 4'} + + domutils@2.8.0: + resolution: {integrity: sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==} + + domutils@3.2.2: + resolution: {integrity: sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==} + + dot-case@3.0.4: + resolution: {integrity: sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==} + + dot-prop@5.3.0: + resolution: {integrity: sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==} + engines: {node: '>=8'} + + dotenv@16.4.5: + resolution: {integrity: sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==} + engines: {node: '>=12'} + + dunder-proto@1.0.1: + resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} + engines: {node: '>= 0.4'} + + duplexer@0.1.2: + resolution: {integrity: sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==} + + eastasianwidth@0.2.0: + resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} + + ecc-jsbn@0.1.2: + resolution: {integrity: sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==} + + ecdsa-sig-formatter@1.0.11: + resolution: {integrity: sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==} + + ee-first@1.1.1: + resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} + + electron-to-chromium@1.5.198: + resolution: {integrity: sha512-G5COfnp3w+ydVu80yprgWSfmfQaYRh9DOxfhAxstLyetKaLyl55QrNjx8C38Pc/C+RaDmb1M0Lk8wPEMQ+bGgQ==} + + elliptic@6.6.1: + resolution: {integrity: sha512-RaddvvMatK2LJHqFJ+YA4WysVN5Ita9E35botqIYspQ4TkRAlCicdzKOjlyv/1Za5RyTNn7di//eEV0uTAfe3g==} + + emittery@0.13.1: + resolution: {integrity: sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==} + engines: {node: '>=12'} + + 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==} + + emojis-list@3.0.0: + resolution: {integrity: sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==} + engines: {node: '>= 4'} + + enabled@2.0.0: + resolution: {integrity: sha512-AKrN98kuwOzMIdAizXGI86UFBoo26CL21UM763y1h/GMSJ4/OHU9k2YlsmBpyScFo/wbLzWQJBMCW4+IO3/+OQ==} + + encodeurl@1.0.2: + resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} + engines: {node: '>= 0.8'} + + end-of-stream@1.4.5: + resolution: {integrity: sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==} + + enhanced-resolve@5.18.3: + resolution: {integrity: sha512-d4lC8xfavMeBjzGr2vECC3fsGXziXZQyJxD868h2M/mBI3PwAuODxAkLkq5HYuvrPYcUtiLzsTo8U3PgX3Ocww==} + engines: {node: '>=10.13.0'} + + entities@2.2.0: + resolution: {integrity: sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==} + + entities@3.0.1: + resolution: {integrity: sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q==} + engines: {node: '>=0.12'} + + entities@4.5.0: + resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} + engines: {node: '>=0.12'} + + error-ex@1.3.2: + resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} + + error-stack-parser@2.1.4: + resolution: {integrity: sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==} + + es-define-property@1.0.1: + resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==} + engines: {node: '>= 0.4'} + + es-errors@1.3.0: + resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} + engines: {node: '>= 0.4'} + + es-module-lexer@1.7.0: + resolution: {integrity: sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==} + + es-object-atoms@1.1.1: + resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==} + engines: {node: '>= 0.4'} + + es-set-tostringtag@2.1.0: + resolution: {integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==} + engines: {node: '>= 0.4'} + + es6-error@4.1.1: + resolution: {integrity: sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==} + + esbuild-loader@4.3.0: + resolution: {integrity: sha512-D7HeJNdkDKKMarPQO/3dlJT6RwN2YJO7ENU6RPlpOz5YxSHnUNi2yvW41Bckvi1EVwctIaLzlb0ni5ag2GINYA==} + peerDependencies: + webpack: ^4.40.0 || ^5.0.0 + + esbuild-register@3.5.0: + resolution: {integrity: sha512-+4G/XmakeBAsvJuDugJvtyF1x+XJT4FMocynNpxrvEBViirpfUn2PgNpCHedfWhF4WokNsO/OvMKrmJOIJsI5A==} + peerDependencies: + esbuild: '>=0.12 <1' + + esbuild@0.20.2: + resolution: {integrity: sha512-WdOOppmUNU+IbZ0PaDiTst80zjnrOkyJNHoKupIcVyU8Lvla3Ugx94VzkQ32Ijqd7UhHJy75gNWDMUekcrSJ6g==} + engines: {node: '>=12'} + hasBin: true + + esbuild@0.21.5: + resolution: {integrity: sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==} + engines: {node: '>=12'} + hasBin: true + + esbuild@0.25.8: + resolution: {integrity: sha512-vVC0USHGtMi8+R4Kz8rt6JhEWLxsv9Rnu/lGYbPR8u47B+DCBksq9JarW0zOO7bs37hyOK1l2/oqtbciutL5+Q==} + 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@2.0.0: + resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==} + engines: {node: '>=8'} + + escape-string-regexp@4.0.0: + resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} + engines: {node: '>=10'} + + escape-string-regexp@5.0.0: + resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} + engines: {node: '>=12'} + + eslint-scope@5.1.1: + resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} + engines: {node: '>=8.0.0'} + + esm@3.2.25: + resolution: {integrity: sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA==} + engines: {node: '>=6'} + + esprima@4.0.1: + resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} + engines: {node: '>=4'} + hasBin: true + + 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'} + + events@3.3.0: + resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} + engines: {node: '>=0.8.x'} + + eventsource@2.0.2: + resolution: {integrity: sha512-IzUmBGPR3+oUG9dUeXynyNmf91/3zUSJg1lCktzKw47OXuhco54U3r9B7O4XX+Rb1Itm9OZ2b0RkTs10bICOxA==} + engines: {node: '>=12.0.0'} + + execa@5.1.1: + resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} + engines: {node: '>=10'} + + execa@9.6.0: + resolution: {integrity: sha512-jpWzZ1ZhwUmeWRhS7Qv3mhpOhLfwI+uAX4e5fOcXqwMR7EcJ0pj2kV1CVzHVMX/LphnKWD3LObjZCoJ71lKpHw==} + engines: {node: ^18.19.0 || >=20.5.0} + + expand-tilde@2.0.2: + resolution: {integrity: sha512-A5EmesHW6rfnZ9ysHQjPdJRni0SRar0tjtG5MNtm9n5TUvsYU8oozprtRD4AqHxcZWWlVuAmQo2nWKfN9oyjTw==} + engines: {node: '>=0.10.0'} + + extend@3.0.2: + resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} + + external-editor@3.1.0: + resolution: {integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==} + engines: {node: '>=4'} + + extsprintf@1.3.0: + resolution: {integrity: sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==} + engines: {'0': node >=0.6.0} + + fast-deep-equal@3.1.3: + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + + fast-glob@3.3.3: + resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==} + engines: {node: '>=8.6.0'} + + fast-json-stable-stringify@2.1.0: + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + + fast-safe-stringify@2.1.1: + resolution: {integrity: sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==} + + fast-uri@3.0.6: + resolution: {integrity: sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw==} + + fast-xml-parser@5.2.5: + resolution: {integrity: sha512-pfX9uG9Ki0yekDHx2SiuRIyFdyAr1kMIMitPvb0YBo8SUfKvia7w7FIyd/l6av85pFYRhZscS75MwMnbvY+hcQ==} + hasBin: true + + fastq@1.19.1: + resolution: {integrity: sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==} + + fecha@4.2.3: + resolution: {integrity: sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw==} + + figures@3.2.0: + resolution: {integrity: sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==} + engines: {node: '>=8'} + + figures@6.1.0: + resolution: {integrity: sha512-d+l3qxjSesT4V7v2fh+QnmFnUWv9lSpjarhShNTgBOfA0ttejbQUAlHLitbjkoRiDulW0OPoQPYIGhIC8ohejg==} + engines: {node: '>=18'} + + file-saver@2.0.5: + resolution: {integrity: sha512-P9bmyZ3h/PRG+Nzga+rbdI4OEpNDzAVyy74uVO9ATgzLK6VtAsYybF/+TOCvrc0MO793d6+42lLyZTw7/ArVzA==} + + fill-range@7.1.1: + resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} + engines: {node: '>=8'} + + find-root@1.1.0: + resolution: {integrity: sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==} + + find-up@3.0.0: + resolution: {integrity: sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==} + engines: {node: '>=6'} + + 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-yarn-workspace-root2@1.2.16: + resolution: {integrity: sha512-hr6hb1w8ePMpPVUK39S4RlwJzi+xPLuVuG8XlwXU3KD5Yn3qgBWVfy3AzNlDhWvE1EORCE65/Qm26rFQt3VLVA==} + + findup-sync@5.0.0: + resolution: {integrity: sha512-MzwXju70AuyflbgeOhzvQWAvvQdo1XL0A9bVvlXsYcFEBM87WR4OakL4OfZq+QRmr+duJubio+UtNQCPsVESzQ==} + engines: {node: '>= 10.13.0'} + + fined@2.0.0: + resolution: {integrity: sha512-OFRzsL6ZMHz5s0JrsEr+TpdGNCtrVtnuG3x1yzGNiQHT0yaDnXAj8V/lWcpJVrnoDpcwXcASxAZYbuXda2Y82A==} + engines: {node: '>= 10.13.0'} + + flagged-respawn@2.0.0: + resolution: {integrity: sha512-Gq/a6YCi8zexmGHMuJwahTGzXlAZAOsbCVKduWXC6TlLCjjFRlExMJc4GC2NYPYZ0r/brw9P7CpRgQmlPVeOoA==} + engines: {node: '>= 10.13.0'} + + fn.name@1.1.0: + resolution: {integrity: sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw==} + + follow-redirects@1.15.11: + resolution: {integrity: sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==} + engines: {node: '>=4.0'} + peerDependencies: + debug: '*' + peerDependenciesMeta: + debug: + optional: true + + for-in@1.0.2: + resolution: {integrity: sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==} + engines: {node: '>=0.10.0'} + + for-own@1.0.0: + resolution: {integrity: sha512-0OABksIGrxKK8K4kynWkQ7y1zounQxP+CWnyclVwj81KW3vlLlGUx57DKGcP/LH216GzqnstnPocF16Nxs0Ycg==} + engines: {node: '>=0.10.0'} + + foreground-child@3.3.1: + resolution: {integrity: sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==} + engines: {node: '>=14'} + + forever-agent@0.6.1: + resolution: {integrity: sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==} + + fork-ts-checker-webpack-plugin@8.0.0: + resolution: {integrity: sha512-mX3qW3idpueT2klaQXBzrIM/pHw+T0B/V9KHEvNrqijTq9NFnMZU6oreVxDYcf33P8a5cW+67PjodNHthGnNVg==} + engines: {node: '>=12.13.0', yarn: '>=1.0.0'} + peerDependencies: + typescript: '>3.6.0' + webpack: ^5.11.0 + + form-data@2.3.3: + resolution: {integrity: sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==} + engines: {node: '>= 0.12'} + + form-data@4.0.4: + resolution: {integrity: sha512-KrGhL9Q4zjj0kiUt5OO4Mr/A/jlI2jDYs5eHBpYHPcBEVSiipAvn2Ko2HnPe20rmcuuvMHNdZFp+4IlGTMF0Ow==} + engines: {node: '>= 6'} + + formidable@2.1.5: + resolution: {integrity: sha512-Oz5Hwvwak/DCaXVVUtPn4oLMLLy1CdclLKO1LFgU7XzDpVMUU5UjlSLpGMocyQNNk8F6IJW9M/YdooSn2MRI+Q==} + + formik@2.4.5: + resolution: {integrity: sha512-Gxlht0TD3vVdzMDHwkiNZqJ7Mvg77xQNfmBRrNtvzcHZs72TJppSTDKHpImCMJZwcWPBJ8jSQQ95GJzXFf1nAQ==} + peerDependencies: + react: '>=16.8.0' + + fractional-indexing@3.2.0: + resolution: {integrity: sha512-PcOxmqwYCW7O2ovKRU8OoQQj2yqTfEB/yeTYk4gPid6dN5ODRfU1hXd9tTVZzax/0NkO7AxpHykvZnT1aYp/BQ==} + engines: {node: ^14.13.1 || >=16.0.0} + + fresh@0.5.2: + resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} + engines: {node: '>= 0.6'} + + fs-constants@1.0.0: + resolution: {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==} + + fs-extra@10.1.0: + resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==} + engines: {node: '>=12'} + + fs-extra@11.2.0: + resolution: {integrity: sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==} + engines: {node: '>=14.14'} + + fs-extra@11.3.1: + resolution: {integrity: sha512-eXvGGwZ5CL17ZSwHWd3bbgk7UUpF6IFHtP57NYYakPvHOs8GDgDe5KJI36jIJzDkJ6eJjuzRA8eBQb6SkKue0g==} + engines: {node: '>=14.14'} + + fs-extra@8.1.0: + resolution: {integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==} + engines: {node: '>=6 <7 || >=8'} + + fs-minipass@2.1.0: + resolution: {integrity: sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==} + engines: {node: '>= 8'} + + fs-monkey@1.1.0: + resolution: {integrity: sha512-QMUezzXWII9EV5aTFXW1UBVUO77wYPpjqIF8/AviUCThNeSYZykpoTixUeaNNBwmCev0AMDWMAni+f8Hxb1IFw==} + + 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==} + + 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.3.0: + resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==} + engines: {node: '>= 0.4'} + + get-it@8.6.10: + resolution: {integrity: sha512-27StIK860ZVp2bhsG/aTWpcoA4OrFxtMqBbesa5sR23m5OxfVQYCnpm2rPQeo3gs5qsUk0FdkISLgXRJ4HynNw==} + engines: {node: '>=14.0.0'} + + get-latest-version@5.1.0: + resolution: {integrity: sha512-Q6IBWr/zzw57zIkJmNhI23eRTw3nZ4BWWK034meLwOYU9L3J3IpXiyM73u2pYUwN6U7ahkerCwg2T0jlxiLwsw==} + engines: {node: '>=14.18'} + + get-nonce@1.0.1: + resolution: {integrity: sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==} + engines: {node: '>=6'} + + get-package-type@0.1.0: + resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==} + engines: {node: '>=8.0.0'} + + get-proto@1.0.1: + resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==} + engines: {node: '>= 0.4'} + + get-stdin@9.0.0: + resolution: {integrity: sha512-dVKBjfWisLAicarI2Sf+JuBE/DghV4UzNAVe9yhEJuzeREd3JhOTE9cUaJTeSa77fsbQUK3pcOpJfM59+VKZaA==} + engines: {node: '>=12'} + + get-stream@5.2.0: + resolution: {integrity: sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==} + engines: {node: '>=8'} + + get-stream@6.0.1: + resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} + engines: {node: '>=10'} + + get-stream@9.0.1: + resolution: {integrity: sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA==} + engines: {node: '>=18'} + + get-tsconfig@4.10.1: + resolution: {integrity: sha512-auHyJ4AgMz7vgS8Hp3N6HXSmlMdUyhSUrfBF16w153rxtLIEOE+HGqaBppczZvnHLqQJfiHotCYpNhl0lUROFQ==} + + getopts@2.3.0: + resolution: {integrity: sha512-5eDf9fuSXwxBL6q5HX+dhDj+dslFGWzU5thZ9kNKUkcPtaPdatmUFKwHFrLb/uf/WpA4BHET+AX3Scl56cAjpA==} + + getpass@0.1.7: + resolution: {integrity: sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==} + + git-diff@2.0.6: + resolution: {integrity: sha512-/Iu4prUrydE3Pb3lCBMbcSNIf81tgGt0W1ZwknnyF62t3tHmtiJTRj0f+1ZIhp3+Rh0ktz1pJVoa7ZXUCskivA==} + engines: {node: '>= 4.8.0'} + + git-hooks-list@3.2.0: + resolution: {integrity: sha512-ZHG9a1gEhUMX1TvGrLdyWb9kDopCBbTnI8z4JgRMYxsijWipgjSEYoPWqBuIB0DnRnvqlQSEeVmzpeuPm7NdFQ==} + + git-up@7.0.0: + resolution: {integrity: sha512-ONdIrbBCFusq1Oy0sC71F5azx8bVkvtZtMJAsv+a6lz5YAmbNnLD6HAB4gptHZVLPR8S2/kVN6Gab7lryq5+lQ==} + + git-url-parse@13.1.1: + resolution: {integrity: sha512-PCFJyeSSdtnbfhSNRw9Wk96dDCNx+sogTe4YNXeXSJxt7xz5hvXekuRn9JX7m+Mf4OscCu8h+mtAl3+h5Fo8lQ==} + + git-url-parse@14.0.0: + resolution: {integrity: sha512-NnLweV+2A4nCvn4U/m2AoYu0pPKlsmhK9cknG7IMwsjFY1S2jxM+mAhsDxyxfCIGfGaD+dozsyX4b6vkYc83yQ==} + + glob-parent@5.1.2: + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + engines: {node: '>= 6'} + + glob-to-regexp@0.4.1: + resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} + + glob@10.3.10: + resolution: {integrity: sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==} + engines: {node: '>=16 || 14 >=14.17'} + hasBin: true + + 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-agent@3.0.0: + resolution: {integrity: sha512-PT6XReJ+D07JvGoxQMkT6qji/jVNfX/h364XHZOWeRzy64sSFr+xJ5OX7LI3b4MPQzdL4H8Y8M0xzPpsVMwA8Q==} + engines: {node: '>=10.0'} + + global-modules@1.0.0: + resolution: {integrity: sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==} + engines: {node: '>=0.10.0'} + + global-prefix@1.0.2: + resolution: {integrity: sha512-5lsx1NUDHtSjfg0eHlmYvZKv8/nVqX4ckFbM+FrGcQ+04KWcWFo9P5MxPZYSzUvyzmdTbI7Eix8Q4IbELDqzKg==} + engines: {node: '>=0.10.0'} + + globalthis@1.0.4: + resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==} + engines: {node: '>= 0.4'} + + globby@13.2.2: + resolution: {integrity: sha512-Y1zNGV+pzQdh7H39l9zgB4PJqjRNqydvdYCDG4HFXM4XuvSaQQlEc91IU1yALL8gUTDomgBAfz3XJdmUS+oo0w==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + gopd@1.2.0: + resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} + engines: {node: '>= 0.4'} + + got@11.8.6: + resolution: {integrity: sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g==} + engines: {node: '>=10.19.0'} + + graceful-fs@4.2.10: + resolution: {integrity: sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==} + + graceful-fs@4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + + grant@5.4.24: + resolution: {integrity: sha512-PD5AvSI7wgCBDi2mEd6M/TIe+70c/fVc3Ik4B0s4mloWTy9J800eUEcxivOiyqSP9wvBy2QjWq1JR8gOfDMnEg==} + engines: {node: '>=12.0.0'} + + gzip-size@6.0.0: + resolution: {integrity: sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==} + engines: {node: '>=10'} + + handlebars@4.7.7: + resolution: {integrity: sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==} + engines: {node: '>=0.4.7'} + hasBin: true + + handlebars@4.7.8: + resolution: {integrity: sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==} + engines: {node: '>=0.4.7'} + hasBin: true + + har-schema@2.0.0: + resolution: {integrity: sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==} + engines: {node: '>=4'} + + har-validator@5.1.5: + resolution: {integrity: sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==} + engines: {node: '>=6'} + deprecated: this library is no longer supported + + 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-symbols@1.1.0: + resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==} + engines: {node: '>= 0.4'} + + has-tostringtag@1.0.2: + resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} + engines: {node: '>= 0.4'} + + hash.js@1.1.7: + resolution: {integrity: sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==} + + hasown@2.0.2: + resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} + engines: {node: '>= 0.4'} + + he@1.2.0: + resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} + hasBin: true + + header-case@2.0.4: + resolution: {integrity: sha512-H/vuk5TEEVZwrR0lp2zed9OCo1uAILMlx0JEMgC26rzyJJ3N1v6XkwHHXJQdR2doSjcGPM6OKPYoJgf0plJ11Q==} + + helmet@6.2.0: + resolution: {integrity: sha512-DWlwuXLLqbrIOltR6tFQXShj/+7Cyp0gLi6uAb8qMdFh/YBBFbKSgQ6nbXmScYd8emMctuthmgIa7tUfo9Rtyg==} + engines: {node: '>=14.0.0'} + + highlight.js@10.7.3: + resolution: {integrity: sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A==} + + hls.js@1.5.20: + resolution: {integrity: sha512-uu0VXUK52JhihhnN/MVVo1lvqNNuhoxkonqgO3IpjvQiGpJBdIXMGkofjQb/j9zvV7a1SW8U9g1FslWx/1HOiQ==} + + hmac-drbg@1.0.1: + resolution: {integrity: sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==} + + hoist-non-react-statics@3.3.2: + resolution: {integrity: sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==} + + homedir-polyfill@1.0.3: + resolution: {integrity: sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==} + engines: {node: '>=0.10.0'} + + hosted-git-info@2.8.9: + resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} + + html-entities@2.6.0: + resolution: {integrity: sha512-kig+rMn/QOVRvr7c86gQ8lWXq+Hkv6CbAH1hLu+RG338StTpE8Z0b44SDVaqVu7HGKf27frdmUYEs9hTUX/cLQ==} + + html-escaper@2.0.2: + resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} + + html-minifier-terser@6.1.0: + resolution: {integrity: sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw==} + engines: {node: '>=12'} + hasBin: true + + html-to-text@9.0.5: + resolution: {integrity: sha512-qY60FjREgVZL03vJU6IfMV4GDjGBIoOyvuFdpBDIX9yTlDw0TjxVBQp+P8NvpdIXNJvfWBTNul7fsAQJq2FNpg==} + engines: {node: '>=14'} + + html-webpack-plugin@5.6.0: + resolution: {integrity: sha512-iwaY4wzbe48AfKLZ/Cc8k0L+FKG6oSNRaZ8x5A/T/IVDGyXcbHncM9TdDa93wn0FsSm82FhTKW7f3vS61thXAw==} + engines: {node: '>=10.13.0'} + peerDependencies: + '@rspack/core': 0.x || 1.x + webpack: ^5.20.0 + peerDependenciesMeta: + '@rspack/core': + optional: true + webpack: + optional: true + + htmlparser2@6.1.0: + resolution: {integrity: sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==} + + htmlparser2@8.0.2: + resolution: {integrity: sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==} + + http-assert@1.5.0: + resolution: {integrity: sha512-uPpH7OKX4H25hBmU6G1jWNaqJGpTXxey+YOUizJUAgu0AjLUeC8D73hTrhvDS5D+GJN1DN1+hhc/eF/wpxtp0w==} + engines: {node: '>= 0.8'} + + http-cache-semantics@4.2.0: + resolution: {integrity: sha512-dTxcvPXqPvXBQpq5dUr6mEMJX4oIEFv6bwom3FDwKRDsuIjjJGANqhBuoAn9c1RQJIdAKav33ED65E2ys+87QQ==} + + http-errors@1.6.3: + resolution: {integrity: sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==} + engines: {node: '>= 0.6'} + + http-errors@1.8.1: + resolution: {integrity: sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==} + engines: {node: '>= 0.6'} + + http-errors@2.0.0: + resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} + engines: {node: '>= 0.8'} + + http-signature@1.2.0: + resolution: {integrity: sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==} + engines: {node: '>=0.8', npm: '>=1.3.7'} + + http2-wrapper@1.0.3: + resolution: {integrity: sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==} + engines: {node: '>=10.19.0'} + + human-signals@2.1.0: + resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} + engines: {node: '>=10.17.0'} + + human-signals@8.0.1: + resolution: {integrity: sha512-eKCa6bwnJhvxj14kZk5NCPc6Hb6BdsU9DZcOnmQKSnO1VKrfV0zCvtttPZUsBvjmNDn8rpcJfpwSYnHBjc95MQ==} + engines: {node: '>=18.18.0'} + + iconv-lite@0.4.13: + resolution: {integrity: sha512-QwVuTNQv7tXC5mMWFX5N5wGjmybjNBBD8P3BReTkPmipoxTUFgWM2gXNvldHQr6T14DH0Dh6qBVg98iJt7u4mQ==} + engines: {node: '>=0.8.0'} + + iconv-lite@0.4.15: + resolution: {integrity: sha512-RGR+c9Lm+tLsvU57FTJJtdbv2hQw42Yl2n26tVIBaYmZzLN+EGfroUugN/z9nJf9kOXd49hBmpoGr4FEm+A4pw==} + engines: {node: '>=0.10.0'} + + iconv-lite@0.4.24: + resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} + engines: {node: '>=0.10.0'} + + icss-utils@5.1.0: + resolution: {integrity: sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==} + engines: {node: ^10 || ^12 || >= 14} + peerDependencies: + postcss: ^8.1.0 + + ieee754@1.2.1: + resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} + + ignore-by-default@1.0.1: + resolution: {integrity: sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA==} + + ignore-walk@3.0.4: + resolution: {integrity: sha512-PY6Ii8o1jMRA1z4F2hRkH/xN59ox43DavKvD3oDpfurRlOJyAHpifIwpbdv1n4jt4ov0jSpw3kQ4GhJnpBL6WQ==} + + ignore@5.3.2: + resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} + engines: {node: '>= 4'} + + immediate@3.0.6: + resolution: {integrity: sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==} + + immer@9.0.21: + resolution: {integrity: sha512-bc4NBHqOqSfRW7POMkHd51LvClaeMXpm8dx0e8oE2GORbq5aRK7Bxl4FyzVLdGtLmvLKL7BTDBG5ACQm4HWjTA==} + + immutable@3.8.2: + resolution: {integrity: sha512-15gZoQ38eYjEjxkorfbcgBKBL6R7T459OuK+CpcWt7O3KF4uPCx2tD0uFETlUDIyo+1789crbMhTvQBSR5yBMg==} + engines: {node: '>=0.10.0'} + + import-fresh@3.3.1: + resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==} + engines: {node: '>=6'} + + import-lazy@4.0.0: + resolution: {integrity: sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==} + engines: {node: '>=8'} + + 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'} + + indent-string@5.0.0: + resolution: {integrity: sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==} + engines: {node: '>=12'} + + inflation@2.1.0: + resolution: {integrity: sha512-t54PPJHG1Pp7VQvxyVCJ9mBbjG3Hqryges9bXoOO6GExCPa+//i/d5GSuFtpx3ALLd7lgIAur6zrIlBQyJuMlQ==} + engines: {node: '>= 0.8.0'} + + 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.3: + resolution: {integrity: sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==} + + inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + + ini@1.3.8: + resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} + + ini@2.0.0: + resolution: {integrity: sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==} + engines: {node: '>=10'} + + ini@4.1.2: + resolution: {integrity: sha512-AMB1mvwR1pyBFY/nSevUX6y8nJWS63/SzUKD3JyQn97s4xgIdgQPT75IRouIiBAN4yLQBUShNYVW0+UG25daCw==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + + inquirer@8.2.5: + resolution: {integrity: sha512-QAgPDQMEgrDssk1XiwwHoOGYF9BAbUcc1+j+FhEvaOt8/cKRqyLn0U5qA6F74fGhTMGxf92pOvPBeh29jQJDTQ==} + engines: {node: '>=12.0.0'} + + inquirer@8.2.6: + resolution: {integrity: sha512-M1WuAmb7pn9zdFRtQYk26ZBoY043Sse0wVDdk4Bppr+JOXyQYybdtvK+l9wUibhtjdjvtoiNy8tk+EgsYIUqKg==} + engines: {node: '>=12.0.0'} + + inquirer@9.3.7: + resolution: {integrity: sha512-LJKFHCSeIRq9hanN14IlOtPSTe3lNES7TYDTE2xxdAy1LS5rYphajK1qtwvj3YmQXvvk0U2Vbmcni8P9EIQW9w==} + engines: {node: '>=18'} + + interpret@1.4.0: + resolution: {integrity: sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==} + engines: {node: '>= 0.10'} + + interpret@2.2.0: + resolution: {integrity: sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==} + engines: {node: '>= 0.10'} + + interpret@3.1.1: + resolution: {integrity: sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ==} + engines: {node: '>=10.13.0'} + + intl-messageformat@10.5.11: + resolution: {integrity: sha512-eYq5fkFBVxc7GIFDzpFQkDOZgNayNTQn4Oufe8jw6YY6OHVw70/4pA3FyCsQ0Gb2DnvEJEMmN2tOaXUGByM+kg==} + + intl-messageformat@10.7.7: + resolution: {integrity: sha512-F134jIoeYMro/3I0h08D0Yt4N9o9pjddU/4IIxMMURqbAtI2wu70X8hvG1V48W49zXHXv3RKSF/po+0fDfsGjA==} + + invariant@2.2.4: + resolution: {integrity: sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==} + + is-absolute@1.0.0: + resolution: {integrity: sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==} + engines: {node: '>=0.10.0'} + + is-arrayish@0.2.1: + resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} + + is-arrayish@0.3.2: + resolution: {integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==} + + is-binary-path@2.1.0: + resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} + engines: {node: '>=8'} + + is-class-hotfix@0.0.6: + resolution: {integrity: sha512-0n+pzCC6ICtVr/WXnN2f03TK/3BfXY7me4cjCAqT8TYXEl0+JBRoqBo94JJHXcyDSLUeWbNX8Fvy5g5RJdAstQ==} + + is-core-module@2.16.1: + resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==} + 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-fullwidth-code-point@3.0.0: + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + engines: {node: '>=8'} + + is-generator-function@1.1.0: + resolution: {integrity: sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ==} + engines: {node: '>= 0.4'} + + is-glob@4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} + + is-hotkey@0.1.8: + resolution: {integrity: sha512-qs3NZ1INIS+H+yeo7cD9pDfwYV/jqRh1JG9S9zYrNudkoUQg7OL7ziXqRKu+InFjUIDoP2o6HIkLYMh1pcWgyQ==} + + is-interactive@1.0.0: + resolution: {integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==} + engines: {node: '>=8'} + + is-interactive@2.0.0: + resolution: {integrity: sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==} + engines: {node: '>=12'} + + is-localhost-ip@2.0.0: + resolution: {integrity: sha512-vlgs2cSgMOfnKU8c1ewgKPyum9rVrjjLLW2HBdL5i0iAJjOs8NY55ZBd/hqUTaYR0EO9CKZd3hVSC2HlIbygTQ==} + engines: {node: '>=12'} + + 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-path-cwd@3.0.0: + resolution: {integrity: sha512-kyiNFFLU0Ampr6SDZitD/DwUo4Zs1nSdnygUBqsu3LooL00Qvb5j+UnvApUn/TTj1J3OuE6BTdQ5rudKmU2ZaA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + is-path-inside@4.0.0: + resolution: {integrity: sha512-lJJV/5dYS+RcL8uQdBDW9c9uWFLLBNRyFhnAKXw5tVqLlKZ4RMGZKv+YQ/IA3OhD+RpbJa1LLFM1FQPGyIXvOA==} + engines: {node: '>=12'} + + is-plain-obj@4.1.0: + resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==} + engines: {node: '>=12'} + + is-plain-object@5.0.0: + resolution: {integrity: sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==} + engines: {node: '>=0.10.0'} + + is-regex@1.2.1: + resolution: {integrity: sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==} + engines: {node: '>= 0.4'} + + is-relative@1.0.0: + resolution: {integrity: sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==} + engines: {node: '>=0.10.0'} + + is-retry-allowed@2.2.0: + resolution: {integrity: sha512-XVm7LOeLpTW4jV19QSH38vkswxoLud8sQ57YwJVTPWdiaI9I8keEhGFpBlslyVsgdQy4Opg8QOLb8YRgsyZiQg==} + engines: {node: '>=10'} + + is-ssh@1.4.1: + resolution: {integrity: sha512-JNeu1wQsHjyHgn9NcWTaXq6zWSR6hqE0++zhfZlkFBbScNkyvxCdeV8sRkSBaeLKxmbpR21brail63ACNxJ0Tg==} + + is-stream@2.0.1: + resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} + engines: {node: '>=8'} + + is-stream@4.0.1: + resolution: {integrity: sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A==} + engines: {node: '>=18'} + + is-type-of@1.4.0: + resolution: {integrity: sha512-EddYllaovi5ysMLMEN7yzHEKh8A850cZ7pykrY1aNRQGn/CDjRDE9qEWbIdt7xGEVJmjBXzU/fNnC4ABTm8tEQ==} + + is-typedarray@1.0.0: + resolution: {integrity: sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==} + + is-unc-path@1.0.0: + resolution: {integrity: sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==} + engines: {node: '>=0.10.0'} + + is-unicode-supported@0.1.0: + resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} + engines: {node: '>=10'} + + is-unicode-supported@1.3.0: + resolution: {integrity: sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==} + engines: {node: '>=12'} + + is-unicode-supported@2.1.0: + resolution: {integrity: sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==} + engines: {node: '>=18'} + + is-windows@1.0.2: + resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==} + engines: {node: '>=0.10.0'} + + is-wsl@2.2.0: + resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} + engines: {node: '>=8'} + + isarray@0.0.1: + resolution: {integrity: sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==} + + isarray@1.0.0: + resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} + + isbinaryfile@5.0.4: + resolution: {integrity: sha512-YKBKVkKhty7s8rxddb40oOkuP0NbaeXrQvLin6QMHL7Ypiy2RW9LwOVrVgZRyOrhQlayMd9t+D8yDy8MKFTSDQ==} + engines: {node: '>= 18.0.0'} + + isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + + isobject@3.0.1: + resolution: {integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==} + engines: {node: '>=0.10.0'} + + isstream@0.1.2: + resolution: {integrity: sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==} + + jackspeak@2.3.6: + resolution: {integrity: sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==} + engines: {node: '>=14'} + + jackspeak@3.4.3: + resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} + + jest-worker@27.5.1: + resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} + engines: {node: '>= 10.13.0'} + + jju@1.4.0: + resolution: {integrity: sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA==} + + jose@4.15.9: + resolution: {integrity: sha512-1vUQX+IdDMVPj4k8kOxgUqlcK518yluMuGZwqlr44FS1ppZB/5GWh4rZG89erpOBOJjU/OBsnCVFfapsRz6nEA==} + + js-sha3@0.8.0: + resolution: {integrity: sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==} + + js-tokens@4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + + js-yaml@3.14.1: + resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} + hasBin: true + + jsbn@0.1.1: + resolution: {integrity: sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==} + + jsesc@3.1.0: + resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==} + engines: {node: '>=6'} + hasBin: true + + json-buffer@3.0.1: + resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} + + json-logic-js@2.0.5: + resolution: {integrity: sha512-rTT2+lqcuUmj4DgWfmzupZqQDA64AdmYqizzMPWj3DxGdfFNsxPpcNVSaTj4l8W2tG/+hg7/mQhxjU3aPacO6g==} + + 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-schema@0.4.0: + resolution: {integrity: sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==} + + json-stringify-safe@5.0.1: + resolution: {integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==} + + json5@2.2.3: + resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} + engines: {node: '>=6'} + hasBin: true + + jsonc-parser@3.3.1: + resolution: {integrity: sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==} + + jsonfile@4.0.0: + resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} + + jsonfile@6.1.0: + resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} + + jsonwebtoken@9.0.0: + resolution: {integrity: sha512-tuGfYXxkQGDPnLJ7SibiQgVgeDgfbPq2k2ICcbgqW8WxWLBAxKQM/ZCu/IT8SOSwmaYl4dpTFCW5xZv7YbbWUw==} + engines: {node: '>=12', npm: '>=6'} + + jsonwebtoken@9.0.2: + resolution: {integrity: sha512-PRp66vJ865SSqOlgqS8hujT5U4AOgMfhrwYIuIhfKaoSCZcirrmASQr8CX7cUg+RMih+hgznrjp99o+W4pJLHQ==} + engines: {node: '>=12', npm: '>=6'} + + jsprim@1.4.2: + resolution: {integrity: sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==} + engines: {node: '>=0.6.0'} + + jwa@1.4.2: + resolution: {integrity: sha512-eeH5JO+21J78qMvTIDdBXidBd6nG2kZjg5Ohz/1fpa28Z4CcsWUzJ1ZZyFq/3z3N17aZy+ZuBoHljASbL1WfOw==} + + jwa@2.0.1: + resolution: {integrity: sha512-hRF04fqJIP8Abbkq5NKGN0Bbr3JxlQ+qhZufXVr0DvujKy93ZCbXZMHDL4EOtodSbCWxOqR8MS1tXA5hwqCXDg==} + + jwk-to-pem@2.0.5: + resolution: {integrity: sha512-L90jwellhO8jRKYwbssU9ifaMVqajzj3fpRjDKcsDzrslU9syRbFqfkXtT4B89HYAap+xsxNcxgBSB09ig+a7A==} + + jwk-to-pem@2.0.7: + resolution: {integrity: sha512-cSVphrmWr6reVchuKQZdfSs4U9c5Y4hwZggPoz6cbVnTpAVgGRpEuQng86IyqLeGZlhTh+c4MAreB6KbdQDKHQ==} + + jwks-rsa@3.1.0: + resolution: {integrity: sha512-v7nqlfezb9YfHHzYII3ef2a2j1XnGeSE/bK3WfumaYCqONAIstJbrEGapz4kadScZzEt7zYCN7bucj8C0Mv/Rg==} + engines: {node: '>=14'} + + jws@3.2.2: + resolution: {integrity: sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==} + + jws@4.0.0: + resolution: {integrity: sha512-KDncfTmOZoOMTFG4mBlG0qUIOlc03fmzH+ru6RgYVZhPkyiy/92Owlt/8UEN+a4TXR1FQetfIpJE8ApdvdVxTg==} + + keygrip@1.1.0: + resolution: {integrity: sha512-iYSchDJ+liQ8iwbSI2QqsQOvqv58eJCEanyJPJi+Khyu8smkcKSFUCbPwzFcL7YVtZ6eONjqRX/38caJ7QjRAQ==} + engines: {node: '>= 0.6'} + + keyv@4.5.4: + resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} + + kind-of@6.0.3: + resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} + engines: {node: '>=0.10.0'} + + kleur@3.0.3: + resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} + engines: {node: '>=6'} + + knex@3.0.1: + resolution: {integrity: sha512-ruASxC6xPyDklRdrcDy6a9iqK+R9cGK214aiQa+D9gX2ZnHZKv6o6JC9ZfgxILxVAul4bZ13c3tgOAHSuQ7/9g==} + engines: {node: '>=16'} + hasBin: true + peerDependencies: + better-sqlite3: '*' + mysql: '*' + mysql2: '*' + pg: '*' + pg-native: '*' + sqlite3: '*' + tedious: '*' + peerDependenciesMeta: + better-sqlite3: + optional: true + mysql: + optional: true + mysql2: + optional: true + pg: + optional: true + pg-native: + optional: true + sqlite3: + optional: true + tedious: + optional: true + + koa-body@6.0.1: + resolution: {integrity: sha512-M8ZvMD8r+kPHy28aWP9VxL7kY8oPWA+C7ZgCljrCMeaU7uX6wsIQgDHskyrAr9sw+jqnIXyv4Mlxri5R4InIJg==} + + koa-compose@4.1.0: + resolution: {integrity: sha512-8ODW8TrDuMYvXRwra/Kh7/rJo9BtOfPc6qO8eAfC80CnCvSjSl0bkRM24X6/XBBEyj0v1nRUQ1LyOy3dbqOWXw==} + + koa-compress@5.1.1: + resolution: {integrity: sha512-UgMIN7ZoEP2DuoSQmD6CYvFSLt0NReGlc2qSY4bO4Oq0L56OiD9pDG41Kj/zFmVY/A3Wvmn4BqKcfq5H30LGIg==} + engines: {node: '>= 12'} + + koa-convert@2.0.0: + resolution: {integrity: sha512-asOvN6bFlSnxewce2e/DK3p4tltyfC4VM7ZwuTuepI7dEQVcvpyFuBcEARu1+Hxg8DIwytce2n7jrZtRlPrARA==} + engines: {node: '>= 10'} + + koa-favicon@2.1.0: + resolution: {integrity: sha512-LvukcooYjxKtnZq0RXdBup+JDhaHwLgnLlDHB/xvjwQEjbc4rbp/0WkmOzpOvaHujc+fIwPear0dpKX1V+dHVg==} + + koa-helmet@7.0.2: + resolution: {integrity: sha512-AvzS6VuEfFgbAm0mTUnkk/BpMarMcs5A56g+f0sfrJ6m63wII48d2GDrnUQGp0Nj+RR950vNtgqXm9UJSe7GOg==} + engines: {node: '>= 14.0.0'} + + koa-ip@2.1.3: + resolution: {integrity: sha512-QLVBByImwDq9enZXVOD3Astk876B7N0IYta7Kik4iyNB462rVzBB1/LD0Ek1F+v9nGUTHBFyhh8043EIlskK9Q==} + + koa-is-json@1.0.0: + resolution: {integrity: sha512-+97CtHAlWDx0ndt0J8y3P12EWLwTLMXIfMnYDev3wOTwH/RpBGMlfn4bDXlMEg1u73K6XRE9BbUp+5ZAYoRYWw==} + + koa-passport@6.0.0: + resolution: {integrity: sha512-bgcrQN7Ylfgi1PVr5l6hHYkr38RHUzx+ty3m7e/xoTte8MR0zbDt6+pvP3/nuF/yXL6Ba7IzX1rSqmCy6OrrIw==} + engines: {node: '>= 4'} + + koa-range@0.3.0: + resolution: {integrity: sha512-Ich3pCz6RhtbajYXRWjIl6O5wtrLs6kE3nkXc9XmaWe+MysJyZO7K4L3oce1Jpg/iMgCbj+5UCiMm/rqVtcDIg==} + engines: {node: '>=7'} + + koa-send@5.0.1: + resolution: {integrity: sha512-tmcyQ/wXXuxpDxyNXv5yNNkdAMdFRqwtegBXUaowiQzUKqJehttS0x2j0eOZDQAyloAth5w6wwBImnFzkUz3pQ==} + engines: {node: '>= 8'} + + koa-session@6.4.0: + resolution: {integrity: sha512-h/dxmSOvNEXpHQPRs4TV03TZVFyZIjmYQiTAW5JBFTYBOZ0VdpZ8QEE6Dud75g8z9JNGXi3m++VqRmqToB+c2A==} + engines: {node: '>=8.0.0'} + + koa-static@5.0.0: + resolution: {integrity: sha512-UqyYyH5YEXaJrf9S8E23GoJFQZXkBVJ9zYYMPGz919MSX1KuvAcycIuS0ci150HCoPf4XQVhQ84Qf8xRPWxFaQ==} + engines: {node: '>= 7.6.0'} + + koa2-ratelimit@1.1.3: + resolution: {integrity: sha512-gdrIw6m/D7pmScScL4dz50qLbRR3UGqvO1Vuy2dc7hVIuFAl1OVTnu6WFyEJ5GbfyLZFaCMWzRw6t4krvzvUTg==} + engines: {node: '>=7.10.1'} + peerDependencies: + mongoose: '>= 5' + redis: '>= 4.0.0' + sequelize: '>=5.8.7' + peerDependenciesMeta: + mongoose: + optional: true + redis: + optional: true + sequelize: + optional: true + + koa@2.16.1: + resolution: {integrity: sha512-umfX9d3iuSxTQP4pnzLOz0HKnPg0FaUUIKcye2lOiz3KPu1Y3M3xlz76dISdFPQs37P9eJz1wUpcTS6KDPn9fA==} + engines: {node: ^4.8.4 || ^6.10.1 || ^7.10.1 || >= 8.1.4} + + kuler@2.0.0: + resolution: {integrity: sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A==} + + leac@0.6.0: + resolution: {integrity: sha512-y+SqErxb8h7nE/fiEX07jsbuhrpO9lL8eca7/Y1nuWV2moNlXhyd59iDGcRf6moVyDMbmTNzL40SUyrFU/yDpg==} + + libbase64@0.1.0: + resolution: {integrity: sha512-B91jifmFw1DKEqEWstSpg1PbtUbBzR4yQAPT86kCQXBtud1AJVA+Z6RSklSrqmKe4q2eiEufgnhqJKPgozzfIQ==} + + libmime@2.1.0: + resolution: {integrity: sha512-4be2R6/jOasyPTw0BkpIZBVk2cElqjdIdS0PRPhbOCV4wWuL/ZcYYpN1BCTVB+6eIQ0uuAwp5hQTHFrM5Joa8w==} + + libmime@2.1.3: + resolution: {integrity: sha512-ABr2f4O+K99sypmkF/yPz2aXxUFHEZzv+iUkxItCeKZWHHXdQPpDXd6rV1kBBwL4PserzLU09EIzJ2lxC9hPfQ==} + + libqp@1.1.0: + resolution: {integrity: sha512-4Rgfa0hZpG++t1Vi2IiqXG9Ad1ig4QTmtuZF946QJP4bPqOYC78ixUXgz5TW/wE7lNaNKlplSYTxQ+fR2KZ0EA==} + + lie@3.1.1: + resolution: {integrity: sha512-RiNhHysUjhrDQntfYSfY4MU24coXXdEOgw9WGcKHNeEwffDYbF//u87M1EWaMGzuFoSbqW0C9C6lEEhDOAswfw==} + + liftoff@4.0.0: + resolution: {integrity: sha512-rMGwYF8q7g2XhG2ulBmmJgWv25qBsqRbDn5gH0+wnuyeFt7QBJlHJmtg5qEdn4pN6WVAUMgXnIxytMFRX9c1aA==} + engines: {node: '>=10.13.0'} + + limiter@1.1.5: + resolution: {integrity: sha512-FWWMIEOxz3GwUI4Ts/IvgVy6LPvoMPgjMdQ185nN6psJyBJ4yOpzqm695/h5umdLJg2vW3GR5iG11MAkR2AzJA==} + + lines-and-columns@1.2.4: + resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + + linkify-it@4.0.1: + resolution: {integrity: sha512-C7bfi1UZmoj8+PQx22XyeXCuBlokoyWQL5pWSP+EI6nzRylyThouddufc2c1NDIcP9k5agmN9fLpA7VNJfIiqw==} + + load-yaml-file@0.2.0: + resolution: {integrity: sha512-OfCBkGEw4nN6JLtgRidPX6QxjBQGQf72q3si2uvqyFEMbycSFFHwAZeXx6cJgFM9wmLrf9zBwCP3Ivqa+LLZPw==} + engines: {node: '>=6'} + + loader-runner@4.3.0: + resolution: {integrity: sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==} + engines: {node: '>=6.11.5'} + + loader-utils@2.0.4: + resolution: {integrity: sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==} + engines: {node: '>=8.9.0'} + + localforage@1.10.0: + resolution: {integrity: sha512-14/H1aX7hzBBmmh7sGPd+AOMkkIrHM3Z1PAyGgZigA1H1p5O5ANnMyWzvpAETtG68/dC4pC0ncy3+PPGzXZHPg==} + + locate-path@3.0.0: + resolution: {integrity: sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==} + engines: {node: '>=6'} + + 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'} + + lodash-es@4.17.21: + resolution: {integrity: sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==} + + lodash.clonedeep@4.5.0: + resolution: {integrity: sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==} + + lodash.deburr@4.1.0: + resolution: {integrity: sha512-m/M1U1f3ddMCs6Hq2tAsYThTBDaAKFDX3dwDo97GEYzamXi9SqUpjWi/Rrj/gf3X2n8ktwgZrlP1z6E3v/IExQ==} + + lodash.get@4.4.2: + resolution: {integrity: sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==} + deprecated: This package is deprecated. Use the optional chaining (?.) operator instead. + + lodash.includes@4.3.0: + resolution: {integrity: sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==} + + lodash.isboolean@3.0.3: + resolution: {integrity: sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==} + + lodash.isinteger@4.0.4: + resolution: {integrity: sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==} + + lodash.isnumber@3.0.3: + resolution: {integrity: sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==} + + lodash.isplainobject@4.0.6: + resolution: {integrity: sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==} + + lodash.isstring@4.0.1: + resolution: {integrity: sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==} + + lodash.once@4.1.1: + resolution: {integrity: sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==} + + lodash@4.17.21: + resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} + + log-symbols@4.1.0: + resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} + engines: {node: '>=10'} + + log-symbols@6.0.0: + resolution: {integrity: sha512-i24m8rpwhmPIS4zscNzK6MSEhk0DUWa/8iYQWxhffV8jkI4Phvs3F+quL5xvS0gdQR0FyTCMMH33Y78dDTzzIw==} + engines: {node: '>=18'} + + logform@2.7.0: + resolution: {integrity: sha512-TFYA4jnP7PVbmlBIfhlSe+WKxs9dklXMTEGcBCIvLhE/Tn3H6Gk1norupVW7m5Cnd4bLcr08AytbyV/xj7f/kQ==} + engines: {node: '>= 12.0.0'} + + loglevel@1.9.2: + resolution: {integrity: sha512-HgMmCqIJSAKqo68l0rS2AanEWfkxaZ5wNiEFb5ggm08lDs9Xl2KxBlX3PTcaD2chBM1gXAYf491/M2Rv8Jwayg==} + engines: {node: '>= 0.6.0'} + + long-timeout@0.1.1: + resolution: {integrity: sha512-BFRuQUqc7x2NWxfJBCyUrN8iYUYznzL9JROmRz1gZ6KlOIgmoD+njPVbb+VNn2nGMKggMsK79iUNErillsrx7w==} + + loose-envify@1.4.0: + resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} + hasBin: true + + lower-case@2.0.2: + resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==} + + lowercase-keys@2.0.0: + resolution: {integrity: sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==} + engines: {node: '>=8'} + + lru-cache@10.4.3: + resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} + + lru-cache@6.0.0: + resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} + engines: {node: '>=10'} + + lru-memoizer@2.3.0: + resolution: {integrity: sha512-GXn7gyHAMhO13WSKrIiNfztwxodVsP8IoZ3XfrJV4yH2x0/OeTO/FIaAHTY5YekdGgW94njfuKmyyt1E0mR6Ug==} + + lunr@2.3.9: + resolution: {integrity: sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==} + + luxon@3.7.1: + resolution: {integrity: sha512-RkRWjA926cTvz5rAb1BqyWkKbbjzCGchDUIKMCUvNi17j6f6j8uHGDV82Aqcqtzd+icoYpELmG3ksgGiFNNcNg==} + engines: {node: '>=12'} + + lz-string@1.5.0: + resolution: {integrity: sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==} + hasBin: true + + mailcomposer@3.12.0: + resolution: {integrity: sha512-zBeDoKUTNI8IAsazoMQFt3eVSVRtDtgrvBjBVdBjxDEX+5KLlKtEFCrBXnxPhs8aTYufUS1SmbFnGpjHS53deg==} + deprecated: This project is unmaintained + + make-dir@3.1.0: + resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} + engines: {node: '>=8'} + + make-iterator@1.0.1: + resolution: {integrity: sha512-pxiuXh0iVEq7VM7KMIhs5gxsfxCux2URptUQaXo4iZZJxBAzTPOLE2BumO5dbfVYq/hBJFBR/a1mFDmOx5AGmw==} + engines: {node: '>=0.10.0'} + + map-cache@0.2.2: + resolution: {integrity: sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==} + engines: {node: '>=0.10.0'} + + markdown-it-abbr@1.0.4: + resolution: {integrity: sha512-ZeA4Z4SaBbYysZap5iZcxKmlPL6bYA8grqhzJIHB1ikn7njnzaP8uwbtuXc4YXD5LicI4/2Xmc0VwmSiFV04gg==} + + markdown-it-container@3.0.0: + resolution: {integrity: sha512-y6oKTq4BB9OQuY/KLfk/O3ysFhB3IMYoIWhGJEidXt1NQFocFK2sA2t0NYZAMyMShAGL6x5OPIbrmXPIqaN9rw==} + + markdown-it-deflist@2.1.0: + resolution: {integrity: sha512-3OuqoRUlSxJiuQYu0cWTLHNhhq2xtoSFqsZK8plANg91+RJQU1ziQ6lA2LzmFAEes18uPBsHZpcX6We5l76Nzg==} + + markdown-it-emoji@2.0.2: + resolution: {integrity: sha512-zLftSaNrKuYl0kR5zm4gxXjHaOI3FAOEaloKmRA5hijmJZvSjmxcokOLlzycb/HXlUFWzXqpIEoyEMCE4i9MvQ==} + + markdown-it-footnote@3.0.3: + resolution: {integrity: sha512-YZMSuCGVZAjzKMn+xqIco9d1cLGxbELHZ9do/TSYVzraooV8ypsppKNmUJ0fVH5ljkCInQAtFpm8Rb3eXSrt5w==} + + markdown-it-ins@3.0.1: + resolution: {integrity: sha512-32SSfZqSzqyAmmQ4SHvhxbFqSzPDqsZgMHDwxqPzp+v+t8RsmqsBZRG+RfRQskJko9PfKC2/oxyOs4Yg/CfiRw==} + + markdown-it-mark@3.0.1: + resolution: {integrity: sha512-HyxjAu6BRsdt6Xcv6TKVQnkz/E70TdGXEFHRYBGLncRE9lBFwDNLVtFojKxjJWgJ+5XxUwLaHXy+2sGBbDn+4A==} + + markdown-it-sub@1.0.0: + resolution: {integrity: sha512-z2Rm/LzEE1wzwTSDrI+FlPEveAAbgdAdPhdWarq/ZGJrGW/uCQbKAnhoCsE4hAbc3SEym26+W2z/VQB0cQiA9Q==} + + markdown-it-sup@1.0.0: + resolution: {integrity: sha512-E32m0nV9iyhRR7CrhnzL5msqic7rL1juWre6TQNxsnApg7Uf+F97JOKxUijg5YwXz86lZ0mqfOnutoryyNdntQ==} + + markdown-it@13.0.2: + resolution: {integrity: sha512-FtwnEuuK+2yVU7goGn/MJ0WBZMM9ZPgU9spqlFs7/A/pDIUNSOQZhUgOqYCficIuR2QaFnrt8LHqBWsbTAoI5w==} + hasBin: true + + marked@4.3.0: + resolution: {integrity: sha512-PRsaiG84bK+AMvxziE/lCFss8juXjNaWzVbN5tXAm4XjeaS9NAHhop+PjQxz2A9h8Q4M/xGmzP8vqNwy6JeK0A==} + engines: {node: '>= 12'} + hasBin: true + + match-sorter@6.3.4: + resolution: {integrity: sha512-jfZW7cWS5y/1xswZo8VBOdudUiSd9nifYRWphc9M5D/ee4w4AoXLgBEdRbgVaxbMuagBPeUC5y2Hi8DO6o9aDg==} + + matcher@3.0.0: + resolution: {integrity: sha512-OkeDaAZ/bQCxeFAozM55PKcKU0yJMPGifLwV4Qgjitu+5MoAfSQN4lsLJeXZ1b8w0x+/Emda6MZgXS1jvsapng==} + engines: {node: '>=10'} + + math-intrinsics@1.1.0: + resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} + engines: {node: '>= 0.4'} + + mdurl@1.0.1: + resolution: {integrity: sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==} + + media-chrome@4.2.3: + resolution: {integrity: sha512-gzwFy2b+RLsEtnPzUzqzf2L5XkaTLQr8POOyLOcoebWSAWg31cPy2vfXNiUnd93sc5IxwJ8OAwkKxnaJNZ8Gjg==} + + media-tracks@0.3.3: + resolution: {integrity: sha512-9P2FuUHnZZ3iji+2RQk7Zkh5AmZTnOG5fODACnjhCVveX1McY3jmCRHofIEI+yTBqplz7LXy48c7fQ3Uigp88w==} + + media-typer@0.3.0: + resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==} + engines: {node: '>= 0.6'} + + memfs@3.5.3: + resolution: {integrity: sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==} + engines: {node: '>= 4.0.0'} + + memoize-one@5.2.1: + resolution: {integrity: sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q==} + + memoize-one@6.0.0: + resolution: {integrity: sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw==} + + 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'} + + microseconds@0.2.0: + resolution: {integrity: sha512-n7DHHMjR1avBbSpsTBj6fmMGh2AGrifVV4e+WYc3Q9lO+xnSZ3NyhcBND3vzzatt05LFhoKFRxrIyklmLlUtyA==} + + mime-db@1.52.0: + resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} + engines: {node: '>= 0.6'} + + mime-db@1.54.0: + resolution: {integrity: sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==} + engines: {node: '>= 0.6'} + + mime-types@2.1.35: + resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} + engines: {node: '>= 0.6'} + + mimic-fn@2.1.0: + resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} + engines: {node: '>=6'} + + mimic-function@5.0.1: + resolution: {integrity: sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==} + engines: {node: '>=18'} + + mimic-response@1.0.1: + resolution: {integrity: sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==} + engines: {node: '>=4'} + + mimic-response@3.1.0: + resolution: {integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==} + engines: {node: '>=10'} + + mini-css-extract-plugin@2.7.7: + resolution: {integrity: sha512-+0n11YGyRavUR3IlaOzJ0/4Il1avMvJ1VJfhWfCn24ITQXhRr1gghbhhrda6tgtNcpZaWKdSuwKq20Jb7fnlyw==} + engines: {node: '>= 12.13.0'} + peerDependencies: + webpack: ^5.0.0 + + minimalistic-assert@1.0.1: + resolution: {integrity: sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==} + + minimalistic-crypto-utils@1.0.1: + resolution: {integrity: sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==} + + minimatch@3.1.2: + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + + minimatch@9.0.3: + resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==} + engines: {node: '>=16 || 14 >=14.17'} + + 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@3.3.6: + resolution: {integrity: sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==} + engines: {node: '>=8'} + + minipass@5.0.0: + resolution: {integrity: sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==} + engines: {node: '>=8'} + + minipass@7.1.2: + resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} + engines: {node: '>=16 || 14 >=14.17'} + + minizlib@2.1.2: + resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==} + engines: {node: '>= 8'} + + mkdirp@1.0.4: + resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} + engines: {node: '>=10'} + hasBin: true + + mkdirp@3.0.1: + resolution: {integrity: sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==} + engines: {node: '>=10'} + hasBin: true + + mrmime@2.0.1: + resolution: {integrity: sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ==} + engines: {node: '>=10'} + + ms@2.0.0: + resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} + + ms@2.1.2: + resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} + + ms@2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + + multistream@4.1.0: + resolution: {integrity: sha512-J1XDiAmmNpRCBfIWJv+n0ymC4ABcf/Pl+5YvC5B/D2f/2+8PtHvCNxMPKiQcZyi922Hq69J2YOpb1pTywfifyw==} + + mustache@4.2.0: + resolution: {integrity: sha512-71ippSywq5Yb7/tVYyGbkBggbU8H3u5Rz56fH60jGFgr8uHwxs+aSKeqmluIVzM0m0kB7xQjKS6qPfd0b2ZoqQ==} + hasBin: true + + mute-stream@0.0.8: + resolution: {integrity: sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==} + + 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} + + mux-embed@5.11.0: + resolution: {integrity: sha512-uczzXVraqMRmyYmpGh2zthTmBKvvc5D5yaVKQRgGhFOnF7E4nkhqNkdkQc4C0WTPzdqdPl5OtCelNWMF4tg5RQ==} + + mz@2.7.0: + resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} + + nano-time@1.0.0: + resolution: {integrity: sha512-flnngywOoQ0lLQOTRNexn2gGSNuM9bKj9RZAWSzhQ+UJYaAFG9bac4DW9VHjUAzrOaIcajHybCTHe/bkvozQqA==} + + nanoclone@0.2.1: + resolution: {integrity: sha512-wynEP02LmIbLpcYw8uBKpcfF6dmg2vcpKqxeH5UcoKEYdExslsdUA4ugFauuaeYdTB76ez6gJW8XAZ6CgkXYxA==} + + nanoid@3.3.11: + resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + + negotiator@0.6.3: + resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} + engines: {node: '>= 0.6'} + + neo-async@2.6.2: + resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} + + no-case@3.0.4: + resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==} + + node-abort-controller@3.1.1: + resolution: {integrity: sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ==} + + node-machine-id@1.1.12: + resolution: {integrity: sha512-QNABxbrPa3qEIfrE6GOJ7BYIuignnJw7iQ2YPbc3Nla1HzRJjXzZOiikfF8m7eAMfichLt3M4VgLOetqgDmgGQ==} + + node-plop@0.32.0: + resolution: {integrity: sha512-lKFSRSRuDHhwDKMUobdsvaWCbbDRbV3jMUSMiajQSQux1aNUevAZVxUHc2JERI//W8ABPRbi3ebYuSuIzkNIpQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + node-releases@2.0.19: + resolution: {integrity: sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==} + + node-schedule@2.1.1: + resolution: {integrity: sha512-OXdegQq03OmXEjt2hZP33W2YPs/E5BcFQks46+G2gAxs4gHOIVD1u7EqlYLYSKsaIpyKCK9Gbk0ta1/gjRSMRQ==} + engines: {node: '>=6'} + + node-ses@3.0.3: + resolution: {integrity: sha512-4NrcDlJp0fD5UJyi3tI8jJkJD+I2lBsQiSOJ7/gI0VFCWRJfv7WrUzydQ9sqDD7p2I9G0NGWBrRULkE+rNWQAg==} + engines: {node: '>= 10.x'} + deprecated: This package is no longer maintained. + + nodemailer-fetch@1.6.0: + resolution: {integrity: sha512-P7S5CEVGAmDrrpn351aXOLYs1R/7fD5NamfMCHyi6WIkbjS2eeZUB/TkuvpOQr0bvRZicVqo59+8wbhR3yrJbQ==} + + nodemailer-shared@1.1.0: + resolution: {integrity: sha512-68xW5LSyPWv8R0GLm6veAvm7E+XFXkVgvE3FW0FGxNMMZqMkPFeGDVALfR1DPdSfcoO36PnW7q5AAOgFImEZGg==} + + nodemon@3.0.2: + resolution: {integrity: sha512-9qIN2LNTrEzpOPBaWHTm4Asy1LxXLSickZStAQ4IZe7zsoIpD/A7LWxhZV3t4Zu352uBcqVnRsDXSMR2Sc3lTA==} + engines: {node: '>=10'} + hasBin: true + + nodemon@3.1.10: + resolution: {integrity: sha512-WDjw3pJ0/0jMFmyNDp3gvY2YizjLmmOUQo6DEBY+JgdvW/yQ9mEeSw6H5ythl5Ny2ytb7f9C2nIbjSxMNzbJXw==} + engines: {node: '>=10'} + hasBin: true + + noms@0.0.0: + resolution: {integrity: sha512-lNDU9VJaOPxUmXcLb+HQFeUgQQPtMI24Gt6hgfuMHRJgMRHMF/qZ4HJD3GDru4sSw9IQl2jPjAYnQrdIeLbwow==} + + normalize-package-data@2.5.0: + resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} + + normalize-path@3.0.0: + resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} + engines: {node: '>=0.10.0'} + + normalize-url@6.1.0: + resolution: {integrity: sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==} + engines: {node: '>=10'} + + npm-bundled@1.1.2: + resolution: {integrity: sha512-x5DHup0SuyQcmL3s7Rx/YQ8sbw/Hzg0rj48eN0dV7hf5cmQq5PXIeioroH3raV1QC1yh3uTYuMThvEQF3iKgGQ==} + + npm-normalize-package-bin@1.0.1: + resolution: {integrity: sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==} + + npm-packlist@2.2.2: + resolution: {integrity: sha512-Jt01acDvJRhJGthnUJVF/w6gumWOZxO7IkpY/lsX9//zqQgnF7OJaxgQXcerd4uQOLu7W5bkb4mChL9mdfm+Zg==} + engines: {node: '>=10'} + hasBin: true + + npm-run-path@4.0.1: + resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} + engines: {node: '>=8'} + + npm-run-path@6.0.0: + resolution: {integrity: sha512-9qny7Z9DsQU8Ou39ERsPU4OZQlSTP47ShQzuKZ6PRXpYLtIFgl/DEBYEXKlvcEa+9tHVcK8CF81Y2V72qaZhWA==} + engines: {node: '>=18'} + + nth-check@2.1.1: + resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} + + oauth-sign@0.9.0: + resolution: {integrity: sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==} + + object-assign@4.1.1: + resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} + engines: {node: '>=0.10.0'} + + object-inspect@1.13.4: + resolution: {integrity: sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==} + engines: {node: '>= 0.4'} + + object-keys@1.1.1: + resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} + engines: {node: '>= 0.4'} + + object.defaults@1.1.0: + resolution: {integrity: sha512-c/K0mw/F11k4dEUBMW8naXUuBuhxRCfG7W+yFy8EcijU/rSmazOUd1XAEEe6bC0OuXY4HUKjTJv7xbxIMqdxrA==} + engines: {node: '>=0.10.0'} + + object.map@1.0.1: + resolution: {integrity: sha512-3+mAJu2PLfnSVGHwIWubpOFLscJANBKuB/6A4CxBstc4aqwQY0FWcsppuy4jU5GSB95yES5JHSI+33AWuS4k6w==} + engines: {node: '>=0.10.0'} + + object.pick@1.3.0: + resolution: {integrity: sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==} + engines: {node: '>=0.10.0'} + + oblivious-set@1.0.0: + resolution: {integrity: sha512-z+pI07qxo4c2CulUHCDf9lcqDlMSo72N/4rLUpRXf6fu+q8vjt8y0xS+Tlf8NTJDdTXHbdeO1n3MlbctwEoXZw==} + + 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==} + + one-time@1.0.0: + resolution: {integrity: sha512-5DXOiRKwuSEcQ/l0kGCF6Q3jcADFv5tSmRaJck/OqkVFcOzutB134KRSfF0xDrL39MNnqxbHBbUUcjZIhTgb2g==} + + onetime@5.1.2: + resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} + engines: {node: '>=6'} + + onetime@7.0.0: + resolution: {integrity: sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==} + engines: {node: '>=18'} + + only@0.0.2: + resolution: {integrity: sha512-Fvw+Jemq5fjjyWz6CpKx6w9s7xxqo3+JCyM0WXWeCSOboZ8ABkyvP8ID4CZuChA/wxSx+XSJmdOm8rGVyJ1hdQ==} + + open@8.4.0: + resolution: {integrity: sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==} + engines: {node: '>=12'} + + openapi-types@12.1.3: + resolution: {integrity: sha512-N4YtSYJqghVu4iek2ZUvcN/0aqH1kRDuNqzcycDxhOUpg7GdvLa2F3DgS6yBNhInhv2r/6I0Flkn7CqL8+nIcw==} + + opener@1.5.2: + resolution: {integrity: sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==} + hasBin: true + + ora@5.4.1: + resolution: {integrity: sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==} + engines: {node: '>=10'} + + ora@8.2.0: + resolution: {integrity: sha512-weP+BZ8MVNnlCm8c0Qdc1WSWq4Qn7I+9CJGm7Qali6g44e/PUzbjNqJX5NJ9ljlNMosfJvg1fKEGILklK9cwnw==} + engines: {node: '>=18'} + + os-paths@7.4.0: + resolution: {integrity: sha512-Ux1J4NUqC6tZayBqLN1kUlDAEvLiQlli/53sSddU4IN+h+3xxnv2HmRSMpVSvr1hvJzotfMs3ERvETGK+f4OwA==} + engines: {node: '>= 4.0'} + + os-tmpdir@1.0.2: + resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} + engines: {node: '>=0.10.0'} + + outdent@0.8.0: + resolution: {integrity: sha512-KiOAIsdpUTcAXuykya5fnVVT+/5uS0Q1mrkRHcF89tpieSmY33O/tmc54CqwA+bfhbtEfZUNLHaPUiB9X3jt1A==} + + p-cancelable@2.1.1: + resolution: {integrity: sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==} + engines: {node: '>=8'} + + 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-locate@3.0.0: + resolution: {integrity: sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==} + engines: {node: '>=6'} + + 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-map@4.0.0: + resolution: {integrity: sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==} + engines: {node: '>=10'} + + p-map@5.5.0: + resolution: {integrity: sha512-VFqfGDHlx87K66yZrNdI4YGtD70IRyd+zSvgks6mzHPRNkoKy+9EKP4SFC77/vTTQYmRmti7dvqC+m5jBrBAcg==} + engines: {node: '>=12'} + + 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==} + + package-json@7.0.0: + resolution: {integrity: sha512-CHJqc94AA8YfSLHGQT3DbvSIuE12NLFekpM4n7LRrAd3dOJtA911+4xe9q6nC3/jcKraq7nNS9VxgtT0KC+diA==} + engines: {node: '>=12'} + + packet-reader@1.0.0: + resolution: {integrity: sha512-HAKu/fG3HpHFO0AA8WE8q2g+gBJaZ9MG7fcKk+IJPLTGAD6Psw4443l+9DGRbOIh3/aXr7Phy0TjilYivJo5XQ==} + + param-case@3.0.4: + resolution: {integrity: sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==} + + parent-module@1.0.1: + resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} + engines: {node: '>=6'} + + parse-filepath@1.0.2: + resolution: {integrity: sha512-FwdRXKCohSVeXqwtYonZTXtbGJKrn+HNyWDYVcp5yuJlesTwNH4rsmRZ+GrKAPJ5bLpRxESMeS+Rl0VCHRvB2Q==} + engines: {node: '>=0.8'} + + parse-json@5.2.0: + resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} + engines: {node: '>=8'} + + parse-ms@4.0.0: + resolution: {integrity: sha512-TXfryirbmq34y8QBwgqCVLi+8oA3oWx2eAnSn62ITyEhEYaWRlVZ2DvMM9eZbMs/RfxPu/PK/aBLyGj4IrqMHw==} + engines: {node: '>=18'} + + parse-passwd@1.0.0: + resolution: {integrity: sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q==} + engines: {node: '>=0.10.0'} + + parse-path@7.1.0: + resolution: {integrity: sha512-EuCycjZtfPcjWk7KTksnJ5xPMvWGA/6i4zrLYhRG0hGvC3GPU/jGUj3Cy+ZR0v30duV3e23R95T1lE2+lsndSw==} + + parse-srcset@1.0.2: + resolution: {integrity: sha512-/2qh0lav6CmI15FzA3i/2Bzk2zCgQhGMkvhOhKNcBVQ1ldgpbfiNTVslmooUmWJcADi1f1kIeynbDRVzNlfR6Q==} + + parse-url@8.1.0: + resolution: {integrity: sha512-xDvOoLU5XRrcOZvnI6b8zA6n9O9ejNk/GExuz1yBuWUGn9KA97GI6HTs6u02wKara1CeVmZhH+0TZFdWScR89w==} + + parseley@0.12.1: + resolution: {integrity: sha512-e6qHKe3a9HWr0oMRVDTRhKce+bRO8VGQR3NyVwcjwrbhMmFCX9KszEV35+rn4AdilFAq9VPxP/Fe1wC9Qjd2lw==} + + parseurl@1.3.3: + resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} + engines: {node: '>= 0.8'} + + pascal-case@3.1.2: + resolution: {integrity: sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==} + + passport-local@1.0.0: + resolution: {integrity: sha512-9wCE6qKznvf9mQYYbgJ3sVOHmCWoUNMVFoZzNoznmISbhnNNPhN9xfY3sLmScHMetEJeoY7CXwfhCe7argfQow==} + engines: {node: '>= 0.4.0'} + + passport-strategy@1.0.0: + resolution: {integrity: sha512-CB97UUvDKJde2V0KDWWB3lyf6PC3FaZP7YxZ2G8OAtn9p4HI9j9JLP9qjOGZFvyl8uwNT8qM+hGnz/n16NI7oA==} + engines: {node: '>= 0.4.0'} + + passport@0.6.0: + resolution: {integrity: sha512-0fe+p3ZnrWRW74fe8+SvCyf4a3Pb2/h7gFkQ8yTJpAO50gDzlfjZUZTO1k5Eg9kUct22OxHLqDZoKUWRHOh9ug==} + engines: {node: '>= 0.4.0'} + + path-case@3.0.4: + resolution: {integrity: sha512-qO4qCFjXqVTrcbPt/hQfhTQ+VhFsqNKOPtytgNKkKxSoEp3XPUQ8ObFuePylOIok5gjn69ry8XiULxCwot3Wfg==} + + path-exists@3.0.0: + resolution: {integrity: sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==} + engines: {node: '>=4'} + + path-exists@4.0.0: + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} + + 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-root-regex@0.1.2: + resolution: {integrity: sha512-4GlJ6rZDhQZFE0DPVKh0e9jmZ5egZfxTkp7bcRDuPlJXbAwhxcl2dINPUAsjLdejqaLsCeg8axcLjIbvBjN4pQ==} + engines: {node: '>=0.10.0'} + + path-root@0.1.1: + resolution: {integrity: sha512-QLcPegTHF11axjfojBIoDygmS2E3Lf+8+jI6wOVmNVenrKSo3mFdSGiIgdSHenczw3wPtlVMQaFVwGmM7BJdtg==} + engines: {node: '>=0.10.0'} + + path-scurry@1.11.1: + resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} + engines: {node: '>=16 || 14 >=14.18'} + + 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'} + + pause@0.0.1: + resolution: {integrity: sha512-KG8UEiEVkR3wGEb4m5yZkVCzigAD+cVEJck2CzYZO37ZGJfctvVptVO192MwrtPhzONn6go8ylnOdMhKqi4nfg==} + + peberminta@0.9.0: + resolution: {integrity: sha512-XIxfHpEuSJbITd1H3EeQwpcZbTLHc+VVr8ANI9t5sit565tsI4/xK3KWTUFE2e6QiangUkh3B0jihzmGnNrRsQ==} + + performance-now@2.1.0: + resolution: {integrity: sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==} + + pg-connection-string@2.6.1: + resolution: {integrity: sha512-w6ZzNu6oMmIzEAYVw+RLK0+nqHPt8K3ZnknKi+g48Ak2pr3dtljJW3o+D/n2zzCG07Zoe9VOX3aiKpj+BN0pjg==} + + pg-connection-string@2.9.1: + resolution: {integrity: sha512-nkc6NpDcvPVpZXxrreI/FOtX3XemeLl8E0qFr6F2Lrm/I8WOnaWNhIPK2Z7OHpw7gh5XJThi6j6ppgNoaT1w4w==} + + pg-int8@1.0.1: + resolution: {integrity: sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==} + engines: {node: '>=4.0.0'} + + pg-pool@3.10.1: + resolution: {integrity: sha512-Tu8jMlcX+9d8+QVzKIvM/uJtp07PKr82IUOYEphaWcoBhIYkoHpLXN3qO59nAI11ripznDsEzEv8nUxBVWajGg==} + peerDependencies: + pg: '>=8.0' + + pg-protocol@1.10.3: + resolution: {integrity: sha512-6DIBgBQaTKDJyxnXaLiLR8wBpQQcGWuAESkRBX/t6OwA8YsqP+iVSiond2EDy6Y/dsGk8rh/jtax3js5NeV7JQ==} + + pg-types@2.2.0: + resolution: {integrity: sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==} + engines: {node: '>=4'} + + pg@8.8.0: + resolution: {integrity: sha512-UXYN0ziKj+AeNNP7VDMwrehpACThH7LUl/p8TDFpEUuSejCUIwGSfxpHsPvtM6/WXFy6SU4E5RG4IJV/TZAGjw==} + engines: {node: '>= 8.0.0'} + peerDependencies: + pg-native: '>=3.0.1' + peerDependenciesMeta: + pg-native: + optional: true + + pgpass@1.0.5: + resolution: {integrity: sha512-FdW9r/jQZhSeohs1Z3sI1yxFQNFvMcnmfuj4WBMUTxOrAyLMaTcE1aAMBiTlbMNaXvBCQuVi0R7hd8udDSP7ug==} + + picocolors@1.1.1: + resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} + + picomatch@2.3.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + engines: {node: '>=8.6'} + + pify@4.0.1: + resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} + engines: {node: '>=6'} + + pkg-dir@4.2.0: + resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} + engines: {node: '>=8'} + + pkg-up@3.1.0: + resolution: {integrity: sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==} + engines: {node: '>=8'} + + player.style@0.0.8: + resolution: {integrity: sha512-ScmFzio3634eEn+ejpkEw13F5xYvnPghtaZz/Kg7QQP78ECrxdjRVqwVPZhUwbYxmg5OIScByOgHfrHpzTtR1Q==} + + plop@4.0.1: + resolution: {integrity: sha512-5n8QU93kvL/ObOzBcPAB1siVFtAH1TZM6TntJ3JK5kXT0jIgnQV+j+uaOWWFJlg1cNkzLYm8klgASF65K36q9w==} + engines: {node: '>=18'} + hasBin: true + + pluralize@8.0.0: + resolution: {integrity: sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==} + engines: {node: '>=4'} + + pony-cause@2.1.11: + resolution: {integrity: sha512-M7LhCsdNbNgiLYiP4WjsfLUuFmCfnjdF6jKe2R9NKl4WFN+HZPGHJZ9lnLP7f9ZnKe3U9nuWD0szirmj+migUg==} + engines: {node: '>=12.0.0'} + + postcss-modules-extract-imports@3.1.0: + resolution: {integrity: sha512-k3kNe0aNFQDAZGbin48pL2VNidTF0w4/eASDsxlyspobzU3wZQLOGj7L9gfRe0Jo9/4uud09DsjFNH7winGv8Q==} + engines: {node: ^10 || ^12 || >= 14} + peerDependencies: + postcss: ^8.1.0 + + postcss-modules-local-by-default@4.2.0: + resolution: {integrity: sha512-5kcJm/zk+GJDSfw+V/42fJ5fhjL5YbFDl8nVdXkJPLLW+Vf9mTD5Xe0wqIaDnLuL2U6cDNpTr+UQ+v2HWIBhzw==} + engines: {node: ^10 || ^12 || >= 14} + peerDependencies: + postcss: ^8.1.0 + + postcss-modules-scope@3.2.1: + resolution: {integrity: sha512-m9jZstCVaqGjTAuny8MdgE88scJnCiQSlSrOWcTQgM2t32UBe+MUmFSO5t7VMSfAf/FJKImAxBav8ooCHJXCJA==} + engines: {node: ^10 || ^12 || >= 14} + peerDependencies: + postcss: ^8.1.0 + + postcss-modules-values@4.0.0: + resolution: {integrity: sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==} + engines: {node: ^10 || ^12 || >= 14} + peerDependencies: + postcss: ^8.1.0 + + postcss-selector-parser@7.1.0: + resolution: {integrity: sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==} + engines: {node: '>=4'} + + postcss-value-parser@4.2.0: + resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} + + postcss@8.4.49: + resolution: {integrity: sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==} + engines: {node: ^10 || ^12 || >=14} + + postcss@8.5.6: + resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==} + engines: {node: ^10 || ^12 || >=14} + + postgres-array@2.0.0: + resolution: {integrity: sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==} + engines: {node: '>=4'} + + postgres-bytea@1.0.0: + resolution: {integrity: sha512-xy3pmLuQqRBZBXDULy7KbaitYqLcmxigw14Q5sj8QBVLqEwXfeybIKVWiqAXTlcvdvb0+xkOtDbfQMOf4lST1w==} + engines: {node: '>=0.10.0'} + + postgres-date@1.0.7: + resolution: {integrity: sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==} + engines: {node: '>=0.10.0'} + + postgres-interval@1.2.0: + resolution: {integrity: sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==} + engines: {node: '>=0.10.0'} + + preferred-pm@3.1.2: + resolution: {integrity: sha512-nk7dKrcW8hfCZ4H6klWcdRknBOXWzNQByJ0oJyX97BOupsYD+FzLS4hflgEu/uPUEHZCuRfMxzCBsuWd7OzT8Q==} + engines: {node: '>=10'} + + prettier-plugin-packagejson@2.5.2: + resolution: {integrity: sha512-w+TmoLv2pIa+siplW1cCj2ujEXQQS6z7wmWLOiLQK/2QVl7Wy6xh/ZUpqQw8tbKMXDodmSW4GONxlA33xpdNOg==} + peerDependencies: + prettier: '>= 1.16.0' + peerDependenciesMeta: + prettier: + optional: true + + prettier@2.8.8: + resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==} + engines: {node: '>=10.13.0'} + hasBin: true + + prettier@3.3.3: + resolution: {integrity: sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==} + engines: {node: '>=14'} + hasBin: true + + pretty-error@4.0.0: + resolution: {integrity: sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw==} + + 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} + + pretty-ms@9.2.0: + resolution: {integrity: sha512-4yf0QO/sllf/1zbZWYnvWw3NxCQwLXKzIj0G849LSufP15BXKM0rbD2Z3wVnkMfjdn/CB0Dpp444gYAACdsplg==} + engines: {node: '>=18'} + + prismjs@1.30.0: + resolution: {integrity: sha512-DEvV2ZF2r2/63V+tK8hQvrR2ZGn10srHbXviTlcv7Kpzw8jWiNTqbVgjO3IY8RxrrOUF8VPMQQFysYYYv0YZxw==} + engines: {node: '>=6'} + + process-nextick-args@2.0.1: + resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} + + prompts@2.4.2: + resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} + engines: {node: '>= 6'} + + prop-types@15.8.1: + resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} + + property-expr@2.0.6: + resolution: {integrity: sha512-SVtmxhRE/CGkn3eZY1T6pC8Nln6Fr/lu1mKSgRud0eC73whjGfoAogbn78LkD8aFL0zz3bAFerKSnOl7NlErBA==} + + proto-list@1.2.4: + resolution: {integrity: sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==} + + protocols@2.0.2: + resolution: {integrity: sha512-hHVTzba3wboROl0/aWRRG9dMytgH6ow//STBZh43l/wQgmMhYhOFi0EHWAPtoCz9IAUymsyP0TSBHkhgMEGNnQ==} + + proxy-from-env@1.1.0: + resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} + + psl@1.15.0: + resolution: {integrity: sha512-JZd3gMVBAVQkSs6HdNZo9Sdo0LNcQeMNP3CozBJb3JYC/QUYZTnKxP+f8oWRX4rHP5EurWxqAHTSwUCjlNKa1w==} + + pstree.remy@1.1.8: + resolution: {integrity: sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==} + + pump@3.0.3: + resolution: {integrity: sha512-todwxLMY7/heScKmntwQG8CXVkWUOdYxIvY2s0VWAAMh/nd8SoYiRaKjlr7+iCs984f2P8zvrfWcDDYVb73NfA==} + + punycode@2.3.1: + resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} + engines: {node: '>=6'} + + purest@4.0.2: + resolution: {integrity: sha512-Uq6kdia8zGVHOb/0zAOb7FvKFMKeyeTZTLEwpO0JR3cIFEkpH6asv3ls9M9URDjHiYIdgAPmht5ecSbvPacfyg==} + engines: {node: '>=12.0.0'} + + qs@6.11.1: + resolution: {integrity: sha512-0wsrzgTz/kAVIeuxSjnpGC56rzYtr6JT/2BwEvMaPhFIoYa1aGO8LbzuU1R0uUYQkLpWBTOj0l/CLAJB64J6nQ==} + engines: {node: '>=0.6'} + + qs@6.14.0: + resolution: {integrity: sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==} + engines: {node: '>=0.6'} + + qs@6.5.3: + resolution: {integrity: sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==} + engines: {node: '>=0.6'} + + queue-microtask@1.2.3: + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + + quick-lru@5.1.1: + resolution: {integrity: sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==} + engines: {node: '>=10'} + + randombytes@2.1.0: + resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} + + 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'} + + rc@1.2.8: + resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==} + hasBin: true + + react-diff-viewer-continued@3.2.6: + resolution: {integrity: sha512-GrzyqQnjIMoej+jMjWvtVSsQqhXgzEGqpXlJ2dAGfOk7Q26qcm8Gu6xtI430PBUyZsERe8BJSQf+7VZZo8IBNQ==} + engines: {node: '>= 8'} + peerDependencies: + react: ^15.3.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 + react-dom: ^15.3.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 + + react-dnd-html5-backend@16.0.1: + resolution: {integrity: sha512-Wu3dw5aDJmOGw8WjH1I1/yTH+vlXEL4vmjk5p+MHxP8HuHJS1lAGeIdG/hze1AvNeXWo/JgULV87LyQOr+r5jw==} + + react-dnd@16.0.1: + resolution: {integrity: sha512-QeoM/i73HHu2XF9aKksIUuamHPDvRglEwdHL4jsp784BgUuWcg6mzfxT0QDdQz8Wj0qyRKx2eMg8iZtWvU4E2Q==} + peerDependencies: + '@types/hoist-non-react-statics': '>= 3.3.1' + '@types/node': '>= 12' + '@types/react': '>= 16' + react: '>= 16.14' + peerDependenciesMeta: + '@types/hoist-non-react-statics': + optional: true + '@types/node': + optional: true + '@types/react': + optional: true + + react-dom@18.3.1: + resolution: {integrity: sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==} + peerDependencies: + react: ^18.3.1 + + react-email-editor@1.7.11: + resolution: {integrity: sha512-AyoKKtMEPhKdqUxFX1hyJMvEO+E5fzk88uNVGHhK1ymhLpcghYLkz1+pXKLcByjR6LHkfEbrCmoYFG8zyripug==} + engines: {node: '>=10'} + peerDependencies: + react: '>=15' + + react-fast-compare@2.0.4: + resolution: {integrity: sha512-suNP+J1VU1MWFKcyt7RtjiSWUjvidmQSlqu+eHslq+342xCbGTYmC0mEhPCOHxlW0CywylOC1u2DFAT+bv4dBw==} + + react-fast-compare@3.2.2: + resolution: {integrity: sha512-nsO+KSNgo1SbJqJEYRE9ERzo7YtYbou/OqjSQKxV7jcKox7+usiUVZOAC+XnDOABXggQTno0Y1CpVnuWEc1boQ==} + + react-helmet@6.1.0: + resolution: {integrity: sha512-4uMzEY9nlDlgxr61NL3XbKRy1hEkXmKNXhjbAIOVw5vcFrsdYbH2FEwcNyWvWinl103nXgzYNlns9ca+8kFiWw==} + peerDependencies: + react: '>=16.3.0' + + react-icons@5.5.0: + resolution: {integrity: sha512-MEFcXdkP3dLo8uumGI5xN3lDFNsRtrjbOEKDLD7yv76v4wpnEq2Lt2qeHaQOr34I/wPN3s3+N08WkQ+CW37Xiw==} + peerDependencies: + react: '*' + + react-intl@6.6.2: + resolution: {integrity: sha512-IpW2IkLtGENSFlX3vfH11rjuCIsW0VyjT0Q1pPKMZPtT2z1FxLt4weFT5Ezti2TScT1xiyb3aQBFth9EB7jzAg==} + peerDependencies: + react: ^16.6.0 || 17 || 18 + typescript: ^4.7 || 5 + peerDependenciesMeta: + typescript: + optional: true + + react-intl@6.8.9: + resolution: {integrity: sha512-TUfj5E7lyUDvz/GtovC9OMh441kBr08rtIbgh3p0R8iF3hVY+V2W9Am7rb8BpJ/29BH1utJOqOOhmvEVh3GfZg==} + peerDependencies: + react: ^16.6.0 || 17 || 18 + typescript: ^4.7 || 5 + peerDependenciesMeta: + typescript: + optional: true + + 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.3.1: + resolution: {integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==} + + react-query@3.39.3: + resolution: {integrity: sha512-nLfLz7GiohKTJDuT4us4X3h/8unOh+00MLb2yJoGTPjxKs2bc1iDhkNx2bd5MKklXnOD3NrVZ+J2UXujA5In4g==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-dom: '*' + react-native: '*' + peerDependenciesMeta: + react-dom: + optional: true + react-native: + optional: true + + react-redux@7.2.9: + resolution: {integrity: sha512-Gx4L3uM182jEEayZfRbI/G11ZpYdNAnBs70lFVMNdHJI76XYtR+7m0MN+eAs7UHBPhWXcnFPaS+9owSCJQHNpQ==} + peerDependencies: + react: ^16.8.3 || ^17 || ^18 + react-dom: '*' + react-native: '*' + peerDependenciesMeta: + react-dom: + optional: true + react-native: + optional: true + + react-redux@8.1.3: + resolution: {integrity: sha512-n0ZrutD7DaX/j9VscF+uTALI3oUPa/pO4Z3soOBIjuRn/FzVu6aehhysxZCLi6y7duMf52WNZGMl7CtuK5EnRw==} + peerDependencies: + '@types/react': ^16.8 || ^17.0 || ^18.0 + '@types/react-dom': ^16.8 || ^17.0 || ^18.0 + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + react-native: '>=0.59' + redux: ^4 || ^5.0.0-beta.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + react-dom: + optional: true + react-native: + optional: true + redux: + optional: true + + react-refresh@0.14.0: + resolution: {integrity: sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ==} + engines: {node: '>=0.10.0'} + + react-remove-scroll-bar@2.3.8: + resolution: {integrity: sha512-9r+yi9+mgU33AKcj6IbT9oRCO78WriSj6t/cF8DWBZJ9aOGPOTEDvdUDz1FwKim7QXWwmHqtdHnRJfhAxEG46Q==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': '*' + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + + react-remove-scroll@2.5.10: + resolution: {integrity: sha512-m3zvBRANPBw3qxVVjEIPEQinkcwlFZ4qyomuWVpNJdv4c6MvHfXV0C3L9Jx5rr3HeBHKNRX+1jreB5QloDIJjA==} + 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-router-dom@6.30.1: + resolution: {integrity: sha512-llKsgOkZdbPU1Eg3zK8lCn+sjD9wMRZZPuzmdWWX5SUs8OFkN5HnFVC0u5KMeMaC9aoancFI/KoLuKPqN+hxHw==} + engines: {node: '>=14.0.0'} + peerDependencies: + react: '>=16.8' + react-dom: '>=16.8' + + react-router@6.30.1: + resolution: {integrity: sha512-X1m21aEmxGXqENEPG3T6u0Th7g0aS4ZmoNynhbs+Cn+q+QGTLt+d5IQ2bHAXKzKcxGJjxACpVbnYQSCRcfxHlQ==} + engines: {node: '>=14.0.0'} + peerDependencies: + react: '>=16.8' + + react-select@5.8.0: + resolution: {integrity: sha512-TfjLDo58XrhP6VG5M/Mi56Us0Yt8X7xD6cDybC7yoRMUNm7BGO7qk8J0TLQOua/prb8vUOtsfnXZwfm30HGsAA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + + react-side-effect@2.1.2: + resolution: {integrity: sha512-PVjOcvVOyIILrYoyGEpDN3vmYNLdy1CajSFNt4TDsVQC5KpTijDvWVoR+/7Rz2xT978D8/ZtFceXxzsPwZEDvw==} + peerDependencies: + react: ^16.3.0 || ^17.0.0 || ^18.0.0 + + react-style-singleton@2.2.3: + resolution: {integrity: sha512-b6jSvxvVnyptAiLjbkWLE/lOnR4lfTtDAl+eUC7RZy+QQWc6wRzIV2CE6xBuMmDxc2qIihtDCZD5NPOFl7fRBQ==} + 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 + + react-textarea-autosize@8.5.9: + resolution: {integrity: sha512-U1DGlIQN5AwgjTyOEnI1oCcMuEr1pv1qOtklB2l4nyMGbHzWrI0eFsYK0zos2YWqAolJyG0IWJaqWmWj5ETh0A==} + engines: {node: '>=10'} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + + react-transition-group@4.4.5: + resolution: {integrity: sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==} + peerDependencies: + react: '>=16.6.0' + react-dom: '>=16.6.0' + + react-window@1.8.10: + resolution: {integrity: sha512-Y0Cx+dnU6NLa5/EvoHukUD0BklJ8qITCtVEPY1C/nL8wwoZ0b5aEw8Ff1dOVHw7fCzMt55XfJDd8S8W8LCaUCg==} + engines: {node: '>8.0.0'} + peerDependencies: + react: ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 + react-dom: ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 + + react@18.3.1: + resolution: {integrity: sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==} + engines: {node: '>=0.10.0'} + + read-pkg-up@7.0.1: + resolution: {integrity: sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==} + engines: {node: '>=8'} + + read-pkg@5.2.0: + resolution: {integrity: sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==} + engines: {node: '>=8'} + + readable-stream@1.0.34: + resolution: {integrity: sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg==} + + readable-stream@2.3.8: + resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} + + readable-stream@3.6.2: + resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} + engines: {node: '>= 6'} + + readdirp@3.6.0: + resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} + engines: {node: '>=8.10.0'} + + readdirp@4.1.2: + resolution: {integrity: sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==} + engines: {node: '>= 14.18.0'} + + rechoir@0.6.2: + resolution: {integrity: sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==} + engines: {node: '>= 0.10'} + + rechoir@0.8.0: + resolution: {integrity: sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==} + engines: {node: '>= 10.13.0'} + + redux-immutable@4.0.0: + resolution: {integrity: sha512-SchSn/DWfGb3oAejd+1hhHx01xUoxY+V7TeK0BKqpkLKiQPVFf7DYzEaKmrEVxsWxielKfSK9/Xq66YyxgR1cg==} + peerDependencies: + immutable: ^3.8.1 || ^4.0.0-rc.1 + + redux-thunk@2.4.2: + resolution: {integrity: sha512-+P3TjtnP0k/FEjcBL5FZpoovtvrTNT/UXd4/sluaSyrURlSlhLSzEdfsTBW7WsKB6yPvgd7q/iZPICFjW4o57Q==} + peerDependencies: + redux: ^4 + + redux@4.2.1: + resolution: {integrity: sha512-LAUYz4lc+Do8/g7aeRa8JkyDErK6ekstQaqWQrNRW//MY1TvCEpMtpTWvlQ+FPbWCx+Xixu/6SHt5N0HR+SB4w==} + + registry-auth-token@4.2.2: + resolution: {integrity: sha512-PC5ZysNb42zpFME6D/XlIgtNGdTl8bBOCw90xQLVMpzuuubJKYDWFAEuUNc+Cn8Z8724tg2SDhDRrkVEsqfDMg==} + engines: {node: '>=6.0.0'} + + registry-auth-token@5.1.0: + resolution: {integrity: sha512-GdekYuwLXLxMuFTwAPg5UKGLW/UXzQrZvH/Zj791BQif5T05T0RsaLfHc9q3ZOKi7n+BoprPD9mJ0O0k4xzUlw==} + engines: {node: '>=14'} + + registry-url@5.1.0: + resolution: {integrity: sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw==} + engines: {node: '>=8'} + + relateurl@0.2.7: + resolution: {integrity: sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==} + engines: {node: '>= 0.10'} + + remeda@2.29.0: + resolution: {integrity: sha512-+Izkt+G9OS0cZLJ7Ca3Yd0OYs+/mASCow8GnsEu3KHm22/bvV4WLzbH3ohDRk2/cWCELb3eSrc36wdAJolV5rw==} + + remove-accents@0.5.0: + resolution: {integrity: sha512-8g3/Otx1eJaVD12e31UbJj1YzdtVvzH85HV7t+9MJYk/u3XmkOUJ5Ys9wQrf9PCPK8+xn4ymzqYCiZl6QWKn+A==} + + renderkid@3.0.0: + resolution: {integrity: sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg==} + + request-compose@2.1.7: + resolution: {integrity: sha512-27amNkWTK4Qq25XEwdmrhb4VLMiQzRSKuDfsy1o1griykcyXk5MxMHmJG+OKTRdO9PgsO7Kkn7GrEkq0UAIIMQ==} + engines: {node: '>=12.0.0'} + + request-ip@3.3.0: + resolution: {integrity: sha512-cA6Xh6e0fDBBBwH77SLJaJPBmD3nWVAcF9/XAcsrIHdjhFzFiB5aNQFytdjCGPezU3ROwrR11IddKAM08vohxA==} + + request-multipart@1.0.0: + resolution: {integrity: sha512-dazx88T19dIKFNc0XdlZV8H46D2RmNFdR4mipcbrFOaN70PSSSMM3urVY+eVbrpraf/fHXccxFhLvG1wkSUtKQ==} + engines: {node: '>=8.0.0'} + + request-oauth@1.0.1: + resolution: {integrity: sha512-85THTg1RgOYtqQw42JON6AqvHLptlj1biw265Tsq4fD4cPdUvhDB2Qh9NTv17yCD322ROuO9aOmpc4GyayGVBA==} + engines: {node: '>=8.0.0'} + + request@2.88.2: + resolution: {integrity: sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==} + engines: {node: '>= 6'} + deprecated: request has been deprecated, see https://github.com/request/request/issues/3142 + + 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'} + + reselect@4.1.8: + resolution: {integrity: sha512-ab9EmR80F/zQTMNeneUr4cv+jSwPJgIlvEmVwLerwrWVbpLlBuls9XHzIeTFy4cegU2NHBp3va0LKOzU5qFEYQ==} + + resolve-alpn@1.2.1: + resolution: {integrity: sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==} + + resolve-cwd@3.0.0: + resolution: {integrity: sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==} + engines: {node: '>=8'} + + resolve-dir@1.0.1: + resolution: {integrity: sha512-R7uiTjECzvOsWSfdM0QKFNBVFcK27aHOUwdvK53BcW8zqnGdYp0Fbj82cy54+2A4P2tFM22J5kRfe1R+lM/1yg==} + engines: {node: '>=0.10.0'} + + 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-path@1.4.0: + resolution: {integrity: sha512-i1xevIst/Qa+nA9olDxLWnLk8YZbi8R/7JPbCMcgyWaFR6bKWaexgJgEB5oc2PKMjYdrHynyz0NY+if+H98t1w==} + engines: {node: '>= 0.8'} + + resolve-pkg-maps@1.0.0: + resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} + + resolve.exports@2.0.2: + resolution: {integrity: sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==} + engines: {node: '>=10'} + + resolve@1.22.10: + resolution: {integrity: sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==} + engines: {node: '>= 0.4'} + hasBin: true + + responselike@2.0.1: + resolution: {integrity: sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==} + + restore-cursor@3.1.0: + resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==} + engines: {node: '>=8'} + + restore-cursor@5.1.0: + resolution: {integrity: sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==} + engines: {node: '>=18'} + + reusify@1.1.0: + resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==} + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + + rimraf@3.0.2: + resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} + deprecated: Rimraf versions prior to v4 are no longer supported + hasBin: true + + rimraf@5.0.5: + resolution: {integrity: sha512-CqDakW+hMe/Bz202FPEymy68P+G50RfMQK+Qo5YUqc9SPipvbGjCGKd0RSKEelbsfQuw3g5NZDSrlZZAJurH1A==} + engines: {node: '>=14'} + hasBin: true + + roarr@2.15.4: + resolution: {integrity: sha512-CHhPh+UNHD2GTXNYhPWLnU8ONHdI+5DI+4EYIAOaiD63rHeYlZvyh8P+in5999TTSFgUYuKUAjzRI4mdh/p+2A==} + engines: {node: '>=8.0'} + + rollup@4.46.2: + resolution: {integrity: sha512-WMmLFI+Boh6xbop+OAGo9cQ3OgX9MIg7xOQjn+pTCwOkk+FNDAeAemXkJ3HzDJrVXleLOFVa1ipuc1AmEx1Dwg==} + engines: {node: '>=18.0.0', npm: '>=8.0.0'} + hasBin: true + + run-async@2.4.1: + resolution: {integrity: sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==} + engines: {node: '>=0.12.0'} + + run-async@3.0.0: + resolution: {integrity: sha512-540WwVDOMxA6dN6We19EcT9sc3hkXPw5mzRNGM3FkdN/vtE9NFvj5lFAPNwUDmJjXidm3v7TC1cTE7t17Ulm1Q==} + engines: {node: '>=0.12.0'} + + run-parallel@1.2.0: + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + + rxjs@7.8.1: + resolution: {integrity: sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==} + + rxjs@7.8.2: + resolution: {integrity: sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==} + + safe-buffer@5.1.2: + resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} + + safe-buffer@5.2.1: + resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + + safe-regex-test@1.1.0: + resolution: {integrity: sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==} + engines: {node: '>= 0.4'} + + safe-stable-stringify@2.5.0: + resolution: {integrity: sha512-b3rppTKm9T+PsVCBEOUR46GWI7fdOs00VKZ1+9c1EWDaDMvjQc6tUwuFyIprgGgTcWoVHSKrU8H31ZHA2e0RHA==} + engines: {node: '>=10'} + + safer-buffer@2.1.2: + resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + + sanitize-html@2.13.0: + resolution: {integrity: sha512-Xff91Z+4Mz5QiNSLdLWwjgBDm5b1RU6xBT0+12rapjiaR7SwfRdjw8f+6Rir2MXKLrDicRFHdb51hGOAxmsUIA==} + + sax@1.4.1: + resolution: {integrity: sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==} + + scheduler@0.23.0: + resolution: {integrity: sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==} + + scheduler@0.23.2: + resolution: {integrity: sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==} + + schema-utils@3.3.0: + resolution: {integrity: sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==} + engines: {node: '>= 10.13.0'} + + schema-utils@4.3.2: + resolution: {integrity: sha512-Gn/JaSk/Mt9gYubxTtSn/QCV4em9mpAPiR1rqy/Ocu19u/G9J5WWdNoUT4SiV6mFC3y6cxyFcFwdzPM3FgxGAQ==} + engines: {node: '>= 10.13.0'} + + scroll-into-view-if-needed@2.2.31: + resolution: {integrity: sha512-dGCXy99wZQivjmjIqihaBQNjryrz5rueJY7eHfTdyWEiR4ttYpsajb14rn9s5d4DY4EcY6+4+U/maARBXJedkA==} + + selderee@0.11.0: + resolution: {integrity: sha512-5TF+l7p4+OsnP8BCCvSyZiSPc4x4//p5uPwK8TCnVPJYRmU2aYKMpOXvw8zM5a5JvuuCGN1jmsMwuU2W02ukfA==} + + semver-compare@1.0.0: + resolution: {integrity: sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow==} + + semver@5.7.2: + resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} + hasBin: true + + semver@6.3.1: + resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} + hasBin: true + + semver@7.5.4: + resolution: {integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==} + engines: {node: '>=10'} + hasBin: true + + semver@7.7.2: + resolution: {integrity: sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==} + engines: {node: '>=10'} + hasBin: true + + sendmail@1.6.1: + resolution: {integrity: sha512-lIhvnjSi5e5jL8wA1GPP6j2QVlx6JOEfmdn0QIfmuJdmXYGmJ375kcOU0NSm/34J+nypm4sa1AXrYE5w3uNIIA==} + engines: {node: '>=6.0.0'} + + sentence-case@3.0.4: + resolution: {integrity: sha512-8LS0JInaQMCRoQ7YUytAo/xUu5W2XnQxV2HI/6uM6U7CITS1RqPElr30V6uIqyMKM9lJGRVFy5/4CuzcixNYSg==} + + serialize-error@7.0.1: + resolution: {integrity: sha512-8I8TjW5KMOKsZQTvoxjuSIa7foAwPWGOts+6o7sgjz41/qMD9VQHEDxi6PBvK2l0MXUmqZyNpUK+T2tQaaElvw==} + engines: {node: '>=10'} + + serialize-javascript@6.0.2: + resolution: {integrity: sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==} + + setprototypeof@1.1.0: + resolution: {integrity: sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==} + + setprototypeof@1.2.0: + resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} + + shallowequal@1.1.0: + resolution: {integrity: sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==} + + sharp@0.33.5: + resolution: {integrity: sha512-haPVm1EkS9pgvHrQ/F3Xy+hgcuMV0Wm9vfIBSiwZ05k+xgb0PkBQpGsAA/oWdDobNaZTH5ppvHtzCFbnSEwHVw==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + + 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'} + + shell-quote@1.8.3: + resolution: {integrity: sha512-ObmnIF4hXNg1BqhnHmgbDETF8dLPCggZWBjkQfhZpbszZnYur5DUljTcCHii5LC3J5E0yeO/1LIMyH+UvHQgyw==} + engines: {node: '>= 0.4'} + + shelljs.exec@1.1.8: + resolution: {integrity: sha512-vFILCw+lzUtiwBAHV8/Ex8JsFjelFMdhONIsgKNLgTzeRckp2AOYRQtHJE/9LhNvdMmE27AGtzWx0+DHpwIwSw==} + engines: {node: '>= 4.0.0'} + + shelljs@0.8.5: + resolution: {integrity: sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==} + engines: {node: '>=4'} + hasBin: true + + shiki@0.14.7: + resolution: {integrity: sha512-dNPAPrxSc87ua2sKJ3H5dQ/6ZaY8RNnaAqK+t0eG7p0Soi2ydiqbGOTaZCqaYvA/uZYfS1LJnemt3Q+mSfcPCg==} + + side-channel-list@1.0.0: + resolution: {integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==} + engines: {node: '>= 0.4'} + + side-channel-map@1.0.1: + resolution: {integrity: sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==} + engines: {node: '>= 0.4'} + + side-channel-weakmap@1.0.2: + resolution: {integrity: sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==} + engines: {node: '>= 0.4'} + + side-channel@1.1.0: + resolution: {integrity: sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==} + engines: {node: '>= 0.4'} + + sift@16.0.1: + resolution: {integrity: sha512-Wv6BjQ5zbhW7VFefWusVP33T/EM0vYikCaQ2qR8yULbsilAT8/wQaXvuQ3ptGLpoKx+lihJE3y2UTgKDyyNHZQ==} + + signal-exit@3.0.7: + resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} + + signal-exit@4.1.0: + resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} + engines: {node: '>=14'} + + simple-swizzle@0.2.2: + resolution: {integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==} + + simple-update-notifier@2.0.0: + resolution: {integrity: sha512-a2B9Y0KlNXl9u/vsW6sTIu9vGEpfKu2wRV6l1H3XEas/0gUIzGzBoP/IouTcUQbm9JWZLH3COxyn03TYlFax6w==} + engines: {node: '>=10'} + + sirv@2.0.4: + resolution: {integrity: sha512-94Bdh3cC2PKrbgSOUqTiGPWVZeSiXfKOVZNJniWoqrWrRkB1CJzBU3NEbiTsPcYy1lDsANA/THzS+9WBiy5nfQ==} + engines: {node: '>= 10'} + + sisteransi@1.0.5: + resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} + + slash@4.0.0: + resolution: {integrity: sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==} + engines: {node: '>=12'} + + slate-history@0.93.0: + resolution: {integrity: sha512-Gr1GMGPipRuxIz41jD2/rbvzPj8eyar56TVMyJBvBeIpQSSjNISssvGNDYfJlSWM8eaRqf6DAcxMKzsLCYeX6g==} + peerDependencies: + slate: '>=0.65.3' + + slate-react@0.98.3: + resolution: {integrity: sha512-p1BnF9eRyRM0i5hkgOb11KgmpWLQm9Zyp6jVkOAj5fPdIGheKhg48Z7aWKrayeJ4nmRyi/NjRZz/io5hQcphmw==} + peerDependencies: + react: '>=16.8.0' + react-dom: '>=16.8.0' + slate: '>=0.65.3' + + slate@0.94.1: + resolution: {integrity: sha512-GH/yizXr1ceBoZ9P9uebIaHe3dC/g6Plpf9nlUwnvoyf6V1UOYrRwkabtOCd3ZfIGxomY4P7lfgLr7FPH8/BKA==} + + snake-case@3.0.4: + resolution: {integrity: sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==} + + sort-object-keys@1.1.3: + resolution: {integrity: sha512-855pvK+VkU7PaKYPc+Jjnmt4EzejQHyhhF33q31qG8x7maDzkeFhAAThdCYay11CISO+qAMwjOBP+fPZe0IPyg==} + + sort-package-json@2.10.1: + resolution: {integrity: sha512-d76wfhgUuGypKqY72Unm5LFnMpACbdxXsLPcL27pOsSrmVqH3PztFp1uq+Z22suk15h7vXmTesuh2aEjdCqb5w==} + hasBin: true + + sorted-array-functions@1.3.0: + resolution: {integrity: sha512-2sqgzeFlid6N4Z2fUQ1cvFmTOLRi/sEDzSQ0OKYchqgoPmQBVyM3959qYx3fpS6Esef80KjmpgPeEr028dP3OA==} + + source-list-map@2.0.1: + resolution: {integrity: sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==} + + source-map-js@1.2.1: + resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} + engines: {node: '>=0.10.0'} + + source-map-support@0.5.21: + resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} + + source-map@0.5.7: + resolution: {integrity: sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==} + engines: {node: '>=0.10.0'} + + source-map@0.6.1: + resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} + engines: {node: '>=0.10.0'} + + source-map@0.7.6: + resolution: {integrity: sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ==} + engines: {node: '>= 12'} + + spawn-command@0.0.2: + resolution: {integrity: sha512-zC8zGoGkmc8J9ndvml8Xksr1Amk9qBujgbF0JAIWO7kXr43w0h/0GJNM/Vustixu+YE8N/MTrQ7N31FvHUACxQ==} + + spdx-correct@3.2.0: + resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==} + + spdx-exceptions@2.5.0: + resolution: {integrity: sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==} + + spdx-expression-parse@3.0.1: + resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} + + spdx-license-ids@3.0.22: + resolution: {integrity: sha512-4PRT4nh1EImPbt2jASOKHX7PB7I+e4IWNLvkKFDxNhJlfjbYlleYQh285Z/3mPTHSAK/AvdMmw5BNNuYH8ShgQ==} + + split2@4.2.0: + resolution: {integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==} + engines: {node: '>= 10.x'} + + sprintf-js@1.0.3: + resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} + + sprintf-js@1.1.3: + resolution: {integrity: sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==} + + sshpk@1.18.0: + resolution: {integrity: sha512-2p2KJZTSqQ/I3+HX42EpYOa2l3f8Erv8MWKsy2I9uf4wA7yFIkXRffYdsx86y6z4vHtV8u7g+pPlr8/4ouAxsQ==} + engines: {node: '>=0.10.0'} + hasBin: true + + stack-trace@0.0.10: + resolution: {integrity: sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg==} + + stackframe@1.3.4: + resolution: {integrity: sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==} + + statuses@1.5.0: + resolution: {integrity: sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==} + engines: {node: '>= 0.6'} + + statuses@2.0.1: + resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} + engines: {node: '>= 0.8'} + + stdin-discarder@0.2.2: + resolution: {integrity: sha512-UhDfHmA92YAlNnCfhmq0VeNL5bDbiZGg7sZ2IvPsXubGkiNa9EC+tUTsjBRsYUAz87btI6/1wf4XoVvQ3uRnmQ==} + engines: {node: '>=18'} + + strapi-plugin-config-sync@3.1.2: + resolution: {integrity: sha512-iJUnPWCYL4BrIuL6BMqEl0+vbud+9eqHx4MH4aCWLLUjHwObNU89qlHIsgtBzWeXrU7iPpQhtCiO95XRNiwJKw==} + engines: {node: '>=18.0.0', npm: '>=6.0.0'} + hasBin: true + peerDependencies: + '@strapi/admin': ^5.0.0 + '@strapi/design-system': ^2.0.0-rc.14 + '@strapi/icons': ^2.0.0-rc.14 + '@strapi/strapi': ^5.0.0 + '@strapi/typescript-utils': ^5.0.0 + '@strapi/utils': ^5.0.0 + react: ^17.0.0 || ^18.0.0 + react-dom: ^17.0.0 || ^18.0.0 + react-router-dom: ^6.0.0 + styled-components: ^6.0.0 + + strapi-plugin-email-designer-5@0.0.7: + resolution: {integrity: sha512-87wF+3DxhFiUFDN2Dh4Nl6FbMcdtDTSXGKXkZlSgCMf1DoGt2T2nXJ/WobO3HPv6/T6eVKgumyQXIpE28VKlsA==} + peerDependencies: + '@strapi/sdk-plugin': ^5.2.6 + '@strapi/strapi': ^5.0.0 + react: ^18.3.1 + react-dom: ^18.3.1 + react-router-dom: ^6.26.2 + styled-components: ^6.1.13 + + strapi-provider-upload-aws-s3-advanced@5.0.1: + resolution: {integrity: sha512-5+jQasVJA8Dc54ACtw7wbyZ2m3qwPLzOgT8BDGeqQ1PsGIz/MbsnWgQjP9nMgMeN/8SsLqmsXLQg+l3PhqwSbQ==} + engines: {node: '>=14.19.1 <=18.x.x', npm: '>=6.0.0'} + + stream-browserify@3.0.0: + resolution: {integrity: sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA==} + + stream-chain@2.2.5: + resolution: {integrity: sha512-1TJmBx6aSWqZ4tx7aTpBDXK0/e2hhcNSTV8+CbFJtDjbb+I1mZ8lHit0Grw9GRT+6JbIrrDd8esncgBi8aBXGA==} + + stream-json@1.8.0: + resolution: {integrity: sha512-HZfXngYHUAr1exT4fxlbc1IOce1RYxp2ldeaf97LYCOPSoOqY/1Psp7iGvpb+6JIOgkra9zDYnPX01hGAHzEPw==} + + stream-slice@0.1.2: + resolution: {integrity: sha512-QzQxpoacatkreL6jsxnVb7X5R/pGw9OUv2qWTYWnmLpg4NdN31snPy/f3TdQE1ZUXaThRvj1Zw4/OGg0ZkaLMA==} + + 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_decoder@0.10.31: + resolution: {integrity: sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==} + + string_decoder@1.1.1: + resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} + + string_decoder@1.3.0: + resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} + + 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@2.0.0: + resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} + engines: {node: '>=6'} + + strip-final-newline@4.0.0: + resolution: {integrity: sha512-aulFJcD6YK8V1G7iRB5tigAP4TsHBZZrOV8pjV++zdUwmeV8uzbY7yn6h9MswN62adStNZFuCIx4haBnRuMDaw==} + engines: {node: '>=18'} + + strip-json-comments@2.0.1: + resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==} + engines: {node: '>=0.10.0'} + + striptags@3.2.0: + resolution: {integrity: sha512-g45ZOGzHDMe2bdYMdIvdAfCQkCTDMGBazSw1ypMowwGIee7ZQ5dU0rBJ8Jqgl+jAKIv4dbeE1jscZq9wid1Tkw==} + + strnum@2.1.1: + resolution: {integrity: sha512-7ZvoFTiCnGxBtDqJ//Cu6fWtZtc7Y3x+QOirG15wztbdngGSkht27o2pyGWrVy0b4WAy3jbKmnoK6g5VlVNUUw==} + + style-loader@3.3.4: + resolution: {integrity: sha512-0WqXzrsMTyb8yjZJHDqwmnwRJvhALK9LfRtRc6B4UTWe8AijYLZYZ9thuJTZc2VfQWINADW/j+LiJnfy2RoC1w==} + engines: {node: '>= 12.13.0'} + peerDependencies: + webpack: ^5.0.0 + + style-mod@4.1.2: + resolution: {integrity: sha512-wnD1HyVqpJUI2+eKZ+eo1UwghftP6yuFheBqqe+bWCotBjC2K1YnteJILRMs3SM4V/0dLEW1SC27MWP5y+mwmw==} + + styled-components@6.1.19: + resolution: {integrity: sha512-1v/e3Dl1BknC37cXMhwGomhO8AkYmN41CqyX9xhUDxry1ns3BFQy2lLDRQXJRdVVWB9OHemv/53xaStimvWyuA==} + engines: {node: '>= 16'} + peerDependencies: + react: '>= 16.8.0' + react-dom: '>= 16.8.0' + + stylis@4.2.0: + resolution: {integrity: sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw==} + + stylis@4.3.2: + resolution: {integrity: sha512-bhtUjWd/z6ltJiQwg0dUfxEJ+W+jdqQd8TbWLWyeIJHlnsqmGLRFFd8e5mA0AZi/zx90smXRlN66YMTcaSFifg==} + + 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-color@8.1.1: + resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} + engines: {node: '>=10'} + + supports-preserve-symlinks-flag@1.0.0: + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + engines: {node: '>= 0.4'} + + synckit@0.9.1: + resolution: {integrity: sha512-7gr8p9TQP6RAHusBOSLs46F4564ZrjV8xFmw5zCmgmhGUcw2hxsShhJ6CEiHQMgPDwAQ1fWHPM0ypc4RMAig4A==} + engines: {node: ^14.18.0 || >=16.0.0} + + tapable@2.2.2: + resolution: {integrity: sha512-Re10+NauLTMCudc7T5WLFLAwDhQ0JWdrMK+9B2M8zR5hRExKmsRDCBA7/aV/pNJFltmBFO5BAMlQFi/vq3nKOg==} + engines: {node: '>=6'} + + tar-stream@2.2.0: + resolution: {integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==} + engines: {node: '>=6'} + + tar@6.2.1: + resolution: {integrity: sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==} + engines: {node: '>=10'} + + tarn@3.0.2: + resolution: {integrity: sha512-51LAVKUSZSVfI05vjPESNc5vwqqZpbXCsU+/+wxlOrUjk2SnFTt97v9ZgQrD4YmxYW1Px6w2KjaDitCfkvgxMQ==} + engines: {node: '>=8.0.0'} + + terser-webpack-plugin@5.3.14: + resolution: {integrity: sha512-vkZjpUjb6OMS7dhV+tILUW6BhpDR7P2L/aQSAv+Uwk+m8KATX9EccViHTJR2qDtACKPIYndLGCyl3FMo+r2LMw==} + engines: {node: '>= 10.13.0'} + peerDependencies: + '@swc/core': '*' + esbuild: '*' + uglify-js: '*' + webpack: ^5.1.0 + peerDependenciesMeta: + '@swc/core': + optional: true + esbuild: + optional: true + uglify-js: + optional: true + + terser@5.43.1: + resolution: {integrity: sha512-+6erLbBm0+LROX2sPXlUYx/ux5PyE9K/a92Wrt6oA+WDAoFTdpHE5tCYCI5PNzq2y8df4rA+QgHLJuR4jNymsg==} + engines: {node: '>=10'} + hasBin: true + + text-hex@1.0.0: + resolution: {integrity: sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg==} + + 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==} + + through2@2.0.5: + resolution: {integrity: sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==} + + through2@4.0.2: + resolution: {integrity: sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==} + + through@2.3.8: + resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} + + tildify@2.0.0: + resolution: {integrity: sha512-Cc+OraorugtXNfs50hU9KS369rFXCfgGLpfCfvlc+Ud5u6VWmUQsOAa9HbTvheQdYnrdJqqv1e5oIqXppMYnSw==} + engines: {node: '>=8'} + + tiny-case@1.0.3: + resolution: {integrity: sha512-Eet/eeMhkO6TX8mnUteS9zgPbUMQa4I6Kkp5ORiBD5476/m+PIRiumP5tmh5ioJpH7k51Kehawy2UDfsnxxY8Q==} + + tiny-invariant@1.0.6: + resolution: {integrity: sha512-FOyLWWVjG+aC0UqG76V53yAWdXfH8bO6FNmyZOuUrzDzK8DI3/JRY25UD7+g49JWM1LXwymsKERB+DzI0dTEQA==} + + tiny-warning@1.0.3: + resolution: {integrity: sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==} + + title-case@3.0.3: + resolution: {integrity: sha512-e1zGYRvbffpcHIrnuqT0Dh+gEJtDaxDSoG4JAIpq4oDFyooziLBIiYQv0GBT4FUAnUop5uZ1hiIAj7oAF6sOCA==} + + tmp@0.0.33: + resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} + engines: {node: '>=0.6.0'} + + 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'} + + toposort@2.0.2: + resolution: {integrity: sha512-0a5EOkAUp8D4moMi2W8ZF8jcga7BgZd91O/yabJCFY8az+XSzeGyTKs0Aoo897iV1Nj6guFq8orWDS96z91oGg==} + + totalist@3.0.1: + resolution: {integrity: sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==} + engines: {node: '>=6'} + + touch@3.1.1: + resolution: {integrity: sha512-r0eojU4bI8MnHr8c5bNo7lJDdI2qXlWWJk6a9EAFG7vbhTjElYhBVS3/miuE0uOuoLdb8Mc/rVfsmm6eo5o9GA==} + hasBin: true + + tough-cookie@2.5.0: + resolution: {integrity: sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==} + engines: {node: '>=0.8'} + + tree-kill@1.2.2: + resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} + hasBin: true + + triple-beam@1.4.1: + resolution: {integrity: sha512-aZbgViZrg1QNcG+LULa7nhZpJTZSLm/mXnHXnbAbjmN5aSa0y7V+wvv6+4WaBtpISJzThKy+PIPxc1Nq1EJ9mg==} + engines: {node: '>= 14.0.0'} + + tslib@2.6.2: + resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} + + tslib@2.8.1: + resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} + + tsscmp@1.0.6: + resolution: {integrity: sha512-LxhtAkPDTkVCMQjt2h6eBVY28KCjikZqZfMcC15YBeNjkgUpdCfBu5HoiOTDu86v6smE8yOjyEktJ8hlbANHQA==} + engines: {node: '>=0.6.x'} + + tunnel-agent@0.6.0: + resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==} + + tweetnacl@0.14.5: + resolution: {integrity: sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==} + + type-fest@0.13.1: + resolution: {integrity: sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==} + engines: {node: '>=10'} + + type-fest@0.20.2: + resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} + engines: {node: '>=10'} + + type-fest@0.21.3: + resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} + engines: {node: '>=10'} + + type-fest@0.6.0: + resolution: {integrity: sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==} + engines: {node: '>=8'} + + type-fest@0.8.1: + resolution: {integrity: sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==} + engines: {node: '>=8'} + + type-fest@2.19.0: + resolution: {integrity: sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==} + engines: {node: '>=12.20'} + + type-fest@4.41.0: + resolution: {integrity: sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==} + engines: {node: '>=16'} + + type-is@1.6.18: + resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==} + engines: {node: '>= 0.6'} + + typedarray-to-buffer@3.1.5: + resolution: {integrity: sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==} + + typedoc-github-wiki-theme@1.1.0: + resolution: {integrity: sha512-VyFmz8ZV2j/qEsCjD5EtR6FgZsCoy64Zr6SS9kCTcq7zx69Cx4UJBx8Ga/naxqs08TDggE6myIfODY6awwAGcA==} + peerDependencies: + typedoc: '>=0.24.0' + typedoc-plugin-markdown: '>=3.15.0' + + typedoc-plugin-markdown@3.17.1: + resolution: {integrity: sha512-QzdU3fj0Kzw2XSdoL15ExLASt2WPqD7FbLeaqwT70+XjKyTshBnUlQA5nNREO1C2P8Uen0CDjsBLMsCQ+zd0lw==} + peerDependencies: + typedoc: '>=0.24.0' + + typedoc@0.25.10: + resolution: {integrity: sha512-v10rtOFojrjW9og3T+6wAKeJaGMuojU87DXGZ33sfs+554wgPTRG+s07Ag1BjPZI85Y5QPVouPI63JQ6fcQM5w==} + engines: {node: '>= 16'} + hasBin: true + peerDependencies: + typescript: 4.6.x || 4.7.x || 4.8.x || 4.9.x || 5.0.x || 5.1.x || 5.2.x || 5.3.x + + typescript@5.4.4: + resolution: {integrity: sha512-dGE2Vv8cpVvw28v8HCPqyb08EzbBURxDpuhJvTrusShUfGnhHBafDsLdS1EhhxyL6BJQE+2cT3dDPAv+MQ6oLw==} + engines: {node: '>=14.17'} + hasBin: true + + typescript@5.9.2: + resolution: {integrity: sha512-CWBzXQrc/qOkhidw1OzBTQuYRbfyxDXJMVJ1XNwUHGROVmuaeiEm3OslpZ1RV96d7SKKjZKrSJu3+t/xlw3R9A==} + engines: {node: '>=14.17'} + hasBin: true + + uc.micro@1.0.6: + resolution: {integrity: sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==} + + uglify-js@3.19.3: + resolution: {integrity: sha512-v3Xu+yuwBXisp6QYTcH4UbH+xYJXqnq2m/LtQVWKWzYc1iehYnLixoQDN9FH6/j9/oybfd6W9Ghwkl8+UMKTKQ==} + engines: {node: '>=0.8.0'} + hasBin: true + + umzug@3.8.1: + resolution: {integrity: sha512-k0HjOc3b/s8vH24BUTvnaFiKhfWI9UQAGpqHDG+3866CGlBTB83Xs5wZ1io1mwYLj/GHvQ34AxKhbpYnWtkRJg==} + engines: {node: '>=12'} + + unc-path-regex@0.1.2: + resolution: {integrity: sha512-eXL4nmJT7oCpkZsHZUOJo8hcX3GbsiDOa0Qu9F646fi8dT3XuSVopVqAcEiVzSKKH7UoDti23wNX3qGFxcW5Qg==} + engines: {node: '>=0.10.0'} + + undefsafe@2.0.5: + resolution: {integrity: sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==} + + undici-types@6.21.0: + resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==} + + undici@6.21.2: + resolution: {integrity: sha512-uROZWze0R0itiAKVPsYhFov9LxrPMHLMEQFszeI2gCN6bnIIZ8twzBCJcN2LJrBBLfrP0t1FW0g+JmKVl8Vk1g==} + engines: {node: '>=18.17'} + + unicorn-magic@0.3.0: + resolution: {integrity: sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==} + engines: {node: '>=18'} + + unique-string@2.0.0: + resolution: {integrity: sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==} + engines: {node: '>=8'} + + universalify@0.1.2: + resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} + engines: {node: '>= 4.0.0'} + + universalify@2.0.1: + resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} + engines: {node: '>= 10.0.0'} + + unlayer-types@1.289.0: + resolution: {integrity: sha512-3nqnOUbAPV84ektF3f1cKNvfl5uK8uwR7WzVR1nMqCCWLZTUo9j9Y9W5dcIVWVUcmJyWiPXADiPOcHxLbSo+Lw==} + + unload@2.2.0: + resolution: {integrity: sha512-B60uB5TNBLtN6/LsgAf3udH9saB5p7gqJwcFfbOEZ8BcBHnGwCf6G/TGiEqkRAxX7zAFIUtzdrXQSdL3Q/wqNA==} + + unpipe@1.0.0: + resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} + engines: {node: '>= 0.8'} + + untildify@4.0.0: + resolution: {integrity: sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==} + engines: {node: '>=8'} + + update-browserslist-db@1.1.3: + resolution: {integrity: sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + + upper-case-first@2.0.2: + resolution: {integrity: sha512-514ppYHBaKwfJRK/pNC6c/OxfGa0obSnAl106u97Ed0I625Nin96KAjttZF6ZL3e1XLtphxnqrOi9iWgm+u+bg==} + + upper-case@2.0.2: + resolution: {integrity: sha512-KgdgDGJt2TpuwBUIjgG6lzw2GWFRCW9Qkfkiv0DxqHHLYJHmtmdUIKcZd8rHgFSjopVTlw6ggzCm1b8MFQwikg==} + + uri-js@4.4.1: + resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + + url-join@4.0.1: + resolution: {integrity: sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA==} + + use-callback-ref@1.3.3: + resolution: {integrity: sha512-jQL3lRnocaFtu3V00JToYz/4QkNWswxijDaCVNZRiRTO3HQDLsdu1ZtmIUvV4yPp+rvWm5j0y0TG/S61cuijTg==} + 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 + + use-composed-ref@1.4.0: + resolution: {integrity: sha512-djviaxuOOh7wkj0paeO1Q/4wMZ8Zrnag5H6yBvzN7AKKe8beOaED9SF5/ByLqsku8NP4zQqsvM2u3ew/tJK8/w==} + peerDependencies: + '@types/react': '*' + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + + use-context-selector@1.4.1: + resolution: {integrity: sha512-Io2ArvcRO+6MWIhkdfMFt+WKQX+Vb++W8DS2l03z/Vw/rz3BclKpM0ynr4LYGyU85Eke+Yx5oIhTY++QR0ZDoA==} + peerDependencies: + react: '>=16.8.0' + react-dom: '*' + react-native: '*' + scheduler: '>=0.19.0' + peerDependenciesMeta: + react-dom: + optional: true + react-native: + optional: true + + use-isomorphic-layout-effect@1.2.1: + resolution: {integrity: sha512-tpZZ+EX0gaghDAiFR37hj5MgY6ZN55kLiPkJsKxBMZ6GZdOSPJXiOzPM984oPYZ5AnehYx5WQp1+ME8I/P/pRA==} + peerDependencies: + '@types/react': '*' + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + + use-latest@1.3.0: + resolution: {integrity: sha512-mhg3xdm9NaM8q+gLT8KryJPnRFOz1/5XPBhmDEVZK1webPzDjrPk7f/mbpeLqTgB9msytYWANxgALOCJKnLvcQ==} + peerDependencies: + '@types/react': '*' + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + + use-sidecar@1.1.3: + resolution: {integrity: sha512-Fedw0aZvkhynoPYlA5WXrMCAMm+nSWdZt6lzJQ7Ok8S6Q+VsHmHpRWndVRJ8Be0ZbkfPc5LRYH+5XrzXcEeLRQ==} + 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 + + use-sync-external-store@1.5.0: + resolution: {integrity: sha512-Rb46I4cGGVBmjamjphe8L/UnvJD+uPPtTkNvX5mZgqdbavhI4EbgIWJiIHXJ8bc/i9EQGPRh4DwEURJ552Do0A==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + + util-deprecate@1.0.2: + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + + utila@0.4.0: + resolution: {integrity: sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA==} + + utils-merge@1.0.1: + resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==} + engines: {node: '>= 0.4.0'} + + uuid@3.4.0: + resolution: {integrity: sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==} + deprecated: Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details. + hasBin: true + + uuid@8.3.2: + resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} + hasBin: true + + uuid@9.0.1: + resolution: {integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==} + hasBin: true + + v8flags@4.0.1: + resolution: {integrity: sha512-fcRLaS4H/hrZk9hYwbdRM35D0U8IYMfEClhXxCivOojl+yTRAZH3Zy2sSy6qVCiGbV9YAtPssP6jaChqC9vPCg==} + engines: {node: '>= 10.13.0'} + + validate-npm-package-license@3.0.4: + resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} + + vary@1.1.2: + resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} + engines: {node: '>= 0.8'} + + verror@1.10.0: + resolution: {integrity: sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==} + engines: {'0': node >=0.6.0} + + vite@5.4.19: + resolution: {integrity: sha512-qO3aKv3HoQC8QKiNSTuUM1l9o/XX3+c+VTgLHbJWHZGeTPVAg2XwazI9UWzoxjIJCGCV2zU60uqMzjeLZuULqA==} + 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 + + vite@5.4.8: + resolution: {integrity: sha512-FqrItQ4DT1NC4zCUqMB4c4AZORMKIa0m8/URVCZ77OZ/QSNeJ54bU1vrFADbDsuwfIPcgknRkmqakQcgnL4GiQ==} + 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 + + vscode-oniguruma@1.7.0: + resolution: {integrity: sha512-L9WMGRfrjOhgHSdOYgCt/yRMsXzLDJSL7BPrOZt73gU0iWO4mpqzqQzOz5srxqTvMBaR0XZTSrVWo4j55Rc6cA==} + + vscode-textmate@8.0.0: + resolution: {integrity: sha512-AFbieoL7a5LMqcnOF04ji+rpXadgOXnZsxQr//r83kLPr7biP7am3g9zbaZIaBGwBRWeSvoMD4mgPdX3e4NWBg==} + + w3c-keyname@2.2.8: + resolution: {integrity: sha512-dpojBhNsCNN7T82Tm7k26A6G9ML3NkhDsnw9n/eoxSRlVBB4CEtIQ/KTCLI2Fwf3ataSXRhYFkQi3SlnFwPvPQ==} + + watchpack@2.4.4: + resolution: {integrity: sha512-c5EGNOiyxxV5qmTtAB7rbiXxi1ooX1pQKMLX/MIabJjRA0SJBQOjKF+KSVfHkr9U1cADPon0mRiVe/riyaiDUA==} + engines: {node: '>=10.13.0'} + + wcwidth@1.0.1: + resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} + + webpack-bundle-analyzer@4.10.2: + resolution: {integrity: sha512-vJptkMm9pk5si4Bv922ZbKLV8UTT4zib4FPgXMhgzUny0bfDDkLXAVQs3ly3fS4/TN9ROFtb0NFrm04UXFE/Vw==} + engines: {node: '>= 10.13.0'} + hasBin: true + + webpack-dev-middleware@6.1.2: + resolution: {integrity: sha512-Wu+EHmX326YPYUpQLKmKbTyZZJIB8/n6R09pTmB03kJmnMsVPTo9COzHZFr01txwaCAuZvfBJE4ZCHRcKs5JaQ==} + engines: {node: '>= 14.15.0'} + peerDependencies: + webpack: ^5.0.0 + peerDependenciesMeta: + webpack: + optional: true + + webpack-hot-middleware@2.26.1: + resolution: {integrity: sha512-khZGfAeJx6I8K9zKohEWWYN6KDlVw2DHownoe+6Vtwj1LP9WFgegXnVMSkZ/dBEBtXFwrkkydsaPFlB7f8wU2A==} + + webpack-sources@1.4.3: + resolution: {integrity: sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==} + + webpack-sources@3.3.3: + resolution: {integrity: sha512-yd1RBzSGanHkitROoPFd6qsrxt+oFhg/129YzheDGqeustzX0vTZJZsSsQjVQC4yzBQ56K55XU8gaNCtIzOnTg==} + engines: {node: '>=10.13.0'} + + webpack@5.101.0: + resolution: {integrity: sha512-B4t+nJqytPeuZlHuIKTbalhljIFXeNRqrUGAQgTGlfOl2lXXKXw+yZu6bicycP+PUlM44CxBjCFD6aciKFT3LQ==} + engines: {node: '>=10.13.0'} + hasBin: true + peerDependencies: + webpack-cli: '*' + peerDependenciesMeta: + webpack-cli: + optional: true + + which-pm@2.0.0: + resolution: {integrity: sha512-Lhs9Pmyph0p5n5Z3mVnN0yWcbQYUAD7rbQUiMsQxOJ3T57k7RFe35SUwWMf7dsbDZks1uOmw4AecB/JMDj3v/w==} + engines: {node: '>=8.15'} + + which@1.3.1: + resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} + hasBin: true + + which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true + + widest-line@3.1.0: + resolution: {integrity: sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==} + engines: {node: '>=8'} + + winston-transport@4.9.0: + resolution: {integrity: sha512-8drMJ4rkgaPo1Me4zD/3WLfI/zPdA9o2IipKODunnGDcuqbHwjsbB79ylv04LCGGzU0xQ6vTznOMpQGaLhhm6A==} + engines: {node: '>= 12.0.0'} + + winston@3.10.0: + resolution: {integrity: sha512-nT6SIDaE9B7ZRO0u3UvdrimG0HkB7dSTAgInQnNR2SOPJ4bvq5q79+pXLftKmP52lJGW15+H5MCK0nM9D3KB/g==} + engines: {node: '>= 12.0.0'} + + wordwrap@1.0.0: + resolution: {integrity: sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==} + + 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'} + + wrappy@1.0.2: + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + + write-file-atomic@3.0.3: + resolution: {integrity: sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==} + + ws@7.5.10: + resolution: {integrity: sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==} + engines: {node: '>=8.3.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ^5.0.2 + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + + ws@8.17.1: + resolution: {integrity: sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==} + 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 + + xdg-app-paths@8.3.0: + resolution: {integrity: sha512-mgxlWVZw0TNWHoGmXq+NC3uhCIc55dDpAlDkMQUaIAcQzysb0kxctwv//fvuW61/nAAeUBJMQ8mnZjMmuYwOcQ==} + engines: {node: '>= 4.0'} + + xdg-basedir@4.0.0: + resolution: {integrity: sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==} + engines: {node: '>=8'} + + xdg-portable@10.6.0: + resolution: {integrity: sha512-xrcqhWDvtZ7WLmt8G4f3hHy37iK7D2idtosRgkeiSPZEPmBShp0VfmRBLWAPC6zLF48APJ21yfea+RfQMF4/Aw==} + engines: {node: '>= 4.0'} + + xml2js@0.4.23: + resolution: {integrity: sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug==} + engines: {node: '>=4.0.0'} + + xmlbuilder@11.0.1: + resolution: {integrity: sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==} + engines: {node: '>=4.0'} + + xtend@4.0.2: + resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} + engines: {node: '>=0.4'} + + y18n@5.0.8: + resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} + engines: {node: '>=10'} + + yalc@1.0.0-pre.53: + resolution: {integrity: sha512-tpNqBCpTXplnduzw5XC+FF8zNJ9L/UXmvQyyQj7NKrDNavbJtHvzmZplL5ES/RCnjX7JR7W9wz5GVDXVP3dHUQ==} + hasBin: true + + yallist@4.0.0: + resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} + + yaml@1.10.2: + resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} + engines: {node: '>= 6'} + + yargs-parser@20.2.9: + resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==} + engines: {node: '>=10'} + + yargs-parser@21.1.1: + resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} + engines: {node: '>=12'} + + yargs@16.2.0: + resolution: {integrity: sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==} + engines: {node: '>=10'} + + yargs@17.7.2: + resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} + engines: {node: '>=12'} + + ylru@1.4.0: + resolution: {integrity: sha512-2OQsPNEmBCvXuFlIni/a+Rn+R2pHW9INm0BxXJ4hVDA8TirqMj+J/Rp9ItLatT/5pZqWwefVrTQcHpixsxnVlA==} + engines: {node: '>= 4.0.0'} + + yocto-queue@0.1.0: + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} + engines: {node: '>=10'} + + yoctocolors-cjs@2.1.2: + resolution: {integrity: sha512-cYVsTjKl8b+FrnidjibDWskAv7UKOfcwaVZdp/it9n1s9fU3IkgDbhdIRKCW4JDsAlECJY0ytoVPT3sK6kideA==} + engines: {node: '>=18'} + + yoctocolors@2.1.1: + resolution: {integrity: sha512-GQHQqAopRhwU8Kt1DDM8NjibDXHC8eoh1erhGAJPEyveY9qqVeXvVikNKrDz69sHowPMorbPUrH/mx8c50eiBQ==} + engines: {node: '>=18'} + + yup@0.32.9: + resolution: {integrity: sha512-Ci1qN+i2H0XpY7syDQ0k5zKQ/DoxO0LzPg8PAR/X4Mpj6DqaeCoIYEEjDJwhArh3Fa7GWbQQVDZKeXYlSH4JMg==} + engines: {node: '>=10'} + + yup@1.7.0: + resolution: {integrity: sha512-VJce62dBd+JQvoc+fCVq+KZfPHr+hXaxCcVgotfwWvlR0Ja3ffYKaJBT8rptPOSKOGJDCUnW2C2JWpud7aRP6Q==} + + zod@3.25.67: + resolution: {integrity: sha512-idA2YXwpCdqUSKRCACDE6ItZD9TZzy3OZMtpfLoh6oPR47lipysRrJfjzMqFxQ3uJuUPyUeWe1r9vLH33xO/Qw==} + +snapshots: + + '@aws-crypto/crc32@5.2.0': + dependencies: + '@aws-crypto/util': 5.2.0 + '@aws-sdk/types': 3.862.0 + tslib: 2.8.1 + + '@aws-crypto/crc32c@5.2.0': + dependencies: + '@aws-crypto/util': 5.2.0 + '@aws-sdk/types': 3.862.0 + tslib: 2.8.1 + + '@aws-crypto/sha1-browser@5.2.0': + dependencies: + '@aws-crypto/supports-web-crypto': 5.2.0 + '@aws-crypto/util': 5.2.0 + '@aws-sdk/types': 3.862.0 + '@aws-sdk/util-locate-window': 3.804.0 + '@smithy/util-utf8': 2.3.0 + tslib: 2.8.1 + + '@aws-crypto/sha256-browser@5.2.0': + dependencies: + '@aws-crypto/sha256-js': 5.2.0 + '@aws-crypto/supports-web-crypto': 5.2.0 + '@aws-crypto/util': 5.2.0 + '@aws-sdk/types': 3.862.0 + '@aws-sdk/util-locate-window': 3.804.0 + '@smithy/util-utf8': 2.3.0 + tslib: 2.8.1 + + '@aws-crypto/sha256-js@5.2.0': + dependencies: + '@aws-crypto/util': 5.2.0 + '@aws-sdk/types': 3.862.0 + tslib: 2.8.1 + + '@aws-crypto/supports-web-crypto@5.2.0': + dependencies: + tslib: 2.8.1 + + '@aws-crypto/util@5.2.0': + dependencies: + '@aws-sdk/types': 3.862.0 + '@smithy/util-utf8': 2.3.0 + tslib: 2.8.1 + + '@aws-sdk/client-s3@3.862.0': + dependencies: + '@aws-crypto/sha1-browser': 5.2.0 + '@aws-crypto/sha256-browser': 5.2.0 + '@aws-crypto/sha256-js': 5.2.0 + '@aws-sdk/core': 3.862.0 + '@aws-sdk/credential-provider-node': 3.862.0 + '@aws-sdk/middleware-bucket-endpoint': 3.862.0 + '@aws-sdk/middleware-expect-continue': 3.862.0 + '@aws-sdk/middleware-flexible-checksums': 3.862.0 + '@aws-sdk/middleware-host-header': 3.862.0 + '@aws-sdk/middleware-location-constraint': 3.862.0 + '@aws-sdk/middleware-logger': 3.862.0 + '@aws-sdk/middleware-recursion-detection': 3.862.0 + '@aws-sdk/middleware-sdk-s3': 3.862.0 + '@aws-sdk/middleware-ssec': 3.862.0 + '@aws-sdk/middleware-user-agent': 3.862.0 + '@aws-sdk/region-config-resolver': 3.862.0 + '@aws-sdk/signature-v4-multi-region': 3.862.0 + '@aws-sdk/types': 3.862.0 + '@aws-sdk/util-endpoints': 3.862.0 + '@aws-sdk/util-user-agent-browser': 3.862.0 + '@aws-sdk/util-user-agent-node': 3.862.0 + '@aws-sdk/xml-builder': 3.862.0 + '@smithy/config-resolver': 4.1.5 + '@smithy/core': 3.8.0 + '@smithy/eventstream-serde-browser': 4.0.5 + '@smithy/eventstream-serde-config-resolver': 4.1.3 + '@smithy/eventstream-serde-node': 4.0.5 + '@smithy/fetch-http-handler': 5.1.1 + '@smithy/hash-blob-browser': 4.0.5 + '@smithy/hash-node': 4.0.5 + '@smithy/hash-stream-node': 4.0.5 + '@smithy/invalid-dependency': 4.0.5 + '@smithy/md5-js': 4.0.5 + '@smithy/middleware-content-length': 4.0.5 + '@smithy/middleware-endpoint': 4.1.18 + '@smithy/middleware-retry': 4.1.19 + '@smithy/middleware-serde': 4.0.9 + '@smithy/middleware-stack': 4.0.5 + '@smithy/node-config-provider': 4.1.4 + '@smithy/node-http-handler': 4.1.1 + '@smithy/protocol-http': 5.1.3 + '@smithy/smithy-client': 4.4.10 + '@smithy/types': 4.3.2 + '@smithy/url-parser': 4.0.5 + '@smithy/util-base64': 4.0.0 + '@smithy/util-body-length-browser': 4.0.0 + '@smithy/util-body-length-node': 4.0.0 + '@smithy/util-defaults-mode-browser': 4.0.26 + '@smithy/util-defaults-mode-node': 4.0.26 + '@smithy/util-endpoints': 3.0.7 + '@smithy/util-middleware': 4.0.5 + '@smithy/util-retry': 4.0.7 + '@smithy/util-stream': 4.2.4 + '@smithy/util-utf8': 4.0.0 + '@smithy/util-waiter': 4.0.7 + '@types/uuid': 9.0.8 + tslib: 2.8.1 + uuid: 9.0.1 + transitivePeerDependencies: + - aws-crt + + '@aws-sdk/client-sso@3.862.0': + dependencies: + '@aws-crypto/sha256-browser': 5.2.0 + '@aws-crypto/sha256-js': 5.2.0 + '@aws-sdk/core': 3.862.0 + '@aws-sdk/middleware-host-header': 3.862.0 + '@aws-sdk/middleware-logger': 3.862.0 + '@aws-sdk/middleware-recursion-detection': 3.862.0 + '@aws-sdk/middleware-user-agent': 3.862.0 + '@aws-sdk/region-config-resolver': 3.862.0 + '@aws-sdk/types': 3.862.0 + '@aws-sdk/util-endpoints': 3.862.0 + '@aws-sdk/util-user-agent-browser': 3.862.0 + '@aws-sdk/util-user-agent-node': 3.862.0 + '@smithy/config-resolver': 4.1.5 + '@smithy/core': 3.8.0 + '@smithy/fetch-http-handler': 5.1.1 + '@smithy/hash-node': 4.0.5 + '@smithy/invalid-dependency': 4.0.5 + '@smithy/middleware-content-length': 4.0.5 + '@smithy/middleware-endpoint': 4.1.18 + '@smithy/middleware-retry': 4.1.19 + '@smithy/middleware-serde': 4.0.9 + '@smithy/middleware-stack': 4.0.5 + '@smithy/node-config-provider': 4.1.4 + '@smithy/node-http-handler': 4.1.1 + '@smithy/protocol-http': 5.1.3 + '@smithy/smithy-client': 4.4.10 + '@smithy/types': 4.3.2 + '@smithy/url-parser': 4.0.5 + '@smithy/util-base64': 4.0.0 + '@smithy/util-body-length-browser': 4.0.0 + '@smithy/util-body-length-node': 4.0.0 + '@smithy/util-defaults-mode-browser': 4.0.26 + '@smithy/util-defaults-mode-node': 4.0.26 + '@smithy/util-endpoints': 3.0.7 + '@smithy/util-middleware': 4.0.5 + '@smithy/util-retry': 4.0.7 + '@smithy/util-utf8': 4.0.0 + tslib: 2.8.1 + transitivePeerDependencies: + - aws-crt + + '@aws-sdk/core@3.862.0': + dependencies: + '@aws-sdk/types': 3.862.0 + '@aws-sdk/xml-builder': 3.862.0 + '@smithy/core': 3.8.0 + '@smithy/node-config-provider': 4.1.4 + '@smithy/property-provider': 4.0.5 + '@smithy/protocol-http': 5.1.3 + '@smithy/signature-v4': 5.1.3 + '@smithy/smithy-client': 4.4.10 + '@smithy/types': 4.3.2 + '@smithy/util-base64': 4.0.0 + '@smithy/util-body-length-browser': 4.0.0 + '@smithy/util-middleware': 4.0.5 + '@smithy/util-utf8': 4.0.0 + fast-xml-parser: 5.2.5 + tslib: 2.8.1 + + '@aws-sdk/credential-provider-env@3.862.0': + dependencies: + '@aws-sdk/core': 3.862.0 + '@aws-sdk/types': 3.862.0 + '@smithy/property-provider': 4.0.5 + '@smithy/types': 4.3.2 + tslib: 2.8.1 + + '@aws-sdk/credential-provider-http@3.862.0': + dependencies: + '@aws-sdk/core': 3.862.0 + '@aws-sdk/types': 3.862.0 + '@smithy/fetch-http-handler': 5.1.1 + '@smithy/node-http-handler': 4.1.1 + '@smithy/property-provider': 4.0.5 + '@smithy/protocol-http': 5.1.3 + '@smithy/smithy-client': 4.4.10 + '@smithy/types': 4.3.2 + '@smithy/util-stream': 4.2.4 + tslib: 2.8.1 + + '@aws-sdk/credential-provider-ini@3.862.0': + dependencies: + '@aws-sdk/core': 3.862.0 + '@aws-sdk/credential-provider-env': 3.862.0 + '@aws-sdk/credential-provider-http': 3.862.0 + '@aws-sdk/credential-provider-process': 3.862.0 + '@aws-sdk/credential-provider-sso': 3.862.0 + '@aws-sdk/credential-provider-web-identity': 3.862.0 + '@aws-sdk/nested-clients': 3.862.0 + '@aws-sdk/types': 3.862.0 + '@smithy/credential-provider-imds': 4.0.7 + '@smithy/property-provider': 4.0.5 + '@smithy/shared-ini-file-loader': 4.0.5 + '@smithy/types': 4.3.2 + tslib: 2.8.1 + transitivePeerDependencies: + - aws-crt + + '@aws-sdk/credential-provider-node@3.862.0': + dependencies: + '@aws-sdk/credential-provider-env': 3.862.0 + '@aws-sdk/credential-provider-http': 3.862.0 + '@aws-sdk/credential-provider-ini': 3.862.0 + '@aws-sdk/credential-provider-process': 3.862.0 + '@aws-sdk/credential-provider-sso': 3.862.0 + '@aws-sdk/credential-provider-web-identity': 3.862.0 + '@aws-sdk/types': 3.862.0 + '@smithy/credential-provider-imds': 4.0.7 + '@smithy/property-provider': 4.0.5 + '@smithy/shared-ini-file-loader': 4.0.5 + '@smithy/types': 4.3.2 + tslib: 2.8.1 + transitivePeerDependencies: + - aws-crt + + '@aws-sdk/credential-provider-process@3.862.0': + dependencies: + '@aws-sdk/core': 3.862.0 + '@aws-sdk/types': 3.862.0 + '@smithy/property-provider': 4.0.5 + '@smithy/shared-ini-file-loader': 4.0.5 + '@smithy/types': 4.3.2 + tslib: 2.8.1 + + '@aws-sdk/credential-provider-sso@3.862.0': + dependencies: + '@aws-sdk/client-sso': 3.862.0 + '@aws-sdk/core': 3.862.0 + '@aws-sdk/token-providers': 3.862.0 + '@aws-sdk/types': 3.862.0 + '@smithy/property-provider': 4.0.5 + '@smithy/shared-ini-file-loader': 4.0.5 + '@smithy/types': 4.3.2 + tslib: 2.8.1 + transitivePeerDependencies: + - aws-crt + + '@aws-sdk/credential-provider-web-identity@3.862.0': + dependencies: + '@aws-sdk/core': 3.862.0 + '@aws-sdk/nested-clients': 3.862.0 + '@aws-sdk/types': 3.862.0 + '@smithy/property-provider': 4.0.5 + '@smithy/types': 4.3.2 + tslib: 2.8.1 + transitivePeerDependencies: + - aws-crt + + '@aws-sdk/lib-storage@3.862.0(@aws-sdk/client-s3@3.862.0)': + dependencies: + '@aws-sdk/client-s3': 3.862.0 + '@smithy/abort-controller': 4.0.5 + '@smithy/middleware-endpoint': 4.1.18 + '@smithy/smithy-client': 4.4.10 + buffer: 5.6.0 + events: 3.3.0 + stream-browserify: 3.0.0 + tslib: 2.8.1 + + '@aws-sdk/middleware-bucket-endpoint@3.862.0': + dependencies: + '@aws-sdk/types': 3.862.0 + '@aws-sdk/util-arn-parser': 3.804.0 + '@smithy/node-config-provider': 4.1.4 + '@smithy/protocol-http': 5.1.3 + '@smithy/types': 4.3.2 + '@smithy/util-config-provider': 4.0.0 + tslib: 2.8.1 + + '@aws-sdk/middleware-expect-continue@3.862.0': + dependencies: + '@aws-sdk/types': 3.862.0 + '@smithy/protocol-http': 5.1.3 + '@smithy/types': 4.3.2 + tslib: 2.8.1 + + '@aws-sdk/middleware-flexible-checksums@3.862.0': + dependencies: + '@aws-crypto/crc32': 5.2.0 + '@aws-crypto/crc32c': 5.2.0 + '@aws-crypto/util': 5.2.0 + '@aws-sdk/core': 3.862.0 + '@aws-sdk/types': 3.862.0 + '@smithy/is-array-buffer': 4.0.0 + '@smithy/node-config-provider': 4.1.4 + '@smithy/protocol-http': 5.1.3 + '@smithy/types': 4.3.2 + '@smithy/util-middleware': 4.0.5 + '@smithy/util-stream': 4.2.4 + '@smithy/util-utf8': 4.0.0 + tslib: 2.8.1 + + '@aws-sdk/middleware-host-header@3.862.0': + dependencies: + '@aws-sdk/types': 3.862.0 + '@smithy/protocol-http': 5.1.3 + '@smithy/types': 4.3.2 + tslib: 2.8.1 + + '@aws-sdk/middleware-location-constraint@3.862.0': + dependencies: + '@aws-sdk/types': 3.862.0 + '@smithy/types': 4.3.2 + tslib: 2.8.1 + + '@aws-sdk/middleware-logger@3.862.0': + dependencies: + '@aws-sdk/types': 3.862.0 + '@smithy/types': 4.3.2 + tslib: 2.8.1 + + '@aws-sdk/middleware-recursion-detection@3.862.0': + dependencies: + '@aws-sdk/types': 3.862.0 + '@smithy/protocol-http': 5.1.3 + '@smithy/types': 4.3.2 + tslib: 2.8.1 + + '@aws-sdk/middleware-sdk-s3@3.862.0': + dependencies: + '@aws-sdk/core': 3.862.0 + '@aws-sdk/types': 3.862.0 + '@aws-sdk/util-arn-parser': 3.804.0 + '@smithy/core': 3.8.0 + '@smithy/node-config-provider': 4.1.4 + '@smithy/protocol-http': 5.1.3 + '@smithy/signature-v4': 5.1.3 + '@smithy/smithy-client': 4.4.10 + '@smithy/types': 4.3.2 + '@smithy/util-config-provider': 4.0.0 + '@smithy/util-middleware': 4.0.5 + '@smithy/util-stream': 4.2.4 + '@smithy/util-utf8': 4.0.0 + tslib: 2.8.1 + + '@aws-sdk/middleware-ssec@3.862.0': + dependencies: + '@aws-sdk/types': 3.862.0 + '@smithy/types': 4.3.2 + tslib: 2.8.1 + + '@aws-sdk/middleware-user-agent@3.862.0': + dependencies: + '@aws-sdk/core': 3.862.0 + '@aws-sdk/types': 3.862.0 + '@aws-sdk/util-endpoints': 3.862.0 + '@smithy/core': 3.8.0 + '@smithy/protocol-http': 5.1.3 + '@smithy/types': 4.3.2 + tslib: 2.8.1 + + '@aws-sdk/nested-clients@3.862.0': + dependencies: + '@aws-crypto/sha256-browser': 5.2.0 + '@aws-crypto/sha256-js': 5.2.0 + '@aws-sdk/core': 3.862.0 + '@aws-sdk/middleware-host-header': 3.862.0 + '@aws-sdk/middleware-logger': 3.862.0 + '@aws-sdk/middleware-recursion-detection': 3.862.0 + '@aws-sdk/middleware-user-agent': 3.862.0 + '@aws-sdk/region-config-resolver': 3.862.0 + '@aws-sdk/types': 3.862.0 + '@aws-sdk/util-endpoints': 3.862.0 + '@aws-sdk/util-user-agent-browser': 3.862.0 + '@aws-sdk/util-user-agent-node': 3.862.0 + '@smithy/config-resolver': 4.1.5 + '@smithy/core': 3.8.0 + '@smithy/fetch-http-handler': 5.1.1 + '@smithy/hash-node': 4.0.5 + '@smithy/invalid-dependency': 4.0.5 + '@smithy/middleware-content-length': 4.0.5 + '@smithy/middleware-endpoint': 4.1.18 + '@smithy/middleware-retry': 4.1.19 + '@smithy/middleware-serde': 4.0.9 + '@smithy/middleware-stack': 4.0.5 + '@smithy/node-config-provider': 4.1.4 + '@smithy/node-http-handler': 4.1.1 + '@smithy/protocol-http': 5.1.3 + '@smithy/smithy-client': 4.4.10 + '@smithy/types': 4.3.2 + '@smithy/url-parser': 4.0.5 + '@smithy/util-base64': 4.0.0 + '@smithy/util-body-length-browser': 4.0.0 + '@smithy/util-body-length-node': 4.0.0 + '@smithy/util-defaults-mode-browser': 4.0.26 + '@smithy/util-defaults-mode-node': 4.0.26 + '@smithy/util-endpoints': 3.0.7 + '@smithy/util-middleware': 4.0.5 + '@smithy/util-retry': 4.0.7 + '@smithy/util-utf8': 4.0.0 + tslib: 2.8.1 + transitivePeerDependencies: + - aws-crt + + '@aws-sdk/region-config-resolver@3.862.0': + dependencies: + '@aws-sdk/types': 3.862.0 + '@smithy/node-config-provider': 4.1.4 + '@smithy/types': 4.3.2 + '@smithy/util-config-provider': 4.0.0 + '@smithy/util-middleware': 4.0.5 + tslib: 2.8.1 + + '@aws-sdk/signature-v4-multi-region@3.862.0': + dependencies: + '@aws-sdk/middleware-sdk-s3': 3.862.0 + '@aws-sdk/types': 3.862.0 + '@smithy/protocol-http': 5.1.3 + '@smithy/signature-v4': 5.1.3 + '@smithy/types': 4.3.2 + tslib: 2.8.1 + + '@aws-sdk/token-providers@3.862.0': + dependencies: + '@aws-sdk/core': 3.862.0 + '@aws-sdk/nested-clients': 3.862.0 + '@aws-sdk/types': 3.862.0 + '@smithy/property-provider': 4.0.5 + '@smithy/shared-ini-file-loader': 4.0.5 + '@smithy/types': 4.3.2 + tslib: 2.8.1 + transitivePeerDependencies: + - aws-crt + + '@aws-sdk/types@3.862.0': + dependencies: + '@smithy/types': 4.3.2 + tslib: 2.8.1 + + '@aws-sdk/util-arn-parser@3.804.0': + dependencies: + tslib: 2.8.1 + + '@aws-sdk/util-endpoints@3.862.0': + dependencies: + '@aws-sdk/types': 3.862.0 + '@smithy/types': 4.3.2 + '@smithy/url-parser': 4.0.5 + '@smithy/util-endpoints': 3.0.7 + tslib: 2.8.1 + + '@aws-sdk/util-locate-window@3.804.0': + dependencies: + tslib: 2.8.1 + + '@aws-sdk/util-user-agent-browser@3.862.0': + dependencies: + '@aws-sdk/types': 3.862.0 + '@smithy/types': 4.3.2 + bowser: 2.11.0 + tslib: 2.8.1 + + '@aws-sdk/util-user-agent-node@3.862.0': + dependencies: + '@aws-sdk/middleware-user-agent': 3.862.0 + '@aws-sdk/types': 3.862.0 + '@smithy/node-config-provider': 4.1.4 + '@smithy/types': 4.3.2 + tslib: 2.8.1 + + '@aws-sdk/xml-builder@3.862.0': + dependencies: + '@smithy/types': 4.3.2 + tslib: 2.8.1 + + '@babel/code-frame@7.27.1': + dependencies: + '@babel/helper-validator-identifier': 7.27.1 + js-tokens: 4.0.0 + picocolors: 1.1.1 + + '@babel/generator@7.28.0': + dependencies: + '@babel/parser': 7.28.0 + '@babel/types': 7.28.2 + '@jridgewell/gen-mapping': 0.3.12 + '@jridgewell/trace-mapping': 0.3.29 + jsesc: 3.1.0 + + '@babel/helper-globals@7.28.0': {} + + '@babel/helper-module-imports@7.27.1': + dependencies: + '@babel/traverse': 7.28.0 + '@babel/types': 7.28.2 + transitivePeerDependencies: + - supports-color + + '@babel/helper-string-parser@7.27.1': {} + + '@babel/helper-validator-identifier@7.27.1': {} + + '@babel/parser@7.28.0': + dependencies: + '@babel/types': 7.28.2 + + '@babel/runtime@7.28.2': {} + + '@babel/template@7.27.2': + dependencies: + '@babel/code-frame': 7.27.1 + '@babel/parser': 7.28.0 + '@babel/types': 7.28.2 + + '@babel/traverse@7.28.0': + dependencies: + '@babel/code-frame': 7.27.1 + '@babel/generator': 7.28.0 + '@babel/helper-globals': 7.28.0 + '@babel/parser': 7.28.0 + '@babel/template': 7.27.2 + '@babel/types': 7.28.2 + debug: 4.4.1(supports-color@5.5.0) + transitivePeerDependencies: + - supports-color + + '@babel/types@7.28.2': + dependencies: + '@babel/helper-string-parser': 7.27.1 + '@babel/helper-validator-identifier': 7.27.1 + + '@casl/ability@6.5.0': + dependencies: + '@ucast/mongo2js': 1.4.0 + + '@codemirror/autocomplete@6.18.6': + dependencies: + '@codemirror/language': 6.11.2 + '@codemirror/state': 6.5.2 + '@codemirror/view': 6.38.1 + '@lezer/common': 1.2.3 + + '@codemirror/commands@6.8.1': + dependencies: + '@codemirror/language': 6.11.2 + '@codemirror/state': 6.5.2 + '@codemirror/view': 6.38.1 + '@lezer/common': 1.2.3 + + '@codemirror/lang-json@6.0.1': + dependencies: + '@codemirror/language': 6.11.2 + '@lezer/json': 1.0.3 + + '@codemirror/language@6.11.2': + dependencies: + '@codemirror/state': 6.5.2 + '@codemirror/view': 6.38.1 + '@lezer/common': 1.2.3 + '@lezer/highlight': 1.2.1 + '@lezer/lr': 1.4.2 + style-mod: 4.1.2 + + '@codemirror/lint@6.8.5': + dependencies: + '@codemirror/state': 6.5.2 + '@codemirror/view': 6.38.1 + crelt: 1.0.6 + + '@codemirror/search@6.5.11': + dependencies: + '@codemirror/state': 6.5.2 + '@codemirror/view': 6.38.1 + crelt: 1.0.6 + + '@codemirror/state@6.5.2': + dependencies: + '@marijn/find-cluster-break': 1.0.2 + + '@codemirror/theme-one-dark@6.1.3': + dependencies: + '@codemirror/language': 6.11.2 + '@codemirror/state': 6.5.2 + '@codemirror/view': 6.38.1 + '@lezer/highlight': 1.2.1 + + '@codemirror/view@6.38.1': + dependencies: + '@codemirror/state': 6.5.2 + crelt: 1.0.6 + style-mod: 4.1.2 + w3c-keyname: 2.2.8 + + '@colors/colors@1.5.0': {} + + '@colors/colors@1.6.0': {} + + '@dabh/diagnostics@2.0.3': + dependencies: + colorspace: 1.1.4 + enabled: 2.0.0 + kuler: 2.0.0 + + '@discoveryjs/json-ext@0.5.7': {} + + '@dnd-kit/accessibility@3.1.1(react@18.3.1)': + dependencies: + react: 18.3.1 + tslib: 2.8.1 + + '@dnd-kit/core@6.3.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@dnd-kit/accessibility': 3.1.1(react@18.3.1) + '@dnd-kit/utilities': 3.2.2(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + tslib: 2.8.1 + + '@dnd-kit/modifiers@9.0.0(@dnd-kit/core@6.3.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)': + dependencies: + '@dnd-kit/core': 6.3.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@dnd-kit/utilities': 3.2.2(react@18.3.1) + react: 18.3.1 + tslib: 2.8.1 + + '@dnd-kit/sortable@10.0.0(@dnd-kit/core@6.3.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)': + dependencies: + '@dnd-kit/core': 6.3.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@dnd-kit/utilities': 3.2.2(react@18.3.1) + react: 18.3.1 + tslib: 2.8.1 + + '@dnd-kit/utilities@3.2.2(react@18.3.1)': + dependencies: + react: 18.3.1 + tslib: 2.8.1 + + '@emnapi/runtime@1.4.5': + dependencies: + tslib: 2.8.1 + optional: true + + '@emotion/babel-plugin@11.13.5': + dependencies: + '@babel/helper-module-imports': 7.27.1 + '@babel/runtime': 7.28.2 + '@emotion/hash': 0.9.2 + '@emotion/memoize': 0.9.0 + '@emotion/serialize': 1.3.3 + babel-plugin-macros: 3.1.0 + convert-source-map: 1.9.0 + escape-string-regexp: 4.0.0 + find-root: 1.1.0 + source-map: 0.5.7 + stylis: 4.2.0 + transitivePeerDependencies: + - supports-color + + '@emotion/cache@11.14.0': + dependencies: + '@emotion/memoize': 0.9.0 + '@emotion/sheet': 1.4.0 + '@emotion/utils': 1.4.2 + '@emotion/weak-memoize': 0.4.0 + stylis: 4.2.0 + + '@emotion/css@11.13.5': + dependencies: + '@emotion/babel-plugin': 11.13.5 + '@emotion/cache': 11.14.0 + '@emotion/serialize': 1.3.3 + '@emotion/sheet': 1.4.0 + '@emotion/utils': 1.4.2 + transitivePeerDependencies: + - supports-color + + '@emotion/hash@0.9.2': {} + + '@emotion/is-prop-valid@1.2.2': + dependencies: + '@emotion/memoize': 0.8.1 + + '@emotion/memoize@0.8.1': {} + + '@emotion/memoize@0.9.0': {} + + '@emotion/react@11.14.0(@types/react@18.3.23)(react@18.3.1)': + dependencies: + '@babel/runtime': 7.28.2 + '@emotion/babel-plugin': 11.13.5 + '@emotion/cache': 11.14.0 + '@emotion/serialize': 1.3.3 + '@emotion/use-insertion-effect-with-fallbacks': 1.2.0(react@18.3.1) + '@emotion/utils': 1.4.2 + '@emotion/weak-memoize': 0.4.0 + hoist-non-react-statics: 3.3.2 + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.23 + transitivePeerDependencies: + - supports-color + + '@emotion/serialize@1.3.3': + dependencies: + '@emotion/hash': 0.9.2 + '@emotion/memoize': 0.9.0 + '@emotion/unitless': 0.10.0 + '@emotion/utils': 1.4.2 + csstype: 3.1.3 + + '@emotion/sheet@1.4.0': {} + + '@emotion/unitless@0.10.0': {} + + '@emotion/unitless@0.8.1': {} + + '@emotion/use-insertion-effect-with-fallbacks@1.2.0(react@18.3.1)': + dependencies: + react: 18.3.1 + + '@emotion/utils@1.4.2': {} + + '@emotion/weak-memoize@0.4.0': {} + + '@esbuild/aix-ppc64@0.20.2': + optional: true + + '@esbuild/aix-ppc64@0.21.5': + optional: true + + '@esbuild/aix-ppc64@0.25.8': + optional: true + + '@esbuild/android-arm64@0.20.2': + optional: true + + '@esbuild/android-arm64@0.21.5': + optional: true + + '@esbuild/android-arm64@0.25.8': + optional: true + + '@esbuild/android-arm@0.20.2': + optional: true + + '@esbuild/android-arm@0.21.5': + optional: true + + '@esbuild/android-arm@0.25.8': + optional: true + + '@esbuild/android-x64@0.20.2': + optional: true + + '@esbuild/android-x64@0.21.5': + optional: true + + '@esbuild/android-x64@0.25.8': + optional: true + + '@esbuild/darwin-arm64@0.20.2': + optional: true + + '@esbuild/darwin-arm64@0.21.5': + optional: true + + '@esbuild/darwin-arm64@0.25.8': + optional: true + + '@esbuild/darwin-x64@0.20.2': + optional: true + + '@esbuild/darwin-x64@0.21.5': + optional: true + + '@esbuild/darwin-x64@0.25.8': + optional: true + + '@esbuild/freebsd-arm64@0.20.2': + optional: true + + '@esbuild/freebsd-arm64@0.21.5': + optional: true + + '@esbuild/freebsd-arm64@0.25.8': + optional: true + + '@esbuild/freebsd-x64@0.20.2': + optional: true + + '@esbuild/freebsd-x64@0.21.5': + optional: true + + '@esbuild/freebsd-x64@0.25.8': + optional: true + + '@esbuild/linux-arm64@0.20.2': + optional: true + + '@esbuild/linux-arm64@0.21.5': + optional: true + + '@esbuild/linux-arm64@0.25.8': + optional: true + + '@esbuild/linux-arm@0.20.2': + optional: true + + '@esbuild/linux-arm@0.21.5': + optional: true + + '@esbuild/linux-arm@0.25.8': + optional: true + + '@esbuild/linux-ia32@0.20.2': + optional: true + + '@esbuild/linux-ia32@0.21.5': + optional: true + + '@esbuild/linux-ia32@0.25.8': + optional: true + + '@esbuild/linux-loong64@0.20.2': + optional: true + + '@esbuild/linux-loong64@0.21.5': + optional: true + + '@esbuild/linux-loong64@0.25.8': + optional: true + + '@esbuild/linux-mips64el@0.20.2': + optional: true + + '@esbuild/linux-mips64el@0.21.5': + optional: true + + '@esbuild/linux-mips64el@0.25.8': + optional: true + + '@esbuild/linux-ppc64@0.20.2': + optional: true + + '@esbuild/linux-ppc64@0.21.5': + optional: true + + '@esbuild/linux-ppc64@0.25.8': + optional: true + + '@esbuild/linux-riscv64@0.20.2': + optional: true + + '@esbuild/linux-riscv64@0.21.5': + optional: true + + '@esbuild/linux-riscv64@0.25.8': + optional: true + + '@esbuild/linux-s390x@0.20.2': + optional: true + + '@esbuild/linux-s390x@0.21.5': + optional: true + + '@esbuild/linux-s390x@0.25.8': + optional: true + + '@esbuild/linux-x64@0.20.2': + optional: true + + '@esbuild/linux-x64@0.21.5': + optional: true + + '@esbuild/linux-x64@0.25.8': + optional: true + + '@esbuild/netbsd-arm64@0.25.8': + optional: true + + '@esbuild/netbsd-x64@0.20.2': + optional: true + + '@esbuild/netbsd-x64@0.21.5': + optional: true + + '@esbuild/netbsd-x64@0.25.8': + optional: true + + '@esbuild/openbsd-arm64@0.25.8': + optional: true + + '@esbuild/openbsd-x64@0.20.2': + optional: true + + '@esbuild/openbsd-x64@0.21.5': + optional: true + + '@esbuild/openbsd-x64@0.25.8': + optional: true + + '@esbuild/openharmony-arm64@0.25.8': + optional: true + + '@esbuild/sunos-x64@0.20.2': + optional: true + + '@esbuild/sunos-x64@0.21.5': + optional: true + + '@esbuild/sunos-x64@0.25.8': + optional: true + + '@esbuild/win32-arm64@0.20.2': + optional: true + + '@esbuild/win32-arm64@0.21.5': + optional: true + + '@esbuild/win32-arm64@0.25.8': + optional: true + + '@esbuild/win32-ia32@0.20.2': + optional: true + + '@esbuild/win32-ia32@0.21.5': + optional: true + + '@esbuild/win32-ia32@0.25.8': + optional: true + + '@esbuild/win32-x64@0.20.2': + optional: true + + '@esbuild/win32-x64@0.21.5': + optional: true + + '@esbuild/win32-x64@0.25.8': + optional: true + + '@floating-ui/core@1.7.3': + dependencies: + '@floating-ui/utils': 0.2.10 + + '@floating-ui/dom@1.7.3': + dependencies: + '@floating-ui/core': 1.7.3 + '@floating-ui/utils': 0.2.10 + + '@floating-ui/react-dom@2.1.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@floating-ui/dom': 1.7.3 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + '@floating-ui/utils@0.2.10': {} + + '@formatjs/ecma402-abstract@1.18.2': + dependencies: + '@formatjs/intl-localematcher': 0.5.4 + tslib: 2.8.1 + + '@formatjs/ecma402-abstract@2.2.4': + dependencies: + '@formatjs/fast-memoize': 2.2.3 + '@formatjs/intl-localematcher': 0.5.8 + tslib: 2.8.1 + + '@formatjs/fast-memoize@2.2.0': + dependencies: + tslib: 2.8.1 + + '@formatjs/fast-memoize@2.2.3': + dependencies: + tslib: 2.8.1 + + '@formatjs/icu-messageformat-parser@2.7.6': + dependencies: + '@formatjs/ecma402-abstract': 1.18.2 + '@formatjs/icu-skeleton-parser': 1.8.0 + tslib: 2.8.1 + + '@formatjs/icu-messageformat-parser@2.9.4': + dependencies: + '@formatjs/ecma402-abstract': 2.2.4 + '@formatjs/icu-skeleton-parser': 1.8.8 + tslib: 2.8.1 + + '@formatjs/icu-skeleton-parser@1.8.0': + dependencies: + '@formatjs/ecma402-abstract': 1.18.2 + tslib: 2.8.1 + + '@formatjs/icu-skeleton-parser@1.8.8': + dependencies: + '@formatjs/ecma402-abstract': 2.2.4 + tslib: 2.8.1 + + '@formatjs/intl-displaynames@6.6.6': + dependencies: + '@formatjs/ecma402-abstract': 1.18.2 + '@formatjs/intl-localematcher': 0.5.4 + tslib: 2.8.1 + + '@formatjs/intl-displaynames@6.8.5': + dependencies: + '@formatjs/ecma402-abstract': 2.2.4 + '@formatjs/intl-localematcher': 0.5.8 + tslib: 2.8.1 + + '@formatjs/intl-listformat@7.5.5': + dependencies: + '@formatjs/ecma402-abstract': 1.18.2 + '@formatjs/intl-localematcher': 0.5.4 + tslib: 2.8.1 + + '@formatjs/intl-listformat@7.7.5': + dependencies: + '@formatjs/ecma402-abstract': 2.2.4 + '@formatjs/intl-localematcher': 0.5.8 + tslib: 2.8.1 + + '@formatjs/intl-localematcher@0.5.4': + dependencies: + tslib: 2.8.1 + + '@formatjs/intl-localematcher@0.5.8': + dependencies: + tslib: 2.8.1 + + '@formatjs/intl@2.10.0(typescript@5.9.2)': + dependencies: + '@formatjs/ecma402-abstract': 1.18.2 + '@formatjs/fast-memoize': 2.2.0 + '@formatjs/icu-messageformat-parser': 2.7.6 + '@formatjs/intl-displaynames': 6.6.6 + '@formatjs/intl-listformat': 7.5.5 + intl-messageformat: 10.5.11 + tslib: 2.8.1 + optionalDependencies: + typescript: 5.9.2 + + '@formatjs/intl@2.10.15(typescript@5.9.2)': + dependencies: + '@formatjs/ecma402-abstract': 2.2.4 + '@formatjs/fast-memoize': 2.2.3 + '@formatjs/icu-messageformat-parser': 2.9.4 + '@formatjs/intl-displaynames': 6.8.5 + '@formatjs/intl-listformat': 7.7.5 + intl-messageformat: 10.7.7 + tslib: 2.8.1 + optionalDependencies: + typescript: 5.9.2 + + '@hapi/bourne@3.0.0': {} + + '@img/sharp-darwin-arm64@0.33.5': + optionalDependencies: + '@img/sharp-libvips-darwin-arm64': 1.0.4 + optional: true + + '@img/sharp-darwin-x64@0.33.5': + optionalDependencies: + '@img/sharp-libvips-darwin-x64': 1.0.4 + optional: true + + '@img/sharp-libvips-darwin-arm64@1.0.4': + optional: true + + '@img/sharp-libvips-darwin-x64@1.0.4': + optional: true + + '@img/sharp-libvips-linux-arm64@1.0.4': + optional: true + + '@img/sharp-libvips-linux-arm@1.0.5': + optional: true + + '@img/sharp-libvips-linux-s390x@1.0.4': + optional: true + + '@img/sharp-libvips-linux-x64@1.0.4': + optional: true + + '@img/sharp-libvips-linuxmusl-arm64@1.0.4': + optional: true + + '@img/sharp-libvips-linuxmusl-x64@1.0.4': + optional: true + + '@img/sharp-linux-arm64@0.33.5': + optionalDependencies: + '@img/sharp-libvips-linux-arm64': 1.0.4 + optional: true + + '@img/sharp-linux-arm@0.33.5': + optionalDependencies: + '@img/sharp-libvips-linux-arm': 1.0.5 + optional: true + + '@img/sharp-linux-s390x@0.33.5': + optionalDependencies: + '@img/sharp-libvips-linux-s390x': 1.0.4 + optional: true + + '@img/sharp-linux-x64@0.33.5': + optionalDependencies: + '@img/sharp-libvips-linux-x64': 1.0.4 + optional: true + + '@img/sharp-linuxmusl-arm64@0.33.5': + optionalDependencies: + '@img/sharp-libvips-linuxmusl-arm64': 1.0.4 + optional: true + + '@img/sharp-linuxmusl-x64@0.33.5': + optionalDependencies: + '@img/sharp-libvips-linuxmusl-x64': 1.0.4 + optional: true + + '@img/sharp-wasm32@0.33.5': + dependencies: + '@emnapi/runtime': 1.4.5 + optional: true + + '@img/sharp-win32-ia32@0.33.5': + optional: true + + '@img/sharp-win32-x64@0.33.5': + optional: true + + '@inquirer/figures@1.0.13': {} + + '@internationalized/date@3.5.4': + dependencies: + '@swc/helpers': 0.5.17 + + '@internationalized/number@3.5.3': + dependencies: + '@swc/helpers': 0.5.17 + + '@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 + + '@jridgewell/gen-mapping@0.3.12': + dependencies: + '@jridgewell/sourcemap-codec': 1.5.4 + '@jridgewell/trace-mapping': 0.3.29 + + '@jridgewell/resolve-uri@3.1.2': {} + + '@jridgewell/source-map@0.3.10': + dependencies: + '@jridgewell/gen-mapping': 0.3.12 + '@jridgewell/trace-mapping': 0.3.29 + + '@jridgewell/sourcemap-codec@1.5.4': {} + + '@jridgewell/trace-mapping@0.3.29': + dependencies: + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.5.4 + + '@juggle/resize-observer@3.4.0': {} + + '@koa/cors@5.0.0': + dependencies: + vary: 1.1.2 + + '@koa/router@12.0.2': + dependencies: + debug: 4.4.1(supports-color@5.5.0) + http-errors: 2.0.0 + koa-compose: 4.1.0 + methods: 1.1.2 + path-to-regexp: 6.3.0 + transitivePeerDependencies: + - supports-color + + '@lezer/common@1.2.3': {} + + '@lezer/highlight@1.2.1': + dependencies: + '@lezer/common': 1.2.3 + + '@lezer/json@1.0.3': + dependencies: + '@lezer/common': 1.2.3 + '@lezer/highlight': 1.2.1 + '@lezer/lr': 1.4.2 + + '@lezer/lr@1.4.2': + dependencies: + '@lezer/common': 1.2.3 + + '@marijn/find-cluster-break@1.0.2': {} + + '@mux/mux-player-react@3.1.0(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@mux/mux-player': 3.1.0 + '@mux/playback-core': 0.27.0 + prop-types: 15.8.1 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.23 + '@types/react-dom': 18.3.7(@types/react@18.3.23) + + '@mux/mux-player@3.1.0': + dependencies: + '@mux/mux-video': 0.22.0 + '@mux/playback-core': 0.27.0 + media-chrome: 4.2.3 + player.style: 0.0.8 + + '@mux/mux-video@0.22.0': + dependencies: + '@mux/playback-core': 0.27.0 + castable-video: 1.1.10 + custom-media-element: 1.3.3 + media-tracks: 0.3.3 + + '@mux/playback-core@0.27.0': + dependencies: + hls.js: 1.5.20 + mux-embed: 5.11.0 + + '@noble/hashes@1.8.0': {} + + '@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.19.1 + + '@paralleldrive/cuid2@2.2.2': + dependencies: + '@noble/hashes': 1.8.0 + + '@pkgjs/parseargs@0.11.0': + optional: true + + '@pkgr/core@0.1.2': {} + + '@pmmmwh/react-refresh-webpack-plugin@0.5.15(react-refresh@0.14.0)(type-fest@4.41.0)(webpack-hot-middleware@2.26.1)(webpack@5.101.0(esbuild@0.25.8))': + dependencies: + ansi-html: 0.0.9 + core-js-pure: 3.45.0 + error-stack-parser: 2.1.4 + html-entities: 2.6.0 + loader-utils: 2.0.4 + react-refresh: 0.14.0 + schema-utils: 4.3.2 + source-map: 0.7.6 + webpack: 5.101.0(esbuild@0.25.8) + optionalDependencies: + type-fest: 4.41.0 + webpack-hot-middleware: 2.26.1 + + '@pnpm/config.env-replace@1.1.0': {} + + '@pnpm/network.ca-file@1.0.2': + dependencies: + graceful-fs: 4.2.10 + + '@pnpm/npm-conf@2.3.1': + dependencies: + '@pnpm/config.env-replace': 1.1.0 + '@pnpm/network.ca-file': 1.0.2 + config-chain: 1.1.13 + + '@polka/url@1.0.0-next.29': {} + + '@radix-ui/number@1.0.1': + dependencies: + '@babel/runtime': 7.28.2 + + '@radix-ui/primitive@1.0.1': + dependencies: + '@babel/runtime': 7.28.2 + + '@radix-ui/react-accordion@1.1.2(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@babel/runtime': 7.28.2 + '@radix-ui/primitive': 1.0.1 + '@radix-ui/react-collapsible': 1.0.3(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-collection': 1.0.3(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.23)(react@18.3.1) + '@radix-ui/react-context': 1.0.1(@types/react@18.3.23)(react@18.3.1) + '@radix-ui/react-direction': 1.0.1(@types/react@18.3.23)(react@18.3.1) + '@radix-ui/react-id': 1.0.1(@types/react@18.3.23)(react@18.3.1) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.3.23)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.23 + '@types/react-dom': 18.3.7(@types/react@18.3.23) + + '@radix-ui/react-alert-dialog@1.0.5(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@babel/runtime': 7.28.2 + '@radix-ui/primitive': 1.0.1 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.23)(react@18.3.1) + '@radix-ui/react-context': 1.0.1(@types/react@18.3.23)(react@18.3.1) + '@radix-ui/react-dialog': 1.0.5(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(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.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-slot': 1.0.2(@types/react@18.3.23)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.23 + '@types/react-dom': 18.3.7(@types/react@18.3.23) + + '@radix-ui/react-arrow@1.0.3(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@babel/runtime': 7.28.2 + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(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.23 + '@types/react-dom': 18.3.7(@types/react@18.3.23) + + '@radix-ui/react-avatar@1.0.4(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@babel/runtime': 7.28.2 + '@radix-ui/react-context': 1.0.1(@types/react@18.3.23)(react@18.3.1) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(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.23)(react@18.3.1) + '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.3.23)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.23 + '@types/react-dom': 18.3.7(@types/react@18.3.23) + + '@radix-ui/react-checkbox@1.0.4(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@babel/runtime': 7.28.2 + '@radix-ui/primitive': 1.0.1 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.23)(react@18.3.1) + '@radix-ui/react-context': 1.0.1(@types/react@18.3.23)(react@18.3.1) + '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(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.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.3.23)(react@18.3.1) + '@radix-ui/react-use-previous': 1.0.1(@types/react@18.3.23)(react@18.3.1) + '@radix-ui/react-use-size': 1.0.1(@types/react@18.3.23)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.23 + '@types/react-dom': 18.3.7(@types/react@18.3.23) + + '@radix-ui/react-collapsible@1.0.3(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@babel/runtime': 7.28.2 + '@radix-ui/primitive': 1.0.1 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.23)(react@18.3.1) + '@radix-ui/react-context': 1.0.1(@types/react@18.3.23)(react@18.3.1) + '@radix-ui/react-id': 1.0.1(@types/react@18.3.23)(react@18.3.1) + '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(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.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.3.23)(react@18.3.1) + '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.3.23)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.23 + '@types/react-dom': 18.3.7(@types/react@18.3.23) + + '@radix-ui/react-collection@1.0.3(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@babel/runtime': 7.28.2 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.23)(react@18.3.1) + '@radix-ui/react-context': 1.0.1(@types/react@18.3.23)(react@18.3.1) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-slot': 1.0.2(@types/react@18.3.23)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.23 + '@types/react-dom': 18.3.7(@types/react@18.3.23) + + '@radix-ui/react-compose-refs@1.0.1(@types/react@18.3.23)(react@18.3.1)': + dependencies: + '@babel/runtime': 7.28.2 + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.23 + + '@radix-ui/react-context@1.0.1(@types/react@18.3.23)(react@18.3.1)': + dependencies: + '@babel/runtime': 7.28.2 + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.23 + + '@radix-ui/react-dialog@1.0.5(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@babel/runtime': 7.28.2 + '@radix-ui/primitive': 1.0.1 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.23)(react@18.3.1) + '@radix-ui/react-context': 1.0.1(@types/react@18.3.23)(react@18.3.1) + '@radix-ui/react-dismissable-layer': 1.0.5(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(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.23)(react@18.3.1) + '@radix-ui/react-focus-scope': 1.0.4(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-id': 1.0.1(@types/react@18.3.23)(react@18.3.1) + '@radix-ui/react-portal': 1.0.4(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(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.7(@types/react@18.3.23))(@types/react@18.3.23)(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.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-slot': 1.0.2(@types/react@18.3.23)(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.3.23)(react@18.3.1) + aria-hidden: 1.2.6 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + react-remove-scroll: 2.5.5(@types/react@18.3.23)(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.23 + '@types/react-dom': 18.3.7(@types/react@18.3.23) + + '@radix-ui/react-direction@1.0.1(@types/react@18.3.23)(react@18.3.1)': + dependencies: + '@babel/runtime': 7.28.2 + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.23 + + '@radix-ui/react-dismissable-layer@1.0.5(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@babel/runtime': 7.28.2 + '@radix-ui/primitive': 1.0.1 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.23)(react@18.3.1) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(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.23)(react@18.3.1) + '@radix-ui/react-use-escape-keydown': 1.0.3(@types/react@18.3.23)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.23 + '@types/react-dom': 18.3.7(@types/react@18.3.23) + + '@radix-ui/react-dropdown-menu@2.0.6(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@babel/runtime': 7.28.2 + '@radix-ui/primitive': 1.0.1 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.23)(react@18.3.1) + '@radix-ui/react-context': 1.0.1(@types/react@18.3.23)(react@18.3.1) + '@radix-ui/react-id': 1.0.1(@types/react@18.3.23)(react@18.3.1) + '@radix-ui/react-menu': 2.0.6(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(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.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.3.23)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.23 + '@types/react-dom': 18.3.7(@types/react@18.3.23) + + '@radix-ui/react-focus-guards@1.0.1(@types/react@18.3.23)(react@18.3.1)': + dependencies: + '@babel/runtime': 7.28.2 + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.23 + + '@radix-ui/react-focus-scope@1.0.4(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@babel/runtime': 7.28.2 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.23)(react@18.3.1) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(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.23)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.23 + '@types/react-dom': 18.3.7(@types/react@18.3.23) + + '@radix-ui/react-id@1.0.1(@types/react@18.3.23)(react@18.3.1)': + dependencies: + '@babel/runtime': 7.28.2 + '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.3.23)(react@18.3.1) + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.23 + + '@radix-ui/react-menu@2.0.6(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@babel/runtime': 7.28.2 + '@radix-ui/primitive': 1.0.1 + '@radix-ui/react-collection': 1.0.3(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.23)(react@18.3.1) + '@radix-ui/react-context': 1.0.1(@types/react@18.3.23)(react@18.3.1) + '@radix-ui/react-direction': 1.0.1(@types/react@18.3.23)(react@18.3.1) + '@radix-ui/react-dismissable-layer': 1.0.5(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(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.23)(react@18.3.1) + '@radix-ui/react-focus-scope': 1.0.4(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-id': 1.0.1(@types/react@18.3.23)(react@18.3.1) + '@radix-ui/react-popper': 1.1.3(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-portal': 1.0.4(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(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.7(@types/react@18.3.23))(@types/react@18.3.23)(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.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-roving-focus': 1.0.4(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-slot': 1.0.2(@types/react@18.3.23)(react@18.3.1) + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.3.23)(react@18.3.1) + aria-hidden: 1.2.6 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + react-remove-scroll: 2.5.5(@types/react@18.3.23)(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.23 + '@types/react-dom': 18.3.7(@types/react@18.3.23) + + '@radix-ui/react-popover@1.0.7(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@babel/runtime': 7.28.2 + '@radix-ui/primitive': 1.0.1 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.23)(react@18.3.1) + '@radix-ui/react-context': 1.0.1(@types/react@18.3.23)(react@18.3.1) + '@radix-ui/react-dismissable-layer': 1.0.5(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(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.23)(react@18.3.1) + '@radix-ui/react-focus-scope': 1.0.4(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-id': 1.0.1(@types/react@18.3.23)(react@18.3.1) + '@radix-ui/react-popper': 1.1.3(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-portal': 1.0.4(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(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.7(@types/react@18.3.23))(@types/react@18.3.23)(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.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-slot': 1.0.2(@types/react@18.3.23)(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.3.23)(react@18.3.1) + aria-hidden: 1.2.6 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + react-remove-scroll: 2.5.5(@types/react@18.3.23)(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.23 + '@types/react-dom': 18.3.7(@types/react@18.3.23) + + '@radix-ui/react-popper@1.1.3(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@babel/runtime': 7.28.2 + '@floating-ui/react-dom': 2.1.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-arrow': 1.0.3(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.23)(react@18.3.1) + '@radix-ui/react-context': 1.0.1(@types/react@18.3.23)(react@18.3.1) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(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.23)(react@18.3.1) + '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.3.23)(react@18.3.1) + '@radix-ui/react-use-rect': 1.0.1(@types/react@18.3.23)(react@18.3.1) + '@radix-ui/react-use-size': 1.0.1(@types/react@18.3.23)(react@18.3.1) + '@radix-ui/rect': 1.0.1 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.23 + '@types/react-dom': 18.3.7(@types/react@18.3.23) + + '@radix-ui/react-portal@1.0.4(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@babel/runtime': 7.28.2 + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(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.23 + '@types/react-dom': 18.3.7(@types/react@18.3.23) + + '@radix-ui/react-presence@1.0.1(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@babel/runtime': 7.28.2 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.23)(react@18.3.1) + '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.3.23)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.23 + '@types/react-dom': 18.3.7(@types/react@18.3.23) + + '@radix-ui/react-primitive@1.0.3(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@babel/runtime': 7.28.2 + '@radix-ui/react-slot': 1.0.2(@types/react@18.3.23)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.23 + '@types/react-dom': 18.3.7(@types/react@18.3.23) + + '@radix-ui/react-progress@1.0.3(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@babel/runtime': 7.28.2 + '@radix-ui/react-context': 1.0.1(@types/react@18.3.23)(react@18.3.1) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(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.23 + '@types/react-dom': 18.3.7(@types/react@18.3.23) + + '@radix-ui/react-radio-group@1.1.3(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@babel/runtime': 7.28.2 + '@radix-ui/primitive': 1.0.1 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.23)(react@18.3.1) + '@radix-ui/react-context': 1.0.1(@types/react@18.3.23)(react@18.3.1) + '@radix-ui/react-direction': 1.0.1(@types/react@18.3.23)(react@18.3.1) + '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(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.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-roving-focus': 1.0.4(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.3.23)(react@18.3.1) + '@radix-ui/react-use-previous': 1.0.1(@types/react@18.3.23)(react@18.3.1) + '@radix-ui/react-use-size': 1.0.1(@types/react@18.3.23)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.23 + '@types/react-dom': 18.3.7(@types/react@18.3.23) + + '@radix-ui/react-roving-focus@1.0.4(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@babel/runtime': 7.28.2 + '@radix-ui/primitive': 1.0.1 + '@radix-ui/react-collection': 1.0.3(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.23)(react@18.3.1) + '@radix-ui/react-context': 1.0.1(@types/react@18.3.23)(react@18.3.1) + '@radix-ui/react-direction': 1.0.1(@types/react@18.3.23)(react@18.3.1) + '@radix-ui/react-id': 1.0.1(@types/react@18.3.23)(react@18.3.1) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(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.23)(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.3.23)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.23 + '@types/react-dom': 18.3.7(@types/react@18.3.23) + + '@radix-ui/react-scroll-area@1.0.5(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@babel/runtime': 7.28.2 + '@radix-ui/number': 1.0.1 + '@radix-ui/primitive': 1.0.1 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.23)(react@18.3.1) + '@radix-ui/react-context': 1.0.1(@types/react@18.3.23)(react@18.3.1) + '@radix-ui/react-direction': 1.0.1(@types/react@18.3.23)(react@18.3.1) + '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(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.7(@types/react@18.3.23))(@types/react@18.3.23)(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.23)(react@18.3.1) + '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.3.23)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.23 + '@types/react-dom': 18.3.7(@types/react@18.3.23) + + '@radix-ui/react-separator@1.0.3(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@babel/runtime': 7.28.2 + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(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.23 + '@types/react-dom': 18.3.7(@types/react@18.3.23) + + '@radix-ui/react-slot@1.0.2(@types/react@18.3.23)(react@18.3.1)': + dependencies: + '@babel/runtime': 7.28.2 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.23)(react@18.3.1) + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.23 + + '@radix-ui/react-switch@1.0.3(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@babel/runtime': 7.28.2 + '@radix-ui/primitive': 1.0.1 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.23)(react@18.3.1) + '@radix-ui/react-context': 1.0.1(@types/react@18.3.23)(react@18.3.1) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.3.23)(react@18.3.1) + '@radix-ui/react-use-previous': 1.0.1(@types/react@18.3.23)(react@18.3.1) + '@radix-ui/react-use-size': 1.0.1(@types/react@18.3.23)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.23 + '@types/react-dom': 18.3.7(@types/react@18.3.23) + + '@radix-ui/react-tabs@1.0.4(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@babel/runtime': 7.28.2 + '@radix-ui/primitive': 1.0.1 + '@radix-ui/react-context': 1.0.1(@types/react@18.3.23)(react@18.3.1) + '@radix-ui/react-direction': 1.0.1(@types/react@18.3.23)(react@18.3.1) + '@radix-ui/react-id': 1.0.1(@types/react@18.3.23)(react@18.3.1) + '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(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.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-roving-focus': 1.0.4(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.3.23)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.23 + '@types/react-dom': 18.3.7(@types/react@18.3.23) + + '@radix-ui/react-toggle-group@1.0.4(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@babel/runtime': 7.28.2 + '@radix-ui/primitive': 1.0.1 + '@radix-ui/react-context': 1.0.1(@types/react@18.3.23)(react@18.3.1) + '@radix-ui/react-direction': 1.0.1(@types/react@18.3.23)(react@18.3.1) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-roving-focus': 1.0.4(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-toggle': 1.0.3(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.3.23)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.23 + '@types/react-dom': 18.3.7(@types/react@18.3.23) + + '@radix-ui/react-toggle@1.0.3(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@babel/runtime': 7.28.2 + '@radix-ui/primitive': 1.0.1 + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.3.23)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.23 + '@types/react-dom': 18.3.7(@types/react@18.3.23) + + '@radix-ui/react-toolbar@1.0.4(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@babel/runtime': 7.28.2 + '@radix-ui/primitive': 1.0.1 + '@radix-ui/react-context': 1.0.1(@types/react@18.3.23)(react@18.3.1) + '@radix-ui/react-direction': 1.0.1(@types/react@18.3.23)(react@18.3.1) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-roving-focus': 1.0.4(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-separator': 1.0.3(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-toggle-group': 1.0.4(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(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.23 + '@types/react-dom': 18.3.7(@types/react@18.3.23) + + '@radix-ui/react-tooltip@1.0.7(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@babel/runtime': 7.28.2 + '@radix-ui/primitive': 1.0.1 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.23)(react@18.3.1) + '@radix-ui/react-context': 1.0.1(@types/react@18.3.23)(react@18.3.1) + '@radix-ui/react-dismissable-layer': 1.0.5(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-id': 1.0.1(@types/react@18.3.23)(react@18.3.1) + '@radix-ui/react-popper': 1.1.3(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-portal': 1.0.4(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(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.7(@types/react@18.3.23))(@types/react@18.3.23)(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.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-slot': 1.0.2(@types/react@18.3.23)(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.3.23)(react@18.3.1) + '@radix-ui/react-visually-hidden': 1.0.3(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(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.23 + '@types/react-dom': 18.3.7(@types/react@18.3.23) + + '@radix-ui/react-use-callback-ref@1.0.1(@types/react@18.3.23)(react@18.3.1)': + dependencies: + '@babel/runtime': 7.28.2 + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.23 + + '@radix-ui/react-use-controllable-state@1.0.1(@types/react@18.3.23)(react@18.3.1)': + dependencies: + '@babel/runtime': 7.28.2 + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.3.23)(react@18.3.1) + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.23 + + '@radix-ui/react-use-escape-keydown@1.0.3(@types/react@18.3.23)(react@18.3.1)': + dependencies: + '@babel/runtime': 7.28.2 + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.3.23)(react@18.3.1) + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.23 + + '@radix-ui/react-use-layout-effect@1.0.1(@types/react@18.3.23)(react@18.3.1)': + dependencies: + '@babel/runtime': 7.28.2 + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.23 + + '@radix-ui/react-use-previous@1.0.1(@types/react@18.3.23)(react@18.3.1)': + dependencies: + '@babel/runtime': 7.28.2 + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.23 + + '@radix-ui/react-use-rect@1.0.1(@types/react@18.3.23)(react@18.3.1)': + dependencies: + '@babel/runtime': 7.28.2 + '@radix-ui/rect': 1.0.1 + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.23 + + '@radix-ui/react-use-size@1.0.1(@types/react@18.3.23)(react@18.3.1)': + dependencies: + '@babel/runtime': 7.28.2 + '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.3.23)(react@18.3.1) + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.23 + + '@radix-ui/react-visually-hidden@1.0.3(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@babel/runtime': 7.28.2 + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(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.23 + '@types/react-dom': 18.3.7(@types/react@18.3.23) + + '@radix-ui/rect@1.0.1': + dependencies: + '@babel/runtime': 7.28.2 + + '@react-dnd/asap@5.0.2': {} + + '@react-dnd/invariant@4.0.2': {} + + '@react-dnd/shallowequal@4.0.2': {} + + '@reduxjs/toolkit@1.9.7(react-redux@8.1.3(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(redux@4.2.1))(react@18.3.1)': + dependencies: + immer: 9.0.21 + redux: 4.2.1 + redux-thunk: 2.4.2(redux@4.2.1) + reselect: 4.1.8 + optionalDependencies: + react: 18.3.1 + react-redux: 8.1.3(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(redux@4.2.1) + + '@remix-run/router@1.23.0': {} + + '@rollup/rollup-android-arm-eabi@4.46.2': + optional: true + + '@rollup/rollup-android-arm64@4.46.2': + optional: true + + '@rollup/rollup-darwin-arm64@4.46.2': + optional: true + + '@rollup/rollup-darwin-x64@4.46.2': + optional: true + + '@rollup/rollup-freebsd-arm64@4.46.2': + optional: true + + '@rollup/rollup-freebsd-x64@4.46.2': + optional: true + + '@rollup/rollup-linux-arm-gnueabihf@4.46.2': + optional: true + + '@rollup/rollup-linux-arm-musleabihf@4.46.2': + optional: true + + '@rollup/rollup-linux-arm64-gnu@4.46.2': + optional: true + + '@rollup/rollup-linux-arm64-musl@4.46.2': + optional: true + + '@rollup/rollup-linux-loongarch64-gnu@4.46.2': + optional: true + + '@rollup/rollup-linux-ppc64-gnu@4.46.2': + optional: true + + '@rollup/rollup-linux-riscv64-gnu@4.46.2': + optional: true + + '@rollup/rollup-linux-riscv64-musl@4.46.2': + optional: true + + '@rollup/rollup-linux-s390x-gnu@4.46.2': + optional: true + + '@rollup/rollup-linux-x64-gnu@4.46.2': + optional: true + + '@rollup/rollup-linux-x64-musl@4.46.2': + optional: true + + '@rollup/rollup-win32-arm64-msvc@4.46.2': + optional: true + + '@rollup/rollup-win32-ia32-msvc@4.46.2': + optional: true + + '@rollup/rollup-win32-x64-msvc@4.46.2': + optional: true + + '@rushstack/node-core-library@5.13.0(@types/node@20.19.9)': + dependencies: + ajv: 8.13.0 + ajv-draft-04: 1.0.0(ajv@8.13.0) + ajv-formats: 3.0.1(ajv@8.13.0) + fs-extra: 11.3.1 + import-lazy: 4.0.0 + jju: 1.4.0 + resolve: 1.22.10 + semver: 7.5.4 + optionalDependencies: + '@types/node': 20.19.9 + + '@rushstack/terminal@0.15.2(@types/node@20.19.9)': + dependencies: + '@rushstack/node-core-library': 5.13.0(@types/node@20.19.9) + supports-color: 8.1.1 + optionalDependencies: + '@types/node': 20.19.9 + + '@rushstack/ts-command-line@4.23.7(@types/node@20.19.9)': + dependencies: + '@rushstack/terminal': 0.15.2(@types/node@20.19.9) + '@types/argparse': 1.0.38 + argparse: 1.0.10 + string-argv: 0.3.2 + transitivePeerDependencies: + - '@types/node' + + '@sec-ant/readable-stream@0.4.1': {} + + '@selderee/plugin-htmlparser2@0.11.0': + dependencies: + domhandler: 5.0.3 + selderee: 0.11.0 + + '@sentry-internal/tracing@7.112.2': + dependencies: + '@sentry/core': 7.112.2 + '@sentry/types': 7.112.2 + '@sentry/utils': 7.112.2 + + '@sentry/core@7.112.2': + dependencies: + '@sentry/types': 7.112.2 + '@sentry/utils': 7.112.2 + + '@sentry/integrations@7.112.2': + dependencies: + '@sentry/core': 7.112.2 + '@sentry/types': 7.112.2 + '@sentry/utils': 7.112.2 + localforage: 1.10.0 + + '@sentry/node@7.112.2': + dependencies: + '@sentry-internal/tracing': 7.112.2 + '@sentry/core': 7.112.2 + '@sentry/integrations': 7.112.2 + '@sentry/types': 7.112.2 + '@sentry/utils': 7.112.2 + + '@sentry/types@7.112.2': {} + + '@sentry/utils@7.112.2': + dependencies: + '@sentry/types': 7.112.2 + + '@simov/deep-extend@1.0.0': {} + + '@sindresorhus/is@4.6.0': {} + + '@sindresorhus/merge-streams@4.0.0': {} + + '@sindresorhus/slugify@1.1.0': + dependencies: + '@sindresorhus/transliterate': 0.1.2 + escape-string-regexp: 4.0.0 + + '@sindresorhus/transliterate@0.1.2': + dependencies: + escape-string-regexp: 2.0.0 + lodash.deburr: 4.1.0 + + '@smithy/abort-controller@4.0.5': + dependencies: + '@smithy/types': 4.3.2 + tslib: 2.8.1 + + '@smithy/chunked-blob-reader-native@4.0.0': + dependencies: + '@smithy/util-base64': 4.0.0 + tslib: 2.8.1 + + '@smithy/chunked-blob-reader@5.0.0': + dependencies: + tslib: 2.8.1 + + '@smithy/config-resolver@4.1.5': + dependencies: + '@smithy/node-config-provider': 4.1.4 + '@smithy/types': 4.3.2 + '@smithy/util-config-provider': 4.0.0 + '@smithy/util-middleware': 4.0.5 + tslib: 2.8.1 + + '@smithy/core@3.8.0': + dependencies: + '@smithy/middleware-serde': 4.0.9 + '@smithy/protocol-http': 5.1.3 + '@smithy/types': 4.3.2 + '@smithy/util-base64': 4.0.0 + '@smithy/util-body-length-browser': 4.0.0 + '@smithy/util-middleware': 4.0.5 + '@smithy/util-stream': 4.2.4 + '@smithy/util-utf8': 4.0.0 + '@types/uuid': 9.0.8 + tslib: 2.8.1 + uuid: 9.0.1 + + '@smithy/credential-provider-imds@4.0.7': + dependencies: + '@smithy/node-config-provider': 4.1.4 + '@smithy/property-provider': 4.0.5 + '@smithy/types': 4.3.2 + '@smithy/url-parser': 4.0.5 + tslib: 2.8.1 + + '@smithy/eventstream-codec@4.0.5': + dependencies: + '@aws-crypto/crc32': 5.2.0 + '@smithy/types': 4.3.2 + '@smithy/util-hex-encoding': 4.0.0 + tslib: 2.8.1 + + '@smithy/eventstream-serde-browser@4.0.5': + dependencies: + '@smithy/eventstream-serde-universal': 4.0.5 + '@smithy/types': 4.3.2 + tslib: 2.8.1 + + '@smithy/eventstream-serde-config-resolver@4.1.3': + dependencies: + '@smithy/types': 4.3.2 + tslib: 2.8.1 + + '@smithy/eventstream-serde-node@4.0.5': + dependencies: + '@smithy/eventstream-serde-universal': 4.0.5 + '@smithy/types': 4.3.2 + tslib: 2.8.1 + + '@smithy/eventstream-serde-universal@4.0.5': + dependencies: + '@smithy/eventstream-codec': 4.0.5 + '@smithy/types': 4.3.2 + tslib: 2.8.1 + + '@smithy/fetch-http-handler@5.1.1': + dependencies: + '@smithy/protocol-http': 5.1.3 + '@smithy/querystring-builder': 4.0.5 + '@smithy/types': 4.3.2 + '@smithy/util-base64': 4.0.0 + tslib: 2.8.1 + + '@smithy/hash-blob-browser@4.0.5': + dependencies: + '@smithy/chunked-blob-reader': 5.0.0 + '@smithy/chunked-blob-reader-native': 4.0.0 + '@smithy/types': 4.3.2 + tslib: 2.8.1 + + '@smithy/hash-node@4.0.5': + dependencies: + '@smithy/types': 4.3.2 + '@smithy/util-buffer-from': 4.0.0 + '@smithy/util-utf8': 4.0.0 + tslib: 2.8.1 + + '@smithy/hash-stream-node@4.0.5': + dependencies: + '@smithy/types': 4.3.2 + '@smithy/util-utf8': 4.0.0 + tslib: 2.8.1 + + '@smithy/invalid-dependency@4.0.5': + dependencies: + '@smithy/types': 4.3.2 + tslib: 2.8.1 + + '@smithy/is-array-buffer@2.2.0': + dependencies: + tslib: 2.8.1 + + '@smithy/is-array-buffer@4.0.0': + dependencies: + tslib: 2.8.1 + + '@smithy/md5-js@4.0.5': + dependencies: + '@smithy/types': 4.3.2 + '@smithy/util-utf8': 4.0.0 + tslib: 2.8.1 + + '@smithy/middleware-content-length@4.0.5': + dependencies: + '@smithy/protocol-http': 5.1.3 + '@smithy/types': 4.3.2 + tslib: 2.8.1 + + '@smithy/middleware-endpoint@4.1.18': + dependencies: + '@smithy/core': 3.8.0 + '@smithy/middleware-serde': 4.0.9 + '@smithy/node-config-provider': 4.1.4 + '@smithy/shared-ini-file-loader': 4.0.5 + '@smithy/types': 4.3.2 + '@smithy/url-parser': 4.0.5 + '@smithy/util-middleware': 4.0.5 + tslib: 2.8.1 + + '@smithy/middleware-retry@4.1.19': + dependencies: + '@smithy/node-config-provider': 4.1.4 + '@smithy/protocol-http': 5.1.3 + '@smithy/service-error-classification': 4.0.7 + '@smithy/smithy-client': 4.4.10 + '@smithy/types': 4.3.2 + '@smithy/util-middleware': 4.0.5 + '@smithy/util-retry': 4.0.7 + '@types/uuid': 9.0.8 + tslib: 2.8.1 + uuid: 9.0.1 + + '@smithy/middleware-serde@4.0.9': + dependencies: + '@smithy/protocol-http': 5.1.3 + '@smithy/types': 4.3.2 + tslib: 2.8.1 + + '@smithy/middleware-stack@4.0.5': + dependencies: + '@smithy/types': 4.3.2 + tslib: 2.8.1 + + '@smithy/node-config-provider@4.1.4': + dependencies: + '@smithy/property-provider': 4.0.5 + '@smithy/shared-ini-file-loader': 4.0.5 + '@smithy/types': 4.3.2 + tslib: 2.8.1 + + '@smithy/node-http-handler@4.1.1': + dependencies: + '@smithy/abort-controller': 4.0.5 + '@smithy/protocol-http': 5.1.3 + '@smithy/querystring-builder': 4.0.5 + '@smithy/types': 4.3.2 + tslib: 2.8.1 + + '@smithy/property-provider@4.0.5': + dependencies: + '@smithy/types': 4.3.2 + tslib: 2.8.1 + + '@smithy/protocol-http@5.1.3': + dependencies: + '@smithy/types': 4.3.2 + tslib: 2.8.1 + + '@smithy/querystring-builder@4.0.5': + dependencies: + '@smithy/types': 4.3.2 + '@smithy/util-uri-escape': 4.0.0 + tslib: 2.8.1 + + '@smithy/querystring-parser@4.0.5': + dependencies: + '@smithy/types': 4.3.2 + tslib: 2.8.1 + + '@smithy/service-error-classification@4.0.7': + dependencies: + '@smithy/types': 4.3.2 + + '@smithy/shared-ini-file-loader@4.0.5': + dependencies: + '@smithy/types': 4.3.2 + tslib: 2.8.1 + + '@smithy/signature-v4@5.1.3': + dependencies: + '@smithy/is-array-buffer': 4.0.0 + '@smithy/protocol-http': 5.1.3 + '@smithy/types': 4.3.2 + '@smithy/util-hex-encoding': 4.0.0 + '@smithy/util-middleware': 4.0.5 + '@smithy/util-uri-escape': 4.0.0 + '@smithy/util-utf8': 4.0.0 + tslib: 2.8.1 + + '@smithy/smithy-client@4.4.10': + dependencies: + '@smithy/core': 3.8.0 + '@smithy/middleware-endpoint': 4.1.18 + '@smithy/middleware-stack': 4.0.5 + '@smithy/protocol-http': 5.1.3 + '@smithy/types': 4.3.2 + '@smithy/util-stream': 4.2.4 + tslib: 2.8.1 + + '@smithy/types@4.3.2': + dependencies: + tslib: 2.8.1 + + '@smithy/url-parser@4.0.5': + dependencies: + '@smithy/querystring-parser': 4.0.5 + '@smithy/types': 4.3.2 + tslib: 2.8.1 + + '@smithy/util-base64@4.0.0': + dependencies: + '@smithy/util-buffer-from': 4.0.0 + '@smithy/util-utf8': 4.0.0 + tslib: 2.8.1 + + '@smithy/util-body-length-browser@4.0.0': + dependencies: + tslib: 2.8.1 + + '@smithy/util-body-length-node@4.0.0': + dependencies: + tslib: 2.8.1 + + '@smithy/util-buffer-from@2.2.0': + dependencies: + '@smithy/is-array-buffer': 2.2.0 + tslib: 2.8.1 + + '@smithy/util-buffer-from@4.0.0': + dependencies: + '@smithy/is-array-buffer': 4.0.0 + tslib: 2.8.1 + + '@smithy/util-config-provider@4.0.0': + dependencies: + tslib: 2.8.1 + + '@smithy/util-defaults-mode-browser@4.0.26': + dependencies: + '@smithy/property-provider': 4.0.5 + '@smithy/smithy-client': 4.4.10 + '@smithy/types': 4.3.2 + bowser: 2.11.0 + tslib: 2.8.1 + + '@smithy/util-defaults-mode-node@4.0.26': + dependencies: + '@smithy/config-resolver': 4.1.5 + '@smithy/credential-provider-imds': 4.0.7 + '@smithy/node-config-provider': 4.1.4 + '@smithy/property-provider': 4.0.5 + '@smithy/smithy-client': 4.4.10 + '@smithy/types': 4.3.2 + tslib: 2.8.1 + + '@smithy/util-endpoints@3.0.7': + dependencies: + '@smithy/node-config-provider': 4.1.4 + '@smithy/types': 4.3.2 + tslib: 2.8.1 + + '@smithy/util-hex-encoding@4.0.0': + dependencies: + tslib: 2.8.1 + + '@smithy/util-middleware@4.0.5': + dependencies: + '@smithy/types': 4.3.2 + tslib: 2.8.1 + + '@smithy/util-retry@4.0.7': + dependencies: + '@smithy/service-error-classification': 4.0.7 + '@smithy/types': 4.3.2 + tslib: 2.8.1 + + '@smithy/util-stream@4.2.4': + dependencies: + '@smithy/fetch-http-handler': 5.1.1 + '@smithy/node-http-handler': 4.1.1 + '@smithy/types': 4.3.2 + '@smithy/util-base64': 4.0.0 + '@smithy/util-buffer-from': 4.0.0 + '@smithy/util-hex-encoding': 4.0.0 + '@smithy/util-utf8': 4.0.0 + tslib: 2.8.1 + + '@smithy/util-uri-escape@4.0.0': + dependencies: + tslib: 2.8.1 + + '@smithy/util-utf8@2.3.0': + dependencies: + '@smithy/util-buffer-from': 2.2.0 + tslib: 2.8.1 + + '@smithy/util-utf8@4.0.0': + dependencies: + '@smithy/util-buffer-from': 4.0.0 + tslib: 2.8.1 + + '@smithy/util-waiter@4.0.7': + dependencies: + '@smithy/abort-controller': 4.0.5 + '@smithy/types': 4.3.2 + tslib: 2.8.1 + + '@strapi/admin@5.21.0(@babel/runtime@7.28.2)(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.11.2)(@codemirror/lint@6.8.5)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/theme-one-dark@6.1.3)(@codemirror/view@6.38.1)(@strapi/data-transfer@5.21.0(@types/node@20.19.9)(pg@8.8.0)(typescript@5.4.4))(@types/hoist-non-react-statics@3.3.7(@types/react@18.3.23))(@types/node@20.19.9)(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(codemirror@5.65.19)(debug@4.3.4)(pg@8.8.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@6.30.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1))': + dependencies: + '@casl/ability': 6.5.0 + '@internationalized/date': 3.5.4 + '@radix-ui/react-context': 1.0.1(@types/react@18.3.23)(react@18.3.1) + '@radix-ui/react-toolbar': 1.0.4(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@reduxjs/toolkit': 1.9.7(react-redux@8.1.3(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(redux@4.2.1))(react@18.3.1) + '@strapi/data-transfer': 5.21.0(@types/node@20.19.9)(pg@8.8.0)(typescript@5.9.2) + '@strapi/design-system': 2.0.0-rc.29(@babel/runtime@7.28.2)(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.11.2)(@codemirror/lint@6.8.5)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/theme-one-dark@6.1.3)(@codemirror/view@6.38.1)(@strapi/icons@2.0.0-rc.29(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)))(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(codemirror@5.65.19)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) + '@strapi/icons': 2.0.0-rc.29(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) + '@strapi/permissions': 5.21.0 + '@strapi/types': 5.21.0(@types/node@20.19.9)(pg@8.8.0)(typescript@5.9.2) + '@strapi/typescript-utils': 5.21.0 + '@strapi/utils': 5.21.0 + '@testing-library/dom': 10.1.0 + '@testing-library/react': 15.0.7(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@testing-library/user-event': 14.5.2(@testing-library/dom@10.1.0) + axios: 1.8.4(debug@4.3.4) + bcryptjs: 2.4.3 + boxen: 5.1.2 + chalk: 4.1.2 + codemirror5: codemirror@5.65.19 + cross-env: 7.0.3 + date-fns: 2.30.0 + execa: 5.1.1 + fast-deep-equal: 3.1.3 + formik: 2.4.5(@types/react@18.3.23)(react@18.3.1) + fractional-indexing: 3.2.0 + fs-extra: 11.2.0 + highlight.js: 10.7.3 + immer: 9.0.21 + inquirer: 8.2.5 + invariant: 2.2.4 + is-localhost-ip: 2.0.0 + json-logic-js: 2.0.5 + jsonwebtoken: 9.0.0 + koa: 2.16.1 + koa-compose: 4.1.0 + koa-passport: 6.0.0 + koa-static: 5.0.0 + koa2-ratelimit: 1.1.3 + lodash: 4.17.21 + ora: 5.4.1 + p-map: 4.0.0 + passport-local: 1.0.0 + pluralize: 8.0.0 + punycode: 2.3.1 + qs: 6.11.1 + react: 18.3.1 + react-dnd: 16.0.1(@types/hoist-non-react-statics@3.3.7(@types/react@18.3.23))(@types/node@20.19.9)(@types/react@18.3.23)(react@18.3.1) + react-dnd-html5-backend: 16.0.1 + react-dom: 18.3.1(react@18.3.1) + react-intl: 6.6.2(react@18.3.1)(typescript@5.4.4) + react-is: 18.3.1 + react-query: 3.39.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react-redux: 8.1.3(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(redux@4.2.1) + react-router-dom: 6.30.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react-select: 5.8.0(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react-window: 1.8.10(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rimraf: 5.0.5 + sanitize-html: 2.13.0 + scheduler: 0.23.0 + semver: 7.5.4 + sift: 16.0.1 + styled-components: 6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + typescript: 5.4.4 + use-context-selector: 1.4.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.0) + yup: 0.32.9 + zod: 3.25.67 + transitivePeerDependencies: + - '@babel/runtime' + - '@codemirror/autocomplete' + - '@codemirror/language' + - '@codemirror/lint' + - '@codemirror/search' + - '@codemirror/state' + - '@codemirror/theme-one-dark' + - '@codemirror/view' + - '@types/hoist-non-react-statics' + - '@types/node' + - '@types/react' + - '@types/react-dom' + - better-sqlite3 + - codemirror + - debug + - mongoose + - mysql + - mysql2 + - pg + - pg-native + - react-native + - redis + - redux + - sequelize + - sqlite3 + - supports-color + - tedious + + '@strapi/cloud-cli@5.21.0': + dependencies: + '@strapi/utils': 5.21.0 + axios: 1.8.4(debug@4.3.4) + boxen: 5.1.2 + chalk: 4.1.2 + cli-progress: 3.12.0 + commander: 8.3.0 + eventsource: 2.0.2 + fast-safe-stringify: 2.1.1 + fs-extra: 11.2.0 + inquirer: 8.2.5 + jsonwebtoken: 9.0.0 + jwks-rsa: 3.1.0 + lodash: 4.17.21 + minimatch: 9.0.3 + open: 8.4.0 + ora: 5.4.1 + pkg-up: 3.1.0 + tar: 6.2.1 + xdg-app-paths: 8.3.0 + yup: 0.32.9 + transitivePeerDependencies: + - debug + - supports-color + + '@strapi/content-manager@5.21.0(09a34515f7266fe9956ed4c11e0f16ba)': + dependencies: + '@dnd-kit/core': 6.3.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@dnd-kit/sortable': 10.0.0(@dnd-kit/core@6.3.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1) + '@dnd-kit/utilities': 3.2.2(react@18.3.1) + '@radix-ui/react-toolbar': 1.0.4(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@reduxjs/toolkit': 1.9.7(react-redux@8.1.3(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(redux@4.2.1))(react@18.3.1) + '@sindresorhus/slugify': 1.1.0 + '@strapi/admin': 5.21.0(@babel/runtime@7.28.2)(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.11.2)(@codemirror/lint@6.8.5)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/theme-one-dark@6.1.3)(@codemirror/view@6.38.1)(@strapi/data-transfer@5.21.0(@types/node@20.19.9)(pg@8.8.0)(typescript@5.4.4))(@types/hoist-non-react-statics@3.3.7(@types/react@18.3.23))(@types/node@20.19.9)(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(codemirror@5.65.19)(debug@4.3.4)(pg@8.8.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@6.30.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) + '@strapi/design-system': 2.0.0-rc.29(@babel/runtime@7.28.2)(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.11.2)(@codemirror/lint@6.8.5)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/theme-one-dark@6.1.3)(@codemirror/view@6.38.1)(@strapi/icons@2.0.0-rc.29(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)))(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(codemirror@5.65.19)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) + '@strapi/icons': 2.0.0-rc.29(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) + '@strapi/types': 5.21.0(@types/node@20.19.9)(pg@8.8.0)(typescript@5.9.2) + '@strapi/utils': 5.21.0 + codemirror5: codemirror@5.65.19 + date-fns: 2.30.0 + fractional-indexing: 3.2.0 + highlight.js: 10.7.3 + immer: 9.0.21 + koa: 2.16.1 + lodash: 4.17.21 + markdown-it: 13.0.2 + markdown-it-abbr: 1.0.4 + markdown-it-container: 3.0.0 + markdown-it-deflist: 2.1.0 + markdown-it-emoji: 2.0.2 + markdown-it-footnote: 3.0.3 + markdown-it-ins: 3.0.1 + markdown-it-mark: 3.0.1 + markdown-it-sub: 1.0.0 + markdown-it-sup: 1.0.0 + prismjs: 1.30.0 + qs: 6.11.1 + react: 18.3.1 + react-dnd: 16.0.1(@types/hoist-non-react-statics@3.3.7(@types/react@18.3.23))(@types/node@20.19.9)(@types/react@18.3.23)(react@18.3.1) + react-dnd-html5-backend: 16.0.1 + react-dom: 18.3.1(react@18.3.1) + react-helmet: 6.1.0(react@18.3.1) + react-intl: 6.6.2(react@18.3.1)(typescript@5.9.2) + react-query: 3.39.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react-redux: 8.1.3(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(redux@4.2.1) + react-router-dom: 6.30.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react-window: 1.8.10(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + sanitize-html: 2.13.0 + slate: 0.94.1 + slate-history: 0.93.0(slate@0.94.1) + slate-react: 0.98.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.94.1) + styled-components: 6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + yup: 0.32.9 + transitivePeerDependencies: + - '@babel/runtime' + - '@codemirror/autocomplete' + - '@codemirror/language' + - '@codemirror/lint' + - '@codemirror/search' + - '@codemirror/state' + - '@codemirror/theme-one-dark' + - '@codemirror/view' + - '@types/hoist-non-react-statics' + - '@types/node' + - '@types/react' + - '@types/react-dom' + - better-sqlite3 + - codemirror + - mysql + - mysql2 + - pg + - pg-native + - react-native + - redux + - sqlite3 + - supports-color + - tedious + - typescript + + '@strapi/content-releases@5.21.0(7e0583346370238bee0a571c4a2a8918)': + dependencies: + '@reduxjs/toolkit': 1.9.7(react-redux@8.1.3(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(redux@4.2.1))(react@18.3.1) + '@strapi/admin': 5.21.0(@babel/runtime@7.28.2)(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.11.2)(@codemirror/lint@6.8.5)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/theme-one-dark@6.1.3)(@codemirror/view@6.38.1)(@strapi/data-transfer@5.21.0(@types/node@20.19.9)(pg@8.8.0)(typescript@5.4.4))(@types/hoist-non-react-statics@3.3.7(@types/react@18.3.23))(@types/node@20.19.9)(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(codemirror@5.65.19)(debug@4.3.4)(pg@8.8.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@6.30.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) + '@strapi/content-manager': 5.21.0(09a34515f7266fe9956ed4c11e0f16ba) + '@strapi/database': 5.21.0(@types/node@20.19.9)(pg@8.8.0) + '@strapi/design-system': 2.0.0-rc.29(@babel/runtime@7.28.2)(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.11.2)(@codemirror/lint@6.8.5)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/theme-one-dark@6.1.3)(@codemirror/view@6.38.1)(@strapi/icons@2.0.0-rc.29(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)))(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(codemirror@5.65.19)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) + '@strapi/icons': 2.0.0-rc.29(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) + '@strapi/types': 5.21.0(@types/node@20.19.9)(pg@8.8.0)(typescript@5.9.2) + '@strapi/utils': 5.21.0 + date-fns: 2.30.0 + date-fns-tz: 2.0.1(date-fns@2.30.0) + formik: 2.4.5(@types/react@18.3.23)(react@18.3.1) + lodash: 4.17.21 + qs: 6.11.1 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + react-intl: 6.6.2(react@18.3.1)(typescript@5.4.4) + react-redux: 8.1.3(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(redux@4.2.1) + react-router-dom: 6.30.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + styled-components: 6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + yup: 0.32.9 + transitivePeerDependencies: + - '@babel/runtime' + - '@codemirror/autocomplete' + - '@codemirror/language' + - '@codemirror/lint' + - '@codemirror/search' + - '@codemirror/state' + - '@codemirror/theme-one-dark' + - '@codemirror/view' + - '@types/node' + - '@types/react' + - '@types/react-dom' + - better-sqlite3 + - codemirror + - mysql + - mysql2 + - pg + - pg-native + - react-native + - redux + - sqlite3 + - supports-color + - tedious + - typescript + + '@strapi/content-type-builder@5.21.0(ea66cbd5889d9c139873f4fdfbc7149b)': + dependencies: + '@dnd-kit/core': 6.3.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@dnd-kit/modifiers': 9.0.0(@dnd-kit/core@6.3.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1) + '@dnd-kit/sortable': 10.0.0(@dnd-kit/core@6.3.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1) + '@dnd-kit/utilities': 3.2.2(react@18.3.1) + '@reduxjs/toolkit': 1.9.7(react-redux@8.1.3(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(redux@4.2.1))(react@18.3.1) + '@sindresorhus/slugify': 1.1.0 + '@strapi/admin': 5.21.0(@babel/runtime@7.28.2)(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.11.2)(@codemirror/lint@6.8.5)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/theme-one-dark@6.1.3)(@codemirror/view@6.38.1)(@strapi/data-transfer@5.21.0(@types/node@20.19.9)(pg@8.8.0)(typescript@5.4.4))(@types/hoist-non-react-statics@3.3.7(@types/react@18.3.23))(@types/node@20.19.9)(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(codemirror@5.65.19)(debug@4.3.4)(pg@8.8.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@6.30.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) + '@strapi/design-system': 2.0.0-rc.29(@babel/runtime@7.28.2)(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.11.2)(@codemirror/lint@6.8.5)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/theme-one-dark@6.1.3)(@codemirror/view@6.38.1)(@strapi/icons@2.0.0-rc.29(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)))(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(codemirror@5.65.19)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) + '@strapi/generators': 5.21.0 + '@strapi/icons': 2.0.0-rc.29(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) + '@strapi/utils': 5.21.0 + date-fns: 2.30.0 + fs-extra: 11.2.0 + immer: 9.0.21 + lodash: 4.17.21 + pluralize: 8.0.0 + qs: 6.11.1 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + react-intl: 6.6.2(react@18.3.1)(typescript@5.4.4) + react-redux: 8.1.3(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(redux@4.2.1) + react-router-dom: 6.30.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + styled-components: 6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + yup: 0.32.9 + zod: 3.25.67 + transitivePeerDependencies: + - '@babel/runtime' + - '@codemirror/autocomplete' + - '@codemirror/language' + - '@codemirror/lint' + - '@codemirror/search' + - '@codemirror/state' + - '@codemirror/theme-one-dark' + - '@codemirror/view' + - '@types/react' + - '@types/react-dom' + - codemirror + - react-native + - redux + - typescript + + '@strapi/core@5.21.0(@babel/runtime@7.28.2)(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.11.2)(@codemirror/lint@6.8.5)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/theme-one-dark@6.1.3)(@codemirror/view@6.38.1)(@strapi/data-transfer@5.21.0(@types/node@20.19.9)(pg@8.8.0)(typescript@5.4.4))(@types/hoist-non-react-statics@3.3.7(@types/react@18.3.23))(@types/node@20.19.9)(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(codemirror@5.65.19)(pg@8.8.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@6.30.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1))': + dependencies: + '@koa/cors': 5.0.0 + '@koa/router': 12.0.2 + '@paralleldrive/cuid2': 2.2.2 + '@strapi/admin': 5.21.0(@babel/runtime@7.28.2)(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.11.2)(@codemirror/lint@6.8.5)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/theme-one-dark@6.1.3)(@codemirror/view@6.38.1)(@strapi/data-transfer@5.21.0(@types/node@20.19.9)(pg@8.8.0)(typescript@5.4.4))(@types/hoist-non-react-statics@3.3.7(@types/react@18.3.23))(@types/node@20.19.9)(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(codemirror@5.65.19)(debug@4.3.4)(pg@8.8.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@6.30.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) + '@strapi/database': 5.21.0(@types/node@20.19.9)(pg@8.8.0) + '@strapi/generators': 5.21.0 + '@strapi/logger': 5.21.0 + '@strapi/permissions': 5.21.0 + '@strapi/types': 5.21.0(@types/node@20.19.9)(pg@8.8.0)(typescript@5.9.2) + '@strapi/typescript-utils': 5.21.0 + '@strapi/utils': 5.21.0 + bcryptjs: 2.4.3 + boxen: 5.1.2 + chalk: 4.1.2 + ci-info: 4.0.0 + cli-table3: 0.6.2 + commander: 8.3.0 + configstore: 5.0.1 + copyfiles: 2.4.1 + debug: 4.3.4 + delegates: 1.0.0 + dotenv: 16.4.5 + execa: 5.1.1 + fs-extra: 11.2.0 + glob: 10.3.10 + global-agent: 3.0.0 + http-errors: 2.0.0 + inquirer: 8.2.5 + is-docker: 2.2.1 + json-logic-js: 2.0.5 + koa: 2.16.1 + koa-body: 6.0.1 + koa-compose: 4.1.0 + koa-compress: 5.1.1 + koa-favicon: 2.1.0 + koa-helmet: 7.0.2 + koa-ip: 2.1.3 + koa-session: 6.4.0 + koa-static: 5.0.0 + lodash: 4.17.21 + mime-types: 2.1.35 + node-schedule: 2.1.1 + open: 8.4.0 + ora: 5.4.1 + package-json: 7.0.0 + pkg-up: 3.1.0 + qs: 6.11.1 + resolve.exports: 2.0.2 + semver: 7.5.4 + statuses: 2.0.1 + typescript: 5.4.4 + undici: 6.21.2 + yup: 0.32.9 + zod: 3.25.67 + transitivePeerDependencies: + - '@babel/runtime' + - '@codemirror/autocomplete' + - '@codemirror/language' + - '@codemirror/lint' + - '@codemirror/search' + - '@codemirror/state' + - '@codemirror/theme-one-dark' + - '@codemirror/view' + - '@strapi/data-transfer' + - '@types/hoist-non-react-statics' + - '@types/node' + - '@types/react' + - '@types/react-dom' + - better-sqlite3 + - codemirror + - mongoose + - mysql + - mysql2 + - pg + - pg-native + - react + - react-dom + - react-native + - react-router-dom + - redis + - redux + - sequelize + - sqlite3 + - styled-components + - supports-color + - tedious + + '@strapi/data-transfer@5.21.0(@types/node@20.19.9)(pg@8.8.0)(typescript@5.9.2)': + dependencies: + '@strapi/logger': 5.21.0 + '@strapi/types': 5.21.0(@types/node@20.19.9)(pg@8.8.0)(typescript@5.9.2) + '@strapi/utils': 5.21.0 + chalk: 4.1.2 + cli-table3: 0.6.5 + commander: 8.3.0 + fs-extra: 11.2.0 + inquirer: 8.2.5 + lodash: 4.17.21 + ora: 5.4.1 + resolve-cwd: 3.0.0 + semver: 7.5.4 + stream-chain: 2.2.5 + stream-json: 1.8.0 + tar: 6.2.1 + tar-stream: 2.2.0 + ws: 8.17.1 + transitivePeerDependencies: + - '@types/node' + - better-sqlite3 + - bufferutil + - mysql + - mysql2 + - pg + - pg-native + - sqlite3 + - supports-color + - tedious + - typescript + - utf-8-validate + + '@strapi/database@5.21.0(@types/node@20.19.9)(pg@8.8.0)': + dependencies: + '@paralleldrive/cuid2': 2.2.2 + '@strapi/utils': 5.21.0 + ajv: 8.16.0 + date-fns: 2.30.0 + debug: 4.3.4 + fs-extra: 11.2.0 + knex: 3.0.1(pg@8.8.0) + lodash: 4.17.21 + semver: 7.5.4 + umzug: 3.8.1(@types/node@20.19.9) + transitivePeerDependencies: + - '@types/node' + - better-sqlite3 + - mysql + - mysql2 + - pg + - pg-native + - sqlite3 + - supports-color + - tedious + + '@strapi/design-system@2.0.0-rc.29(@babel/runtime@7.28.2)(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.11.2)(@codemirror/lint@6.8.5)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/theme-one-dark@6.1.3)(@codemirror/view@6.38.1)(@strapi/icons@2.0.0-rc.29(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)))(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(codemirror@5.65.19)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1))': + dependencies: + '@codemirror/lang-json': 6.0.1 + '@floating-ui/react-dom': 2.1.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@internationalized/date': 3.5.4 + '@internationalized/number': 3.5.3 + '@radix-ui/react-accordion': 1.1.2(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-alert-dialog': 1.0.5(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-avatar': 1.0.4(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-checkbox': 1.0.4(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-dialog': 1.0.5(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-dismissable-layer': 1.0.5(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-dropdown-menu': 2.0.6(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(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.23)(react@18.3.1) + '@radix-ui/react-focus-scope': 1.0.4(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-popover': 1.0.7(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-progress': 1.0.3(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-radio-group': 1.1.3(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-scroll-area': 1.0.5(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-switch': 1.0.3(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-tabs': 1.0.4(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-tooltip': 1.0.7(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(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.23)(react@18.3.1) + '@strapi/icons': 2.0.0-rc.29(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) + '@strapi/ui-primitives': 2.0.0-rc.29(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@uiw/react-codemirror': 4.22.2(@babel/runtime@7.28.2)(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.11.2)(@codemirror/lint@6.8.5)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/theme-one-dark@6.1.3)(@codemirror/view@6.38.1)(codemirror@5.65.19)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + lodash: 4.17.21 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + react-remove-scroll: 2.5.10(@types/react@18.3.23)(react@18.3.1) + styled-components: 6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + transitivePeerDependencies: + - '@babel/runtime' + - '@codemirror/autocomplete' + - '@codemirror/language' + - '@codemirror/lint' + - '@codemirror/search' + - '@codemirror/state' + - '@codemirror/theme-one-dark' + - '@codemirror/view' + - '@types/react' + - '@types/react-dom' + - codemirror + + '@strapi/email@5.21.0(d316550ab1256976168aaec8ae01cc55)': + dependencies: + '@strapi/admin': 5.21.0(@babel/runtime@7.28.2)(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.11.2)(@codemirror/lint@6.8.5)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/theme-one-dark@6.1.3)(@codemirror/view@6.38.1)(@strapi/data-transfer@5.21.0(@types/node@20.19.9)(pg@8.8.0)(typescript@5.4.4))(@types/hoist-non-react-statics@3.3.7(@types/react@18.3.23))(@types/node@20.19.9)(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(codemirror@5.65.19)(debug@4.3.4)(pg@8.8.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@6.30.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) + '@strapi/design-system': 2.0.0-rc.29(@babel/runtime@7.28.2)(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.11.2)(@codemirror/lint@6.8.5)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/theme-one-dark@6.1.3)(@codemirror/view@6.38.1)(@strapi/icons@2.0.0-rc.29(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)))(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(codemirror@5.65.19)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) + '@strapi/icons': 2.0.0-rc.29(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) + '@strapi/provider-email-sendmail': 5.21.0 + '@strapi/utils': 5.21.0 + koa: 2.16.1 + koa2-ratelimit: 1.1.3 + lodash: 4.17.21 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + react-intl: 6.6.2(react@18.3.1)(typescript@5.4.4) + react-query: 3.39.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react-router-dom: 6.30.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + styled-components: 6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + yup: 0.32.9 + zod: 3.25.67 + transitivePeerDependencies: + - '@babel/runtime' + - '@codemirror/autocomplete' + - '@codemirror/language' + - '@codemirror/lint' + - '@codemirror/search' + - '@codemirror/state' + - '@codemirror/theme-one-dark' + - '@codemirror/view' + - '@types/react' + - '@types/react-dom' + - codemirror + - mongoose + - react-native + - redis + - sequelize + - typescript + + '@strapi/generators@5.21.0': + dependencies: + '@sindresorhus/slugify': 1.1.0 + '@strapi/typescript-utils': 5.21.0 + '@strapi/utils': 5.21.0 + chalk: 4.1.2 + copyfiles: 2.4.1 + fs-extra: 11.2.0 + handlebars: 4.7.7 + plop: 4.0.1 + pluralize: 8.0.0 + + '@strapi/i18n@5.21.0(9e4d6fe568819ba998a3e1cb511b79c4)': + dependencies: + '@reduxjs/toolkit': 1.9.7(react-redux@8.1.3(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(redux@4.2.1))(react@18.3.1) + '@strapi/admin': 5.21.0(@babel/runtime@7.28.2)(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.11.2)(@codemirror/lint@6.8.5)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/theme-one-dark@6.1.3)(@codemirror/view@6.38.1)(@strapi/data-transfer@5.21.0(@types/node@20.19.9)(pg@8.8.0)(typescript@5.4.4))(@types/hoist-non-react-statics@3.3.7(@types/react@18.3.23))(@types/node@20.19.9)(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(codemirror@5.65.19)(debug@4.3.4)(pg@8.8.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@6.30.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) + '@strapi/content-manager': 5.21.0(09a34515f7266fe9956ed4c11e0f16ba) + '@strapi/design-system': 2.0.0-rc.29(@babel/runtime@7.28.2)(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.11.2)(@codemirror/lint@6.8.5)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/theme-one-dark@6.1.3)(@codemirror/view@6.38.1)(@strapi/icons@2.0.0-rc.29(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)))(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(codemirror@5.65.19)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) + '@strapi/icons': 2.0.0-rc.29(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) + '@strapi/utils': 5.21.0 + lodash: 4.17.21 + qs: 6.11.1 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + react-intl: 6.6.2(react@18.3.1)(typescript@5.4.4) + react-redux: 8.1.3(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(redux@4.2.1) + react-router-dom: 6.30.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + styled-components: 6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + yup: 0.32.9 + zod: 3.25.67 + transitivePeerDependencies: + - '@babel/runtime' + - '@codemirror/autocomplete' + - '@codemirror/language' + - '@codemirror/lint' + - '@codemirror/search' + - '@codemirror/state' + - '@codemirror/theme-one-dark' + - '@codemirror/view' + - '@types/react' + - '@types/react-dom' + - codemirror + - react-native + - redux + - typescript + + '@strapi/icons@2.0.0-rc.29(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-components@6.1.19(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) + styled-components: 6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + + '@strapi/logger@5.21.0': + dependencies: + lodash: 4.17.21 + winston: 3.10.0 + + '@strapi/openapi@5.21.0': + dependencies: + debug: 4.3.4 + openapi-types: 12.1.3 + zod: 3.25.67 + transitivePeerDependencies: + - supports-color + + '@strapi/pack-up@5.1.0(@swc/helpers@0.5.17)(@types/node@20.19.9)(terser@5.43.1)': + dependencies: + '@vitejs/plugin-react-swc': 3.7.0(@swc/helpers@0.5.17)(vite@5.4.8(@types/node@20.19.9)(terser@5.43.1)) + boxen: 5.1.2 + browserslist-to-esbuild: 1.2.0 + chalk: 4.1.2 + chokidar: 4.0.1 + commander: 8.3.0 + esbuild: 0.20.2 + esbuild-register: 3.5.0(esbuild@0.20.2) + get-latest-version: 5.1.0 + git-url-parse: 13.1.1 + ini: 4.1.2 + ora: 5.4.1 + outdent: 0.8.0 + pkg-up: 3.1.0 + prettier: 3.3.3 + prettier-plugin-packagejson: 2.5.2(prettier@3.3.3) + prompts: 2.4.2 + rxjs: 7.8.1 + typescript: 5.4.4 + vite: 5.4.8(@types/node@20.19.9)(terser@5.43.1) + yup: 0.32.9 + transitivePeerDependencies: + - '@swc/helpers' + - '@types/node' + - debug + - less + - lightningcss + - sass + - sass-embedded + - stylus + - sugarss + - supports-color + - terser + + '@strapi/permissions@5.21.0': + dependencies: + '@casl/ability': 6.5.0 + '@strapi/utils': 5.21.0 + lodash: 4.17.21 + qs: 6.11.1 + sift: 16.0.1 + + '@strapi/plugin-cloud@5.21.0(b78edc8e6032cc93fefd648fba2b1773)': + dependencies: + '@strapi/admin': 5.21.0(@babel/runtime@7.28.2)(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.11.2)(@codemirror/lint@6.8.5)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/theme-one-dark@6.1.3)(@codemirror/view@6.38.1)(@strapi/data-transfer@5.21.0(@types/node@20.19.9)(pg@8.8.0)(typescript@5.4.4))(@types/hoist-non-react-statics@3.3.7(@types/react@18.3.23))(@types/node@20.19.9)(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(codemirror@5.65.19)(debug@4.3.4)(pg@8.8.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@6.30.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) + '@strapi/design-system': 2.0.0-rc.29(@babel/runtime@7.28.2)(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.11.2)(@codemirror/lint@6.8.5)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/theme-one-dark@6.1.3)(@codemirror/view@6.38.1)(@strapi/icons@2.0.0-rc.29(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)))(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(codemirror@5.65.19)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) + '@strapi/icons': 2.0.0-rc.29(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) + '@strapi/strapi': 5.21.0(@babel/runtime@7.28.2)(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.11.2)(@codemirror/lint@6.8.5)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/theme-one-dark@6.1.3)(@codemirror/view@6.38.1)(@swc/helpers@0.5.17)(@types/hoist-non-react-statics@3.3.7(@types/react@18.3.23))(@types/node@20.19.9)(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(codemirror@5.65.19)(esbuild@0.25.8)(koa@2.16.1)(pg@8.8.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@6.30.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(terser@5.43.1)(type-fest@4.41.0) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + react-intl: 6.6.2(react@18.3.1)(typescript@5.9.2) + react-router-dom: 6.30.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + styled-components: 6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + transitivePeerDependencies: + - '@babel/runtime' + - '@codemirror/autocomplete' + - '@codemirror/language' + - '@codemirror/lint' + - '@codemirror/search' + - '@codemirror/state' + - '@codemirror/theme-one-dark' + - '@codemirror/view' + - '@types/react' + - '@types/react-dom' + - codemirror + - typescript + + '@strapi/plugin-sentry@5.21.0(49919b52d571c5aa24a3c5910cc24b78)': + dependencies: + '@sentry/node': 7.112.2 + '@strapi/design-system': 2.0.0-rc.29(@babel/runtime@7.28.2)(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.11.2)(@codemirror/lint@6.8.5)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/theme-one-dark@6.1.3)(@codemirror/view@6.38.1)(@strapi/icons@2.0.0-rc.29(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)))(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(codemirror@5.65.19)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) + '@strapi/icons': 2.0.0-rc.29(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) + '@strapi/strapi': 5.21.0(@babel/runtime@7.28.2)(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.11.2)(@codemirror/lint@6.8.5)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/theme-one-dark@6.1.3)(@codemirror/view@6.38.1)(@swc/helpers@0.5.17)(@types/hoist-non-react-statics@3.3.7(@types/react@18.3.23))(@types/node@20.19.9)(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(codemirror@5.65.19)(esbuild@0.25.8)(koa@2.16.1)(pg@8.8.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@6.30.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(terser@5.43.1)(type-fest@4.41.0) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + react-router-dom: 6.30.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + styled-components: 6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + transitivePeerDependencies: + - '@babel/runtime' + - '@codemirror/autocomplete' + - '@codemirror/language' + - '@codemirror/lint' + - '@codemirror/search' + - '@codemirror/state' + - '@codemirror/theme-one-dark' + - '@codemirror/view' + - '@types/react' + - '@types/react-dom' + - codemirror + + '@strapi/plugin-users-permissions@5.21.0(afbaa5d9706a16fc6f0a3a153d49a5f8)': + dependencies: + '@strapi/design-system': 2.0.0-rc.29(@babel/runtime@7.28.2)(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.11.2)(@codemirror/lint@6.8.5)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/theme-one-dark@6.1.3)(@codemirror/view@6.38.1)(@strapi/icons@2.0.0-rc.29(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)))(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(codemirror@5.65.19)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) + '@strapi/icons': 2.0.0-rc.29(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) + '@strapi/strapi': 5.21.0(@babel/runtime@7.28.2)(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.11.2)(@codemirror/lint@6.8.5)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/theme-one-dark@6.1.3)(@codemirror/view@6.38.1)(@swc/helpers@0.5.17)(@types/hoist-non-react-statics@3.3.7(@types/react@18.3.23))(@types/node@20.19.9)(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(codemirror@5.65.19)(esbuild@0.25.8)(koa@2.16.1)(pg@8.8.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@6.30.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(terser@5.43.1)(type-fest@4.41.0) + '@strapi/utils': 5.21.0 + bcryptjs: 2.4.3 + formik: 2.4.5(@types/react@18.3.23)(react@18.3.1) + grant: 5.4.24 + immer: 9.0.21 + jsonwebtoken: 9.0.0 + jwk-to-pem: 2.0.5 + koa: 2.16.1 + koa2-ratelimit: 1.1.3 + lodash: 4.17.21 + prop-types: 15.8.1 + purest: 4.0.2 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + react-intl: 6.6.2(react@18.3.1)(typescript@5.9.2) + react-query: 3.39.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react-redux: 8.1.3(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(redux@4.2.1) + react-router-dom: 6.30.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + styled-components: 6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + url-join: 4.0.1 + yup: 0.32.9 + zod: 3.25.67 + transitivePeerDependencies: + - '@babel/runtime' + - '@codemirror/autocomplete' + - '@codemirror/language' + - '@codemirror/lint' + - '@codemirror/search' + - '@codemirror/state' + - '@codemirror/theme-one-dark' + - '@codemirror/view' + - '@types/react' + - '@types/react-dom' + - codemirror + - mongoose + - react-native + - redis + - redux + - sequelize + - supports-color + - typescript + + '@strapi/provider-email-amazon-ses@5.21.0': + dependencies: + '@strapi/utils': 5.21.0 + node-ses: 3.0.3 + transitivePeerDependencies: + - supports-color + + '@strapi/provider-email-sendmail@5.21.0': + dependencies: + '@strapi/utils': 5.21.0 + sendmail: 1.6.1 + + '@strapi/provider-upload-local@5.21.0': + dependencies: + '@strapi/utils': 5.21.0 + fs-extra: 11.2.0 + + '@strapi/review-workflows@5.21.0(4e40bc2f75a4b32d3892c0a9596bd2cb)': + dependencies: + '@reduxjs/toolkit': 1.9.7(react-redux@8.1.3(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(redux@4.2.1))(react@18.3.1) + '@strapi/admin': 5.21.0(@babel/runtime@7.28.2)(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.11.2)(@codemirror/lint@6.8.5)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/theme-one-dark@6.1.3)(@codemirror/view@6.38.1)(@strapi/data-transfer@5.21.0(@types/node@20.19.9)(pg@8.8.0)(typescript@5.4.4))(@types/hoist-non-react-statics@3.3.7(@types/react@18.3.23))(@types/node@20.19.9)(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(codemirror@5.65.19)(debug@4.3.4)(pg@8.8.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@6.30.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) + '@strapi/content-manager': 5.21.0(09a34515f7266fe9956ed4c11e0f16ba) + '@strapi/design-system': 2.0.0-rc.29(@babel/runtime@7.28.2)(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.11.2)(@codemirror/lint@6.8.5)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/theme-one-dark@6.1.3)(@codemirror/view@6.38.1)(@strapi/icons@2.0.0-rc.29(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)))(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(codemirror@5.65.19)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) + '@strapi/icons': 2.0.0-rc.29(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) + '@strapi/utils': 5.21.0 + fractional-indexing: 3.2.0 + react: 18.3.1 + react-dnd: 16.0.1(@types/hoist-non-react-statics@3.3.7(@types/react@18.3.23))(@types/node@20.19.9)(@types/react@18.3.23)(react@18.3.1) + react-dnd-html5-backend: 16.0.1 + react-dom: 18.3.1(react@18.3.1) + react-helmet: 6.1.0(react@18.3.1) + react-intl: 6.6.2(react@18.3.1)(typescript@5.4.4) + react-redux: 8.1.3(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(redux@4.2.1) + react-router-dom: 6.30.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + styled-components: 6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + yup: 0.32.9 + transitivePeerDependencies: + - '@babel/runtime' + - '@codemirror/autocomplete' + - '@codemirror/language' + - '@codemirror/lint' + - '@codemirror/search' + - '@codemirror/state' + - '@codemirror/theme-one-dark' + - '@codemirror/view' + - '@types/hoist-non-react-statics' + - '@types/node' + - '@types/react' + - '@types/react-dom' + - codemirror + - react-native + - redux + - typescript + + '@strapi/sdk-plugin@5.3.2(@swc/helpers@0.5.17)(@types/node@20.19.9)(terser@5.43.1)': + dependencies: + '@strapi/pack-up': 5.1.0(@swc/helpers@0.5.17)(@types/node@20.19.9)(terser@5.43.1) + '@types/prompts': 2.4.9 + boxen: 5.1.2 + chalk: 4.1.2 + commander: 12.1.0 + concurrently: 8.2.2 + execa: 9.6.0 + get-latest-version: 5.1.0 + git-url-parse: 13.1.1 + nodemon: 3.1.10 + ora: 5.4.1 + outdent: 0.8.0 + pkg-up: 3.1.0 + prettier: 2.8.8 + typescript: 5.4.4 + yup: 0.32.9 + transitivePeerDependencies: + - '@swc/helpers' + - '@types/node' + - debug + - less + - lightningcss + - sass + - sass-embedded + - stylus + - sugarss + - supports-color + - terser + + '@strapi/strapi@5.21.0(@babel/runtime@7.28.2)(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.11.2)(@codemirror/lint@6.8.5)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/theme-one-dark@6.1.3)(@codemirror/view@6.38.1)(@swc/helpers@0.5.17)(@types/hoist-non-react-statics@3.3.7(@types/react@18.3.23))(@types/node@20.19.9)(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(codemirror@5.65.19)(esbuild@0.25.8)(koa@2.16.1)(pg@8.8.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@6.30.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(terser@5.43.1)(type-fest@4.41.0)': + dependencies: + '@pmmmwh/react-refresh-webpack-plugin': 0.5.15(react-refresh@0.14.0)(type-fest@4.41.0)(webpack-hot-middleware@2.26.1)(webpack@5.101.0(esbuild@0.25.8)) + '@strapi/admin': 5.21.0(@babel/runtime@7.28.2)(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.11.2)(@codemirror/lint@6.8.5)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/theme-one-dark@6.1.3)(@codemirror/view@6.38.1)(@strapi/data-transfer@5.21.0(@types/node@20.19.9)(pg@8.8.0)(typescript@5.4.4))(@types/hoist-non-react-statics@3.3.7(@types/react@18.3.23))(@types/node@20.19.9)(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(codemirror@5.65.19)(debug@4.3.4)(pg@8.8.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@6.30.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) + '@strapi/cloud-cli': 5.21.0 + '@strapi/content-manager': 5.21.0(09a34515f7266fe9956ed4c11e0f16ba) + '@strapi/content-releases': 5.21.0(7e0583346370238bee0a571c4a2a8918) + '@strapi/content-type-builder': 5.21.0(ea66cbd5889d9c139873f4fdfbc7149b) + '@strapi/core': 5.21.0(@babel/runtime@7.28.2)(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.11.2)(@codemirror/lint@6.8.5)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/theme-one-dark@6.1.3)(@codemirror/view@6.38.1)(@strapi/data-transfer@5.21.0(@types/node@20.19.9)(pg@8.8.0)(typescript@5.4.4))(@types/hoist-non-react-statics@3.3.7(@types/react@18.3.23))(@types/node@20.19.9)(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(codemirror@5.65.19)(pg@8.8.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@6.30.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) + '@strapi/data-transfer': 5.21.0(@types/node@20.19.9)(pg@8.8.0)(typescript@5.9.2) + '@strapi/database': 5.21.0(@types/node@20.19.9)(pg@8.8.0) + '@strapi/email': 5.21.0(d316550ab1256976168aaec8ae01cc55) + '@strapi/generators': 5.21.0 + '@strapi/i18n': 5.21.0(9e4d6fe568819ba998a3e1cb511b79c4) + '@strapi/logger': 5.21.0 + '@strapi/openapi': 5.21.0 + '@strapi/permissions': 5.21.0 + '@strapi/review-workflows': 5.21.0(4e40bc2f75a4b32d3892c0a9596bd2cb) + '@strapi/types': 5.21.0(@types/node@20.19.9)(pg@8.8.0)(typescript@5.9.2) + '@strapi/typescript-utils': 5.21.0 + '@strapi/upload': 5.21.0(596c2b01761534af1b520a640e3306bf) + '@strapi/utils': 5.21.0 + '@types/nodemon': 1.19.6 + '@vitejs/plugin-react-swc': 3.6.0(@swc/helpers@0.5.17)(vite@5.4.19(@types/node@20.19.9)(terser@5.43.1)) + boxen: 5.1.2 + browserslist: 4.25.1 + browserslist-to-esbuild: 1.2.0 + chalk: 4.1.2 + chokidar: 3.6.0 + ci-info: 3.8.0 + cli-progress: 3.12.0 + cli-table3: 0.6.5 + commander: 8.3.0 + concurrently: 8.2.2 + copyfiles: 2.4.1 + css-loader: 6.11.0(webpack@5.101.0(esbuild@0.25.8)) + dotenv: 16.4.5 + esbuild-loader: 4.3.0(webpack@5.101.0(esbuild@0.25.8)) + esbuild-register: 3.5.0(esbuild@0.25.8) + execa: 5.1.1 + fork-ts-checker-webpack-plugin: 8.0.0(typescript@5.4.4)(webpack@5.101.0(esbuild@0.25.8)) + fs-extra: 11.2.0 + get-latest-version: 5.1.0 + git-url-parse: 14.0.0 + html-webpack-plugin: 5.6.0(webpack@5.101.0(esbuild@0.25.8)) + inquirer: 8.2.5 + lodash: 4.17.21 + mini-css-extract-plugin: 2.7.7(webpack@5.101.0(esbuild@0.25.8)) + nodemon: 3.0.2 + ora: 5.4.1 + outdent: 0.8.0 + pkg-up: 3.1.0 + prettier: 3.3.3 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + react-refresh: 0.14.0 + react-router-dom: 6.30.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + read-pkg-up: 7.0.1 + resolve-from: 5.0.0 + semver: 7.5.4 + style-loader: 3.3.4(webpack@5.101.0(esbuild@0.25.8)) + styled-components: 6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + typescript: 5.4.4 + vite: 5.4.19(@types/node@20.19.9)(terser@5.43.1) + webpack: 5.101.0(esbuild@0.25.8) + webpack-bundle-analyzer: 4.10.2 + webpack-dev-middleware: 6.1.2(webpack@5.101.0(esbuild@0.25.8)) + webpack-hot-middleware: 2.26.1 + yalc: 1.0.0-pre.53 + yup: 0.32.9 + transitivePeerDependencies: + - '@babel/runtime' + - '@codemirror/autocomplete' + - '@codemirror/language' + - '@codemirror/lint' + - '@codemirror/search' + - '@codemirror/state' + - '@codemirror/theme-one-dark' + - '@codemirror/view' + - '@rspack/core' + - '@swc/core' + - '@swc/helpers' + - '@types/hoist-non-react-statics' + - '@types/node' + - '@types/react' + - '@types/react-dom' + - '@types/webpack' + - better-sqlite3 + - bufferutil + - codemirror + - debug + - esbuild + - koa + - less + - lightningcss + - mongoose + - mysql + - mysql2 + - pg + - pg-native + - react-native + - redis + - redux + - sass + - sass-embedded + - sequelize + - sockjs-client + - sqlite3 + - stylus + - sugarss + - supports-color + - tedious + - terser + - type-fest + - uglify-js + - utf-8-validate + - webpack-cli + - webpack-dev-server + - webpack-plugin-serve + + '@strapi/types@5.21.0(@types/node@20.19.9)(pg@8.8.0)(typescript@5.9.2)': + dependencies: + '@casl/ability': 6.5.0 + '@koa/cors': 5.0.0 + '@koa/router': 12.0.2 + '@strapi/database': 5.21.0(@types/node@20.19.9)(pg@8.8.0) + '@strapi/logger': 5.21.0 + '@strapi/permissions': 5.21.0 + '@strapi/utils': 5.21.0 + commander: 8.3.0 + json-logic-js: 2.0.5 + koa: 2.16.1 + koa-body: 6.0.1 + node-schedule: 2.1.1 + typedoc: 0.25.10(typescript@5.9.2) + typedoc-github-wiki-theme: 1.1.0(typedoc-plugin-markdown@3.17.1(typedoc@0.25.10(typescript@5.9.2)))(typedoc@0.25.10(typescript@5.9.2)) + typedoc-plugin-markdown: 3.17.1(typedoc@0.25.10(typescript@5.9.2)) + zod: 3.25.67 + transitivePeerDependencies: + - '@types/node' + - better-sqlite3 + - mysql + - mysql2 + - pg + - pg-native + - sqlite3 + - supports-color + - tedious + - typescript + + '@strapi/typescript-utils@5.21.0': + dependencies: + chalk: 4.1.2 + cli-table3: 0.6.5 + fs-extra: 11.2.0 + lodash: 4.17.21 + prettier: 3.3.3 + typescript: 5.4.4 + + '@strapi/ui-primitives@2.0.0-rc.29(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/number': 1.0.1 + '@radix-ui/primitive': 1.0.1 + '@radix-ui/react-collection': 1.0.3(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.23)(react@18.3.1) + '@radix-ui/react-context': 1.0.1(@types/react@18.3.23)(react@18.3.1) + '@radix-ui/react-direction': 1.0.1(@types/react@18.3.23)(react@18.3.1) + '@radix-ui/react-dismissable-layer': 1.0.5(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(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.23)(react@18.3.1) + '@radix-ui/react-focus-scope': 1.0.4(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-id': 1.0.1(@types/react@18.3.23)(react@18.3.1) + '@radix-ui/react-popper': 1.1.3(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-portal': 1.0.4(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(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.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-slot': 1.0.2(@types/react@18.3.23)(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.3.23)(react@18.3.1) + '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.3.23)(react@18.3.1) + '@radix-ui/react-use-previous': 1.0.1(@types/react@18.3.23)(react@18.3.1) + '@radix-ui/react-visually-hidden': 1.0.3(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(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.5.10(@types/react@18.3.23)(react@18.3.1) + transitivePeerDependencies: + - '@types/react' + - '@types/react-dom' + + '@strapi/upload@5.21.0(596c2b01761534af1b520a640e3306bf)': + dependencies: + '@mux/mux-player-react': 3.1.0(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@reduxjs/toolkit': 1.9.7(react-redux@8.1.3(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(redux@4.2.1))(react@18.3.1) + '@strapi/admin': 5.21.0(@babel/runtime@7.28.2)(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.11.2)(@codemirror/lint@6.8.5)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/theme-one-dark@6.1.3)(@codemirror/view@6.38.1)(@strapi/data-transfer@5.21.0(@types/node@20.19.9)(pg@8.8.0)(typescript@5.4.4))(@types/hoist-non-react-statics@3.3.7(@types/react@18.3.23))(@types/node@20.19.9)(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(codemirror@5.65.19)(debug@4.3.4)(pg@8.8.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@6.30.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) + '@strapi/design-system': 2.0.0-rc.29(@babel/runtime@7.28.2)(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.11.2)(@codemirror/lint@6.8.5)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/theme-one-dark@6.1.3)(@codemirror/view@6.38.1)(@strapi/icons@2.0.0-rc.29(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)))(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(codemirror@5.65.19)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) + '@strapi/icons': 2.0.0-rc.29(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) + '@strapi/provider-upload-local': 5.21.0 + '@strapi/utils': 5.21.0 + byte-size: 8.1.1 + cropperjs: 1.6.1 + date-fns: 2.30.0 + formik: 2.4.5(@types/react@18.3.23)(react@18.3.1) + fs-extra: 11.2.0 + immer: 9.0.21 + koa-range: 0.3.0 + koa-static: 5.0.0 + lodash: 4.17.21 + mime-types: 2.1.35 + prop-types: 15.8.1 + qs: 6.11.1 + react: 18.3.1 + react-dnd: 16.0.1(@types/hoist-non-react-statics@3.3.7(@types/react@18.3.23))(@types/node@20.19.9)(@types/react@18.3.23)(react@18.3.1) + react-dom: 18.3.1(react@18.3.1) + react-intl: 6.6.2(react@18.3.1)(typescript@5.4.4) + react-query: 3.39.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react-redux: 8.1.3(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(redux@4.2.1) + react-router-dom: 6.30.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react-select: 5.8.0(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + sharp: 0.33.5 + styled-components: 6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + yup: 0.32.9 + zod: 3.25.67 + transitivePeerDependencies: + - '@babel/runtime' + - '@codemirror/autocomplete' + - '@codemirror/language' + - '@codemirror/lint' + - '@codemirror/search' + - '@codemirror/state' + - '@codemirror/theme-one-dark' + - '@codemirror/view' + - '@types/hoist-non-react-statics' + - '@types/node' + - '@types/react' + - '@types/react-dom' + - codemirror + - react-native + - redux + - supports-color + - typescript + + '@strapi/utils@5.21.0': + dependencies: + '@sindresorhus/slugify': 1.1.0 + date-fns: 2.30.0 + execa: 5.1.1 + http-errors: 2.0.0 + lodash: 4.17.21 + node-machine-id: 1.1.12 + p-map: 4.0.0 + preferred-pm: 3.1.2 + yup: 0.32.9 + zod: 3.25.67 + + '@swc/core-darwin-arm64@1.13.3': + optional: true + + '@swc/core-darwin-x64@1.13.3': + optional: true + + '@swc/core-linux-arm-gnueabihf@1.13.3': + optional: true + + '@swc/core-linux-arm64-gnu@1.13.3': + optional: true + + '@swc/core-linux-arm64-musl@1.13.3': + optional: true + + '@swc/core-linux-x64-gnu@1.13.3': + optional: true + + '@swc/core-linux-x64-musl@1.13.3': + optional: true + + '@swc/core-win32-arm64-msvc@1.13.3': + optional: true + + '@swc/core-win32-ia32-msvc@1.13.3': + optional: true + + '@swc/core-win32-x64-msvc@1.13.3': + optional: true + + '@swc/core@1.13.3(@swc/helpers@0.5.17)': + dependencies: + '@swc/counter': 0.1.3 + '@swc/types': 0.1.24 + optionalDependencies: + '@swc/core-darwin-arm64': 1.13.3 + '@swc/core-darwin-x64': 1.13.3 + '@swc/core-linux-arm-gnueabihf': 1.13.3 + '@swc/core-linux-arm64-gnu': 1.13.3 + '@swc/core-linux-arm64-musl': 1.13.3 + '@swc/core-linux-x64-gnu': 1.13.3 + '@swc/core-linux-x64-musl': 1.13.3 + '@swc/core-win32-arm64-msvc': 1.13.3 + '@swc/core-win32-ia32-msvc': 1.13.3 + '@swc/core-win32-x64-msvc': 1.13.3 + '@swc/helpers': 0.5.17 + + '@swc/counter@0.1.3': {} + + '@swc/helpers@0.5.17': + dependencies: + tslib: 2.8.1 + + '@swc/types@0.1.24': + dependencies: + '@swc/counter': 0.1.3 + + '@szmarczak/http-timer@4.0.6': + dependencies: + defer-to-connect: 2.0.1 + + '@testing-library/dom@10.1.0': + dependencies: + '@babel/code-frame': 7.27.1 + '@babel/runtime': 7.28.2 + '@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/react@15.0.7(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@babel/runtime': 7.28.2 + '@testing-library/dom': 10.1.0 + '@types/react-dom': 18.3.7(@types/react@18.3.23) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.23 + + '@testing-library/user-event@14.5.2(@testing-library/dom@10.1.0)': + dependencies: + '@testing-library/dom': 10.1.0 + + '@types/accepts@1.3.7': + dependencies: + '@types/node': 20.19.9 + + '@types/argparse@1.0.38': {} + + '@types/aria-query@5.0.4': {} + + '@types/body-parser@1.19.6': + dependencies: + '@types/connect': 3.4.38 + '@types/node': 20.19.9 + + '@types/cacheable-request@6.0.3': + dependencies: + '@types/http-cache-semantics': 4.0.4 + '@types/keyv': 3.1.4 + '@types/node': 20.19.9 + '@types/responselike': 1.0.3 + + '@types/co-body@6.1.3': + dependencies: + '@types/node': 20.19.9 + '@types/qs': 6.14.0 + + '@types/connect@3.4.38': + dependencies: + '@types/node': 20.19.9 + + '@types/content-disposition@0.5.9': {} + + '@types/cookies@0.9.1': + dependencies: + '@types/connect': 3.4.38 + '@types/express': 5.0.3 + '@types/keygrip': 1.0.6 + '@types/node': 20.19.9 + + '@types/eslint-scope@3.7.7': + dependencies: + '@types/eslint': 9.6.1 + '@types/estree': 1.0.8 + + '@types/eslint@9.6.1': + dependencies: + '@types/estree': 1.0.8 + '@types/json-schema': 7.0.15 + + '@types/estree@1.0.8': {} + + '@types/express-serve-static-core@4.19.6': + dependencies: + '@types/node': 20.19.9 + '@types/qs': 6.14.0 + '@types/range-parser': 1.2.7 + '@types/send': 0.17.5 + + '@types/express-serve-static-core@5.0.7': + dependencies: + '@types/node': 20.19.9 + '@types/qs': 6.14.0 + '@types/range-parser': 1.2.7 + '@types/send': 0.17.5 + + '@types/express@4.17.23': + dependencies: + '@types/body-parser': 1.19.6 + '@types/express-serve-static-core': 4.19.6 + '@types/qs': 6.14.0 + '@types/serve-static': 1.15.8 + + '@types/express@5.0.3': + dependencies: + '@types/body-parser': 1.19.6 + '@types/express-serve-static-core': 5.0.7 + '@types/serve-static': 1.15.8 + + '@types/fined@1.1.5': {} + + '@types/follow-redirects@1.14.4': + dependencies: + '@types/node': 20.19.9 + + '@types/formidable@2.0.6': + dependencies: + '@types/node': 20.19.9 + + '@types/hoist-non-react-statics@3.3.7(@types/react@18.3.23)': + dependencies: + '@types/react': 18.3.23 + hoist-non-react-statics: 3.3.2 + + '@types/html-minifier-terser@6.1.0': {} + + '@types/http-assert@1.5.6': {} + + '@types/http-cache-semantics@4.0.4': {} + + '@types/http-errors@2.0.5': {} + + '@types/inquirer@9.0.9': + dependencies: + '@types/through': 0.0.33 + rxjs: 7.8.2 + + '@types/is-hotkey@0.1.10': {} + + '@types/json-schema@7.0.15': {} + + '@types/jsonwebtoken@9.0.10': + dependencies: + '@types/ms': 2.1.0 + '@types/node': 20.19.9 + + '@types/keygrip@1.0.6': {} + + '@types/keyv@3.1.4': + dependencies: + '@types/node': 20.19.9 + + '@types/koa-compose@3.2.8': + dependencies: + '@types/koa': 2.15.0 + + '@types/koa@2.15.0': + dependencies: + '@types/accepts': 1.3.7 + '@types/content-disposition': 0.5.9 + '@types/cookies': 0.9.1 + '@types/http-assert': 1.5.6 + '@types/http-errors': 2.0.5 + '@types/keygrip': 1.0.6 + '@types/koa-compose': 3.2.8 + '@types/node': 20.19.9 + + '@types/liftoff@4.0.3': + dependencies: + '@types/fined': 1.1.5 + '@types/node': 20.19.9 + + '@types/lodash@4.17.20': {} + + '@types/mime@1.3.5': {} + + '@types/ms@2.1.0': {} + + '@types/node@20.19.9': + dependencies: + undici-types: 6.21.0 + + '@types/nodemon@1.19.6': + dependencies: + '@types/node': 20.19.9 + + '@types/normalize-package-data@2.4.4': {} + + '@types/parse-json@4.0.2': {} + + '@types/prompts@2.4.9': + dependencies: + '@types/node': 20.19.9 + kleur: 3.0.3 + + '@types/prop-types@15.7.15': {} + + '@types/qs@6.14.0': {} + + '@types/range-parser@1.2.7': {} + + '@types/react-dom@18.3.7(@types/react@18.3.23)': + dependencies: + '@types/react': 18.3.23 + + '@types/react-redux@7.1.34': + dependencies: + '@types/hoist-non-react-statics': 3.3.7(@types/react@18.3.23) + '@types/react': 18.3.23 + hoist-non-react-statics: 3.3.2 + redux: 4.2.1 + + '@types/react-transition-group@4.4.12(@types/react@18.3.23)': + dependencies: + '@types/react': 18.3.23 + + '@types/react@18.3.23': + dependencies: + '@types/prop-types': 15.7.15 + csstype: 3.1.3 + + '@types/responselike@1.0.3': + dependencies: + '@types/node': 20.19.9 + + '@types/send@0.17.5': + dependencies: + '@types/mime': 1.3.5 + '@types/node': 20.19.9 + + '@types/serve-static@1.15.8': + dependencies: + '@types/http-errors': 2.0.5 + '@types/node': 20.19.9 + '@types/send': 0.17.5 + + '@types/stylis@4.2.5': {} + + '@types/through@0.0.33': + dependencies: + '@types/node': 20.19.9 + + '@types/triple-beam@1.3.5': {} + + '@types/use-sync-external-store@0.0.3': {} + + '@types/uuid@9.0.8': {} + + '@ucast/core@1.10.2': {} + + '@ucast/js@3.0.4': + dependencies: + '@ucast/core': 1.10.2 + + '@ucast/mongo2js@1.4.0': + dependencies: + '@ucast/core': 1.10.2 + '@ucast/js': 3.0.4 + '@ucast/mongo': 2.4.3 + + '@ucast/mongo@2.4.3': + dependencies: + '@ucast/core': 1.10.2 + + '@uiw/codemirror-extensions-basic-setup@4.22.2(@codemirror/autocomplete@6.18.6)(@codemirror/commands@6.8.1)(@codemirror/language@6.11.2)(@codemirror/lint@6.8.5)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/view@6.38.1)': + dependencies: + '@codemirror/autocomplete': 6.18.6 + '@codemirror/commands': 6.8.1 + '@codemirror/language': 6.11.2 + '@codemirror/lint': 6.8.5 + '@codemirror/search': 6.5.11 + '@codemirror/state': 6.5.2 + '@codemirror/view': 6.38.1 + + '@uiw/react-codemirror@4.22.2(@babel/runtime@7.28.2)(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.11.2)(@codemirror/lint@6.8.5)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/theme-one-dark@6.1.3)(@codemirror/view@6.38.1)(codemirror@5.65.19)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@babel/runtime': 7.28.2 + '@codemirror/commands': 6.8.1 + '@codemirror/state': 6.5.2 + '@codemirror/theme-one-dark': 6.1.3 + '@codemirror/view': 6.38.1 + '@uiw/codemirror-extensions-basic-setup': 4.22.2(@codemirror/autocomplete@6.18.6)(@codemirror/commands@6.8.1)(@codemirror/language@6.11.2)(@codemirror/lint@6.8.5)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/view@6.38.1) + codemirror: 5.65.19 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + transitivePeerDependencies: + - '@codemirror/autocomplete' + - '@codemirror/language' + - '@codemirror/lint' + - '@codemirror/search' + + '@vitejs/plugin-react-swc@3.6.0(@swc/helpers@0.5.17)(vite@5.4.19(@types/node@20.19.9)(terser@5.43.1))': + dependencies: + '@swc/core': 1.13.3(@swc/helpers@0.5.17) + vite: 5.4.19(@types/node@20.19.9)(terser@5.43.1) + transitivePeerDependencies: + - '@swc/helpers' + + '@vitejs/plugin-react-swc@3.7.0(@swc/helpers@0.5.17)(vite@5.4.8(@types/node@20.19.9)(terser@5.43.1))': + dependencies: + '@swc/core': 1.13.3(@swc/helpers@0.5.17) + vite: 5.4.8(@types/node@20.19.9)(terser@5.43.1) + transitivePeerDependencies: + - '@swc/helpers' + + '@webassemblyjs/ast@1.14.1': + dependencies: + '@webassemblyjs/helper-numbers': 1.13.2 + '@webassemblyjs/helper-wasm-bytecode': 1.13.2 + + '@webassemblyjs/floating-point-hex-parser@1.13.2': {} + + '@webassemblyjs/helper-api-error@1.13.2': {} + + '@webassemblyjs/helper-buffer@1.14.1': {} + + '@webassemblyjs/helper-numbers@1.13.2': + dependencies: + '@webassemblyjs/floating-point-hex-parser': 1.13.2 + '@webassemblyjs/helper-api-error': 1.13.2 + '@xtuc/long': 4.2.2 + + '@webassemblyjs/helper-wasm-bytecode@1.13.2': {} + + '@webassemblyjs/helper-wasm-section@1.14.1': + dependencies: + '@webassemblyjs/ast': 1.14.1 + '@webassemblyjs/helper-buffer': 1.14.1 + '@webassemblyjs/helper-wasm-bytecode': 1.13.2 + '@webassemblyjs/wasm-gen': 1.14.1 + + '@webassemblyjs/ieee754@1.13.2': + dependencies: + '@xtuc/ieee754': 1.2.0 + + '@webassemblyjs/leb128@1.13.2': + dependencies: + '@xtuc/long': 4.2.2 + + '@webassemblyjs/utf8@1.13.2': {} + + '@webassemblyjs/wasm-edit@1.14.1': + dependencies: + '@webassemblyjs/ast': 1.14.1 + '@webassemblyjs/helper-buffer': 1.14.1 + '@webassemblyjs/helper-wasm-bytecode': 1.13.2 + '@webassemblyjs/helper-wasm-section': 1.14.1 + '@webassemblyjs/wasm-gen': 1.14.1 + '@webassemblyjs/wasm-opt': 1.14.1 + '@webassemblyjs/wasm-parser': 1.14.1 + '@webassemblyjs/wast-printer': 1.14.1 + + '@webassemblyjs/wasm-gen@1.14.1': + dependencies: + '@webassemblyjs/ast': 1.14.1 + '@webassemblyjs/helper-wasm-bytecode': 1.13.2 + '@webassemblyjs/ieee754': 1.13.2 + '@webassemblyjs/leb128': 1.13.2 + '@webassemblyjs/utf8': 1.13.2 + + '@webassemblyjs/wasm-opt@1.14.1': + dependencies: + '@webassemblyjs/ast': 1.14.1 + '@webassemblyjs/helper-buffer': 1.14.1 + '@webassemblyjs/wasm-gen': 1.14.1 + '@webassemblyjs/wasm-parser': 1.14.1 + + '@webassemblyjs/wasm-parser@1.14.1': + dependencies: + '@webassemblyjs/ast': 1.14.1 + '@webassemblyjs/helper-api-error': 1.13.2 + '@webassemblyjs/helper-wasm-bytecode': 1.13.2 + '@webassemblyjs/ieee754': 1.13.2 + '@webassemblyjs/leb128': 1.13.2 + '@webassemblyjs/utf8': 1.13.2 + + '@webassemblyjs/wast-printer@1.14.1': + dependencies: + '@webassemblyjs/ast': 1.14.1 + '@xtuc/long': 4.2.2 + + '@xtuc/ieee754@1.2.0': {} + + '@xtuc/long@4.2.2': {} + + accepts@1.3.8: + dependencies: + mime-types: 2.1.35 + negotiator: 0.6.3 + + acorn-import-phases@1.0.4(acorn@8.15.0): + dependencies: + acorn: 8.15.0 + + acorn-walk@8.3.4: + dependencies: + acorn: 8.15.0 + + acorn@8.15.0: {} + + addressparser@1.0.1: {} + + adm-zip@0.5.16: {} + + aggregate-error@3.1.0: + dependencies: + clean-stack: 2.2.0 + indent-string: 4.0.0 + + aggregate-error@4.0.1: + dependencies: + clean-stack: 4.2.0 + indent-string: 5.0.0 + + ajv-draft-04@1.0.0(ajv@8.13.0): + optionalDependencies: + ajv: 8.13.0 + + ajv-formats@2.1.1(ajv@8.17.1): + optionalDependencies: + ajv: 8.17.1 + + ajv-formats@3.0.1(ajv@8.13.0): + optionalDependencies: + ajv: 8.13.0 + + ajv-keywords@3.5.2(ajv@6.12.6): + dependencies: + ajv: 6.12.6 + + ajv-keywords@5.1.0(ajv@8.17.1): + dependencies: + ajv: 8.17.1 + fast-deep-equal: 3.1.3 + + 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.13.0: + dependencies: + fast-deep-equal: 3.1.3 + json-schema-traverse: 1.0.0 + require-from-string: 2.0.2 + uri-js: 4.4.1 + + ajv@8.16.0: + dependencies: + fast-deep-equal: 3.1.3 + json-schema-traverse: 1.0.0 + require-from-string: 2.0.2 + uri-js: 4.4.1 + + ajv@8.17.1: + dependencies: + fast-deep-equal: 3.1.3 + fast-uri: 3.0.6 + json-schema-traverse: 1.0.0 + require-from-string: 2.0.2 + + ansi-align@3.0.1: + dependencies: + string-width: 4.2.3 + + ansi-escapes@4.3.2: + dependencies: + type-fest: 0.21.3 + + ansi-html-community@0.0.8: {} + + ansi-html@0.0.9: {} + + ansi-regex@5.0.1: {} + + ansi-regex@6.1.0: {} + + ansi-sequence-parser@1.1.3: {} + + 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 + + argparse@1.0.10: + dependencies: + sprintf-js: 1.0.3 + + argparse@2.0.1: {} + + aria-hidden@1.2.4: + dependencies: + tslib: 2.8.1 + + aria-hidden@1.2.6: + dependencies: + tslib: 2.8.1 + + aria-query@5.3.0: + dependencies: + dequal: 2.0.3 + + array-each@1.0.1: {} + + array-slice@1.1.0: {} + + asap@2.0.6: {} + + asn1.js@5.4.1: + dependencies: + bn.js: 4.12.2 + inherits: 2.0.4 + minimalistic-assert: 1.0.1 + safer-buffer: 2.1.2 + + asn1@0.2.6: + dependencies: + safer-buffer: 2.1.2 + + assert-plus@1.0.0: {} + + async@3.2.6: {} + + asynckit@0.4.0: {} + + aws-sign2@0.7.0: {} + + aws4@1.9.1: {} + + axios@1.8.4(debug@4.3.4): + dependencies: + follow-redirects: 1.15.11(debug@4.3.4) + form-data: 4.0.4 + proxy-from-env: 1.1.0 + transitivePeerDependencies: + - debug + + babel-plugin-macros@3.1.0: + dependencies: + '@babel/runtime': 7.28.2 + cosmiconfig: 7.1.0 + resolve: 1.22.10 + + balanced-match@1.0.2: {} + + base64-js@1.5.1: {} + + bcrypt-pbkdf@1.0.2: + dependencies: + tweetnacl: 0.14.5 + + bcryptjs@2.4.3: {} + + big-integer@1.6.52: {} + + big.js@5.2.2: {} + + binary-extensions@2.3.0: {} + + bl@4.1.0: + dependencies: + buffer: 5.7.1 + inherits: 2.0.4 + readable-stream: 3.6.2 + + bn.js@4.12.2: {} + + boolbase@1.0.0: {} + + boolean@3.2.0: {} + + bowser@2.11.0: {} + + boxen@5.1.2: + dependencies: + ansi-align: 3.0.1 + camelcase: 6.3.0 + chalk: 4.1.2 + cli-boxes: 2.2.1 + string-width: 4.2.3 + type-fest: 0.20.2 + widest-line: 3.1.0 + wrap-ansi: 7.0.0 + + brace-expansion@1.1.12: + dependencies: + balanced-match: 1.0.2 + concat-map: 0.0.1 + + brace-expansion@2.0.2: + dependencies: + balanced-match: 1.0.2 + + braces@3.0.3: + dependencies: + fill-range: 7.1.1 + + broadcast-channel@3.7.0: + dependencies: + '@babel/runtime': 7.28.2 + detect-node: 2.1.0 + js-sha3: 0.8.0 + microseconds: 0.2.0 + nano-time: 1.0.0 + oblivious-set: 1.0.0 + rimraf: 3.0.2 + unload: 2.2.0 + + brorand@1.1.0: {} + + browserslist-to-esbuild@1.2.0: + dependencies: + browserslist: 4.25.1 + + browserslist@4.25.1: + dependencies: + caniuse-lite: 1.0.30001731 + electron-to-chromium: 1.5.198 + node-releases: 2.0.19 + update-browserslist-db: 1.1.3(browserslist@4.25.1) + + buffer-equal-constant-time@1.0.1: {} + + buffer-from@1.1.2: {} + + buffer-writer@2.0.0: {} + + buffer@5.6.0: + dependencies: + base64-js: 1.5.1 + ieee754: 1.2.1 + + buffer@5.7.1: + dependencies: + base64-js: 1.5.1 + ieee754: 1.2.1 + + buildmail@3.10.0: + dependencies: + addressparser: 1.0.1 + libbase64: 0.1.0 + libmime: 2.1.0 + libqp: 1.1.0 + nodemailer-fetch: 1.6.0 + nodemailer-shared: 1.1.0 + + byte-size@8.1.1: {} + + bytes@3.1.2: {} + + cache-content-type@1.0.1: + dependencies: + mime-types: 2.1.35 + ylru: 1.4.0 + + cacheable-lookup@5.0.4: {} + + cacheable-request@7.0.4: + dependencies: + clone-response: 1.0.3 + get-stream: 5.2.0 + http-cache-semantics: 4.2.0 + keyv: 4.5.4 + lowercase-keys: 2.0.0 + normalize-url: 6.1.0 + responselike: 2.0.1 + + call-bind-apply-helpers@1.0.2: + dependencies: + es-errors: 1.3.0 + function-bind: 1.1.2 + + call-bound@1.0.4: + dependencies: + call-bind-apply-helpers: 1.0.2 + get-intrinsic: 1.3.0 + + callsites@3.1.0: {} + + camel-case@4.1.2: + dependencies: + pascal-case: 3.1.2 + tslib: 2.8.1 + + camelcase@6.3.0: {} + + camelize@1.0.1: {} + + caniuse-lite@1.0.30001731: {} + + capital-case@1.0.4: + dependencies: + no-case: 3.0.4 + tslib: 2.8.1 + upper-case-first: 2.0.2 + + caseless@0.12.0: {} + + castable-video@1.1.10: + dependencies: + custom-media-element: 1.4.5 + + chalk@2.4.2: + dependencies: + ansi-styles: 3.2.1 + escape-string-regexp: 1.0.5 + supports-color: 5.5.0 + + chalk@4.1.2: + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + + chalk@5.5.0: {} + + change-case@4.1.2: + dependencies: + camel-case: 4.1.2 + capital-case: 1.0.4 + constant-case: 3.0.4 + dot-case: 3.0.4 + header-case: 2.0.4 + no-case: 3.0.4 + param-case: 3.0.4 + pascal-case: 3.1.2 + path-case: 3.0.4 + sentence-case: 3.0.4 + snake-case: 3.0.4 + tslib: 2.8.1 + + chardet@0.7.0: {} + + 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 + + chokidar@4.0.1: + dependencies: + readdirp: 4.1.2 + + chownr@2.0.0: {} + + chrome-trace-event@1.0.4: {} + + ci-info@3.8.0: {} + + ci-info@4.0.0: {} + + classnames@2.5.1: {} + + clean-css@5.3.3: + dependencies: + source-map: 0.6.1 + + clean-stack@2.2.0: {} + + clean-stack@4.2.0: + dependencies: + escape-string-regexp: 5.0.0 + + cli-boxes@2.2.1: {} + + cli-cursor@3.1.0: + dependencies: + restore-cursor: 3.1.0 + + cli-cursor@5.0.0: + dependencies: + restore-cursor: 5.1.0 + + cli-progress@3.12.0: + dependencies: + string-width: 4.2.3 + + cli-spinners@2.9.2: {} + + cli-table3@0.6.2: + dependencies: + string-width: 4.2.3 + optionalDependencies: + '@colors/colors': 1.5.0 + + cli-table3@0.6.5: + dependencies: + string-width: 4.2.3 + optionalDependencies: + '@colors/colors': 1.5.0 + + cli-table@0.3.11: + dependencies: + colors: 1.0.3 + + cli-width@3.0.0: {} + + cli-width@4.1.0: {} + + cliui@7.0.4: + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 7.0.0 + + cliui@8.0.1: + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 7.0.0 + + clone-response@1.0.3: + dependencies: + mimic-response: 1.0.1 + + clone@1.0.4: {} + + co-body@6.2.0: + dependencies: + '@hapi/bourne': 3.0.0 + inflation: 2.1.0 + qs: 6.14.0 + raw-body: 2.5.2 + type-is: 1.6.18 + + co@4.6.0: {} + + codemirror@5.65.19: {} + + 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: {} + + color-string@1.9.1: + dependencies: + color-name: 1.1.4 + simple-swizzle: 0.2.2 + + color@3.2.1: + dependencies: + color-convert: 1.9.3 + color-string: 1.9.1 + + color@4.2.3: + dependencies: + color-convert: 2.0.1 + color-string: 1.9.1 + + colorette@2.0.19: {} + + colorette@2.0.20: {} + + colors@1.0.3: {} + + colorspace@1.1.4: + dependencies: + color: 3.2.1 + text-hex: 1.0.0 + + combined-stream@1.0.8: + dependencies: + delayed-stream: 1.0.0 + + commander@10.0.1: {} + + commander@12.1.0: {} + + commander@2.20.3: {} + + commander@7.2.0: {} + + commander@8.3.0: {} + + compressible@2.0.18: + dependencies: + mime-db: 1.54.0 + + compute-scroll-into-view@1.0.20: {} + + concat-map@0.0.1: {} + + concurrently@8.2.2: + dependencies: + chalk: 4.1.2 + date-fns: 2.30.0 + lodash: 4.17.21 + rxjs: 7.8.2 + shell-quote: 1.8.3 + spawn-command: 0.0.2 + supports-color: 8.1.1 + tree-kill: 1.2.2 + yargs: 17.7.2 + + config-chain@1.1.13: + dependencies: + ini: 1.3.8 + proto-list: 1.2.4 + + configstore@5.0.1: + dependencies: + dot-prop: 5.3.0 + graceful-fs: 4.2.11 + make-dir: 3.1.0 + unique-string: 2.0.0 + write-file-atomic: 3.0.3 + xdg-basedir: 4.0.0 + + constant-case@3.0.4: + dependencies: + no-case: 3.0.4 + tslib: 2.8.1 + upper-case: 2.0.2 + + content-disposition@0.5.4: + dependencies: + safe-buffer: 5.2.1 + + content-type@1.0.5: {} + + convert-source-map@1.9.0: {} + + cookie-signature@1.2.2: + optional: true + + cookie@0.7.2: + optional: true + + cookies@0.9.1: + dependencies: + depd: 2.0.0 + keygrip: 1.1.0 + + copyfiles@2.4.1: + dependencies: + glob: 7.2.3 + minimatch: 3.1.2 + mkdirp: 1.0.4 + noms: 0.0.0 + through2: 2.0.5 + untildify: 4.0.0 + yargs: 16.2.0 + + core-js-pure@3.45.0: {} + + core-util-is@1.0.2: {} + + core-util-is@1.0.3: {} + + cosmiconfig@7.1.0: + dependencies: + '@types/parse-json': 4.0.2 + import-fresh: 3.3.1 + parse-json: 5.2.0 + path-type: 4.0.0 + yaml: 1.10.2 + + crc@3.8.0: + dependencies: + buffer: 5.7.1 + + crelt@1.0.6: {} + + cron-parser@4.9.0: + dependencies: + luxon: 3.7.1 + + cropperjs@1.6.1: {} + + cross-env@7.0.3: + dependencies: + cross-spawn: 7.0.6 + + cross-spawn@7.0.6: + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + + crypto-random-string@2.0.0: {} + + css-color-keywords@1.0.0: {} + + css-loader@6.11.0(webpack@5.101.0(esbuild@0.25.8)): + dependencies: + icss-utils: 5.1.0(postcss@8.5.6) + postcss: 8.5.6 + postcss-modules-extract-imports: 3.1.0(postcss@8.5.6) + postcss-modules-local-by-default: 4.2.0(postcss@8.5.6) + postcss-modules-scope: 3.2.1(postcss@8.5.6) + postcss-modules-values: 4.0.0(postcss@8.5.6) + postcss-value-parser: 4.2.0 + semver: 7.7.2 + optionalDependencies: + webpack: 5.101.0(esbuild@0.25.8) + + css-select@4.3.0: + dependencies: + boolbase: 1.0.0 + css-what: 6.2.2 + domhandler: 4.3.1 + domutils: 2.8.0 + nth-check: 2.1.1 + + css-to-react-native@3.2.0: + dependencies: + camelize: 1.0.1 + css-color-keywords: 1.0.0 + postcss-value-parser: 4.2.0 + + css-what@6.2.2: {} + + cssesc@3.0.0: {} + + csstype@3.1.3: {} + + custom-media-element@1.3.3: {} + + custom-media-element@1.4.5: {} + + dashdash@1.14.1: + dependencies: + assert-plus: 1.0.0 + + date-fns-tz@2.0.1(date-fns@2.30.0): + dependencies: + date-fns: 2.30.0 + + date-fns@2.30.0: + dependencies: + '@babel/runtime': 7.28.2 + + dayjs@1.11.13: {} + + debounce@1.2.1: {} + + debug@2.6.9: + dependencies: + ms: 2.0.0 + + debug@3.2.7: + dependencies: + ms: 2.1.3 + + debug@4.3.4: + dependencies: + ms: 2.1.2 + + debug@4.4.1(supports-color@5.5.0): + dependencies: + ms: 2.1.3 + optionalDependencies: + supports-color: 5.5.0 + + decode-html@2.0.0: {} + + decompress-response@6.0.0: + dependencies: + mimic-response: 3.1.0 + + decompress-response@7.0.0: + dependencies: + mimic-response: 3.1.0 + + deep-equal@1.0.1: {} + + deep-extend@0.6.0: {} + + deepmerge@2.2.1: {} + + deepmerge@4.3.1: {} + + defaults@1.0.4: + dependencies: + clone: 1.0.4 + + defer-to-connect@2.0.1: {} + + define-data-property@1.1.4: + dependencies: + es-define-property: 1.0.1 + es-errors: 1.3.0 + gopd: 1.2.0 + + 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 + + defu@6.1.4: {} + + del@7.1.0: + dependencies: + globby: 13.2.2 + graceful-fs: 4.2.11 + is-glob: 4.0.3 + is-path-cwd: 3.0.0 + is-path-inside: 4.0.0 + p-map: 5.5.0 + rimraf: 3.0.2 + slash: 4.0.0 + + delayed-stream@1.0.0: {} + + delegates@1.0.0: {} + + depd@1.1.2: {} + + depd@2.0.0: {} + + dequal@2.0.3: {} + + destr@2.0.5: {} + + destroy@1.2.0: {} + + detect-file@1.0.0: {} + + detect-indent@6.1.0: {} + + detect-indent@7.0.1: {} + + detect-libc@2.0.4: {} + + detect-newline@4.0.1: {} + + detect-node-es@1.1.0: {} + + detect-node@2.1.0: {} + + dezalgo@1.0.4: + dependencies: + asap: 2.0.6 + wrappy: 1.0.2 + + diff@3.5.0: {} + + diff@5.2.0: {} + + dir-glob@3.0.1: + dependencies: + path-type: 4.0.0 + + direction@1.0.4: {} + + dkim-signer@0.2.2: + dependencies: + libmime: 2.1.3 + + dnd-core@16.0.1: + dependencies: + '@react-dnd/asap': 5.0.2 + '@react-dnd/invariant': 4.0.2 + redux: 4.2.1 + + dom-accessibility-api@0.5.16: {} + + dom-converter@0.2.0: + dependencies: + utila: 0.4.0 + + dom-helpers@5.2.1: + dependencies: + '@babel/runtime': 7.28.2 + csstype: 3.1.3 + + dom-serializer@1.4.1: + dependencies: + domelementtype: 2.3.0 + domhandler: 4.3.1 + entities: 2.2.0 + + dom-serializer@2.0.0: + dependencies: + domelementtype: 2.3.0 + domhandler: 5.0.3 + entities: 4.5.0 + + domelementtype@2.3.0: {} + + domhandler@4.3.1: + dependencies: + domelementtype: 2.3.0 + + domhandler@5.0.3: + dependencies: + domelementtype: 2.3.0 + + domutils@2.8.0: + dependencies: + dom-serializer: 1.4.1 + domelementtype: 2.3.0 + domhandler: 4.3.1 + + domutils@3.2.2: + dependencies: + dom-serializer: 2.0.0 + domelementtype: 2.3.0 + domhandler: 5.0.3 + + dot-case@3.0.4: + dependencies: + no-case: 3.0.4 + tslib: 2.8.1 + + dot-prop@5.3.0: + dependencies: + is-obj: 2.0.0 + + dotenv@16.4.5: {} + + dunder-proto@1.0.1: + dependencies: + call-bind-apply-helpers: 1.0.2 + es-errors: 1.3.0 + gopd: 1.2.0 + + duplexer@0.1.2: {} + + eastasianwidth@0.2.0: {} + + ecc-jsbn@0.1.2: + dependencies: + jsbn: 0.1.1 + safer-buffer: 2.1.2 + + ecdsa-sig-formatter@1.0.11: + dependencies: + safe-buffer: 5.2.1 + + ee-first@1.1.1: {} + + electron-to-chromium@1.5.198: {} + + elliptic@6.6.1: + dependencies: + bn.js: 4.12.2 + brorand: 1.1.0 + hash.js: 1.1.7 + hmac-drbg: 1.0.1 + inherits: 2.0.4 + minimalistic-assert: 1.0.1 + minimalistic-crypto-utils: 1.0.1 + + emittery@0.13.1: {} + + emoji-regex@10.4.0: {} + + emoji-regex@8.0.0: {} + + emoji-regex@9.2.2: {} + + emojis-list@3.0.0: {} + + enabled@2.0.0: {} + + encodeurl@1.0.2: {} + + end-of-stream@1.4.5: + dependencies: + once: 1.4.0 + + enhanced-resolve@5.18.3: + dependencies: + graceful-fs: 4.2.11 + tapable: 2.2.2 + + entities@2.2.0: {} + + entities@3.0.1: {} + + entities@4.5.0: {} + + error-ex@1.3.2: + dependencies: + is-arrayish: 0.2.1 + + error-stack-parser@2.1.4: + dependencies: + stackframe: 1.3.4 + + es-define-property@1.0.1: {} + + es-errors@1.3.0: {} + + es-module-lexer@1.7.0: {} + + es-object-atoms@1.1.1: + dependencies: + es-errors: 1.3.0 + + es-set-tostringtag@2.1.0: + dependencies: + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + has-tostringtag: 1.0.2 + hasown: 2.0.2 + + es6-error@4.1.1: {} + + esbuild-loader@4.3.0(webpack@5.101.0(esbuild@0.25.8)): + dependencies: + esbuild: 0.25.8 + get-tsconfig: 4.10.1 + loader-utils: 2.0.4 + webpack: 5.101.0(esbuild@0.25.8) + webpack-sources: 1.4.3 + + esbuild-register@3.5.0(esbuild@0.20.2): + dependencies: + debug: 4.4.1(supports-color@5.5.0) + esbuild: 0.20.2 + transitivePeerDependencies: + - supports-color + + esbuild-register@3.5.0(esbuild@0.25.8): + dependencies: + debug: 4.4.1(supports-color@5.5.0) + esbuild: 0.25.8 + transitivePeerDependencies: + - supports-color + + esbuild@0.20.2: + optionalDependencies: + '@esbuild/aix-ppc64': 0.20.2 + '@esbuild/android-arm': 0.20.2 + '@esbuild/android-arm64': 0.20.2 + '@esbuild/android-x64': 0.20.2 + '@esbuild/darwin-arm64': 0.20.2 + '@esbuild/darwin-x64': 0.20.2 + '@esbuild/freebsd-arm64': 0.20.2 + '@esbuild/freebsd-x64': 0.20.2 + '@esbuild/linux-arm': 0.20.2 + '@esbuild/linux-arm64': 0.20.2 + '@esbuild/linux-ia32': 0.20.2 + '@esbuild/linux-loong64': 0.20.2 + '@esbuild/linux-mips64el': 0.20.2 + '@esbuild/linux-ppc64': 0.20.2 + '@esbuild/linux-riscv64': 0.20.2 + '@esbuild/linux-s390x': 0.20.2 + '@esbuild/linux-x64': 0.20.2 + '@esbuild/netbsd-x64': 0.20.2 + '@esbuild/openbsd-x64': 0.20.2 + '@esbuild/sunos-x64': 0.20.2 + '@esbuild/win32-arm64': 0.20.2 + '@esbuild/win32-ia32': 0.20.2 + '@esbuild/win32-x64': 0.20.2 + + 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.25.8: + optionalDependencies: + '@esbuild/aix-ppc64': 0.25.8 + '@esbuild/android-arm': 0.25.8 + '@esbuild/android-arm64': 0.25.8 + '@esbuild/android-x64': 0.25.8 + '@esbuild/darwin-arm64': 0.25.8 + '@esbuild/darwin-x64': 0.25.8 + '@esbuild/freebsd-arm64': 0.25.8 + '@esbuild/freebsd-x64': 0.25.8 + '@esbuild/linux-arm': 0.25.8 + '@esbuild/linux-arm64': 0.25.8 + '@esbuild/linux-ia32': 0.25.8 + '@esbuild/linux-loong64': 0.25.8 + '@esbuild/linux-mips64el': 0.25.8 + '@esbuild/linux-ppc64': 0.25.8 + '@esbuild/linux-riscv64': 0.25.8 + '@esbuild/linux-s390x': 0.25.8 + '@esbuild/linux-x64': 0.25.8 + '@esbuild/netbsd-arm64': 0.25.8 + '@esbuild/netbsd-x64': 0.25.8 + '@esbuild/openbsd-arm64': 0.25.8 + '@esbuild/openbsd-x64': 0.25.8 + '@esbuild/openharmony-arm64': 0.25.8 + '@esbuild/sunos-x64': 0.25.8 + '@esbuild/win32-arm64': 0.25.8 + '@esbuild/win32-ia32': 0.25.8 + '@esbuild/win32-x64': 0.25.8 + + escalade@3.2.0: {} + + escape-html@1.0.3: {} + + escape-string-regexp@1.0.5: {} + + escape-string-regexp@2.0.0: {} + + escape-string-regexp@4.0.0: {} + + escape-string-regexp@5.0.0: {} + + eslint-scope@5.1.1: + dependencies: + esrecurse: 4.3.0 + estraverse: 4.3.0 + + esm@3.2.25: {} + + esprima@4.0.1: {} + + esrecurse@4.3.0: + dependencies: + estraverse: 5.3.0 + + estraverse@4.3.0: {} + + estraverse@5.3.0: {} + + events@3.3.0: {} + + eventsource@2.0.2: {} + + execa@5.1.1: + dependencies: + cross-spawn: 7.0.6 + get-stream: 6.0.1 + human-signals: 2.1.0 + is-stream: 2.0.1 + merge-stream: 2.0.0 + npm-run-path: 4.0.1 + onetime: 5.1.2 + signal-exit: 3.0.7 + strip-final-newline: 2.0.0 + + execa@9.6.0: + dependencies: + '@sindresorhus/merge-streams': 4.0.0 + cross-spawn: 7.0.6 + figures: 6.1.0 + get-stream: 9.0.1 + human-signals: 8.0.1 + is-plain-obj: 4.1.0 + is-stream: 4.0.1 + npm-run-path: 6.0.0 + pretty-ms: 9.2.0 + signal-exit: 4.1.0 + strip-final-newline: 4.0.0 + yoctocolors: 2.1.1 + + expand-tilde@2.0.2: + dependencies: + homedir-polyfill: 1.0.3 + + extend@3.0.2: {} + + external-editor@3.1.0: + dependencies: + chardet: 0.7.0 + iconv-lite: 0.4.24 + tmp: 0.0.33 + + extsprintf@1.3.0: {} + + fast-deep-equal@3.1.3: {} + + fast-glob@3.3.3: + 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-safe-stringify@2.1.1: {} + + fast-uri@3.0.6: {} + + fast-xml-parser@5.2.5: + dependencies: + strnum: 2.1.1 + + fastq@1.19.1: + dependencies: + reusify: 1.1.0 + + fecha@4.2.3: {} + + figures@3.2.0: + dependencies: + escape-string-regexp: 1.0.5 + + figures@6.1.0: + dependencies: + is-unicode-supported: 2.1.0 + + file-saver@2.0.5: {} + + fill-range@7.1.1: + dependencies: + to-regex-range: 5.0.1 + + find-root@1.1.0: {} + + find-up@3.0.0: + dependencies: + locate-path: 3.0.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-yarn-workspace-root2@1.2.16: + dependencies: + micromatch: 4.0.8 + pkg-dir: 4.2.0 + + findup-sync@5.0.0: + dependencies: + detect-file: 1.0.0 + is-glob: 4.0.3 + micromatch: 4.0.8 + resolve-dir: 1.0.1 + + fined@2.0.0: + dependencies: + expand-tilde: 2.0.2 + is-plain-object: 5.0.0 + object.defaults: 1.1.0 + object.pick: 1.3.0 + parse-filepath: 1.0.2 + + flagged-respawn@2.0.0: {} + + fn.name@1.1.0: {} + + follow-redirects@1.15.11(debug@4.3.4): + optionalDependencies: + debug: 4.3.4 + + for-in@1.0.2: {} + + for-own@1.0.0: + dependencies: + for-in: 1.0.2 + + foreground-child@3.3.1: + dependencies: + cross-spawn: 7.0.6 + signal-exit: 4.1.0 + + forever-agent@0.6.1: {} + + fork-ts-checker-webpack-plugin@8.0.0(typescript@5.4.4)(webpack@5.101.0(esbuild@0.25.8)): + dependencies: + '@babel/code-frame': 7.27.1 + chalk: 4.1.2 + chokidar: 3.6.0 + cosmiconfig: 7.1.0 + deepmerge: 4.3.1 + fs-extra: 10.1.0 + memfs: 3.5.3 + minimatch: 3.1.2 + node-abort-controller: 3.1.1 + schema-utils: 3.3.0 + semver: 7.7.2 + tapable: 2.2.2 + typescript: 5.4.4 + webpack: 5.101.0(esbuild@0.25.8) + + form-data@2.3.3: + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + mime-types: 2.1.35 + + form-data@4.0.4: + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + es-set-tostringtag: 2.1.0 + hasown: 2.0.2 + mime-types: 2.1.35 + + formidable@2.1.5: + dependencies: + '@paralleldrive/cuid2': 2.2.2 + dezalgo: 1.0.4 + once: 1.4.0 + qs: 6.14.0 + + formik@2.4.5(@types/react@18.3.23)(react@18.3.1): + dependencies: + '@types/hoist-non-react-statics': 3.3.7(@types/react@18.3.23) + deepmerge: 2.2.1 + hoist-non-react-statics: 3.3.2 + lodash: 4.17.21 + lodash-es: 4.17.21 + react: 18.3.1 + react-fast-compare: 2.0.4 + tiny-warning: 1.0.3 + tslib: 2.8.1 + transitivePeerDependencies: + - '@types/react' + + fractional-indexing@3.2.0: {} + + fresh@0.5.2: {} + + fs-constants@1.0.0: {} + + fs-extra@10.1.0: + 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-extra@11.3.1: + dependencies: + graceful-fs: 4.2.11 + jsonfile: 6.1.0 + universalify: 2.0.1 + + fs-extra@8.1.0: + dependencies: + graceful-fs: 4.2.11 + jsonfile: 4.0.0 + universalify: 0.1.2 + + fs-minipass@2.1.0: + dependencies: + minipass: 3.3.6 + + fs-monkey@1.1.0: {} + + fs.realpath@1.0.0: {} + + fsevents@2.3.3: + optional: true + + function-bind@1.1.2: {} + + get-caller-file@2.0.5: {} + + get-east-asian-width@1.3.0: {} + + get-intrinsic@1.3.0: + 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 + + get-it@8.6.10: + dependencies: + '@types/follow-redirects': 1.14.4 + decompress-response: 7.0.0 + follow-redirects: 1.15.11(debug@4.3.4) + is-retry-allowed: 2.2.0 + through2: 4.0.2 + tunnel-agent: 0.6.0 + transitivePeerDependencies: + - debug + + get-latest-version@5.1.0: + dependencies: + get-it: 8.6.10 + registry-auth-token: 5.1.0 + registry-url: 5.1.0 + semver: 7.7.2 + transitivePeerDependencies: + - debug + + get-nonce@1.0.1: {} + + get-package-type@0.1.0: {} + + get-proto@1.0.1: + dependencies: + dunder-proto: 1.0.1 + es-object-atoms: 1.1.1 + + get-stdin@9.0.0: {} + + get-stream@5.2.0: + dependencies: + pump: 3.0.3 + + get-stream@6.0.1: {} + + get-stream@9.0.1: + dependencies: + '@sec-ant/readable-stream': 0.4.1 + is-stream: 4.0.1 + + get-tsconfig@4.10.1: + dependencies: + resolve-pkg-maps: 1.0.0 + + getopts@2.3.0: {} + + getpass@0.1.7: + dependencies: + assert-plus: 1.0.0 + + git-diff@2.0.6: + dependencies: + chalk: 2.4.2 + diff: 3.5.0 + loglevel: 1.9.2 + shelljs: 0.8.5 + shelljs.exec: 1.1.8 + + git-hooks-list@3.2.0: {} + + git-up@7.0.0: + dependencies: + is-ssh: 1.4.1 + parse-url: 8.1.0 + + git-url-parse@13.1.1: + dependencies: + git-up: 7.0.0 + + git-url-parse@14.0.0: + dependencies: + git-up: 7.0.0 + + glob-parent@5.1.2: + dependencies: + is-glob: 4.0.3 + + glob-to-regexp@0.4.1: {} + + glob@10.3.10: + dependencies: + foreground-child: 3.3.1 + jackspeak: 2.3.6 + minimatch: 9.0.5 + minipass: 7.1.2 + path-scurry: 1.11.1 + + glob@10.4.5: + dependencies: + foreground-child: 3.3.1 + 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-agent@3.0.0: + dependencies: + boolean: 3.2.0 + es6-error: 4.1.1 + matcher: 3.0.0 + roarr: 2.15.4 + semver: 7.7.2 + serialize-error: 7.0.1 + + global-modules@1.0.0: + dependencies: + global-prefix: 1.0.2 + is-windows: 1.0.2 + resolve-dir: 1.0.1 + + global-prefix@1.0.2: + dependencies: + expand-tilde: 2.0.2 + homedir-polyfill: 1.0.3 + ini: 1.3.8 + is-windows: 1.0.2 + which: 1.3.1 + + globalthis@1.0.4: + dependencies: + define-properties: 1.2.1 + gopd: 1.2.0 + + globby@13.2.2: + dependencies: + dir-glob: 3.0.1 + fast-glob: 3.3.3 + ignore: 5.3.2 + merge2: 1.4.1 + slash: 4.0.0 + + gopd@1.2.0: {} + + got@11.8.6: + dependencies: + '@sindresorhus/is': 4.6.0 + '@szmarczak/http-timer': 4.0.6 + '@types/cacheable-request': 6.0.3 + '@types/responselike': 1.0.3 + cacheable-lookup: 5.0.4 + cacheable-request: 7.0.4 + decompress-response: 6.0.0 + http2-wrapper: 1.0.3 + lowercase-keys: 2.0.0 + p-cancelable: 2.1.1 + responselike: 2.0.1 + + graceful-fs@4.2.10: {} + + graceful-fs@4.2.11: {} + + grant@5.4.24: + dependencies: + qs: 6.14.0 + request-compose: 2.1.7 + request-oauth: 1.0.1 + optionalDependencies: + cookie: 0.7.2 + cookie-signature: 1.2.2 + jwk-to-pem: 2.0.7 + jws: 4.0.0 + + gzip-size@6.0.0: + dependencies: + duplexer: 0.1.2 + + handlebars@4.7.7: + dependencies: + minimist: 1.2.8 + neo-async: 2.6.2 + source-map: 0.6.1 + wordwrap: 1.0.0 + optionalDependencies: + uglify-js: 3.19.3 + + handlebars@4.7.8: + dependencies: + minimist: 1.2.8 + neo-async: 2.6.2 + source-map: 0.6.1 + wordwrap: 1.0.0 + optionalDependencies: + uglify-js: 3.19.3 + + har-schema@2.0.0: {} + + har-validator@5.1.5: + dependencies: + ajv: 6.12.6 + har-schema: 2.0.0 + + has-flag@3.0.0: {} + + has-flag@4.0.0: {} + + has-property-descriptors@1.0.2: + dependencies: + es-define-property: 1.0.1 + + has-symbols@1.1.0: {} + + has-tostringtag@1.0.2: + dependencies: + has-symbols: 1.1.0 + + hash.js@1.1.7: + dependencies: + inherits: 2.0.4 + minimalistic-assert: 1.0.1 + + hasown@2.0.2: + dependencies: + function-bind: 1.1.2 + + he@1.2.0: {} + + header-case@2.0.4: + dependencies: + capital-case: 1.0.4 + tslib: 2.8.1 + + helmet@6.2.0: {} + + highlight.js@10.7.3: {} + + hls.js@1.5.20: {} + + hmac-drbg@1.0.1: + dependencies: + hash.js: 1.1.7 + minimalistic-assert: 1.0.1 + minimalistic-crypto-utils: 1.0.1 + + hoist-non-react-statics@3.3.2: + dependencies: + react-is: 16.13.1 + + homedir-polyfill@1.0.3: + dependencies: + parse-passwd: 1.0.0 + + hosted-git-info@2.8.9: {} + + html-entities@2.6.0: {} + + html-escaper@2.0.2: {} + + html-minifier-terser@6.1.0: + dependencies: + camel-case: 4.1.2 + clean-css: 5.3.3 + commander: 8.3.0 + he: 1.2.0 + param-case: 3.0.4 + relateurl: 0.2.7 + terser: 5.43.1 + + html-to-text@9.0.5: + dependencies: + '@selderee/plugin-htmlparser2': 0.11.0 + deepmerge: 4.3.1 + dom-serializer: 2.0.0 + htmlparser2: 8.0.2 + selderee: 0.11.0 + + html-webpack-plugin@5.6.0(webpack@5.101.0(esbuild@0.25.8)): + dependencies: + '@types/html-minifier-terser': 6.1.0 + html-minifier-terser: 6.1.0 + lodash: 4.17.21 + pretty-error: 4.0.0 + tapable: 2.2.2 + optionalDependencies: + webpack: 5.101.0(esbuild@0.25.8) + + htmlparser2@6.1.0: + dependencies: + domelementtype: 2.3.0 + domhandler: 4.3.1 + domutils: 2.8.0 + entities: 2.2.0 + + htmlparser2@8.0.2: + dependencies: + domelementtype: 2.3.0 + domhandler: 5.0.3 + domutils: 3.2.2 + entities: 4.5.0 + + http-assert@1.5.0: + dependencies: + deep-equal: 1.0.1 + http-errors: 1.8.1 + + http-cache-semantics@4.2.0: {} + + http-errors@1.6.3: + dependencies: + depd: 1.1.2 + inherits: 2.0.3 + setprototypeof: 1.1.0 + statuses: 1.5.0 + + http-errors@1.8.1: + dependencies: + depd: 1.1.2 + inherits: 2.0.4 + setprototypeof: 1.2.0 + statuses: 1.5.0 + toidentifier: 1.0.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 + + http-signature@1.2.0: + dependencies: + assert-plus: 1.0.0 + jsprim: 1.4.2 + sshpk: 1.18.0 + + http2-wrapper@1.0.3: + dependencies: + quick-lru: 5.1.1 + resolve-alpn: 1.2.1 + + human-signals@2.1.0: {} + + human-signals@8.0.1: {} + + iconv-lite@0.4.13: {} + + iconv-lite@0.4.15: {} + + iconv-lite@0.4.24: + dependencies: + safer-buffer: 2.1.2 + + icss-utils@5.1.0(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + + ieee754@1.2.1: {} + + ignore-by-default@1.0.1: {} + + ignore-walk@3.0.4: + dependencies: + minimatch: 3.1.2 + + ignore@5.3.2: {} + + immediate@3.0.6: {} + + immer@9.0.21: {} + + immutable@3.8.2: {} + + import-fresh@3.3.1: + dependencies: + parent-module: 1.0.1 + resolve-from: 4.0.0 + + import-lazy@4.0.0: {} + + imurmurhash@0.1.4: {} + + indent-string@4.0.0: {} + + indent-string@5.0.0: {} + + inflation@2.1.0: {} + + inflight@1.0.6: + dependencies: + once: 1.4.0 + wrappy: 1.0.2 + + inherits@2.0.3: {} + + inherits@2.0.4: {} + + ini@1.3.8: {} + + ini@2.0.0: {} + + ini@4.1.2: {} + + inquirer@8.2.5: + dependencies: + ansi-escapes: 4.3.2 + chalk: 4.1.2 + cli-cursor: 3.1.0 + cli-width: 3.0.0 + external-editor: 3.1.0 + figures: 3.2.0 + lodash: 4.17.21 + mute-stream: 0.0.8 + ora: 5.4.1 + run-async: 2.4.1 + rxjs: 7.8.2 + string-width: 4.2.3 + strip-ansi: 6.0.1 + through: 2.3.8 + wrap-ansi: 7.0.0 + + inquirer@8.2.6: + dependencies: + ansi-escapes: 4.3.2 + chalk: 4.1.2 + cli-cursor: 3.1.0 + cli-width: 3.0.0 + external-editor: 3.1.0 + figures: 3.2.0 + lodash: 4.17.21 + mute-stream: 0.0.8 + ora: 5.4.1 + run-async: 2.4.1 + rxjs: 7.8.2 + string-width: 4.2.3 + strip-ansi: 6.0.1 + through: 2.3.8 + wrap-ansi: 6.2.0 + + inquirer@9.3.7: + dependencies: + '@inquirer/figures': 1.0.13 + ansi-escapes: 4.3.2 + cli-width: 4.1.0 + external-editor: 3.1.0 + mute-stream: 1.0.0 + ora: 5.4.1 + run-async: 3.0.0 + rxjs: 7.8.2 + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 6.2.0 + yoctocolors-cjs: 2.1.2 + + interpret@1.4.0: {} + + interpret@2.2.0: {} + + interpret@3.1.1: {} + + intl-messageformat@10.5.11: + dependencies: + '@formatjs/ecma402-abstract': 1.18.2 + '@formatjs/fast-memoize': 2.2.0 + '@formatjs/icu-messageformat-parser': 2.7.6 + tslib: 2.8.1 + + intl-messageformat@10.7.7: + dependencies: + '@formatjs/ecma402-abstract': 2.2.4 + '@formatjs/fast-memoize': 2.2.3 + '@formatjs/icu-messageformat-parser': 2.9.4 + tslib: 2.8.1 + + invariant@2.2.4: + dependencies: + loose-envify: 1.4.0 + + is-absolute@1.0.0: + dependencies: + is-relative: 1.0.0 + is-windows: 1.0.2 + + is-arrayish@0.2.1: {} + + is-arrayish@0.3.2: {} + + is-binary-path@2.1.0: + dependencies: + binary-extensions: 2.3.0 + + is-class-hotfix@0.0.6: {} + + is-core-module@2.16.1: + dependencies: + hasown: 2.0.2 + + is-docker@2.2.1: {} + + is-extglob@2.1.1: {} + + is-fullwidth-code-point@3.0.0: {} + + is-generator-function@1.1.0: + dependencies: + call-bound: 1.0.4 + get-proto: 1.0.1 + has-tostringtag: 1.0.2 + safe-regex-test: 1.1.0 + + is-glob@4.0.3: + dependencies: + is-extglob: 2.1.1 + + is-hotkey@0.1.8: {} + + is-interactive@1.0.0: {} + + is-interactive@2.0.0: {} + + is-localhost-ip@2.0.0: {} + + is-number@7.0.0: {} + + is-obj@2.0.0: {} + + is-path-cwd@3.0.0: {} + + is-path-inside@4.0.0: {} + + is-plain-obj@4.1.0: {} + + is-plain-object@5.0.0: {} + + is-regex@1.2.1: + dependencies: + call-bound: 1.0.4 + gopd: 1.2.0 + has-tostringtag: 1.0.2 + hasown: 2.0.2 + + is-relative@1.0.0: + dependencies: + is-unc-path: 1.0.0 + + is-retry-allowed@2.2.0: {} + + is-ssh@1.4.1: + dependencies: + protocols: 2.0.2 + + is-stream@2.0.1: {} + + is-stream@4.0.1: {} + + is-type-of@1.4.0: + dependencies: + core-util-is: 1.0.3 + is-class-hotfix: 0.0.6 + isstream: 0.1.2 + + is-typedarray@1.0.0: {} + + is-unc-path@1.0.0: + dependencies: + unc-path-regex: 0.1.2 + + is-unicode-supported@0.1.0: {} + + is-unicode-supported@1.3.0: {} + + is-unicode-supported@2.1.0: {} + + is-windows@1.0.2: {} + + is-wsl@2.2.0: + dependencies: + is-docker: 2.2.1 + + isarray@0.0.1: {} + + isarray@1.0.0: {} + + isbinaryfile@5.0.4: {} + + isexe@2.0.0: {} + + isobject@3.0.1: {} + + isstream@0.1.2: {} + + jackspeak@2.3.6: + dependencies: + '@isaacs/cliui': 8.0.2 + optionalDependencies: + '@pkgjs/parseargs': 0.11.0 + + jackspeak@3.4.3: + dependencies: + '@isaacs/cliui': 8.0.2 + optionalDependencies: + '@pkgjs/parseargs': 0.11.0 + + jest-worker@27.5.1: + dependencies: + '@types/node': 20.19.9 + merge-stream: 2.0.0 + supports-color: 8.1.1 + + jju@1.4.0: {} + + jose@4.15.9: {} + + js-sha3@0.8.0: {} + + js-tokens@4.0.0: {} + + js-yaml@3.14.1: + dependencies: + argparse: 1.0.10 + esprima: 4.0.1 + + jsbn@0.1.1: {} + + jsesc@3.1.0: {} + + json-buffer@3.0.1: {} + + json-logic-js@2.0.5: {} + + json-parse-even-better-errors@2.3.1: {} + + json-schema-traverse@0.4.1: {} + + json-schema-traverse@1.0.0: {} + + json-schema@0.4.0: {} + + json-stringify-safe@5.0.1: {} + + json5@2.2.3: {} + + jsonc-parser@3.3.1: {} + + jsonfile@4.0.0: + optionalDependencies: + graceful-fs: 4.2.11 + + jsonfile@6.1.0: + dependencies: + universalify: 2.0.1 + optionalDependencies: + graceful-fs: 4.2.11 + + jsonwebtoken@9.0.0: + dependencies: + jws: 3.2.2 + lodash: 4.17.21 + ms: 2.1.3 + semver: 7.7.2 + + jsonwebtoken@9.0.2: + dependencies: + jws: 3.2.2 + lodash.includes: 4.3.0 + lodash.isboolean: 3.0.3 + lodash.isinteger: 4.0.4 + lodash.isnumber: 3.0.3 + lodash.isplainobject: 4.0.6 + lodash.isstring: 4.0.1 + lodash.once: 4.1.1 + ms: 2.1.3 + semver: 7.7.2 + + jsprim@1.4.2: + dependencies: + assert-plus: 1.0.0 + extsprintf: 1.3.0 + json-schema: 0.4.0 + verror: 1.10.0 + + jwa@1.4.2: + dependencies: + buffer-equal-constant-time: 1.0.1 + ecdsa-sig-formatter: 1.0.11 + safe-buffer: 5.2.1 + + jwa@2.0.1: + dependencies: + buffer-equal-constant-time: 1.0.1 + ecdsa-sig-formatter: 1.0.11 + safe-buffer: 5.2.1 + optional: true + + jwk-to-pem@2.0.5: + dependencies: + asn1.js: 5.4.1 + elliptic: 6.6.1 + safe-buffer: 5.2.1 + + jwk-to-pem@2.0.7: + dependencies: + asn1.js: 5.4.1 + elliptic: 6.6.1 + safe-buffer: 5.2.1 + optional: true + + jwks-rsa@3.1.0: + dependencies: + '@types/express': 4.17.23 + '@types/jsonwebtoken': 9.0.10 + debug: 4.4.1(supports-color@5.5.0) + jose: 4.15.9 + limiter: 1.1.5 + lru-memoizer: 2.3.0 + transitivePeerDependencies: + - supports-color + + jws@3.2.2: + dependencies: + jwa: 1.4.2 + safe-buffer: 5.2.1 + + jws@4.0.0: + dependencies: + jwa: 2.0.1 + safe-buffer: 5.2.1 + optional: true + + keygrip@1.1.0: + dependencies: + tsscmp: 1.0.6 + + keyv@4.5.4: + dependencies: + json-buffer: 3.0.1 + + kind-of@6.0.3: {} + + kleur@3.0.3: {} + + knex@3.0.1(pg@8.8.0): + dependencies: + colorette: 2.0.19 + commander: 10.0.1 + debug: 4.3.4 + escalade: 3.2.0 + esm: 3.2.25 + get-package-type: 0.1.0 + getopts: 2.3.0 + interpret: 2.2.0 + lodash: 4.17.21 + pg-connection-string: 2.6.1 + rechoir: 0.8.0 + resolve-from: 5.0.0 + tarn: 3.0.2 + tildify: 2.0.0 + optionalDependencies: + pg: 8.8.0 + transitivePeerDependencies: + - supports-color + + koa-body@6.0.1: + dependencies: + '@types/co-body': 6.1.3 + '@types/formidable': 2.0.6 + '@types/koa': 2.15.0 + co-body: 6.2.0 + formidable: 2.1.5 + zod: 3.25.67 + + koa-compose@4.1.0: {} + + koa-compress@5.1.1: + dependencies: + bytes: 3.1.2 + compressible: 2.0.18 + http-errors: 1.8.1 + koa-is-json: 1.0.0 + + koa-convert@2.0.0: + dependencies: + co: 4.6.0 + koa-compose: 4.1.0 + + koa-favicon@2.1.0: + dependencies: + mz: 2.7.0 + + koa-helmet@7.0.2: + dependencies: + helmet: 6.2.0 + + koa-ip@2.1.3: + dependencies: + debug: 4.3.4 + lodash.isplainobject: 4.0.6 + request-ip: 3.3.0 + transitivePeerDependencies: + - supports-color + + koa-is-json@1.0.0: {} + + koa-passport@6.0.0: + dependencies: + passport: 0.6.0 + + koa-range@0.3.0: + dependencies: + stream-slice: 0.1.2 + + koa-send@5.0.1: + dependencies: + debug: 4.4.1(supports-color@5.5.0) + http-errors: 1.8.1 + resolve-path: 1.4.0 + transitivePeerDependencies: + - supports-color + + koa-session@6.4.0: + dependencies: + crc: 3.8.0 + debug: 4.4.1(supports-color@5.5.0) + is-type-of: 1.4.0 + uuid: 8.3.2 + transitivePeerDependencies: + - supports-color + + koa-static@5.0.0: + dependencies: + debug: 3.2.7 + koa-send: 5.0.1 + transitivePeerDependencies: + - supports-color + + koa2-ratelimit@1.1.3: {} + + koa@2.16.1: + dependencies: + accepts: 1.3.8 + cache-content-type: 1.0.1 + content-disposition: 0.5.4 + content-type: 1.0.5 + cookies: 0.9.1 + debug: 4.4.1(supports-color@5.5.0) + delegates: 1.0.0 + depd: 2.0.0 + destroy: 1.2.0 + encodeurl: 1.0.2 + escape-html: 1.0.3 + fresh: 0.5.2 + http-assert: 1.5.0 + http-errors: 1.8.1 + is-generator-function: 1.1.0 + koa-compose: 4.1.0 + koa-convert: 2.0.0 + on-finished: 2.4.1 + only: 0.0.2 + parseurl: 1.3.3 + statuses: 1.5.0 + type-is: 1.6.18 + vary: 1.1.2 + transitivePeerDependencies: + - supports-color + + kuler@2.0.0: {} + + leac@0.6.0: {} + + libbase64@0.1.0: {} + + libmime@2.1.0: + dependencies: + iconv-lite: 0.4.13 + libbase64: 0.1.0 + libqp: 1.1.0 + + libmime@2.1.3: + dependencies: + iconv-lite: 0.4.15 + libbase64: 0.1.0 + libqp: 1.1.0 + + libqp@1.1.0: {} + + lie@3.1.1: + dependencies: + immediate: 3.0.6 + + liftoff@4.0.0: + dependencies: + extend: 3.0.2 + findup-sync: 5.0.0 + fined: 2.0.0 + flagged-respawn: 2.0.0 + is-plain-object: 5.0.0 + object.map: 1.0.1 + rechoir: 0.8.0 + resolve: 1.22.10 + + limiter@1.1.5: {} + + lines-and-columns@1.2.4: {} + + linkify-it@4.0.1: + dependencies: + uc.micro: 1.0.6 + + load-yaml-file@0.2.0: + dependencies: + graceful-fs: 4.2.11 + js-yaml: 3.14.1 + pify: 4.0.1 + strip-bom: 3.0.0 + + loader-runner@4.3.0: {} + + loader-utils@2.0.4: + dependencies: + big.js: 5.2.2 + emojis-list: 3.0.0 + json5: 2.2.3 + + localforage@1.10.0: + dependencies: + lie: 3.1.1 + + locate-path@3.0.0: + dependencies: + p-locate: 3.0.0 + path-exists: 3.0.0 + + locate-path@5.0.0: + dependencies: + p-locate: 4.1.0 + + locate-path@6.0.0: + dependencies: + p-locate: 5.0.0 + + lodash-es@4.17.21: {} + + lodash.clonedeep@4.5.0: {} + + lodash.deburr@4.1.0: {} + + lodash.get@4.4.2: {} + + lodash.includes@4.3.0: {} + + lodash.isboolean@3.0.3: {} + + lodash.isinteger@4.0.4: {} + + lodash.isnumber@3.0.3: {} + + lodash.isplainobject@4.0.6: {} + + lodash.isstring@4.0.1: {} + + lodash.once@4.1.1: {} + + lodash@4.17.21: {} + + log-symbols@4.1.0: + dependencies: + chalk: 4.1.2 + is-unicode-supported: 0.1.0 + + log-symbols@6.0.0: + dependencies: + chalk: 5.5.0 + is-unicode-supported: 1.3.0 + + logform@2.7.0: + dependencies: + '@colors/colors': 1.6.0 + '@types/triple-beam': 1.3.5 + fecha: 4.2.3 + ms: 2.1.3 + safe-stable-stringify: 2.5.0 + triple-beam: 1.4.1 + + loglevel@1.9.2: {} + + long-timeout@0.1.1: {} + + loose-envify@1.4.0: + dependencies: + js-tokens: 4.0.0 + + lower-case@2.0.2: + dependencies: + tslib: 2.8.1 + + lowercase-keys@2.0.0: {} + + lru-cache@10.4.3: {} + + lru-cache@6.0.0: + dependencies: + yallist: 4.0.0 + + lru-memoizer@2.3.0: + dependencies: + lodash.clonedeep: 4.5.0 + lru-cache: 6.0.0 + + lunr@2.3.9: {} + + luxon@3.7.1: {} + + lz-string@1.5.0: {} + + mailcomposer@3.12.0: + dependencies: + buildmail: 3.10.0 + libmime: 2.1.0 + + make-dir@3.1.0: + dependencies: + semver: 6.3.1 + + make-iterator@1.0.1: + dependencies: + kind-of: 6.0.3 + + map-cache@0.2.2: {} + + markdown-it-abbr@1.0.4: {} + + markdown-it-container@3.0.0: {} + + markdown-it-deflist@2.1.0: {} + + markdown-it-emoji@2.0.2: {} + + markdown-it-footnote@3.0.3: {} + + markdown-it-ins@3.0.1: {} + + markdown-it-mark@3.0.1: {} + + markdown-it-sub@1.0.0: {} + + markdown-it-sup@1.0.0: {} + + markdown-it@13.0.2: + dependencies: + argparse: 2.0.1 + entities: 3.0.1 + linkify-it: 4.0.1 + mdurl: 1.0.1 + uc.micro: 1.0.6 + + marked@4.3.0: {} + + match-sorter@6.3.4: + dependencies: + '@babel/runtime': 7.28.2 + remove-accents: 0.5.0 + + matcher@3.0.0: + dependencies: + escape-string-regexp: 4.0.0 + + math-intrinsics@1.1.0: {} + + mdurl@1.0.1: {} + + media-chrome@4.2.3: {} + + media-tracks@0.3.3: {} + + media-typer@0.3.0: {} + + memfs@3.5.3: + dependencies: + fs-monkey: 1.1.0 + + memoize-one@5.2.1: {} + + memoize-one@6.0.0: {} + + 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 + + microseconds@0.2.0: {} + + mime-db@1.52.0: {} + + mime-db@1.54.0: {} + + mime-types@2.1.35: + dependencies: + mime-db: 1.52.0 + + mimic-fn@2.1.0: {} + + mimic-function@5.0.1: {} + + mimic-response@1.0.1: {} + + mimic-response@3.1.0: {} + + mini-css-extract-plugin@2.7.7(webpack@5.101.0(esbuild@0.25.8)): + dependencies: + schema-utils: 4.3.2 + webpack: 5.101.0(esbuild@0.25.8) + + minimalistic-assert@1.0.1: {} + + minimalistic-crypto-utils@1.0.1: {} + + minimatch@3.1.2: + dependencies: + brace-expansion: 1.1.12 + + minimatch@9.0.3: + dependencies: + brace-expansion: 2.0.2 + + minimatch@9.0.5: + dependencies: + brace-expansion: 2.0.2 + + minimist@1.2.8: {} + + minipass@3.3.6: + dependencies: + yallist: 4.0.0 + + minipass@5.0.0: {} + + minipass@7.1.2: {} + + minizlib@2.1.2: + dependencies: + minipass: 3.3.6 + yallist: 4.0.0 + + mkdirp@1.0.4: {} + + mkdirp@3.0.1: {} + + mrmime@2.0.1: {} + + ms@2.0.0: {} + + ms@2.1.2: {} + + ms@2.1.3: {} + + multistream@4.1.0: + dependencies: + once: 1.4.0 + readable-stream: 3.6.2 + + mustache@4.2.0: {} + + mute-stream@0.0.8: {} + + mute-stream@1.0.0: {} + + mux-embed@5.11.0: {} + + mz@2.7.0: + dependencies: + any-promise: 1.3.0 + object-assign: 4.1.1 + thenify-all: 1.6.0 + + nano-time@1.0.0: + dependencies: + big-integer: 1.6.52 + + nanoclone@0.2.1: {} + + nanoid@3.3.11: {} + + negotiator@0.6.3: {} + + neo-async@2.6.2: {} + + no-case@3.0.4: + dependencies: + lower-case: 2.0.2 + tslib: 2.8.1 + + node-abort-controller@3.1.1: {} + + node-machine-id@1.1.12: {} + + node-plop@0.32.0: + dependencies: + '@types/inquirer': 9.0.9 + change-case: 4.1.2 + del: 7.1.0 + globby: 13.2.2 + handlebars: 4.7.8 + inquirer: 9.3.7 + isbinaryfile: 5.0.4 + lodash.get: 4.4.2 + lower-case: 2.0.2 + mkdirp: 3.0.1 + resolve: 1.22.10 + title-case: 3.0.3 + upper-case: 2.0.2 + + node-releases@2.0.19: {} + + node-schedule@2.1.1: + dependencies: + cron-parser: 4.9.0 + long-timeout: 0.1.1 + sorted-array-functions: 1.3.0 + + node-ses@3.0.3: + dependencies: + aws4: 1.9.1 + debug: 2.6.9 + request: 2.88.2 + xml2js: 0.4.23 + transitivePeerDependencies: + - supports-color + + nodemailer-fetch@1.6.0: {} + + nodemailer-shared@1.1.0: + dependencies: + nodemailer-fetch: 1.6.0 + + nodemon@3.0.2: + dependencies: + chokidar: 3.6.0 + debug: 4.4.1(supports-color@5.5.0) + ignore-by-default: 1.0.1 + minimatch: 3.1.2 + pstree.remy: 1.1.8 + semver: 7.7.2 + simple-update-notifier: 2.0.0 + supports-color: 5.5.0 + touch: 3.1.1 + undefsafe: 2.0.5 + + nodemon@3.1.10: + dependencies: + chokidar: 3.6.0 + debug: 4.4.1(supports-color@5.5.0) + ignore-by-default: 1.0.1 + minimatch: 3.1.2 + pstree.remy: 1.1.8 + semver: 7.7.2 + simple-update-notifier: 2.0.0 + supports-color: 5.5.0 + touch: 3.1.1 + undefsafe: 2.0.5 + + noms@0.0.0: + dependencies: + inherits: 2.0.4 + readable-stream: 1.0.34 + + normalize-package-data@2.5.0: + dependencies: + hosted-git-info: 2.8.9 + resolve: 1.22.10 + semver: 5.7.2 + validate-npm-package-license: 3.0.4 + + normalize-path@3.0.0: {} + + normalize-url@6.1.0: {} + + npm-bundled@1.1.2: + dependencies: + npm-normalize-package-bin: 1.0.1 + + npm-normalize-package-bin@1.0.1: {} + + npm-packlist@2.2.2: + dependencies: + glob: 7.2.3 + ignore-walk: 3.0.4 + npm-bundled: 1.1.2 + npm-normalize-package-bin: 1.0.1 + + npm-run-path@4.0.1: + dependencies: + path-key: 3.1.1 + + npm-run-path@6.0.0: + dependencies: + path-key: 4.0.0 + unicorn-magic: 0.3.0 + + nth-check@2.1.1: + dependencies: + boolbase: 1.0.0 + + oauth-sign@0.9.0: {} + + object-assign@4.1.1: {} + + object-inspect@1.13.4: {} + + object-keys@1.1.1: {} + + object.defaults@1.1.0: + dependencies: + array-each: 1.0.1 + array-slice: 1.1.0 + for-own: 1.0.0 + isobject: 3.0.1 + + object.map@1.0.1: + dependencies: + for-own: 1.0.0 + make-iterator: 1.0.1 + + object.pick@1.3.0: + dependencies: + isobject: 3.0.1 + + oblivious-set@1.0.0: {} + + on-finished@2.4.1: + dependencies: + ee-first: 1.1.1 + + once@1.4.0: + dependencies: + wrappy: 1.0.2 + + one-time@1.0.0: + dependencies: + fn.name: 1.1.0 + + onetime@5.1.2: + dependencies: + mimic-fn: 2.1.0 + + onetime@7.0.0: + dependencies: + mimic-function: 5.0.1 + + only@0.0.2: {} + + open@8.4.0: + dependencies: + define-lazy-prop: 2.0.0 + is-docker: 2.2.1 + is-wsl: 2.2.0 + + openapi-types@12.1.3: {} + + opener@1.5.2: {} + + ora@5.4.1: + dependencies: + bl: 4.1.0 + chalk: 4.1.2 + cli-cursor: 3.1.0 + cli-spinners: 2.9.2 + is-interactive: 1.0.0 + is-unicode-supported: 0.1.0 + log-symbols: 4.1.0 + strip-ansi: 6.0.1 + wcwidth: 1.0.1 + + ora@8.2.0: + dependencies: + chalk: 5.5.0 + cli-cursor: 5.0.0 + cli-spinners: 2.9.2 + is-interactive: 2.0.0 + is-unicode-supported: 2.1.0 + log-symbols: 6.0.0 + stdin-discarder: 0.2.2 + string-width: 7.2.0 + strip-ansi: 7.1.0 + + os-paths@7.4.0: + optionalDependencies: + fsevents: 2.3.3 + + os-tmpdir@1.0.2: {} + + outdent@0.8.0: {} + + p-cancelable@2.1.1: {} + + p-limit@2.3.0: + dependencies: + p-try: 2.2.0 + + p-limit@3.1.0: + dependencies: + yocto-queue: 0.1.0 + + p-locate@3.0.0: + dependencies: + p-limit: 2.3.0 + + p-locate@4.1.0: + dependencies: + p-limit: 2.3.0 + + p-locate@5.0.0: + dependencies: + p-limit: 3.1.0 + + p-map@4.0.0: + dependencies: + aggregate-error: 3.1.0 + + p-map@5.5.0: + dependencies: + aggregate-error: 4.0.1 + + p-try@2.2.0: {} + + package-json-from-dist@1.0.1: {} + + package-json@7.0.0: + dependencies: + got: 11.8.6 + registry-auth-token: 4.2.2 + registry-url: 5.1.0 + semver: 7.7.2 + + packet-reader@1.0.0: {} + + param-case@3.0.4: + dependencies: + dot-case: 3.0.4 + tslib: 2.8.1 + + parent-module@1.0.1: + dependencies: + callsites: 3.1.0 + + parse-filepath@1.0.2: + dependencies: + is-absolute: 1.0.0 + map-cache: 0.2.2 + path-root: 0.1.1 + + parse-json@5.2.0: + dependencies: + '@babel/code-frame': 7.27.1 + error-ex: 1.3.2 + json-parse-even-better-errors: 2.3.1 + lines-and-columns: 1.2.4 + + parse-ms@4.0.0: {} + + parse-passwd@1.0.0: {} + + parse-path@7.1.0: + dependencies: + protocols: 2.0.2 + + parse-srcset@1.0.2: {} + + parse-url@8.1.0: + dependencies: + parse-path: 7.1.0 + + parseley@0.12.1: + dependencies: + leac: 0.6.0 + peberminta: 0.9.0 + + parseurl@1.3.3: {} + + pascal-case@3.1.2: + dependencies: + no-case: 3.0.4 + tslib: 2.8.1 + + passport-local@1.0.0: + dependencies: + passport-strategy: 1.0.0 + + passport-strategy@1.0.0: {} + + passport@0.6.0: + dependencies: + passport-strategy: 1.0.0 + pause: 0.0.1 + utils-merge: 1.0.1 + + path-case@3.0.4: + dependencies: + dot-case: 3.0.4 + tslib: 2.8.1 + + path-exists@3.0.0: {} + + path-exists@4.0.0: {} + + path-is-absolute@1.0.1: {} + + path-key@3.1.1: {} + + path-key@4.0.0: {} + + path-parse@1.0.7: {} + + path-root-regex@0.1.2: {} + + path-root@0.1.1: + dependencies: + path-root-regex: 0.1.2 + + path-scurry@1.11.1: + dependencies: + lru-cache: 10.4.3 + minipass: 7.1.2 + + path-to-regexp@6.3.0: {} + + path-type@4.0.0: {} + + pause@0.0.1: {} + + peberminta@0.9.0: {} + + performance-now@2.1.0: {} + + pg-connection-string@2.6.1: {} + + pg-connection-string@2.9.1: {} + + pg-int8@1.0.1: {} + + pg-pool@3.10.1(pg@8.8.0): + dependencies: + pg: 8.8.0 + + pg-protocol@1.10.3: {} + + pg-types@2.2.0: + dependencies: + pg-int8: 1.0.1 + postgres-array: 2.0.0 + postgres-bytea: 1.0.0 + postgres-date: 1.0.7 + postgres-interval: 1.2.0 + + pg@8.8.0: + dependencies: + buffer-writer: 2.0.0 + packet-reader: 1.0.0 + pg-connection-string: 2.9.1 + pg-pool: 3.10.1(pg@8.8.0) + pg-protocol: 1.10.3 + pg-types: 2.2.0 + pgpass: 1.0.5 + + pgpass@1.0.5: + dependencies: + split2: 4.2.0 + + picocolors@1.1.1: {} + + picomatch@2.3.1: {} + + pify@4.0.1: {} + + pkg-dir@4.2.0: + dependencies: + find-up: 4.1.0 + + pkg-up@3.1.0: + dependencies: + find-up: 3.0.0 + + player.style@0.0.8: + dependencies: + media-chrome: 4.2.3 + + plop@4.0.1: + dependencies: + '@types/liftoff': 4.0.3 + chalk: 5.5.0 + interpret: 3.1.1 + liftoff: 4.0.0 + minimist: 1.2.8 + node-plop: 0.32.0 + ora: 8.2.0 + v8flags: 4.0.1 + + pluralize@8.0.0: {} + + pony-cause@2.1.11: {} + + postcss-modules-extract-imports@3.1.0(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + + postcss-modules-local-by-default@4.2.0(postcss@8.5.6): + dependencies: + icss-utils: 5.1.0(postcss@8.5.6) + postcss: 8.5.6 + postcss-selector-parser: 7.1.0 + postcss-value-parser: 4.2.0 + + postcss-modules-scope@3.2.1(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + postcss-selector-parser: 7.1.0 + + postcss-modules-values@4.0.0(postcss@8.5.6): + dependencies: + icss-utils: 5.1.0(postcss@8.5.6) + postcss: 8.5.6 + + postcss-selector-parser@7.1.0: + dependencies: + cssesc: 3.0.0 + util-deprecate: 1.0.2 + + postcss-value-parser@4.2.0: {} + + postcss@8.4.49: + dependencies: + nanoid: 3.3.11 + picocolors: 1.1.1 + source-map-js: 1.2.1 + + postcss@8.5.6: + dependencies: + nanoid: 3.3.11 + picocolors: 1.1.1 + source-map-js: 1.2.1 + + postgres-array@2.0.0: {} + + postgres-bytea@1.0.0: {} + + postgres-date@1.0.7: {} + + postgres-interval@1.2.0: + dependencies: + xtend: 4.0.2 + + preferred-pm@3.1.2: + dependencies: + find-up: 5.0.0 + find-yarn-workspace-root2: 1.2.16 + path-exists: 4.0.0 + which-pm: 2.0.0 + + prettier-plugin-packagejson@2.5.2(prettier@3.3.3): + dependencies: + sort-package-json: 2.10.1 + synckit: 0.9.1 + optionalDependencies: + prettier: 3.3.3 + + prettier@2.8.8: {} + + prettier@3.3.3: {} + + pretty-error@4.0.0: + dependencies: + lodash: 4.17.21 + renderkid: 3.0.0 + + pretty-format@27.5.1: + dependencies: + ansi-regex: 5.0.1 + ansi-styles: 5.2.0 + react-is: 17.0.2 + + pretty-ms@9.2.0: + dependencies: + parse-ms: 4.0.0 + + prismjs@1.30.0: {} + + process-nextick-args@2.0.1: {} + + prompts@2.4.2: + dependencies: + kleur: 3.0.3 + sisteransi: 1.0.5 + + prop-types@15.8.1: + dependencies: + loose-envify: 1.4.0 + object-assign: 4.1.1 + react-is: 16.13.1 + + property-expr@2.0.6: {} + + proto-list@1.2.4: {} + + protocols@2.0.2: {} + + proxy-from-env@1.1.0: {} + + psl@1.15.0: + dependencies: + punycode: 2.3.1 + + pstree.remy@1.1.8: {} + + pump@3.0.3: + dependencies: + end-of-stream: 1.4.5 + once: 1.4.0 + + punycode@2.3.1: {} + + purest@4.0.2: + dependencies: + '@simov/deep-extend': 1.0.0 + qs: 6.14.0 + request-compose: 2.1.7 + request-multipart: 1.0.0 + request-oauth: 1.0.1 + + qs@6.11.1: + dependencies: + side-channel: 1.1.0 + + qs@6.14.0: + dependencies: + side-channel: 1.1.0 + + qs@6.5.3: {} + + queue-microtask@1.2.3: {} + + quick-lru@5.1.1: {} + + randombytes@2.1.0: + dependencies: + safe-buffer: 5.2.1 + + 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 + + rc@1.2.8: + dependencies: + deep-extend: 0.6.0 + ini: 1.3.8 + minimist: 1.2.8 + strip-json-comments: 2.0.1 + + react-diff-viewer-continued@3.2.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + '@emotion/css': 11.13.5 + classnames: 2.5.1 + diff: 5.2.0 + memoize-one: 6.0.0 + prop-types: 15.8.1 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + transitivePeerDependencies: + - supports-color + + react-dnd-html5-backend@16.0.1: + dependencies: + dnd-core: 16.0.1 + + react-dnd@16.0.1(@types/hoist-non-react-statics@3.3.7(@types/react@18.3.23))(@types/node@20.19.9)(@types/react@18.3.23)(react@18.3.1): + dependencies: + '@react-dnd/invariant': 4.0.2 + '@react-dnd/shallowequal': 4.0.2 + dnd-core: 16.0.1 + fast-deep-equal: 3.1.3 + hoist-non-react-statics: 3.3.2 + react: 18.3.1 + optionalDependencies: + '@types/hoist-non-react-statics': 3.3.7(@types/react@18.3.23) + '@types/node': 20.19.9 + '@types/react': 18.3.23 + + react-dom@18.3.1(react@18.3.1): + dependencies: + loose-envify: 1.4.0 + react: 18.3.1 + scheduler: 0.23.2 + + react-email-editor@1.7.11(react@18.3.1): + dependencies: + react: 18.3.1 + unlayer-types: 1.289.0 + + react-fast-compare@2.0.4: {} + + react-fast-compare@3.2.2: {} + + react-helmet@6.1.0(react@18.3.1): + dependencies: + object-assign: 4.1.1 + prop-types: 15.8.1 + react: 18.3.1 + react-fast-compare: 3.2.2 + react-side-effect: 2.1.2(react@18.3.1) + + react-icons@5.5.0(react@18.3.1): + dependencies: + react: 18.3.1 + + react-intl@6.6.2(react@18.3.1)(typescript@5.4.4): + dependencies: + '@formatjs/ecma402-abstract': 1.18.2 + '@formatjs/icu-messageformat-parser': 2.7.6 + '@formatjs/intl': 2.10.0(typescript@5.9.2) + '@formatjs/intl-displaynames': 6.6.6 + '@formatjs/intl-listformat': 7.5.5 + '@types/hoist-non-react-statics': 3.3.7(@types/react@18.3.23) + '@types/react': 18.3.23 + hoist-non-react-statics: 3.3.2 + intl-messageformat: 10.5.11 + react: 18.3.1 + tslib: 2.8.1 + optionalDependencies: + typescript: 5.4.4 + + react-intl@6.6.2(react@18.3.1)(typescript@5.9.2): + dependencies: + '@formatjs/ecma402-abstract': 1.18.2 + '@formatjs/icu-messageformat-parser': 2.7.6 + '@formatjs/intl': 2.10.0(typescript@5.9.2) + '@formatjs/intl-displaynames': 6.6.6 + '@formatjs/intl-listformat': 7.5.5 + '@types/hoist-non-react-statics': 3.3.7(@types/react@18.3.23) + '@types/react': 18.3.23 + hoist-non-react-statics: 3.3.2 + intl-messageformat: 10.5.11 + react: 18.3.1 + tslib: 2.8.1 + optionalDependencies: + typescript: 5.9.2 + + react-intl@6.8.9(react@18.3.1)(typescript@5.9.2): + dependencies: + '@formatjs/ecma402-abstract': 2.2.4 + '@formatjs/icu-messageformat-parser': 2.9.4 + '@formatjs/intl': 2.10.15(typescript@5.9.2) + '@formatjs/intl-displaynames': 6.8.5 + '@formatjs/intl-listformat': 7.7.5 + '@types/hoist-non-react-statics': 3.3.7(@types/react@18.3.23) + '@types/react': 18.3.23 + hoist-non-react-statics: 3.3.2 + intl-messageformat: 10.7.7 + react: 18.3.1 + tslib: 2.8.1 + optionalDependencies: + typescript: 5.9.2 + + react-is@16.13.1: {} + + react-is@17.0.2: {} + + react-is@18.3.1: {} + + react-query@3.39.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + '@babel/runtime': 7.28.2 + broadcast-channel: 3.7.0 + match-sorter: 6.3.4 + react: 18.3.1 + optionalDependencies: + react-dom: 18.3.1(react@18.3.1) + + react-redux@7.2.9(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + '@babel/runtime': 7.28.2 + '@types/react-redux': 7.1.34 + hoist-non-react-statics: 3.3.2 + loose-envify: 1.4.0 + prop-types: 15.8.1 + react: 18.3.1 + react-is: 17.0.2 + optionalDependencies: + react-dom: 18.3.1(react@18.3.1) + + react-redux@8.1.3(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(redux@4.2.1): + dependencies: + '@babel/runtime': 7.28.2 + '@types/hoist-non-react-statics': 3.3.7(@types/react@18.3.23) + '@types/use-sync-external-store': 0.0.3 + hoist-non-react-statics: 3.3.2 + react: 18.3.1 + react-is: 18.3.1 + use-sync-external-store: 1.5.0(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.23 + '@types/react-dom': 18.3.7(@types/react@18.3.23) + react-dom: 18.3.1(react@18.3.1) + redux: 4.2.1 + + react-refresh@0.14.0: {} + + react-remove-scroll-bar@2.3.8(@types/react@18.3.23)(react@18.3.1): + dependencies: + react: 18.3.1 + react-style-singleton: 2.2.3(@types/react@18.3.23)(react@18.3.1) + tslib: 2.8.1 + optionalDependencies: + '@types/react': 18.3.23 + + react-remove-scroll@2.5.10(@types/react@18.3.23)(react@18.3.1): + dependencies: + react: 18.3.1 + react-remove-scroll-bar: 2.3.8(@types/react@18.3.23)(react@18.3.1) + react-style-singleton: 2.2.3(@types/react@18.3.23)(react@18.3.1) + tslib: 2.8.1 + use-callback-ref: 1.3.3(@types/react@18.3.23)(react@18.3.1) + use-sidecar: 1.1.3(@types/react@18.3.23)(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.23 + + react-remove-scroll@2.5.5(@types/react@18.3.23)(react@18.3.1): + dependencies: + react: 18.3.1 + react-remove-scroll-bar: 2.3.8(@types/react@18.3.23)(react@18.3.1) + react-style-singleton: 2.2.3(@types/react@18.3.23)(react@18.3.1) + tslib: 2.8.1 + use-callback-ref: 1.3.3(@types/react@18.3.23)(react@18.3.1) + use-sidecar: 1.1.3(@types/react@18.3.23)(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.23 + + react-router-dom@6.30.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + '@remix-run/router': 1.23.0 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + react-router: 6.30.1(react@18.3.1) + + react-router@6.30.1(react@18.3.1): + dependencies: + '@remix-run/router': 1.23.0 + react: 18.3.1 + + react-select@5.8.0(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + '@babel/runtime': 7.28.2 + '@emotion/cache': 11.14.0 + '@emotion/react': 11.14.0(@types/react@18.3.23)(react@18.3.1) + '@floating-ui/dom': 1.7.3 + '@types/react-transition-group': 4.4.12(@types/react@18.3.23) + memoize-one: 6.0.0 + prop-types: 15.8.1 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + react-transition-group: 4.4.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + use-isomorphic-layout-effect: 1.2.1(@types/react@18.3.23)(react@18.3.1) + transitivePeerDependencies: + - '@types/react' + - supports-color + + react-side-effect@2.1.2(react@18.3.1): + dependencies: + react: 18.3.1 + + react-style-singleton@2.2.3(@types/react@18.3.23)(react@18.3.1): + dependencies: + get-nonce: 1.0.1 + react: 18.3.1 + tslib: 2.8.1 + optionalDependencies: + '@types/react': 18.3.23 + + react-textarea-autosize@8.5.9(@types/react@18.3.23)(react@18.3.1): + dependencies: + '@babel/runtime': 7.28.2 + react: 18.3.1 + use-composed-ref: 1.4.0(@types/react@18.3.23)(react@18.3.1) + use-latest: 1.3.0(@types/react@18.3.23)(react@18.3.1) + transitivePeerDependencies: + - '@types/react' + + react-transition-group@4.4.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + '@babel/runtime': 7.28.2 + dom-helpers: 5.2.1 + loose-envify: 1.4.0 + prop-types: 15.8.1 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + react-window@1.8.10(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + '@babel/runtime': 7.28.2 + memoize-one: 5.2.1 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + react@18.3.1: + dependencies: + loose-envify: 1.4.0 + + read-pkg-up@7.0.1: + dependencies: + find-up: 4.1.0 + read-pkg: 5.2.0 + type-fest: 0.8.1 + + read-pkg@5.2.0: + dependencies: + '@types/normalize-package-data': 2.4.4 + normalize-package-data: 2.5.0 + parse-json: 5.2.0 + type-fest: 0.6.0 + + readable-stream@1.0.34: + dependencies: + core-util-is: 1.0.3 + inherits: 2.0.4 + isarray: 0.0.1 + string_decoder: 0.10.31 + + readable-stream@2.3.8: + dependencies: + core-util-is: 1.0.3 + inherits: 2.0.4 + isarray: 1.0.0 + process-nextick-args: 2.0.1 + safe-buffer: 5.1.2 + string_decoder: 1.1.1 + util-deprecate: 1.0.2 + + readable-stream@3.6.2: + dependencies: + inherits: 2.0.4 + string_decoder: 1.3.0 + util-deprecate: 1.0.2 + + readdirp@3.6.0: + dependencies: + picomatch: 2.3.1 + + readdirp@4.1.2: {} + + rechoir@0.6.2: + dependencies: + resolve: 1.22.10 + + rechoir@0.8.0: + dependencies: + resolve: 1.22.10 + + redux-immutable@4.0.0(immutable@3.8.2): + dependencies: + immutable: 3.8.2 + + redux-thunk@2.4.2(redux@4.2.1): + dependencies: + redux: 4.2.1 + + redux@4.2.1: + dependencies: + '@babel/runtime': 7.28.2 + + registry-auth-token@4.2.2: + dependencies: + rc: 1.2.8 + + registry-auth-token@5.1.0: + dependencies: + '@pnpm/npm-conf': 2.3.1 + + registry-url@5.1.0: + dependencies: + rc: 1.2.8 + + relateurl@0.2.7: {} + + remeda@2.29.0: + dependencies: + type-fest: 4.41.0 + + remove-accents@0.5.0: {} + + renderkid@3.0.0: + dependencies: + css-select: 4.3.0 + dom-converter: 0.2.0 + htmlparser2: 6.1.0 + lodash: 4.17.21 + strip-ansi: 6.0.1 + + request-compose@2.1.7: {} + + request-ip@3.3.0: {} + + request-multipart@1.0.0: + dependencies: + bl: 4.1.0 + isstream: 0.1.2 + mime-types: 2.1.35 + multistream: 4.1.0 + uuid: 8.3.2 + + request-oauth@1.0.1: + dependencies: + oauth-sign: 0.9.0 + qs: 6.14.0 + uuid: 8.3.2 + + request@2.88.2: + dependencies: + aws-sign2: 0.7.0 + aws4: 1.9.1 + caseless: 0.12.0 + combined-stream: 1.0.8 + extend: 3.0.2 + forever-agent: 0.6.1 + form-data: 2.3.3 + har-validator: 5.1.5 + http-signature: 1.2.0 + is-typedarray: 1.0.0 + isstream: 0.1.2 + json-stringify-safe: 5.0.1 + mime-types: 2.1.35 + oauth-sign: 0.9.0 + performance-now: 2.1.0 + qs: 6.5.3 + safe-buffer: 5.2.1 + tough-cookie: 2.5.0 + tunnel-agent: 0.6.0 + uuid: 3.4.0 + + require-directory@2.1.1: {} + + require-from-string@2.0.2: {} + + reselect@4.1.8: {} + + resolve-alpn@1.2.1: {} + + resolve-cwd@3.0.0: + dependencies: + resolve-from: 5.0.0 + + resolve-dir@1.0.1: + dependencies: + expand-tilde: 2.0.2 + global-modules: 1.0.0 + + resolve-from@4.0.0: {} + + resolve-from@5.0.0: {} + + resolve-path@1.4.0: + dependencies: + http-errors: 1.6.3 + path-is-absolute: 1.0.1 + + resolve-pkg-maps@1.0.0: {} + + resolve.exports@2.0.2: {} + + resolve@1.22.10: + dependencies: + is-core-module: 2.16.1 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + + responselike@2.0.1: + dependencies: + lowercase-keys: 2.0.0 + + restore-cursor@3.1.0: + dependencies: + onetime: 5.1.2 + signal-exit: 3.0.7 + + restore-cursor@5.1.0: + dependencies: + onetime: 7.0.0 + signal-exit: 4.1.0 + + reusify@1.1.0: {} + + rimraf@3.0.2: + dependencies: + glob: 7.2.3 + + rimraf@5.0.5: + dependencies: + glob: 10.4.5 + + roarr@2.15.4: + dependencies: + boolean: 3.2.0 + detect-node: 2.1.0 + globalthis: 1.0.4 + json-stringify-safe: 5.0.1 + semver-compare: 1.0.0 + sprintf-js: 1.1.3 + + rollup@4.46.2: + dependencies: + '@types/estree': 1.0.8 + optionalDependencies: + '@rollup/rollup-android-arm-eabi': 4.46.2 + '@rollup/rollup-android-arm64': 4.46.2 + '@rollup/rollup-darwin-arm64': 4.46.2 + '@rollup/rollup-darwin-x64': 4.46.2 + '@rollup/rollup-freebsd-arm64': 4.46.2 + '@rollup/rollup-freebsd-x64': 4.46.2 + '@rollup/rollup-linux-arm-gnueabihf': 4.46.2 + '@rollup/rollup-linux-arm-musleabihf': 4.46.2 + '@rollup/rollup-linux-arm64-gnu': 4.46.2 + '@rollup/rollup-linux-arm64-musl': 4.46.2 + '@rollup/rollup-linux-loongarch64-gnu': 4.46.2 + '@rollup/rollup-linux-ppc64-gnu': 4.46.2 + '@rollup/rollup-linux-riscv64-gnu': 4.46.2 + '@rollup/rollup-linux-riscv64-musl': 4.46.2 + '@rollup/rollup-linux-s390x-gnu': 4.46.2 + '@rollup/rollup-linux-x64-gnu': 4.46.2 + '@rollup/rollup-linux-x64-musl': 4.46.2 + '@rollup/rollup-win32-arm64-msvc': 4.46.2 + '@rollup/rollup-win32-ia32-msvc': 4.46.2 + '@rollup/rollup-win32-x64-msvc': 4.46.2 + fsevents: 2.3.3 + + run-async@2.4.1: {} + + run-async@3.0.0: {} + + run-parallel@1.2.0: + dependencies: + queue-microtask: 1.2.3 + + rxjs@7.8.1: + dependencies: + tslib: 2.8.1 + + rxjs@7.8.2: + dependencies: + tslib: 2.8.1 + + safe-buffer@5.1.2: {} + + safe-buffer@5.2.1: {} + + safe-regex-test@1.1.0: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + is-regex: 1.2.1 + + safe-stable-stringify@2.5.0: {} + + safer-buffer@2.1.2: {} + + sanitize-html@2.13.0: + dependencies: + deepmerge: 4.3.1 + escape-string-regexp: 4.0.0 + htmlparser2: 8.0.2 + is-plain-object: 5.0.0 + parse-srcset: 1.0.2 + postcss: 8.5.6 + + sax@1.4.1: {} + + scheduler@0.23.0: + dependencies: + loose-envify: 1.4.0 + + scheduler@0.23.2: + dependencies: + loose-envify: 1.4.0 + + schema-utils@3.3.0: + dependencies: + '@types/json-schema': 7.0.15 + ajv: 6.12.6 + ajv-keywords: 3.5.2(ajv@6.12.6) + + schema-utils@4.3.2: + dependencies: + '@types/json-schema': 7.0.15 + ajv: 8.17.1 + ajv-formats: 2.1.1(ajv@8.17.1) + ajv-keywords: 5.1.0(ajv@8.17.1) + + scroll-into-view-if-needed@2.2.31: + dependencies: + compute-scroll-into-view: 1.0.20 + + selderee@0.11.0: + dependencies: + parseley: 0.12.1 + + semver-compare@1.0.0: {} + + semver@5.7.2: {} + + semver@6.3.1: {} + + semver@7.5.4: + dependencies: + lru-cache: 6.0.0 + + semver@7.7.2: {} + + sendmail@1.6.1: + dependencies: + dkim-signer: 0.2.2 + mailcomposer: 3.12.0 + + sentence-case@3.0.4: + dependencies: + no-case: 3.0.4 + tslib: 2.8.1 + upper-case-first: 2.0.2 + + serialize-error@7.0.1: + dependencies: + type-fest: 0.13.1 + + serialize-javascript@6.0.2: + dependencies: + randombytes: 2.1.0 + + setprototypeof@1.1.0: {} + + setprototypeof@1.2.0: {} + + shallowequal@1.1.0: {} + + sharp@0.33.5: + dependencies: + color: 4.2.3 + detect-libc: 2.0.4 + semver: 7.7.2 + optionalDependencies: + '@img/sharp-darwin-arm64': 0.33.5 + '@img/sharp-darwin-x64': 0.33.5 + '@img/sharp-libvips-darwin-arm64': 1.0.4 + '@img/sharp-libvips-darwin-x64': 1.0.4 + '@img/sharp-libvips-linux-arm': 1.0.5 + '@img/sharp-libvips-linux-arm64': 1.0.4 + '@img/sharp-libvips-linux-s390x': 1.0.4 + '@img/sharp-libvips-linux-x64': 1.0.4 + '@img/sharp-libvips-linuxmusl-arm64': 1.0.4 + '@img/sharp-libvips-linuxmusl-x64': 1.0.4 + '@img/sharp-linux-arm': 0.33.5 + '@img/sharp-linux-arm64': 0.33.5 + '@img/sharp-linux-s390x': 0.33.5 + '@img/sharp-linux-x64': 0.33.5 + '@img/sharp-linuxmusl-arm64': 0.33.5 + '@img/sharp-linuxmusl-x64': 0.33.5 + '@img/sharp-wasm32': 0.33.5 + '@img/sharp-win32-ia32': 0.33.5 + '@img/sharp-win32-x64': 0.33.5 + + shebang-command@2.0.0: + dependencies: + shebang-regex: 3.0.0 + + shebang-regex@3.0.0: {} + + shell-quote@1.8.3: {} + + shelljs.exec@1.1.8: {} + + shelljs@0.8.5: + dependencies: + glob: 7.2.3 + interpret: 1.4.0 + rechoir: 0.6.2 + + shiki@0.14.7: + dependencies: + ansi-sequence-parser: 1.1.3 + jsonc-parser: 3.3.1 + vscode-oniguruma: 1.7.0 + vscode-textmate: 8.0.0 + + side-channel-list@1.0.0: + dependencies: + es-errors: 1.3.0 + object-inspect: 1.13.4 + + side-channel-map@1.0.1: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + object-inspect: 1.13.4 + + side-channel-weakmap@1.0.2: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + object-inspect: 1.13.4 + side-channel-map: 1.0.1 + + side-channel@1.1.0: + dependencies: + es-errors: 1.3.0 + object-inspect: 1.13.4 + side-channel-list: 1.0.0 + side-channel-map: 1.0.1 + side-channel-weakmap: 1.0.2 + + sift@16.0.1: {} + + signal-exit@3.0.7: {} + + signal-exit@4.1.0: {} + + simple-swizzle@0.2.2: + dependencies: + is-arrayish: 0.3.2 + + simple-update-notifier@2.0.0: + dependencies: + semver: 7.7.2 + + sirv@2.0.4: + dependencies: + '@polka/url': 1.0.0-next.29 + mrmime: 2.0.1 + totalist: 3.0.1 + + sisteransi@1.0.5: {} + + slash@4.0.0: {} + + slate-history@0.93.0(slate@0.94.1): + dependencies: + is-plain-object: 5.0.0 + slate: 0.94.1 + + slate-react@0.98.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.94.1): + dependencies: + '@juggle/resize-observer': 3.4.0 + '@types/is-hotkey': 0.1.10 + '@types/lodash': 4.17.20 + direction: 1.0.4 + is-hotkey: 0.1.8 + is-plain-object: 5.0.0 + lodash: 4.17.21 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + scroll-into-view-if-needed: 2.2.31 + slate: 0.94.1 + tiny-invariant: 1.0.6 + + slate@0.94.1: + dependencies: + immer: 9.0.21 + is-plain-object: 5.0.0 + tiny-warning: 1.0.3 + + snake-case@3.0.4: + dependencies: + dot-case: 3.0.4 + tslib: 2.8.1 + + sort-object-keys@1.1.3: {} + + sort-package-json@2.10.1: + dependencies: + detect-indent: 7.0.1 + detect-newline: 4.0.1 + get-stdin: 9.0.0 + git-hooks-list: 3.2.0 + globby: 13.2.2 + is-plain-obj: 4.1.0 + semver: 7.7.2 + sort-object-keys: 1.1.3 + + sorted-array-functions@1.3.0: {} + + source-list-map@2.0.1: {} + + source-map-js@1.2.1: {} + + source-map-support@0.5.21: + dependencies: + buffer-from: 1.1.2 + source-map: 0.6.1 + + source-map@0.5.7: {} + + source-map@0.6.1: {} + + source-map@0.7.6: {} + + spawn-command@0.0.2: {} + + spdx-correct@3.2.0: + dependencies: + spdx-expression-parse: 3.0.1 + spdx-license-ids: 3.0.22 + + spdx-exceptions@2.5.0: {} + + spdx-expression-parse@3.0.1: + dependencies: + spdx-exceptions: 2.5.0 + spdx-license-ids: 3.0.22 + + spdx-license-ids@3.0.22: {} + + split2@4.2.0: {} + + sprintf-js@1.0.3: {} + + sprintf-js@1.1.3: {} + + sshpk@1.18.0: + dependencies: + asn1: 0.2.6 + assert-plus: 1.0.0 + bcrypt-pbkdf: 1.0.2 + dashdash: 1.14.1 + ecc-jsbn: 0.1.2 + getpass: 0.1.7 + jsbn: 0.1.1 + safer-buffer: 2.1.2 + tweetnacl: 0.14.5 + + stack-trace@0.0.10: {} + + stackframe@1.3.4: {} + + statuses@1.5.0: {} + + statuses@2.0.1: {} + + stdin-discarder@0.2.2: {} + + strapi-plugin-config-sync@3.1.2(3ea19e63023fc365216b0eadad674f29): + dependencies: + '@strapi/admin': 5.21.0(@babel/runtime@7.28.2)(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.11.2)(@codemirror/lint@6.8.5)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/theme-one-dark@6.1.3)(@codemirror/view@6.38.1)(@strapi/data-transfer@5.21.0(@types/node@20.19.9)(pg@8.8.0)(typescript@5.4.4))(@types/hoist-non-react-statics@3.3.7(@types/react@18.3.23))(@types/node@20.19.9)(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(codemirror@5.65.19)(debug@4.3.4)(pg@8.8.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@6.30.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) + '@strapi/design-system': 2.0.0-rc.29(@babel/runtime@7.28.2)(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.11.2)(@codemirror/lint@6.8.5)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/theme-one-dark@6.1.3)(@codemirror/view@6.38.1)(@strapi/icons@2.0.0-rc.29(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)))(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(codemirror@5.65.19)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) + '@strapi/icons': 2.0.0-rc.29(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) + '@strapi/strapi': 5.21.0(@babel/runtime@7.28.2)(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.11.2)(@codemirror/lint@6.8.5)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/theme-one-dark@6.1.3)(@codemirror/view@6.38.1)(@swc/helpers@0.5.17)(@types/hoist-non-react-statics@3.3.7(@types/react@18.3.23))(@types/node@20.19.9)(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(codemirror@5.65.19)(esbuild@0.25.8)(koa@2.16.1)(pg@8.8.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@6.30.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(terser@5.43.1)(type-fest@4.41.0) + '@strapi/typescript-utils': 5.21.0 + '@strapi/utils': 5.21.0 + adm-zip: 0.5.16 + chalk: 4.1.2 + cli-table: 0.3.11 + commander: 8.3.0 + file-saver: 2.0.5 + git-diff: 2.0.6 + immutable: 3.8.2 + inquirer: 8.2.6 + lodash: 4.17.21 + react: 18.3.1 + react-diff-viewer-continued: 3.2.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react-dom: 18.3.1(react@18.3.1) + react-intl: 6.6.2(react@18.3.1)(typescript@5.9.2) + react-query: 3.39.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react-redux: 7.2.9(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react-router-dom: 6.30.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + redux: 4.2.1 + redux-immutable: 4.0.0(immutable@3.8.2) + redux-thunk: 2.4.2(redux@4.2.1) + styled-components: 6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + transitivePeerDependencies: + - react-native + - supports-color + - typescript + + strapi-plugin-email-designer-5@0.0.7(14e4c45c83df9dbd43a1192c3d17303b): + dependencies: + '@strapi/design-system': 2.0.0-rc.29(@babel/runtime@7.28.2)(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.11.2)(@codemirror/lint@6.8.5)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/theme-one-dark@6.1.3)(@codemirror/view@6.38.1)(@strapi/icons@2.0.0-rc.29(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)))(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(codemirror@5.65.19)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) + '@strapi/icons': 2.0.0-rc.29(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) + '@strapi/sdk-plugin': 5.3.2(@swc/helpers@0.5.17)(@types/node@20.19.9)(terser@5.43.1) + '@strapi/strapi': 5.21.0(@babel/runtime@7.28.2)(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.11.2)(@codemirror/lint@6.8.5)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/theme-one-dark@6.1.3)(@codemirror/view@6.38.1)(@swc/helpers@0.5.17)(@types/hoist-non-react-statics@3.3.7(@types/react@18.3.23))(@types/node@20.19.9)(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(codemirror@5.65.19)(esbuild@0.25.8)(koa@2.16.1)(pg@8.8.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@6.30.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(terser@5.43.1)(type-fest@4.41.0) + dayjs: 1.11.13 + decode-html: 2.0.0 + defu: 6.1.4 + destr: 2.0.5 + html-to-text: 9.0.5 + lodash: 4.17.21 + mustache: 4.2.0 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + react-email-editor: 1.7.11(react@18.3.1) + react-icons: 5.5.0(react@18.3.1) + react-intl: 6.8.9(react@18.3.1)(typescript@5.9.2) + react-router-dom: 6.30.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react-textarea-autosize: 8.5.9(@types/react@18.3.23)(react@18.3.1) + striptags: 3.2.0 + styled-components: 6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + yup: 1.7.0 + transitivePeerDependencies: + - '@babel/runtime' + - '@codemirror/autocomplete' + - '@codemirror/language' + - '@codemirror/lint' + - '@codemirror/search' + - '@codemirror/state' + - '@codemirror/theme-one-dark' + - '@codemirror/view' + - '@types/react' + - '@types/react-dom' + - codemirror + - typescript + + strapi-provider-upload-aws-s3-advanced@5.0.1: + dependencies: + '@aws-sdk/client-s3': 3.862.0 + '@aws-sdk/lib-storage': 3.862.0(@aws-sdk/client-s3@3.862.0) + transitivePeerDependencies: + - aws-crt + + stream-browserify@3.0.0: + dependencies: + inherits: 2.0.4 + readable-stream: 3.6.2 + + stream-chain@2.2.5: {} + + stream-json@1.8.0: + dependencies: + stream-chain: 2.2.5 + + stream-slice@0.1.2: {} + + 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_decoder@0.10.31: {} + + string_decoder@1.1.1: + dependencies: + safe-buffer: 5.1.2 + + string_decoder@1.3.0: + dependencies: + safe-buffer: 5.2.1 + + 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@2.0.0: {} + + strip-final-newline@4.0.0: {} + + strip-json-comments@2.0.1: {} + + striptags@3.2.0: {} + + strnum@2.1.1: {} + + style-loader@3.3.4(webpack@5.101.0(esbuild@0.25.8)): + dependencies: + webpack: 5.101.0(esbuild@0.25.8) + + style-mod@4.1.2: {} + + styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + '@emotion/is-prop-valid': 1.2.2 + '@emotion/unitless': 0.8.1 + '@types/stylis': 4.2.5 + css-to-react-native: 3.2.0 + csstype: 3.1.3 + postcss: 8.4.49 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + shallowequal: 1.1.0 + stylis: 4.3.2 + tslib: 2.6.2 + + stylis@4.2.0: {} + + stylis@4.3.2: {} + + supports-color@5.5.0: + dependencies: + has-flag: 3.0.0 + + supports-color@7.2.0: + dependencies: + has-flag: 4.0.0 + + supports-color@8.1.1: + dependencies: + has-flag: 4.0.0 + + supports-preserve-symlinks-flag@1.0.0: {} + + synckit@0.9.1: + dependencies: + '@pkgr/core': 0.1.2 + tslib: 2.8.1 + + tapable@2.2.2: {} + + tar-stream@2.2.0: + dependencies: + bl: 4.1.0 + end-of-stream: 1.4.5 + fs-constants: 1.0.0 + inherits: 2.0.4 + readable-stream: 3.6.2 + + tar@6.2.1: + dependencies: + chownr: 2.0.0 + fs-minipass: 2.1.0 + minipass: 5.0.0 + minizlib: 2.1.2 + mkdirp: 1.0.4 + yallist: 4.0.0 + + tarn@3.0.2: {} + + terser-webpack-plugin@5.3.14(esbuild@0.25.8)(webpack@5.101.0(esbuild@0.25.8)): + dependencies: + '@jridgewell/trace-mapping': 0.3.29 + jest-worker: 27.5.1 + schema-utils: 4.3.2 + serialize-javascript: 6.0.2 + terser: 5.43.1 + webpack: 5.101.0(esbuild@0.25.8) + optionalDependencies: + esbuild: 0.25.8 + + terser@5.43.1: + dependencies: + '@jridgewell/source-map': 0.3.10 + acorn: 8.15.0 + commander: 2.20.3 + source-map-support: 0.5.21 + + text-hex@1.0.0: {} + + thenify-all@1.6.0: + dependencies: + thenify: 3.3.1 + + thenify@3.3.1: + dependencies: + any-promise: 1.3.0 + + through2@2.0.5: + dependencies: + readable-stream: 2.3.8 + xtend: 4.0.2 + + through2@4.0.2: + dependencies: + readable-stream: 3.6.2 + + through@2.3.8: {} + + tildify@2.0.0: {} + + tiny-case@1.0.3: {} + + tiny-invariant@1.0.6: {} + + tiny-warning@1.0.3: {} + + title-case@3.0.3: + dependencies: + tslib: 2.8.1 + + tmp@0.0.33: + dependencies: + os-tmpdir: 1.0.2 + + to-regex-range@5.0.1: + dependencies: + is-number: 7.0.0 + + toidentifier@1.0.1: {} + + toposort@2.0.2: {} + + totalist@3.0.1: {} + + touch@3.1.1: {} + + tough-cookie@2.5.0: + dependencies: + psl: 1.15.0 + punycode: 2.3.1 + + tree-kill@1.2.2: {} + + triple-beam@1.4.1: {} + + tslib@2.6.2: {} + + tslib@2.8.1: {} + + tsscmp@1.0.6: {} + + tunnel-agent@0.6.0: + dependencies: + safe-buffer: 5.2.1 + + tweetnacl@0.14.5: {} + + type-fest@0.13.1: {} + + type-fest@0.20.2: {} + + type-fest@0.21.3: {} + + type-fest@0.6.0: {} + + type-fest@0.8.1: {} + + type-fest@2.19.0: {} + + type-fest@4.41.0: {} + + type-is@1.6.18: + dependencies: + media-typer: 0.3.0 + mime-types: 2.1.35 + + typedarray-to-buffer@3.1.5: + dependencies: + is-typedarray: 1.0.0 + + typedoc-github-wiki-theme@1.1.0(typedoc-plugin-markdown@3.17.1(typedoc@0.25.10(typescript@5.9.2)))(typedoc@0.25.10(typescript@5.9.2)): + dependencies: + typedoc: 0.25.10(typescript@5.9.2) + typedoc-plugin-markdown: 3.17.1(typedoc@0.25.10(typescript@5.9.2)) + + typedoc-plugin-markdown@3.17.1(typedoc@0.25.10(typescript@5.9.2)): + dependencies: + handlebars: 4.7.8 + typedoc: 0.25.10(typescript@5.9.2) + + typedoc@0.25.10(typescript@5.9.2): + dependencies: + lunr: 2.3.9 + marked: 4.3.0 + minimatch: 9.0.5 + shiki: 0.14.7 + typescript: 5.9.2 + + typescript@5.4.4: {} + + typescript@5.9.2: {} + + uc.micro@1.0.6: {} + + uglify-js@3.19.3: + optional: true + + umzug@3.8.1(@types/node@20.19.9): + dependencies: + '@rushstack/ts-command-line': 4.23.7(@types/node@20.19.9) + emittery: 0.13.1 + fast-glob: 3.3.3 + pony-cause: 2.1.11 + type-fest: 4.41.0 + transitivePeerDependencies: + - '@types/node' + + unc-path-regex@0.1.2: {} + + undefsafe@2.0.5: {} + + undici-types@6.21.0: {} + + undici@6.21.2: {} + + unicorn-magic@0.3.0: {} + + unique-string@2.0.0: + dependencies: + crypto-random-string: 2.0.0 + + universalify@0.1.2: {} + + universalify@2.0.1: {} + + unlayer-types@1.289.0: {} + + unload@2.2.0: + dependencies: + '@babel/runtime': 7.28.2 + detect-node: 2.1.0 + + unpipe@1.0.0: {} + + untildify@4.0.0: {} + + update-browserslist-db@1.1.3(browserslist@4.25.1): + dependencies: + browserslist: 4.25.1 + escalade: 3.2.0 + picocolors: 1.1.1 + + upper-case-first@2.0.2: + dependencies: + tslib: 2.8.1 + + upper-case@2.0.2: + dependencies: + tslib: 2.8.1 + + uri-js@4.4.1: + dependencies: + punycode: 2.3.1 + + url-join@4.0.1: {} + + use-callback-ref@1.3.3(@types/react@18.3.23)(react@18.3.1): + dependencies: + react: 18.3.1 + tslib: 2.8.1 + optionalDependencies: + '@types/react': 18.3.23 + + use-composed-ref@1.4.0(@types/react@18.3.23)(react@18.3.1): + dependencies: + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.23 + + use-context-selector@1.4.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.0): + dependencies: + react: 18.3.1 + scheduler: 0.23.0 + optionalDependencies: + react-dom: 18.3.1(react@18.3.1) + + use-isomorphic-layout-effect@1.2.1(@types/react@18.3.23)(react@18.3.1): + dependencies: + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.23 + + use-latest@1.3.0(@types/react@18.3.23)(react@18.3.1): + dependencies: + react: 18.3.1 + use-isomorphic-layout-effect: 1.2.1(@types/react@18.3.23)(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.23 + + use-sidecar@1.1.3(@types/react@18.3.23)(react@18.3.1): + dependencies: + detect-node-es: 1.1.0 + react: 18.3.1 + tslib: 2.8.1 + optionalDependencies: + '@types/react': 18.3.23 + + use-sync-external-store@1.5.0(react@18.3.1): + dependencies: + react: 18.3.1 + + util-deprecate@1.0.2: {} + + utila@0.4.0: {} + + utils-merge@1.0.1: {} + + uuid@3.4.0: {} + + uuid@8.3.2: {} + + uuid@9.0.1: {} + + v8flags@4.0.1: {} + + validate-npm-package-license@3.0.4: + dependencies: + spdx-correct: 3.2.0 + spdx-expression-parse: 3.0.1 + + vary@1.1.2: {} + + verror@1.10.0: + dependencies: + assert-plus: 1.0.0 + core-util-is: 1.0.2 + extsprintf: 1.3.0 + + vite@5.4.19(@types/node@20.19.9)(terser@5.43.1): + dependencies: + esbuild: 0.21.5 + postcss: 8.5.6 + rollup: 4.46.2 + optionalDependencies: + '@types/node': 20.19.9 + fsevents: 2.3.3 + terser: 5.43.1 + + vite@5.4.8(@types/node@20.19.9)(terser@5.43.1): + dependencies: + esbuild: 0.21.5 + postcss: 8.5.6 + rollup: 4.46.2 + optionalDependencies: + '@types/node': 20.19.9 + fsevents: 2.3.3 + terser: 5.43.1 + + vscode-oniguruma@1.7.0: {} + + vscode-textmate@8.0.0: {} + + w3c-keyname@2.2.8: {} + + watchpack@2.4.4: + dependencies: + glob-to-regexp: 0.4.1 + graceful-fs: 4.2.11 + + wcwidth@1.0.1: + dependencies: + defaults: 1.0.4 + + webpack-bundle-analyzer@4.10.2: + dependencies: + '@discoveryjs/json-ext': 0.5.7 + acorn: 8.15.0 + acorn-walk: 8.3.4 + commander: 7.2.0 + debounce: 1.2.1 + escape-string-regexp: 4.0.0 + gzip-size: 6.0.0 + html-escaper: 2.0.2 + opener: 1.5.2 + picocolors: 1.1.1 + sirv: 2.0.4 + ws: 7.5.10 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + + webpack-dev-middleware@6.1.2(webpack@5.101.0(esbuild@0.25.8)): + dependencies: + colorette: 2.0.20 + memfs: 3.5.3 + mime-types: 2.1.35 + range-parser: 1.2.1 + schema-utils: 4.3.2 + optionalDependencies: + webpack: 5.101.0(esbuild@0.25.8) + + webpack-hot-middleware@2.26.1: + dependencies: + ansi-html-community: 0.0.8 + html-entities: 2.6.0 + strip-ansi: 6.0.1 + + webpack-sources@1.4.3: + dependencies: + source-list-map: 2.0.1 + source-map: 0.6.1 + + webpack-sources@3.3.3: {} + + webpack@5.101.0(esbuild@0.25.8): + dependencies: + '@types/eslint-scope': 3.7.7 + '@types/estree': 1.0.8 + '@types/json-schema': 7.0.15 + '@webassemblyjs/ast': 1.14.1 + '@webassemblyjs/wasm-edit': 1.14.1 + '@webassemblyjs/wasm-parser': 1.14.1 + acorn: 8.15.0 + acorn-import-phases: 1.0.4(acorn@8.15.0) + browserslist: 4.25.1 + chrome-trace-event: 1.0.4 + enhanced-resolve: 5.18.3 + es-module-lexer: 1.7.0 + eslint-scope: 5.1.1 + events: 3.3.0 + glob-to-regexp: 0.4.1 + graceful-fs: 4.2.11 + json-parse-even-better-errors: 2.3.1 + loader-runner: 4.3.0 + mime-types: 2.1.35 + neo-async: 2.6.2 + schema-utils: 4.3.2 + tapable: 2.2.2 + terser-webpack-plugin: 5.3.14(esbuild@0.25.8)(webpack@5.101.0(esbuild@0.25.8)) + watchpack: 2.4.4 + webpack-sources: 3.3.3 + transitivePeerDependencies: + - '@swc/core' + - esbuild + - uglify-js + + which-pm@2.0.0: + dependencies: + load-yaml-file: 0.2.0 + path-exists: 4.0.0 + + which@1.3.1: + dependencies: + isexe: 2.0.0 + + which@2.0.2: + dependencies: + isexe: 2.0.0 + + widest-line@3.1.0: + dependencies: + string-width: 4.2.3 + + winston-transport@4.9.0: + dependencies: + logform: 2.7.0 + readable-stream: 3.6.2 + triple-beam: 1.4.1 + + winston@3.10.0: + dependencies: + '@colors/colors': 1.5.0 + '@dabh/diagnostics': 2.0.3 + async: 3.2.6 + is-stream: 2.0.1 + logform: 2.7.0 + one-time: 1.0.0 + readable-stream: 3.6.2 + safe-stable-stringify: 2.5.0 + stack-trace: 0.0.10 + triple-beam: 1.4.1 + winston-transport: 4.9.0 + + wordwrap@1.0.0: {} + + 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 + + wrappy@1.0.2: {} + + write-file-atomic@3.0.3: + dependencies: + imurmurhash: 0.1.4 + is-typedarray: 1.0.0 + signal-exit: 3.0.7 + typedarray-to-buffer: 3.1.5 + + ws@7.5.10: {} + + ws@8.17.1: {} + + xdg-app-paths@8.3.0: + dependencies: + xdg-portable: 10.6.0 + optionalDependencies: + fsevents: 2.3.3 + + xdg-basedir@4.0.0: {} + + xdg-portable@10.6.0: + dependencies: + os-paths: 7.4.0 + optionalDependencies: + fsevents: 2.3.3 + + xml2js@0.4.23: + dependencies: + sax: 1.4.1 + xmlbuilder: 11.0.1 + + xmlbuilder@11.0.1: {} + + xtend@4.0.2: {} + + y18n@5.0.8: {} + + yalc@1.0.0-pre.53: + dependencies: + chalk: 4.1.2 + detect-indent: 6.1.0 + fs-extra: 8.1.0 + glob: 7.2.3 + ignore: 5.3.2 + ini: 2.0.0 + npm-packlist: 2.2.2 + yargs: 16.2.0 + + yallist@4.0.0: {} + + yaml@1.10.2: {} + + yargs-parser@20.2.9: {} + + yargs-parser@21.1.1: {} + + yargs@16.2.0: + dependencies: + cliui: 7.0.4 + 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: 20.2.9 + + 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 + + ylru@1.4.0: {} + + yocto-queue@0.1.0: {} + + yoctocolors-cjs@2.1.2: {} + + yoctocolors@2.1.1: {} + + yup@0.32.9: + dependencies: + '@babel/runtime': 7.28.2 + '@types/lodash': 4.17.20 + lodash: 4.17.21 + lodash-es: 4.17.21 + nanoclone: 0.2.1 + property-expr: 2.0.6 + toposort: 2.0.2 + + yup@1.7.0: + dependencies: + property-expr: 2.0.6 + tiny-case: 1.0.3 + toposort: 2.0.2 + type-fest: 2.19.0 + + zod@3.25.67: {} diff --git a/server2/public/robots.txt b/server2/public/robots.txt new file mode 100644 index 00000000..ff5d3164 --- /dev/null +++ b/server2/public/robots.txt @@ -0,0 +1,3 @@ +# To prevent search engines from seeing the site altogether, uncomment the next two lines: +# User-Agent: * +# Disallow: / diff --git a/server2/public/uploads/.gitkeep b/server2/public/uploads/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/server2/src/admin/app.example.tsx b/server2/src/admin/app.example.tsx new file mode 100644 index 00000000..3ea4d919 --- /dev/null +++ b/server2/src/admin/app.example.tsx @@ -0,0 +1,37 @@ +import type { StrapiApp } from '@strapi/strapi/admin'; + +export default { + config: { + locales: [ + // 'ar', + // 'fr', + // 'cs', + // 'de', + // 'dk', + // 'es', + // 'he', + // 'id', + // 'it', + // 'ja', + // 'ko', + // 'ms', + // 'nl', + // 'no', + // 'pl', + // 'pt-BR', + // 'pt', + // 'ru', + // 'sk', + // 'sv', + // 'th', + // 'tr', + // 'uk', + // 'vi', + // 'zh-Hans', + // 'zh', + ], + }, + bootstrap(app: StrapiApp) { + console.log(app); + }, +}; diff --git a/server2/src/admin/tsconfig.json b/server2/src/admin/tsconfig.json new file mode 100644 index 00000000..083046e7 --- /dev/null +++ b/server2/src/admin/tsconfig.json @@ -0,0 +1,20 @@ +{ + "compilerOptions": { + "target": "ESNext", + "module": "ESNext", + "moduleResolution": "Bundler", + "useDefineForClassFields": true, + "lib": ["DOM", "DOM.Iterable", "ESNext"], + "allowJs": false, + "skipLibCheck": true, + "esModuleInterop": true, + "allowSyntheticDefaultImports": true, + "strict": true, + "forceConsistentCasingInFileNames": true, + "resolveJsonModule": true, + "noEmit": true, + "jsx": "react-jsx" + }, + "include": ["../plugins/**/admin/src/**/*", "./"], + "exclude": ["node_modules/", "build/", "dist/", "**/*.test.ts"] +} diff --git a/server2/src/admin/vite.config.example.ts b/server2/src/admin/vite.config.example.ts new file mode 100644 index 00000000..85f6982b --- /dev/null +++ b/server2/src/admin/vite.config.example.ts @@ -0,0 +1,12 @@ +import { mergeConfig, type UserConfig } from 'vite'; + +export default (config: UserConfig) => { + // Important: always return the modified config + return mergeConfig(config, { + resolve: { + alias: { + '@': '/src', + }, + }, + }); +}; diff --git a/server2/src/api/.gitkeep b/server2/src/api/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/server2/src/api/activity-type/content-types/activity-type/schema.json b/server2/src/api/activity-type/content-types/activity-type/schema.json new file mode 100644 index 00000000..58ff0053 --- /dev/null +++ b/server2/src/api/activity-type/content-types/activity-type/schema.json @@ -0,0 +1,17 @@ +{ + "kind": "collectionType", + "collectionName": "activity_types", + "info": { + "singularName": "activity-type", + "pluralName": "activity-types", + "displayName": "Activity Type" + }, + "options": { + "comment": "" + }, + "attributes": { + "name": { + "type": "text" + } + } +} \ No newline at end of file diff --git a/server2/src/api/activity-type/controllers/activity-type.ts b/server2/src/api/activity-type/controllers/activity-type.ts new file mode 100644 index 00000000..75475523 --- /dev/null +++ b/server2/src/api/activity-type/controllers/activity-type.ts @@ -0,0 +1,7 @@ +/** + * activity-type controller + */ + +import { factories } from '@strapi/strapi' + +export default factories.createCoreController('api::activity-type.activity-type'); diff --git a/server2/src/api/activity-type/routes/activity-type.ts b/server2/src/api/activity-type/routes/activity-type.ts new file mode 100644 index 00000000..5fe9354d --- /dev/null +++ b/server2/src/api/activity-type/routes/activity-type.ts @@ -0,0 +1,7 @@ +/** + * activity-type router + */ + +import { factories } from '@strapi/strapi'; + +export default factories.createCoreRouter('api::activity-type.activity-type'); diff --git a/server2/src/api/activity-type/services/activity-type.ts b/server2/src/api/activity-type/services/activity-type.ts new file mode 100644 index 00000000..44965667 --- /dev/null +++ b/server2/src/api/activity-type/services/activity-type.ts @@ -0,0 +1,7 @@ +/** + * activity-type service + */ + +import { factories } from '@strapi/strapi'; + +export default factories.createCoreService('api::activity-type.activity-type'); diff --git a/server2/src/api/activity/content-types/activity/schema.json b/server2/src/api/activity/content-types/activity/schema.json new file mode 100644 index 00000000..eb92caec --- /dev/null +++ b/server2/src/api/activity/content-types/activity/schema.json @@ -0,0 +1,47 @@ +{ + "kind": "collectionType", + "collectionName": "activities", + "info": { + "singularName": "activity", + "pluralName": "activities", + "displayName": "Activity" + }, + "options": { + "comment": "" + }, + "attributes": { + "type": { + "type": "relation", + "relation": "oneToOne", + "target": "api::activity-type.activity-type" + }, + "dimension": { + "type": "relation", + "relation": "manyToOne", + "target": "api::dimension.dimension", + "inversedBy": "activities" + }, + "startDate": { + "type": "date", + "required": true + }, + "notes": { + "type": "richtext" + }, + "duration": { + "type": "integer" + }, + "mentor": { + "type": "relation", + "relation": "manyToOne", + "target": "plugin::users-permissions.user", + "inversedBy": "mentorActivities" + }, + "user": { + "type": "relation", + "relation": "manyToOne", + "target": "plugin::users-permissions.user", + "inversedBy": "userActivities" + } + } +} diff --git a/server2/src/api/activity/controllers/activity.ts b/server2/src/api/activity/controllers/activity.ts new file mode 100644 index 00000000..f53021eb --- /dev/null +++ b/server2/src/api/activity/controllers/activity.ts @@ -0,0 +1,7 @@ +/** + * activity controller + */ + +import { factories } from '@strapi/strapi' + +export default factories.createCoreController('api::activity.activity'); diff --git a/server2/src/api/activity/routes/activity.ts b/server2/src/api/activity/routes/activity.ts new file mode 100644 index 00000000..088873c7 --- /dev/null +++ b/server2/src/api/activity/routes/activity.ts @@ -0,0 +1,7 @@ +/** + * activity router + */ + +import { factories } from '@strapi/strapi'; + +export default factories.createCoreRouter('api::activity.activity'); diff --git a/server2/src/api/activity/services/activity.ts b/server2/src/api/activity/services/activity.ts new file mode 100644 index 00000000..90ed00e6 --- /dev/null +++ b/server2/src/api/activity/services/activity.ts @@ -0,0 +1,7 @@ +/** + * activity service + */ + +import { factories } from '@strapi/strapi'; + +export default factories.createCoreService('api::activity.activity'); diff --git a/server2/src/api/dimension/content-types/dimension/schema.json b/server2/src/api/dimension/content-types/dimension/schema.json new file mode 100644 index 00000000..0c697458 --- /dev/null +++ b/server2/src/api/dimension/content-types/dimension/schema.json @@ -0,0 +1,38 @@ +{ + "kind": "collectionType", + "collectionName": "dimensions", + "info": { + "singularName": "dimension", + "pluralName": "dimensions", + "displayName": "Dimension" + }, + "options": { + "comment": "" + }, + "attributes": { + "name": { + "type": "string", + "required": true + }, + "link": { + "type": "string" + }, + "quiz": { + "type": "component", + "repeatable": true, + "component": "matrix.question" + }, + "mentors": { + "type": "relation", + "relation": "manyToMany", + "target": "plugin::users-permissions.user", + "mappedBy": "dimensions" + }, + "activities": { + "type": "relation", + "relation": "oneToMany", + "target": "api::activity.activity", + "mappedBy": "dimension" + } + } +} diff --git a/server2/src/api/dimension/controllers/dimension.ts b/server2/src/api/dimension/controllers/dimension.ts new file mode 100644 index 00000000..e56ee435 --- /dev/null +++ b/server2/src/api/dimension/controllers/dimension.ts @@ -0,0 +1,7 @@ +/** + * dimension controller + */ + +import { factories } from '@strapi/strapi' + +export default factories.createCoreController('api::dimension.dimension'); diff --git a/server2/src/api/dimension/routes/dimension.ts b/server2/src/api/dimension/routes/dimension.ts new file mode 100644 index 00000000..b096ab0e --- /dev/null +++ b/server2/src/api/dimension/routes/dimension.ts @@ -0,0 +1,7 @@ +/** + * dimension router + */ + +import { factories } from '@strapi/strapi'; + +export default factories.createCoreRouter('api::dimension.dimension'); diff --git a/server2/src/api/dimension/services/dimension.ts b/server2/src/api/dimension/services/dimension.ts new file mode 100644 index 00000000..bcf56ea5 --- /dev/null +++ b/server2/src/api/dimension/services/dimension.ts @@ -0,0 +1,7 @@ +/** + * dimension service + */ + +import { factories } from '@strapi/strapi'; + +export default factories.createCoreService('api::dimension.dimension'); diff --git a/server2/src/api/domain/content-types/domain/schema.json b/server2/src/api/domain/content-types/domain/schema.json new file mode 100644 index 00000000..fa40a1a6 --- /dev/null +++ b/server2/src/api/domain/content-types/domain/schema.json @@ -0,0 +1,23 @@ +{ + "kind": "collectionType", + "collectionName": "domains", + "info": { + "singularName": "domain", + "pluralName": "domains", + "displayName": "Domain" + }, + "options": { + "comment": "" + }, + "attributes": { + "name": { + "type": "string" + }, + "mentors": { + "type": "relation", + "relation": "manyToMany", + "target": "plugin::users-permissions.user", + "inversedBy": "domains" + } + } +} diff --git a/server2/src/api/domain/controllers/domain.ts b/server2/src/api/domain/controllers/domain.ts new file mode 100644 index 00000000..f0d28826 --- /dev/null +++ b/server2/src/api/domain/controllers/domain.ts @@ -0,0 +1,7 @@ +/** + * domain controller + */ + +import { factories } from '@strapi/strapi' + +export default factories.createCoreController('api::domain.domain'); diff --git a/server2/src/api/domain/routes/domain.ts b/server2/src/api/domain/routes/domain.ts new file mode 100644 index 00000000..8d278b96 --- /dev/null +++ b/server2/src/api/domain/routes/domain.ts @@ -0,0 +1,7 @@ +/** + * domain router + */ + +import { factories } from '@strapi/strapi'; + +export default factories.createCoreRouter('api::domain.domain'); diff --git a/server2/src/api/domain/services/domain.ts b/server2/src/api/domain/services/domain.ts new file mode 100644 index 00000000..4f3ce283 --- /dev/null +++ b/server2/src/api/domain/services/domain.ts @@ -0,0 +1,7 @@ +/** + * domain service + */ + +import { factories } from '@strapi/strapi'; + +export default factories.createCoreService('api::domain.domain'); diff --git a/server2/src/api/evaluation/content-types/evaluation/schema.json b/server2/src/api/evaluation/content-types/evaluation/schema.json new file mode 100644 index 00000000..466e732d --- /dev/null +++ b/server2/src/api/evaluation/content-types/evaluation/schema.json @@ -0,0 +1,30 @@ +{ + "kind": "collectionType", + "collectionName": "evaluations", + "info": { + "singularName": "evaluation", + "pluralName": "evaluations", + "displayName": "Evaluation" + }, + "options": { + "comment": "" + }, + "attributes": { + "dimensions": { + "displayName": "Dimension", + "type": "component", + "repeatable": true, + "component": "evaluation.dimension" + }, + "email": { + "type": "email", + "required": true + }, + "report": { + "type": "relation", + "relation": "manyToOne", + "target": "api::report.report", + "inversedBy": "evaluations" + } + } +} diff --git a/server2/src/api/evaluation/controllers/evaluation.ts b/server2/src/api/evaluation/controllers/evaluation.ts new file mode 100644 index 00000000..071dcc63 --- /dev/null +++ b/server2/src/api/evaluation/controllers/evaluation.ts @@ -0,0 +1,7 @@ +/** + * evaluation controller + */ + +import { factories } from '@strapi/strapi' + +export default factories.createCoreController('api::evaluation.evaluation'); diff --git a/server2/src/api/evaluation/routes/evaluation.ts b/server2/src/api/evaluation/routes/evaluation.ts new file mode 100644 index 00000000..b1fe287c --- /dev/null +++ b/server2/src/api/evaluation/routes/evaluation.ts @@ -0,0 +1,7 @@ +/** + * evaluation router + */ + +import { factories } from '@strapi/strapi'; + +export default factories.createCoreRouter('api::evaluation.evaluation'); diff --git a/server2/src/api/evaluation/services/evaluation.ts b/server2/src/api/evaluation/services/evaluation.ts new file mode 100644 index 00000000..21c2d2d1 --- /dev/null +++ b/server2/src/api/evaluation/services/evaluation.ts @@ -0,0 +1,7 @@ +/** + * evaluation service + */ + +import { factories } from '@strapi/strapi'; + +export default factories.createCoreService('api::evaluation.evaluation'); diff --git a/server2/src/api/matrix/content-types/matrix/schema.json b/server2/src/api/matrix/content-types/matrix/schema.json new file mode 100644 index 00000000..ba595d36 --- /dev/null +++ b/server2/src/api/matrix/content-types/matrix/schema.json @@ -0,0 +1,19 @@ +{ + "kind": "singleType", + "collectionName": "matrices", + "info": { + "singularName": "matrix", + "pluralName": "matrices", + "displayName": "Matrix" + }, + "options": { + "comment": "" + }, + "attributes": { + "dimensions": { + "type": "relation", + "relation": "oneToMany", + "target": "api::dimension.dimension" + } + } +} diff --git a/server2/src/api/matrix/controllers/matrix.ts b/server2/src/api/matrix/controllers/matrix.ts new file mode 100644 index 00000000..c7a3bfe9 --- /dev/null +++ b/server2/src/api/matrix/controllers/matrix.ts @@ -0,0 +1,7 @@ +/** + * matrix controller + */ + +import { factories } from '@strapi/strapi' + +export default factories.createCoreController('api::matrix.matrix'); diff --git a/server2/src/api/matrix/routes/matrix.ts b/server2/src/api/matrix/routes/matrix.ts new file mode 100644 index 00000000..f6acd09d --- /dev/null +++ b/server2/src/api/matrix/routes/matrix.ts @@ -0,0 +1,7 @@ +/** + * matrix router + */ + +import { factories } from '@strapi/strapi'; + +export default factories.createCoreRouter('api::matrix.matrix'); diff --git a/server2/src/api/matrix/services/matrix.ts b/server2/src/api/matrix/services/matrix.ts new file mode 100644 index 00000000..26fefcf7 --- /dev/null +++ b/server2/src/api/matrix/services/matrix.ts @@ -0,0 +1,7 @@ +/** + * matrix service + */ + +import { factories } from '@strapi/strapi'; + +export default factories.createCoreService('api::matrix.matrix'); diff --git a/server2/src/api/mentorship-request/content-types/mentorship-request/schema.json b/server2/src/api/mentorship-request/content-types/mentorship-request/schema.json new file mode 100644 index 00000000..83e66243 --- /dev/null +++ b/server2/src/api/mentorship-request/content-types/mentorship-request/schema.json @@ -0,0 +1,26 @@ +{ + "kind": "collectionType", + "collectionName": "mentorship_requests", + "info": { + "singularName": "mentorship-request", + "pluralName": "mentorship-requests", + "displayName": "Mentorship Request" + }, + "options": { + "comment": "" + }, + "attributes": { + "mentor": { + "type": "relation", + "relation": "manyToOne", + "target": "plugin::users-permissions.user", + "inversedBy": "mentorSessions" + }, + "user": { + "type": "relation", + "relation": "manyToOne", + "target": "plugin::users-permissions.user", + "inversedBy": "userSessions" + } + } +} diff --git a/server2/src/api/mentorship-request/controllers/mentorship-request.ts b/server2/src/api/mentorship-request/controllers/mentorship-request.ts new file mode 100644 index 00000000..98a10916 --- /dev/null +++ b/server2/src/api/mentorship-request/controllers/mentorship-request.ts @@ -0,0 +1,7 @@ +/** + * mentorship-request controller + */ + +import { factories } from '@strapi/strapi' + +export default factories.createCoreController('api::mentorship-request.mentorship-request'); diff --git a/server2/src/api/mentorship-request/routes/mentorship-request.ts b/server2/src/api/mentorship-request/routes/mentorship-request.ts new file mode 100644 index 00000000..350bde9d --- /dev/null +++ b/server2/src/api/mentorship-request/routes/mentorship-request.ts @@ -0,0 +1,7 @@ +/** + * mentorship-request router + */ + +import { factories } from '@strapi/strapi'; + +export default factories.createCoreRouter('api::mentorship-request.mentorship-request'); diff --git a/server2/src/api/mentorship-request/services/mentorship-request.ts b/server2/src/api/mentorship-request/services/mentorship-request.ts new file mode 100644 index 00000000..97be1460 --- /dev/null +++ b/server2/src/api/mentorship-request/services/mentorship-request.ts @@ -0,0 +1,7 @@ +/** + * mentorship-request service + */ + +import { factories } from '@strapi/strapi'; + +export default factories.createCoreService('api::mentorship-request.mentorship-request'); diff --git a/server2/src/api/program/content-types/program/schema.json b/server2/src/api/program/content-types/program/schema.json new file mode 100644 index 00000000..14d0d10b --- /dev/null +++ b/server2/src/api/program/content-types/program/schema.json @@ -0,0 +1,41 @@ +{ + "kind": "collectionType", + "collectionName": "programs", + "info": { + "singularName": "program", + "pluralName": "programs", + "displayName": "Program" + }, + "options": { + "comment": "" + }, + "attributes": { + "name": { + "type": "string", + "required": true + }, + "startDate": { + "type": "date", + "required": true + }, + "endDate": { + "type": "date", + "required": true + }, + "sponsorName": { + "type": "string" + }, + "mentors": { + "type": "relation", + "relation": "manyToMany", + "target": "plugin::users-permissions.user", + "inversedBy": "programs" + }, + "users": { + "type": "relation", + "relation": "oneToMany", + "target": "plugin::users-permissions.user", + "mappedBy": "program" + } + } +} diff --git a/server2/src/api/program/controllers/program.ts b/server2/src/api/program/controllers/program.ts new file mode 100644 index 00000000..98c16392 --- /dev/null +++ b/server2/src/api/program/controllers/program.ts @@ -0,0 +1,7 @@ +/** + * program controller + */ + +import { factories } from '@strapi/strapi' + +export default factories.createCoreController('api::program.program'); diff --git a/server2/src/api/program/routes/program.ts b/server2/src/api/program/routes/program.ts new file mode 100644 index 00000000..7445c2aa --- /dev/null +++ b/server2/src/api/program/routes/program.ts @@ -0,0 +1,7 @@ +/** + * program router + */ + +import { factories } from '@strapi/strapi'; + +export default factories.createCoreRouter('api::program.program'); diff --git a/server2/src/api/program/services/program.ts b/server2/src/api/program/services/program.ts new file mode 100644 index 00000000..aefed611 --- /dev/null +++ b/server2/src/api/program/services/program.ts @@ -0,0 +1,7 @@ +/** + * program service + */ + +import { factories } from '@strapi/strapi'; + +export default factories.createCoreService('api::program.program'); diff --git a/server2/src/api/report/content-types/report/schema.json b/server2/src/api/report/content-types/report/schema.json new file mode 100644 index 00000000..fe4e9a0f --- /dev/null +++ b/server2/src/api/report/content-types/report/schema.json @@ -0,0 +1,35 @@ +{ + "kind": "collectionType", + "collectionName": "reports", + "info": { + "singularName": "report", + "pluralName": "reports", + "displayName": "Report" + }, + "options": { + "comment": "" + }, + "attributes": { + "evaluations": { + "type": "relation", + "relation": "oneToMany", + "target": "api::evaluation.evaluation", + "mappedBy": "report" + }, + "deadline": { + "type": "date", + "required": true + }, + "finished": { + "type": "boolean", + "default": false, + "required": true + }, + "user": { + "type": "relation", + "relation": "manyToOne", + "target": "plugin::users-permissions.user", + "inversedBy": "reports" + } + } +} diff --git a/server2/src/api/report/controllers/report.ts b/server2/src/api/report/controllers/report.ts new file mode 100644 index 00000000..f1e7907d --- /dev/null +++ b/server2/src/api/report/controllers/report.ts @@ -0,0 +1,7 @@ +/** + * report controller + */ + +import { factories } from '@strapi/strapi' + +export default factories.createCoreController('api::report.report'); diff --git a/server2/src/api/report/routes/report.ts b/server2/src/api/report/routes/report.ts new file mode 100644 index 00000000..8f235dcc --- /dev/null +++ b/server2/src/api/report/routes/report.ts @@ -0,0 +1,7 @@ +/** + * report router + */ + +import { factories } from '@strapi/strapi'; + +export default factories.createCoreRouter('api::report.report'); diff --git a/server2/src/api/report/services/report.ts b/server2/src/api/report/services/report.ts new file mode 100644 index 00000000..b4d12435 --- /dev/null +++ b/server2/src/api/report/services/report.ts @@ -0,0 +1,7 @@ +/** + * report service + */ + +import { factories } from '@strapi/strapi'; + +export default factories.createCoreService('api::report.report'); diff --git a/server2/src/components/evaluation/dimension.json b/server2/src/components/evaluation/dimension.json new file mode 100644 index 00000000..9db3deab --- /dev/null +++ b/server2/src/components/evaluation/dimension.json @@ -0,0 +1,20 @@ +{ + "collectionName": "components_evaluation_dimensions", + "info": { + "displayName": "Dimension", + "description": "" + }, + "options": {}, + "attributes": { + "quiz": { + "displayName": "Question", + "type": "component", + "repeatable": true, + "component": "evaluation.question" + }, + "comment": { + "type": "text", + "required": true + } + } +} diff --git a/server2/src/components/evaluation/question.json b/server2/src/components/evaluation/question.json new file mode 100644 index 00000000..570abc84 --- /dev/null +++ b/server2/src/components/evaluation/question.json @@ -0,0 +1,16 @@ +{ + "collectionName": "components_evaluation_questions", + "info": { + "displayName": "Question", + "description": "" + }, + "options": {}, + "attributes": { + "answer": { + "type": "integer", + "max": 4, + "min": 0, + "required": true + } + } +} diff --git a/server2/src/components/matrix/dimension.json b/server2/src/components/matrix/dimension.json new file mode 100644 index 00000000..979eccdb --- /dev/null +++ b/server2/src/components/matrix/dimension.json @@ -0,0 +1,16 @@ +{ + "collectionName": "components_matrix_dimensions", + "info": { + "displayName": "dimension", + "description": "" + }, + "options": {}, + "attributes": { + "name": { + "type": "string" + }, + "link": { + "type": "string" + } + } +} diff --git a/server2/src/components/matrix/question.json b/server2/src/components/matrix/question.json new file mode 100644 index 00000000..a0b136d5 --- /dev/null +++ b/server2/src/components/matrix/question.json @@ -0,0 +1,31 @@ +{ + "collectionName": "components_matrix_questions", + "info": { + "displayName": "question", + "description": "" + }, + "options": {}, + "attributes": { + "question": { + "type": "string" + }, + "option_1": { + "type": "text" + }, + "option_2": { + "type": "text" + }, + "option_3": { + "type": "text" + }, + "option_4": { + "type": "text" + }, + "option_5": { + "type": "text" + }, + "tag": { + "type": "string" + } + } +} diff --git a/server2/src/extensions/.gitkeep b/server2/src/extensions/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/server2/src/extensions/users-permissions/content-types/user/lifecycles.ts b/server2/src/extensions/users-permissions/content-types/user/lifecycles.ts new file mode 100644 index 00000000..fdb0fd46 --- /dev/null +++ b/server2/src/extensions/users-permissions/content-types/user/lifecycles.ts @@ -0,0 +1,91 @@ +const sendMailToAdminWhenUserIsCreated = (to, data) => + strapi.plugin("email-designer").service("email").sendTemplatedEmail( + { + to, + }, + { + templateReferenceId: 5, + }, + data + ); +const sendMailToUserWhenUserIsCreated = (to, data) => + strapi.plugin("email-designer").service("email").sendTemplatedEmail( + { + to, + }, + { + templateReferenceId: 6, + }, + data + ); + +const sendMailToUserWhenUserIsInvited = (to, data) => + strapi.plugin("email-designer").service("email").sendTemplatedEmail( + { + to, + }, + { + templateReferenceId: 8, + }, + data + ); + +const sendMailToMentorWhenMentorIsInvited = (to, data) => + strapi.plugin("email-designer").service("email").sendTemplatedEmail( + { + to, + }, + { + templateReferenceId: 9, + }, + data + ); + +export default { + async beforeCreate(event) { + event.params.data.provider = "local"; + event.params.data.username = event.params.data.email; + event.params.data.confirmed = true; + if (!event.params.data.role) { + event.params.data.role = 1; + } + }, + async afterCreate(event) { + const { result, params } = event; + if (!params.data.password || params.data.role === 4) { + const registrationToken = strapi.service("admin::token").createToken(); + + await strapi.plugin("users-permissions").service("user").edit(result.id, { + registrationToken, + }); + + try { + if (params.data.role === 4) { + await sendMailToMentorWhenMentorIsInvited(result.email, { + CODE: registrationToken, + }); + } else { + await sendMailToUserWhenUserIsInvited(result.email, { + ONG_NAME: result.ongName, + CODE: registrationToken, + }); + } + } catch (e) { + console.log(e); + } + } else { + try { + await sendMailToAdminWhenUserIsCreated("crestem.ong@fdsc.ro", { + ONG_NAME: result.ongName, + }); + } catch (err) { + console.log(err); + } + try { + await sendMailToUserWhenUserIsCreated(result.email, {}); + } catch (err) { + console.log(err); + } + } + }, +}; diff --git a/server2/src/extensions/users-permissions/content-types/user/schema.json b/server2/src/extensions/users-permissions/content-types/user/schema.json new file mode 100644 index 00000000..caa84db6 --- /dev/null +++ b/server2/src/extensions/users-permissions/content-types/user/schema.json @@ -0,0 +1,212 @@ +{ + "kind": "collectionType", + "collectionName": "up_users", + "info": { + "name": "user", + "description": "", + "singularName": "user", + "pluralName": "users", + "displayName": "User" + }, + "options": { + "draftAndPublish": false + }, + "attributes": { + "username": { + "type": "string", + "minLength": 3, + "unique": true, + "configurable": false, + "required": true + }, + "email": { + "type": "email", + "minLength": 6, + "configurable": false, + "required": true + }, + "provider": { + "type": "string", + "configurable": false + }, + "password": { + "type": "password", + "minLength": 6, + "configurable": false, + "private": true + }, + "resetPasswordToken": { + "type": "string", + "configurable": false, + "private": true + }, + "confirmationToken": { + "type": "string", + "configurable": false, + "private": true + }, + "registrationToken": { + "type": "string", + "configurable": false, + "private": true, + "searchable": false + }, + "confirmed": { + "type": "boolean", + "default": false, + "configurable": false + }, + "blocked": { + "type": "boolean", + "default": false, + "configurable": false + }, + "role": { + "type": "relation", + "relation": "manyToOne", + "target": "plugin::users-permissions.role", + "inversedBy": "users", + "configurable": false + }, + "avatar": { + "type": "media", + "multiple": false, + "required": false, + "allowedTypes": ["images"] + }, + "ongName": { + "type": "string", + "required": false + }, + "ongIdentificationNumber": { + "type": "string", + "required": false, + "unique": true + }, + "county": { + "type": "string", + "required": false + }, + "city": { + "type": "string", + "required": false + }, + "phone": { + "type": "string", + "required": false + }, + "website": { + "type": "string" + }, + "keywords": { + "type": "string" + }, + "logo": { + "type": "media", + "multiple": false, + "required": false, + "allowedTypes": ["images", "files", "videos", "audios"] + }, + "description": { + "type": "text" + }, + "reports": { + "type": "relation", + "relation": "oneToMany", + "target": "api::report.report", + "mappedBy": "user" + }, + "contactFirstName": { + "type": "string" + }, + "contactLastName": { + "type": "string" + }, + "contactEmail": { + "type": "string" + }, + "contactPhone": { + "type": "string" + }, + "accountFacebook": { + "type": "string" + }, + "accountTwitter": { + "type": "string" + }, + "accountTiktok": { + "type": "string" + }, + "accountInstagram": { + "type": "string" + }, + "accountLinkedin": { + "type": "string" + }, + "domains": { + "type": "relation", + "relation": "manyToMany", + "target": "api::domain.domain", + "mappedBy": "mentors" + }, + "programs": { + "type": "relation", + "relation": "manyToMany", + "target": "api::program.program", + "mappedBy": "mentors" + }, + "dimensions": { + "type": "relation", + "relation": "manyToMany", + "target": "api::dimension.dimension", + "inversedBy": "mentors" + }, + "bio": { + "type": "text" + }, + "expertise": { + "type": "text" + }, + "firstName": { + "type": "string" + }, + "lastName": { + "type": "string" + }, + "program": { + "type": "relation", + "relation": "manyToOne", + "target": "api::program.program", + "inversedBy": "users" + }, + "available": { + "type": "boolean", + "required": false, + "default": false + }, + "mentorActivities": { + "type": "relation", + "relation": "oneToMany", + "target": "api::activity.activity", + "mappedBy": "mentor" + }, + "userActivities": { + "type": "relation", + "relation": "oneToMany", + "target": "api::activity.activity", + "mappedBy": "user" + }, + "mentorSessions": { + "type": "relation", + "relation": "oneToMany", + "target": "api::mentorship-request.mentorship-request", + "mappedBy": "mentor" + }, + "userSessions": { + "type": "relation", + "relation": "oneToMany", + "target": "api::mentorship-request.mentorship-request", + "mappedBy": "user" + } + } +} diff --git a/server2/src/extensions/users-permissions/routes/user.ts b/server2/src/extensions/users-permissions/routes/user.ts new file mode 100644 index 00000000..3aab5cc4 --- /dev/null +++ b/server2/src/extensions/users-permissions/routes/user.ts @@ -0,0 +1,69 @@ +export default [ + { + method: "POST", + path: "/auth/magic-link", + handler: async (ctx) => { + const { token } = ctx.request.body; + + try { + const payload = await strapi.services[ + "plugin::users-permissions.user" + ].magicLink.verifyMagicToken(token); + const email = payload.email; + if (!email) throw new Error("No email in token"); + const existingUser = await strapi.db + .query("plugin::users-permissions.user") + .findOne({ + where: { email }, + }); + if (existingUser) { + const jwt = strapi + .plugin("users-permissions") + .service("jwt") + .issue({ id: existingUser.id }); + return { + jwt, + user: { + id: existingUser.id, + email: existingUser.email, + firstname: existingUser.firstname, + lang: existingUser.lang, + }, + }; + } + const user = await strapi + .plugin("users-permissions") + .service("user") + .add({ + email, + username: email, + provider: "local", + confirmed: true, + lang: payload.lang, + role: 1, // authenticated + }); + const jwt = strapi + .plugin("users-permissions") + .service("jwt") + .issue({ id: user.id }); + + return { + jwt, + user: { + id: user.id, + email: user.email, + firstname: user.firstname, + lang: user.lang, + }, + }; + } catch (error) { + strapi.log.warn(error); + return ctx.unauthorized("Invalid magic link token"); + } + }, + config: { + prefix: "", + auth: false, + }, + }, +]; diff --git a/server2/src/extensions/users-permissions/services/magic-link.ts b/server2/src/extensions/users-permissions/services/magic-link.ts new file mode 100644 index 00000000..7b1f4244 --- /dev/null +++ b/server2/src/extensions/users-permissions/services/magic-link.ts @@ -0,0 +1,38 @@ +import jwt from "jsonwebtoken"; + +const MAGICLINK_SECRET = process.env.MAGICLINK_SECRET; + +interface MagicTokenPayload { + email: string; + lang: string; +} + +export const generateMagicToken = async (email: string, lang: string) => { + const existingUser = await strapi.db + .query("plugin::users-permissions.user") + .findOne({ + where: { email }, + }); + + if (existingUser?.provider === "google") { + strapi.log.warn( + `User ${email} is linked to Google account. Can't login with magic link.` + ); + throw new Error("GoogleAccount"); + } + if (!MAGICLINK_SECRET) throw new Error("No MAGICLINK_SECRET provided"); + + return jwt.sign({ email, lang }, MAGICLINK_SECRET, { expiresIn: "20m" }); +}; + +export const verifyMagicToken = (token: string) => { + try { + const decoded = jwt.verify(token, MAGICLINK_SECRET) as MagicTokenPayload; + + return decoded; + } catch (error) { + const decoded = jwt.decode(token) as MagicTokenPayload; + + throw new Error("Invalid token"); + } +}; diff --git a/server2/src/extensions/users-permissions/strapi-server.ts b/server2/src/extensions/users-permissions/strapi-server.ts new file mode 100644 index 00000000..bb58856b --- /dev/null +++ b/server2/src/extensions/users-permissions/strapi-server.ts @@ -0,0 +1,53 @@ +import { pick } from "remeda"; +import * as magicLink from "./services/magic-link"; +import customRoutes from "./routes/user"; + +const findRegistrationInfo = async (ctx) => { + const { registrationToken } = ctx.query; + if (!registrationToken) { + return ctx.badRequest("No registrationToken"); + } + let user = await strapi + .query("plugin::users-permissions.user") + .findOne({ where: { registrationToken } }); + + if (!user) { + return undefined; + } + return pick(user, ["id", "email", "ongName"]); +}; + +const registerWithConfirmation = async (ctx) => { + const { data } = ctx.request.body; + const id = data?.id; + if (!id) { + return ctx.badRequest("Missing user id"); + } + const user = await strapi.entityService.update( + "plugin::users-permissions.user", + id, + { + data: { password: data.password, registrationToken: null }, + } + ); + if (!user) { + return ctx.badRequest("Failed to register"); + } + return user; +}; + +export default (plugin) => { + plugin.controllers.auth.findRegistrationInfo = findRegistrationInfo; + plugin.controllers.auth.registerWithConfirmation = registerWithConfirmation; + + const userServices = plugin.services.user; + plugin.services.user = (params) => { + const services = userServices(params); + return { + ...services, + magicLink, + }; + }; + plugin.routes["content-api"].routes.push(...customRoutes); + return plugin; +}; diff --git a/server2/src/index.ts b/server2/src/index.ts new file mode 100644 index 00000000..58be2682 --- /dev/null +++ b/server2/src/index.ts @@ -0,0 +1,20 @@ +// import type { Core } from '@strapi/strapi'; + +export default { + /** + * An asynchronous register function that runs before + * your application is initialized. + * + * This gives you an opportunity to extend code. + */ + register(/* { strapi }: { strapi: Core.Strapi } */) {}, + + /** + * An asynchronous bootstrap function that runs before + * your application gets started. + * + * This gives you an opportunity to set up your data model, + * run jobs, or perform some special logic. + */ + bootstrap(/* { strapi }: { strapi: Core.Strapi } */) {}, +}; diff --git a/server2/tsconfig.json b/server2/tsconfig.json new file mode 100644 index 00000000..b9fa686a --- /dev/null +++ b/server2/tsconfig.json @@ -0,0 +1,43 @@ +{ + "compilerOptions": { + "module": "CommonJS", + "moduleResolution": "Node", + "lib": ["ES2020"], + "target": "ES2019", + "strict": false, + "skipLibCheck": true, + "forceConsistentCasingInFileNames": true, + "incremental": true, + "esModuleInterop": true, + "resolveJsonModule": true, + "noEmitOnError": true, + "noImplicitThis": true, + "outDir": "dist", + "rootDir": "." + }, + "include": [ + // Include root files + "./", + // Include all ts files + "./**/*.ts", + // Include all js files + "./**/*.js", + // Force the JSON files in the src folder to be included + "src/**/*.json" + ], + + "exclude": [ + "node_modules/", + "build/", + "dist/", + ".cache/", + ".tmp/", + + // Do not include admin files in the server compilation + "src/admin/", + // Do not include test files + "**/*.test.*", + // Do not include plugins in the server compilation + "src/plugins/**" + ] +} diff --git a/server2/types/generated/components.d.ts b/server2/types/generated/components.d.ts new file mode 100644 index 00000000..a362c518 --- /dev/null +++ b/server2/types/generated/components.d.ts @@ -0,0 +1,72 @@ +import type { Schema, Struct } from '@strapi/strapi'; + +export interface EvaluationDimension extends Struct.ComponentSchema { + collectionName: 'components_evaluation_dimensions'; + info: { + description: ''; + displayName: 'Dimension'; + }; + attributes: { + comment: Schema.Attribute.Text & Schema.Attribute.Required; + quiz: Schema.Attribute.Component<'evaluation.question', true>; + }; +} + +export interface EvaluationQuestion extends Struct.ComponentSchema { + collectionName: 'components_evaluation_questions'; + info: { + description: ''; + displayName: 'Question'; + }; + attributes: { + answer: Schema.Attribute.Integer & + Schema.Attribute.Required & + Schema.Attribute.SetMinMax< + { + max: 4; + min: 0; + }, + number + >; + }; +} + +export interface MatrixDimension extends Struct.ComponentSchema { + collectionName: 'components_matrix_dimensions'; + info: { + description: ''; + displayName: 'dimension'; + }; + attributes: { + link: Schema.Attribute.String; + name: Schema.Attribute.String; + }; +} + +export interface MatrixQuestion extends Struct.ComponentSchema { + collectionName: 'components_matrix_questions'; + info: { + description: ''; + displayName: 'question'; + }; + attributes: { + option_1: Schema.Attribute.Text; + option_2: Schema.Attribute.Text; + option_3: Schema.Attribute.Text; + option_4: Schema.Attribute.Text; + option_5: Schema.Attribute.Text; + question: Schema.Attribute.String; + tag: Schema.Attribute.String; + }; +} + +declare module '@strapi/strapi' { + export module Public { + export interface ComponentSchemas { + 'evaluation.dimension': EvaluationDimension; + 'evaluation.question': EvaluationQuestion; + 'matrix.dimension': MatrixDimension; + 'matrix.question': MatrixQuestion; + } + } +} diff --git a/server2/types/generated/contentTypes.d.ts b/server2/types/generated/contentTypes.d.ts new file mode 100644 index 00000000..7a7bcbb9 --- /dev/null +++ b/server2/types/generated/contentTypes.d.ts @@ -0,0 +1,1328 @@ +import type { Schema, Struct } from '@strapi/strapi'; + +export interface AdminApiToken extends Struct.CollectionTypeSchema { + collectionName: 'strapi_api_tokens'; + info: { + description: ''; + displayName: 'Api Token'; + name: 'Api Token'; + pluralName: 'api-tokens'; + singularName: 'api-token'; + }; + options: { + draftAndPublish: false; + }; + pluginOptions: { + 'content-manager': { + visible: false; + }; + 'content-type-builder': { + visible: false; + }; + }; + attributes: { + accessKey: Schema.Attribute.String & + Schema.Attribute.Required & + Schema.Attribute.SetMinMaxLength<{ + minLength: 1; + }>; + createdAt: Schema.Attribute.DateTime; + createdBy: Schema.Attribute.Relation<'oneToOne', 'admin::user'> & + Schema.Attribute.Private; + description: Schema.Attribute.String & + Schema.Attribute.SetMinMaxLength<{ + minLength: 1; + }> & + Schema.Attribute.DefaultTo<''>; + encryptedKey: Schema.Attribute.Text & + Schema.Attribute.SetMinMaxLength<{ + minLength: 1; + }>; + expiresAt: Schema.Attribute.DateTime; + lastUsedAt: Schema.Attribute.DateTime; + lifespan: Schema.Attribute.BigInteger; + locale: Schema.Attribute.String & Schema.Attribute.Private; + localizations: Schema.Attribute.Relation<'oneToMany', 'admin::api-token'> & + Schema.Attribute.Private; + name: Schema.Attribute.String & + Schema.Attribute.Required & + Schema.Attribute.Unique & + Schema.Attribute.SetMinMaxLength<{ + minLength: 1; + }>; + permissions: Schema.Attribute.Relation< + 'oneToMany', + 'admin::api-token-permission' + >; + publishedAt: Schema.Attribute.DateTime; + type: Schema.Attribute.Enumeration<['read-only', 'full-access', 'custom']> & + Schema.Attribute.Required & + Schema.Attribute.DefaultTo<'read-only'>; + updatedAt: Schema.Attribute.DateTime; + updatedBy: Schema.Attribute.Relation<'oneToOne', 'admin::user'> & + Schema.Attribute.Private; + }; +} + +export interface AdminApiTokenPermission extends Struct.CollectionTypeSchema { + collectionName: 'strapi_api_token_permissions'; + info: { + description: ''; + displayName: 'API Token Permission'; + name: 'API Token Permission'; + pluralName: 'api-token-permissions'; + singularName: 'api-token-permission'; + }; + options: { + draftAndPublish: false; + }; + pluginOptions: { + 'content-manager': { + visible: false; + }; + 'content-type-builder': { + visible: false; + }; + }; + attributes: { + action: Schema.Attribute.String & + Schema.Attribute.Required & + Schema.Attribute.SetMinMaxLength<{ + minLength: 1; + }>; + createdAt: Schema.Attribute.DateTime; + createdBy: Schema.Attribute.Relation<'oneToOne', 'admin::user'> & + Schema.Attribute.Private; + locale: Schema.Attribute.String & Schema.Attribute.Private; + localizations: Schema.Attribute.Relation< + 'oneToMany', + 'admin::api-token-permission' + > & + Schema.Attribute.Private; + publishedAt: Schema.Attribute.DateTime; + token: Schema.Attribute.Relation<'manyToOne', 'admin::api-token'>; + updatedAt: Schema.Attribute.DateTime; + updatedBy: Schema.Attribute.Relation<'oneToOne', 'admin::user'> & + Schema.Attribute.Private; + }; +} + +export interface AdminPermission extends Struct.CollectionTypeSchema { + collectionName: 'admin_permissions'; + info: { + description: ''; + displayName: 'Permission'; + name: 'Permission'; + pluralName: 'permissions'; + singularName: 'permission'; + }; + options: { + draftAndPublish: false; + }; + pluginOptions: { + 'content-manager': { + visible: false; + }; + 'content-type-builder': { + visible: false; + }; + }; + attributes: { + action: Schema.Attribute.String & + Schema.Attribute.Required & + Schema.Attribute.SetMinMaxLength<{ + minLength: 1; + }>; + actionParameters: Schema.Attribute.JSON & Schema.Attribute.DefaultTo<{}>; + conditions: Schema.Attribute.JSON & Schema.Attribute.DefaultTo<[]>; + createdAt: Schema.Attribute.DateTime; + createdBy: Schema.Attribute.Relation<'oneToOne', 'admin::user'> & + Schema.Attribute.Private; + locale: Schema.Attribute.String & Schema.Attribute.Private; + localizations: Schema.Attribute.Relation<'oneToMany', 'admin::permission'> & + Schema.Attribute.Private; + properties: Schema.Attribute.JSON & Schema.Attribute.DefaultTo<{}>; + publishedAt: Schema.Attribute.DateTime; + role: Schema.Attribute.Relation<'manyToOne', 'admin::role'>; + subject: Schema.Attribute.String & + Schema.Attribute.SetMinMaxLength<{ + minLength: 1; + }>; + updatedAt: Schema.Attribute.DateTime; + updatedBy: Schema.Attribute.Relation<'oneToOne', 'admin::user'> & + Schema.Attribute.Private; + }; +} + +export interface AdminRole extends Struct.CollectionTypeSchema { + collectionName: 'admin_roles'; + info: { + description: ''; + displayName: 'Role'; + name: 'Role'; + pluralName: 'roles'; + singularName: 'role'; + }; + options: { + draftAndPublish: false; + }; + pluginOptions: { + 'content-manager': { + visible: false; + }; + 'content-type-builder': { + visible: false; + }; + }; + attributes: { + code: Schema.Attribute.String & + Schema.Attribute.Required & + Schema.Attribute.Unique & + Schema.Attribute.SetMinMaxLength<{ + minLength: 1; + }>; + createdAt: Schema.Attribute.DateTime; + createdBy: Schema.Attribute.Relation<'oneToOne', 'admin::user'> & + Schema.Attribute.Private; + description: Schema.Attribute.String; + locale: Schema.Attribute.String & Schema.Attribute.Private; + localizations: Schema.Attribute.Relation<'oneToMany', 'admin::role'> & + Schema.Attribute.Private; + name: Schema.Attribute.String & + Schema.Attribute.Required & + Schema.Attribute.Unique & + Schema.Attribute.SetMinMaxLength<{ + minLength: 1; + }>; + permissions: Schema.Attribute.Relation<'oneToMany', 'admin::permission'>; + publishedAt: Schema.Attribute.DateTime; + updatedAt: Schema.Attribute.DateTime; + updatedBy: Schema.Attribute.Relation<'oneToOne', 'admin::user'> & + Schema.Attribute.Private; + users: Schema.Attribute.Relation<'manyToMany', 'admin::user'>; + }; +} + +export interface AdminTransferToken extends Struct.CollectionTypeSchema { + collectionName: 'strapi_transfer_tokens'; + info: { + description: ''; + displayName: 'Transfer Token'; + name: 'Transfer Token'; + pluralName: 'transfer-tokens'; + singularName: 'transfer-token'; + }; + options: { + draftAndPublish: false; + }; + pluginOptions: { + 'content-manager': { + visible: false; + }; + 'content-type-builder': { + visible: false; + }; + }; + attributes: { + accessKey: Schema.Attribute.String & + Schema.Attribute.Required & + Schema.Attribute.SetMinMaxLength<{ + minLength: 1; + }>; + createdAt: Schema.Attribute.DateTime; + createdBy: Schema.Attribute.Relation<'oneToOne', 'admin::user'> & + Schema.Attribute.Private; + description: Schema.Attribute.String & + Schema.Attribute.SetMinMaxLength<{ + minLength: 1; + }> & + Schema.Attribute.DefaultTo<''>; + expiresAt: Schema.Attribute.DateTime; + lastUsedAt: Schema.Attribute.DateTime; + lifespan: Schema.Attribute.BigInteger; + locale: Schema.Attribute.String & Schema.Attribute.Private; + localizations: Schema.Attribute.Relation< + 'oneToMany', + 'admin::transfer-token' + > & + Schema.Attribute.Private; + name: Schema.Attribute.String & + Schema.Attribute.Required & + Schema.Attribute.Unique & + Schema.Attribute.SetMinMaxLength<{ + minLength: 1; + }>; + permissions: Schema.Attribute.Relation< + 'oneToMany', + 'admin::transfer-token-permission' + >; + publishedAt: Schema.Attribute.DateTime; + updatedAt: Schema.Attribute.DateTime; + updatedBy: Schema.Attribute.Relation<'oneToOne', 'admin::user'> & + Schema.Attribute.Private; + }; +} + +export interface AdminTransferTokenPermission + extends Struct.CollectionTypeSchema { + collectionName: 'strapi_transfer_token_permissions'; + info: { + description: ''; + displayName: 'Transfer Token Permission'; + name: 'Transfer Token Permission'; + pluralName: 'transfer-token-permissions'; + singularName: 'transfer-token-permission'; + }; + options: { + draftAndPublish: false; + }; + pluginOptions: { + 'content-manager': { + visible: false; + }; + 'content-type-builder': { + visible: false; + }; + }; + attributes: { + action: Schema.Attribute.String & + Schema.Attribute.Required & + Schema.Attribute.SetMinMaxLength<{ + minLength: 1; + }>; + createdAt: Schema.Attribute.DateTime; + createdBy: Schema.Attribute.Relation<'oneToOne', 'admin::user'> & + Schema.Attribute.Private; + locale: Schema.Attribute.String & Schema.Attribute.Private; + localizations: Schema.Attribute.Relation< + 'oneToMany', + 'admin::transfer-token-permission' + > & + Schema.Attribute.Private; + publishedAt: Schema.Attribute.DateTime; + token: Schema.Attribute.Relation<'manyToOne', 'admin::transfer-token'>; + updatedAt: Schema.Attribute.DateTime; + updatedBy: Schema.Attribute.Relation<'oneToOne', 'admin::user'> & + Schema.Attribute.Private; + }; +} + +export interface AdminUser extends Struct.CollectionTypeSchema { + collectionName: 'admin_users'; + info: { + description: ''; + displayName: 'User'; + name: 'User'; + pluralName: 'users'; + singularName: 'user'; + }; + options: { + draftAndPublish: false; + }; + pluginOptions: { + 'content-manager': { + visible: false; + }; + 'content-type-builder': { + visible: false; + }; + }; + attributes: { + blocked: Schema.Attribute.Boolean & + Schema.Attribute.Private & + Schema.Attribute.DefaultTo; + createdAt: Schema.Attribute.DateTime; + createdBy: Schema.Attribute.Relation<'oneToOne', 'admin::user'> & + Schema.Attribute.Private; + email: Schema.Attribute.Email & + Schema.Attribute.Required & + Schema.Attribute.Private & + Schema.Attribute.Unique & + Schema.Attribute.SetMinMaxLength<{ + minLength: 6; + }>; + firstname: Schema.Attribute.String & + Schema.Attribute.SetMinMaxLength<{ + minLength: 1; + }>; + isActive: Schema.Attribute.Boolean & + Schema.Attribute.Private & + Schema.Attribute.DefaultTo; + lastname: Schema.Attribute.String & + Schema.Attribute.SetMinMaxLength<{ + minLength: 1; + }>; + locale: Schema.Attribute.String & Schema.Attribute.Private; + localizations: Schema.Attribute.Relation<'oneToMany', 'admin::user'> & + Schema.Attribute.Private; + password: Schema.Attribute.Password & + Schema.Attribute.Private & + Schema.Attribute.SetMinMaxLength<{ + minLength: 6; + }>; + preferedLanguage: Schema.Attribute.String; + publishedAt: Schema.Attribute.DateTime; + registrationToken: Schema.Attribute.String & Schema.Attribute.Private; + resetPasswordToken: Schema.Attribute.String & Schema.Attribute.Private; + roles: Schema.Attribute.Relation<'manyToMany', 'admin::role'> & + Schema.Attribute.Private; + updatedAt: Schema.Attribute.DateTime; + updatedBy: Schema.Attribute.Relation<'oneToOne', 'admin::user'> & + Schema.Attribute.Private; + username: Schema.Attribute.String; + }; +} + +export interface ApiActivityTypeActivityType + extends Struct.CollectionTypeSchema { + collectionName: 'activity_types'; + info: { + displayName: 'Activity Type'; + pluralName: 'activity-types'; + singularName: 'activity-type'; + }; + options: { + comment: ''; + draftAndPublish: false; + }; + attributes: { + createdAt: Schema.Attribute.DateTime; + createdBy: Schema.Attribute.Relation<'oneToOne', 'admin::user'> & + Schema.Attribute.Private; + locale: Schema.Attribute.String & Schema.Attribute.Private; + localizations: Schema.Attribute.Relation< + 'oneToMany', + 'api::activity-type.activity-type' + > & + Schema.Attribute.Private; + name: Schema.Attribute.Text; + publishedAt: Schema.Attribute.DateTime; + updatedAt: Schema.Attribute.DateTime; + updatedBy: Schema.Attribute.Relation<'oneToOne', 'admin::user'> & + Schema.Attribute.Private; + }; +} + +export interface ApiActivityActivity extends Struct.CollectionTypeSchema { + collectionName: 'activities'; + info: { + displayName: 'Activity'; + pluralName: 'activities'; + singularName: 'activity'; + }; + options: { + comment: ''; + draftAndPublish: false; + }; + attributes: { + createdAt: Schema.Attribute.DateTime; + createdBy: Schema.Attribute.Relation<'oneToOne', 'admin::user'> & + Schema.Attribute.Private; + dimension: Schema.Attribute.Relation< + 'manyToOne', + 'api::dimension.dimension' + >; + duration: Schema.Attribute.Integer; + locale: Schema.Attribute.String & Schema.Attribute.Private; + localizations: Schema.Attribute.Relation< + 'oneToMany', + 'api::activity.activity' + > & + Schema.Attribute.Private; + mentor: Schema.Attribute.Relation< + 'manyToOne', + 'plugin::users-permissions.user' + >; + notes: Schema.Attribute.RichText; + publishedAt: Schema.Attribute.DateTime; + startDate: Schema.Attribute.Date & Schema.Attribute.Required; + type: Schema.Attribute.Relation< + 'oneToOne', + 'api::activity-type.activity-type' + >; + updatedAt: Schema.Attribute.DateTime; + updatedBy: Schema.Attribute.Relation<'oneToOne', 'admin::user'> & + Schema.Attribute.Private; + user: Schema.Attribute.Relation< + 'manyToOne', + 'plugin::users-permissions.user' + >; + }; +} + +export interface ApiDimensionDimension extends Struct.CollectionTypeSchema { + collectionName: 'dimensions'; + info: { + displayName: 'Dimension'; + pluralName: 'dimensions'; + singularName: 'dimension'; + }; + options: { + comment: ''; + draftAndPublish: false; + }; + attributes: { + activities: Schema.Attribute.Relation< + 'oneToMany', + 'api::activity.activity' + >; + createdAt: Schema.Attribute.DateTime; + createdBy: Schema.Attribute.Relation<'oneToOne', 'admin::user'> & + Schema.Attribute.Private; + link: Schema.Attribute.String; + locale: Schema.Attribute.String & Schema.Attribute.Private; + localizations: Schema.Attribute.Relation< + 'oneToMany', + 'api::dimension.dimension' + > & + Schema.Attribute.Private; + mentors: Schema.Attribute.Relation< + 'manyToMany', + 'plugin::users-permissions.user' + >; + name: Schema.Attribute.String & Schema.Attribute.Required; + publishedAt: Schema.Attribute.DateTime; + quiz: Schema.Attribute.Component<'matrix.question', true>; + updatedAt: Schema.Attribute.DateTime; + updatedBy: Schema.Attribute.Relation<'oneToOne', 'admin::user'> & + Schema.Attribute.Private; + }; +} + +export interface ApiDomainDomain extends Struct.CollectionTypeSchema { + collectionName: 'domains'; + info: { + displayName: 'Domain'; + pluralName: 'domains'; + singularName: 'domain'; + }; + options: { + comment: ''; + draftAndPublish: false; + }; + attributes: { + createdAt: Schema.Attribute.DateTime; + createdBy: Schema.Attribute.Relation<'oneToOne', 'admin::user'> & + Schema.Attribute.Private; + locale: Schema.Attribute.String & Schema.Attribute.Private; + localizations: Schema.Attribute.Relation< + 'oneToMany', + 'api::domain.domain' + > & + Schema.Attribute.Private; + mentors: Schema.Attribute.Relation< + 'manyToMany', + 'plugin::users-permissions.user' + >; + name: Schema.Attribute.String; + publishedAt: Schema.Attribute.DateTime; + updatedAt: Schema.Attribute.DateTime; + updatedBy: Schema.Attribute.Relation<'oneToOne', 'admin::user'> & + Schema.Attribute.Private; + }; +} + +export interface ApiEvaluationEvaluation extends Struct.CollectionTypeSchema { + collectionName: 'evaluations'; + info: { + displayName: 'Evaluation'; + pluralName: 'evaluations'; + singularName: 'evaluation'; + }; + options: { + comment: ''; + draftAndPublish: false; + }; + attributes: { + createdAt: Schema.Attribute.DateTime; + createdBy: Schema.Attribute.Relation<'oneToOne', 'admin::user'> & + Schema.Attribute.Private; + dimensions: Schema.Attribute.Component<'evaluation.dimension', true>; + email: Schema.Attribute.Email & Schema.Attribute.Required; + locale: Schema.Attribute.String & Schema.Attribute.Private; + localizations: Schema.Attribute.Relation< + 'oneToMany', + 'api::evaluation.evaluation' + > & + Schema.Attribute.Private; + publishedAt: Schema.Attribute.DateTime; + report: Schema.Attribute.Relation<'manyToOne', 'api::report.report'>; + updatedAt: Schema.Attribute.DateTime; + updatedBy: Schema.Attribute.Relation<'oneToOne', 'admin::user'> & + Schema.Attribute.Private; + }; +} + +export interface ApiMatrixMatrix extends Struct.SingleTypeSchema { + collectionName: 'matrices'; + info: { + displayName: 'Matrix'; + pluralName: 'matrices'; + singularName: 'matrix'; + }; + options: { + comment: ''; + draftAndPublish: false; + }; + attributes: { + createdAt: Schema.Attribute.DateTime; + createdBy: Schema.Attribute.Relation<'oneToOne', 'admin::user'> & + Schema.Attribute.Private; + dimensions: Schema.Attribute.Relation< + 'oneToMany', + 'api::dimension.dimension' + >; + locale: Schema.Attribute.String & Schema.Attribute.Private; + localizations: Schema.Attribute.Relation< + 'oneToMany', + 'api::matrix.matrix' + > & + Schema.Attribute.Private; + publishedAt: Schema.Attribute.DateTime; + updatedAt: Schema.Attribute.DateTime; + updatedBy: Schema.Attribute.Relation<'oneToOne', 'admin::user'> & + Schema.Attribute.Private; + }; +} + +export interface ApiMentorshipRequestMentorshipRequest + extends Struct.CollectionTypeSchema { + collectionName: 'mentorship_requests'; + info: { + displayName: 'Mentorship Request'; + pluralName: 'mentorship-requests'; + singularName: 'mentorship-request'; + }; + options: { + comment: ''; + draftAndPublish: false; + }; + attributes: { + createdAt: Schema.Attribute.DateTime; + createdBy: Schema.Attribute.Relation<'oneToOne', 'admin::user'> & + Schema.Attribute.Private; + locale: Schema.Attribute.String & Schema.Attribute.Private; + localizations: Schema.Attribute.Relation< + 'oneToMany', + 'api::mentorship-request.mentorship-request' + > & + Schema.Attribute.Private; + mentor: Schema.Attribute.Relation< + 'manyToOne', + 'plugin::users-permissions.user' + >; + publishedAt: Schema.Attribute.DateTime; + updatedAt: Schema.Attribute.DateTime; + updatedBy: Schema.Attribute.Relation<'oneToOne', 'admin::user'> & + Schema.Attribute.Private; + user: Schema.Attribute.Relation< + 'manyToOne', + 'plugin::users-permissions.user' + >; + }; +} + +export interface ApiProgramProgram extends Struct.CollectionTypeSchema { + collectionName: 'programs'; + info: { + displayName: 'Program'; + pluralName: 'programs'; + singularName: 'program'; + }; + options: { + comment: ''; + draftAndPublish: false; + }; + attributes: { + createdAt: Schema.Attribute.DateTime; + createdBy: Schema.Attribute.Relation<'oneToOne', 'admin::user'> & + Schema.Attribute.Private; + endDate: Schema.Attribute.Date & Schema.Attribute.Required; + locale: Schema.Attribute.String & Schema.Attribute.Private; + localizations: Schema.Attribute.Relation< + 'oneToMany', + 'api::program.program' + > & + Schema.Attribute.Private; + mentors: Schema.Attribute.Relation< + 'manyToMany', + 'plugin::users-permissions.user' + >; + name: Schema.Attribute.String & Schema.Attribute.Required; + publishedAt: Schema.Attribute.DateTime; + sponsorName: Schema.Attribute.String; + startDate: Schema.Attribute.Date & Schema.Attribute.Required; + updatedAt: Schema.Attribute.DateTime; + updatedBy: Schema.Attribute.Relation<'oneToOne', 'admin::user'> & + Schema.Attribute.Private; + users: Schema.Attribute.Relation< + 'oneToMany', + 'plugin::users-permissions.user' + >; + }; +} + +export interface ApiReportReport extends Struct.CollectionTypeSchema { + collectionName: 'reports'; + info: { + displayName: 'Report'; + pluralName: 'reports'; + singularName: 'report'; + }; + options: { + comment: ''; + draftAndPublish: false; + }; + attributes: { + createdAt: Schema.Attribute.DateTime; + createdBy: Schema.Attribute.Relation<'oneToOne', 'admin::user'> & + Schema.Attribute.Private; + deadline: Schema.Attribute.Date & Schema.Attribute.Required; + evaluations: Schema.Attribute.Relation< + 'oneToMany', + 'api::evaluation.evaluation' + >; + finished: Schema.Attribute.Boolean & + Schema.Attribute.Required & + Schema.Attribute.DefaultTo; + locale: Schema.Attribute.String & Schema.Attribute.Private; + localizations: Schema.Attribute.Relation< + 'oneToMany', + 'api::report.report' + > & + Schema.Attribute.Private; + publishedAt: Schema.Attribute.DateTime; + updatedAt: Schema.Attribute.DateTime; + updatedBy: Schema.Attribute.Relation<'oneToOne', 'admin::user'> & + Schema.Attribute.Private; + user: Schema.Attribute.Relation< + 'manyToOne', + 'plugin::users-permissions.user' + >; + }; +} + +export interface PluginContentReleasesRelease + extends Struct.CollectionTypeSchema { + collectionName: 'strapi_releases'; + info: { + displayName: 'Release'; + pluralName: 'releases'; + singularName: 'release'; + }; + options: { + draftAndPublish: false; + }; + pluginOptions: { + 'content-manager': { + visible: false; + }; + 'content-type-builder': { + visible: false; + }; + }; + attributes: { + actions: Schema.Attribute.Relation< + 'oneToMany', + 'plugin::content-releases.release-action' + >; + createdAt: Schema.Attribute.DateTime; + createdBy: Schema.Attribute.Relation<'oneToOne', 'admin::user'> & + Schema.Attribute.Private; + locale: Schema.Attribute.String & Schema.Attribute.Private; + localizations: Schema.Attribute.Relation< + 'oneToMany', + 'plugin::content-releases.release' + > & + Schema.Attribute.Private; + name: Schema.Attribute.String & Schema.Attribute.Required; + publishedAt: Schema.Attribute.DateTime; + releasedAt: Schema.Attribute.DateTime; + scheduledAt: Schema.Attribute.DateTime; + status: Schema.Attribute.Enumeration< + ['ready', 'blocked', 'failed', 'done', 'empty'] + > & + Schema.Attribute.Required; + timezone: Schema.Attribute.String; + updatedAt: Schema.Attribute.DateTime; + updatedBy: Schema.Attribute.Relation<'oneToOne', 'admin::user'> & + Schema.Attribute.Private; + }; +} + +export interface PluginContentReleasesReleaseAction + extends Struct.CollectionTypeSchema { + collectionName: 'strapi_release_actions'; + info: { + displayName: 'Release Action'; + pluralName: 'release-actions'; + singularName: 'release-action'; + }; + options: { + draftAndPublish: false; + }; + pluginOptions: { + 'content-manager': { + visible: false; + }; + 'content-type-builder': { + visible: false; + }; + }; + attributes: { + contentType: Schema.Attribute.String & Schema.Attribute.Required; + createdAt: Schema.Attribute.DateTime; + createdBy: Schema.Attribute.Relation<'oneToOne', 'admin::user'> & + Schema.Attribute.Private; + entryDocumentId: Schema.Attribute.String; + isEntryValid: Schema.Attribute.Boolean; + locale: Schema.Attribute.String & Schema.Attribute.Private; + localizations: Schema.Attribute.Relation< + 'oneToMany', + 'plugin::content-releases.release-action' + > & + Schema.Attribute.Private; + publishedAt: Schema.Attribute.DateTime; + release: Schema.Attribute.Relation< + 'manyToOne', + 'plugin::content-releases.release' + >; + type: Schema.Attribute.Enumeration<['publish', 'unpublish']> & + Schema.Attribute.Required; + updatedAt: Schema.Attribute.DateTime; + updatedBy: Schema.Attribute.Relation<'oneToOne', 'admin::user'> & + Schema.Attribute.Private; + }; +} + +export interface PluginEmailDesigner5EmailDesignerTemplate + extends Struct.CollectionTypeSchema { + collectionName: 'email-designer-templates'; + info: { + description: 'This collection stores email templates created with the email designer.'; + displayName: 'Email Designer Templates'; + pluralName: 'email-designer-templates'; + singularName: 'email-designer-template'; + }; + options: { + draftAndPublish: false; + }; + pluginOptions: { + 'content-manager': { + visible: false; + }; + 'content-type-builder': { + visible: false; + }; + }; + attributes: { + bodyHtml: Schema.Attribute.Text; + bodyText: Schema.Attribute.Text; + createdAt: Schema.Attribute.DateTime; + createdBy: Schema.Attribute.Relation<'oneToOne', 'admin::user'> & + Schema.Attribute.Private; + design: Schema.Attribute.JSON; + locale: Schema.Attribute.String & Schema.Attribute.Private; + localizations: Schema.Attribute.Relation< + 'oneToMany', + 'plugin::email-designer-5.email-designer-template' + > & + Schema.Attribute.Private; + name: Schema.Attribute.String; + publishedAt: Schema.Attribute.DateTime; + subject: Schema.Attribute.String; + tags: Schema.Attribute.JSON; + templateReferenceId: Schema.Attribute.Integer & Schema.Attribute.Unique; + updatedAt: Schema.Attribute.DateTime; + updatedBy: Schema.Attribute.Relation<'oneToOne', 'admin::user'> & + Schema.Attribute.Private; + }; +} + +export interface PluginI18NLocale extends Struct.CollectionTypeSchema { + collectionName: 'i18n_locale'; + info: { + collectionName: 'locales'; + description: ''; + displayName: 'Locale'; + pluralName: 'locales'; + singularName: 'locale'; + }; + options: { + draftAndPublish: false; + }; + pluginOptions: { + 'content-manager': { + visible: false; + }; + 'content-type-builder': { + visible: false; + }; + }; + attributes: { + code: Schema.Attribute.String & Schema.Attribute.Unique; + createdAt: Schema.Attribute.DateTime; + createdBy: Schema.Attribute.Relation<'oneToOne', 'admin::user'> & + Schema.Attribute.Private; + locale: Schema.Attribute.String & Schema.Attribute.Private; + localizations: Schema.Attribute.Relation< + 'oneToMany', + 'plugin::i18n.locale' + > & + Schema.Attribute.Private; + name: Schema.Attribute.String & + Schema.Attribute.SetMinMax< + { + max: 50; + min: 1; + }, + number + >; + publishedAt: Schema.Attribute.DateTime; + updatedAt: Schema.Attribute.DateTime; + updatedBy: Schema.Attribute.Relation<'oneToOne', 'admin::user'> & + Schema.Attribute.Private; + }; +} + +export interface PluginReviewWorkflowsWorkflow + extends Struct.CollectionTypeSchema { + collectionName: 'strapi_workflows'; + info: { + description: ''; + displayName: 'Workflow'; + name: 'Workflow'; + pluralName: 'workflows'; + singularName: 'workflow'; + }; + options: { + draftAndPublish: false; + }; + pluginOptions: { + 'content-manager': { + visible: false; + }; + 'content-type-builder': { + visible: false; + }; + }; + attributes: { + contentTypes: Schema.Attribute.JSON & + Schema.Attribute.Required & + Schema.Attribute.DefaultTo<'[]'>; + createdAt: Schema.Attribute.DateTime; + createdBy: Schema.Attribute.Relation<'oneToOne', 'admin::user'> & + Schema.Attribute.Private; + locale: Schema.Attribute.String & Schema.Attribute.Private; + localizations: Schema.Attribute.Relation< + 'oneToMany', + 'plugin::review-workflows.workflow' + > & + Schema.Attribute.Private; + name: Schema.Attribute.String & + Schema.Attribute.Required & + Schema.Attribute.Unique; + publishedAt: Schema.Attribute.DateTime; + stageRequiredToPublish: Schema.Attribute.Relation< + 'oneToOne', + 'plugin::review-workflows.workflow-stage' + >; + stages: Schema.Attribute.Relation< + 'oneToMany', + 'plugin::review-workflows.workflow-stage' + >; + updatedAt: Schema.Attribute.DateTime; + updatedBy: Schema.Attribute.Relation<'oneToOne', 'admin::user'> & + Schema.Attribute.Private; + }; +} + +export interface PluginReviewWorkflowsWorkflowStage + extends Struct.CollectionTypeSchema { + collectionName: 'strapi_workflows_stages'; + info: { + description: ''; + displayName: 'Stages'; + name: 'Workflow Stage'; + pluralName: 'workflow-stages'; + singularName: 'workflow-stage'; + }; + options: { + draftAndPublish: false; + version: '1.1.0'; + }; + pluginOptions: { + 'content-manager': { + visible: false; + }; + 'content-type-builder': { + visible: false; + }; + }; + attributes: { + color: Schema.Attribute.String & Schema.Attribute.DefaultTo<'#4945FF'>; + createdAt: Schema.Attribute.DateTime; + createdBy: Schema.Attribute.Relation<'oneToOne', 'admin::user'> & + Schema.Attribute.Private; + locale: Schema.Attribute.String & Schema.Attribute.Private; + localizations: Schema.Attribute.Relation< + 'oneToMany', + 'plugin::review-workflows.workflow-stage' + > & + Schema.Attribute.Private; + name: Schema.Attribute.String; + permissions: Schema.Attribute.Relation<'manyToMany', 'admin::permission'>; + publishedAt: Schema.Attribute.DateTime; + updatedAt: Schema.Attribute.DateTime; + updatedBy: Schema.Attribute.Relation<'oneToOne', 'admin::user'> & + Schema.Attribute.Private; + workflow: Schema.Attribute.Relation< + 'manyToOne', + 'plugin::review-workflows.workflow' + >; + }; +} + +export interface PluginUploadFile extends Struct.CollectionTypeSchema { + collectionName: 'files'; + info: { + description: ''; + displayName: 'File'; + pluralName: 'files'; + singularName: 'file'; + }; + options: { + draftAndPublish: false; + }; + pluginOptions: { + 'content-manager': { + visible: false; + }; + 'content-type-builder': { + visible: false; + }; + }; + attributes: { + alternativeText: Schema.Attribute.String; + caption: Schema.Attribute.String; + createdAt: Schema.Attribute.DateTime; + createdBy: Schema.Attribute.Relation<'oneToOne', 'admin::user'> & + Schema.Attribute.Private; + ext: Schema.Attribute.String; + folder: Schema.Attribute.Relation<'manyToOne', 'plugin::upload.folder'> & + Schema.Attribute.Private; + folderPath: Schema.Attribute.String & + Schema.Attribute.Required & + Schema.Attribute.Private & + Schema.Attribute.SetMinMaxLength<{ + minLength: 1; + }>; + formats: Schema.Attribute.JSON; + hash: Schema.Attribute.String & Schema.Attribute.Required; + height: Schema.Attribute.Integer; + locale: Schema.Attribute.String & Schema.Attribute.Private; + localizations: Schema.Attribute.Relation< + 'oneToMany', + 'plugin::upload.file' + > & + Schema.Attribute.Private; + mime: Schema.Attribute.String & Schema.Attribute.Required; + name: Schema.Attribute.String & Schema.Attribute.Required; + previewUrl: Schema.Attribute.String; + provider: Schema.Attribute.String & Schema.Attribute.Required; + provider_metadata: Schema.Attribute.JSON; + publishedAt: Schema.Attribute.DateTime; + related: Schema.Attribute.Relation<'morphToMany'>; + size: Schema.Attribute.Decimal & Schema.Attribute.Required; + updatedAt: Schema.Attribute.DateTime; + updatedBy: Schema.Attribute.Relation<'oneToOne', 'admin::user'> & + Schema.Attribute.Private; + url: Schema.Attribute.String & Schema.Attribute.Required; + width: Schema.Attribute.Integer; + }; +} + +export interface PluginUploadFolder extends Struct.CollectionTypeSchema { + collectionName: 'upload_folders'; + info: { + displayName: 'Folder'; + pluralName: 'folders'; + singularName: 'folder'; + }; + options: { + draftAndPublish: false; + }; + pluginOptions: { + 'content-manager': { + visible: false; + }; + 'content-type-builder': { + visible: false; + }; + }; + attributes: { + children: Schema.Attribute.Relation<'oneToMany', 'plugin::upload.folder'>; + createdAt: Schema.Attribute.DateTime; + createdBy: Schema.Attribute.Relation<'oneToOne', 'admin::user'> & + Schema.Attribute.Private; + files: Schema.Attribute.Relation<'oneToMany', 'plugin::upload.file'>; + locale: Schema.Attribute.String & Schema.Attribute.Private; + localizations: Schema.Attribute.Relation< + 'oneToMany', + 'plugin::upload.folder' + > & + Schema.Attribute.Private; + name: Schema.Attribute.String & + Schema.Attribute.Required & + Schema.Attribute.SetMinMaxLength<{ + minLength: 1; + }>; + parent: Schema.Attribute.Relation<'manyToOne', 'plugin::upload.folder'>; + path: Schema.Attribute.String & + Schema.Attribute.Required & + Schema.Attribute.SetMinMaxLength<{ + minLength: 1; + }>; + pathId: Schema.Attribute.Integer & + Schema.Attribute.Required & + Schema.Attribute.Unique; + publishedAt: Schema.Attribute.DateTime; + updatedAt: Schema.Attribute.DateTime; + updatedBy: Schema.Attribute.Relation<'oneToOne', 'admin::user'> & + Schema.Attribute.Private; + }; +} + +export interface PluginUsersPermissionsPermission + extends Struct.CollectionTypeSchema { + collectionName: 'up_permissions'; + info: { + description: ''; + displayName: 'Permission'; + name: 'permission'; + pluralName: 'permissions'; + singularName: 'permission'; + }; + options: { + draftAndPublish: false; + }; + pluginOptions: { + 'content-manager': { + visible: false; + }; + 'content-type-builder': { + visible: false; + }; + }; + attributes: { + action: Schema.Attribute.String & Schema.Attribute.Required; + createdAt: Schema.Attribute.DateTime; + createdBy: Schema.Attribute.Relation<'oneToOne', 'admin::user'> & + Schema.Attribute.Private; + locale: Schema.Attribute.String & Schema.Attribute.Private; + localizations: Schema.Attribute.Relation< + 'oneToMany', + 'plugin::users-permissions.permission' + > & + Schema.Attribute.Private; + publishedAt: Schema.Attribute.DateTime; + role: Schema.Attribute.Relation< + 'manyToOne', + 'plugin::users-permissions.role' + >; + updatedAt: Schema.Attribute.DateTime; + updatedBy: Schema.Attribute.Relation<'oneToOne', 'admin::user'> & + Schema.Attribute.Private; + }; +} + +export interface PluginUsersPermissionsRole + extends Struct.CollectionTypeSchema { + collectionName: 'up_roles'; + info: { + description: ''; + displayName: 'Role'; + name: 'role'; + pluralName: 'roles'; + singularName: 'role'; + }; + options: { + draftAndPublish: false; + }; + pluginOptions: { + 'content-manager': { + visible: false; + }; + 'content-type-builder': { + visible: false; + }; + }; + attributes: { + createdAt: Schema.Attribute.DateTime; + createdBy: Schema.Attribute.Relation<'oneToOne', 'admin::user'> & + Schema.Attribute.Private; + description: Schema.Attribute.String; + locale: Schema.Attribute.String & Schema.Attribute.Private; + localizations: Schema.Attribute.Relation< + 'oneToMany', + 'plugin::users-permissions.role' + > & + Schema.Attribute.Private; + name: Schema.Attribute.String & + Schema.Attribute.Required & + Schema.Attribute.SetMinMaxLength<{ + minLength: 3; + }>; + permissions: Schema.Attribute.Relation< + 'oneToMany', + 'plugin::users-permissions.permission' + >; + publishedAt: Schema.Attribute.DateTime; + type: Schema.Attribute.String & Schema.Attribute.Unique; + updatedAt: Schema.Attribute.DateTime; + updatedBy: Schema.Attribute.Relation<'oneToOne', 'admin::user'> & + Schema.Attribute.Private; + users: Schema.Attribute.Relation< + 'oneToMany', + 'plugin::users-permissions.user' + >; + }; +} + +export interface PluginUsersPermissionsUser + extends Struct.CollectionTypeSchema { + collectionName: 'up_users'; + info: { + description: ''; + displayName: 'User'; + name: 'user'; + pluralName: 'users'; + singularName: 'user'; + }; + options: { + draftAndPublish: false; + }; + attributes: { + accountFacebook: Schema.Attribute.String; + accountInstagram: Schema.Attribute.String; + accountLinkedin: Schema.Attribute.String; + accountTiktok: Schema.Attribute.String; + accountTwitter: Schema.Attribute.String; + available: Schema.Attribute.Boolean & Schema.Attribute.DefaultTo; + avatar: Schema.Attribute.Media<'images'>; + bio: Schema.Attribute.Text; + blocked: Schema.Attribute.Boolean & Schema.Attribute.DefaultTo; + city: Schema.Attribute.String; + confirmationToken: Schema.Attribute.String & Schema.Attribute.Private; + confirmed: Schema.Attribute.Boolean & Schema.Attribute.DefaultTo; + contactEmail: Schema.Attribute.String; + contactFirstName: Schema.Attribute.String; + contactLastName: Schema.Attribute.String; + contactPhone: Schema.Attribute.String; + county: Schema.Attribute.String; + createdAt: Schema.Attribute.DateTime; + createdBy: Schema.Attribute.Relation<'oneToOne', 'admin::user'> & + Schema.Attribute.Private; + description: Schema.Attribute.Text; + dimensions: Schema.Attribute.Relation< + 'manyToMany', + 'api::dimension.dimension' + >; + domains: Schema.Attribute.Relation<'manyToMany', 'api::domain.domain'>; + email: Schema.Attribute.Email & + Schema.Attribute.Required & + Schema.Attribute.SetMinMaxLength<{ + minLength: 6; + }>; + expertise: Schema.Attribute.Text; + firstName: Schema.Attribute.String; + keywords: Schema.Attribute.String; + lastName: Schema.Attribute.String; + locale: Schema.Attribute.String & Schema.Attribute.Private; + localizations: Schema.Attribute.Relation< + 'oneToMany', + 'plugin::users-permissions.user' + > & + Schema.Attribute.Private; + logo: Schema.Attribute.Media<'images' | 'files' | 'videos' | 'audios'>; + mentorActivities: Schema.Attribute.Relation< + 'oneToMany', + 'api::activity.activity' + >; + mentorSessions: Schema.Attribute.Relation< + 'oneToMany', + 'api::mentorship-request.mentorship-request' + >; + ongIdentificationNumber: Schema.Attribute.String & Schema.Attribute.Unique; + ongName: Schema.Attribute.String; + password: Schema.Attribute.Password & + Schema.Attribute.Private & + Schema.Attribute.SetMinMaxLength<{ + minLength: 6; + }>; + phone: Schema.Attribute.String; + program: Schema.Attribute.Relation<'manyToOne', 'api::program.program'>; + programs: Schema.Attribute.Relation<'manyToMany', 'api::program.program'>; + provider: Schema.Attribute.String; + publishedAt: Schema.Attribute.DateTime; + registrationToken: Schema.Attribute.String & Schema.Attribute.Private; + reports: Schema.Attribute.Relation<'oneToMany', 'api::report.report'>; + resetPasswordToken: Schema.Attribute.String & Schema.Attribute.Private; + role: Schema.Attribute.Relation< + 'manyToOne', + 'plugin::users-permissions.role' + >; + updatedAt: Schema.Attribute.DateTime; + updatedBy: Schema.Attribute.Relation<'oneToOne', 'admin::user'> & + Schema.Attribute.Private; + userActivities: Schema.Attribute.Relation< + 'oneToMany', + 'api::activity.activity' + >; + username: Schema.Attribute.String & + Schema.Attribute.Required & + Schema.Attribute.Unique & + Schema.Attribute.SetMinMaxLength<{ + minLength: 3; + }>; + userSessions: Schema.Attribute.Relation< + 'oneToMany', + 'api::mentorship-request.mentorship-request' + >; + website: Schema.Attribute.String; + }; +} + +declare module '@strapi/strapi' { + export module Public { + export interface ContentTypeSchemas { + 'admin::api-token': AdminApiToken; + 'admin::api-token-permission': AdminApiTokenPermission; + 'admin::permission': AdminPermission; + 'admin::role': AdminRole; + 'admin::transfer-token': AdminTransferToken; + 'admin::transfer-token-permission': AdminTransferTokenPermission; + 'admin::user': AdminUser; + 'api::activity-type.activity-type': ApiActivityTypeActivityType; + 'api::activity.activity': ApiActivityActivity; + 'api::dimension.dimension': ApiDimensionDimension; + 'api::domain.domain': ApiDomainDomain; + 'api::evaluation.evaluation': ApiEvaluationEvaluation; + 'api::matrix.matrix': ApiMatrixMatrix; + 'api::mentorship-request.mentorship-request': ApiMentorshipRequestMentorshipRequest; + 'api::program.program': ApiProgramProgram; + 'api::report.report': ApiReportReport; + 'plugin::content-releases.release': PluginContentReleasesRelease; + 'plugin::content-releases.release-action': PluginContentReleasesReleaseAction; + 'plugin::email-designer-5.email-designer-template': PluginEmailDesigner5EmailDesignerTemplate; + 'plugin::i18n.locale': PluginI18NLocale; + 'plugin::review-workflows.workflow': PluginReviewWorkflowsWorkflow; + 'plugin::review-workflows.workflow-stage': PluginReviewWorkflowsWorkflowStage; + 'plugin::upload.file': PluginUploadFile; + 'plugin::upload.folder': PluginUploadFolder; + 'plugin::users-permissions.permission': PluginUsersPermissionsPermission; + 'plugin::users-permissions.role': PluginUsersPermissionsRole; + 'plugin::users-permissions.user': PluginUsersPermissionsUser; + } + } +} From 8025c915b9019c432e33c7a55480f1d6e899b303 Mon Sep 17 00:00:00 2001 From: Ion Dormenco Date: Wed, 27 Aug 2025 16:40:39 +0300 Subject: [PATCH 02/61] upgrade strapi --- server2/package.json | 24 +- server2/pnpm-lock.yaml | 2571 +++++++++++++++++++++------------------- 2 files changed, 1347 insertions(+), 1248 deletions(-) diff --git a/server2/package.json b/server2/package.json index 0ce78d68..25223ba1 100644 --- a/server2/package.json +++ b/server2/package.json @@ -16,26 +16,26 @@ }, "dependencies": { "@strapi/plugin-cloud": "5.21.0", - "@strapi/plugin-sentry": "^5.21.0", - "@strapi/plugin-users-permissions": "^5.21.0", - "@strapi/provider-email-amazon-ses": "^5.21.0", + "@strapi/plugin-sentry": "^5.23.0", + "@strapi/plugin-users-permissions": "^5.23.0", + "@strapi/provider-email-amazon-ses": "^5.23.0", "@strapi/strapi": "5.21.0", "jsonwebtoken": "^9.0.2", "pg": "8.8.0", - "react": "^18.0.0", - "react-dom": "^18.0.0", - "react-router-dom": "^6.0.0", - "remeda": "^2.29.0", + "react": "^18.3.1", + "react-dom": "^18.3.1", + "react-router-dom": "^6.30.1", + "remeda": "^2.30.0", "strapi-plugin-config-sync": "^3.1.2", "strapi-plugin-email-designer-5": "^0.0.7", "strapi-provider-upload-aws-s3-advanced": "^5.0.1", - "styled-components": "^6.0.0" + "styled-components": "^6.1.19" }, "devDependencies": { - "@types/node": "^20", - "@types/react": "^18", - "@types/react-dom": "^18", - "typescript": "^5" + "@types/node": "^20.19.11", + "@types/react": "^18.3.24", + "@types/react-dom": "^18.3.7", + "typescript": "^5.9.2" }, "engines": { "node": ">=18.0.0 <=22.x.x", diff --git a/server2/pnpm-lock.yaml b/server2/pnpm-lock.yaml index 622af777..de5482da 100644 --- a/server2/pnpm-lock.yaml +++ b/server2/pnpm-lock.yaml @@ -10,19 +10,19 @@ importers: dependencies: '@strapi/plugin-cloud': specifier: 5.21.0 - version: 5.21.0(b78edc8e6032cc93fefd648fba2b1773) + version: 5.21.0(cb2ce4845517a894efe3c13c07d0698e) '@strapi/plugin-sentry': - specifier: ^5.21.0 - version: 5.21.0(49919b52d571c5aa24a3c5910cc24b78) + specifier: ^5.23.0 + version: 5.23.0(c860b69b0dd1292fe40b5a4547e19872) '@strapi/plugin-users-permissions': - specifier: ^5.21.0 - version: 5.21.0(afbaa5d9706a16fc6f0a3a153d49a5f8) + specifier: ^5.23.0 + version: 5.23.0(9daaddb1d802a12fdb5cc3606c26db94) '@strapi/provider-email-amazon-ses': - specifier: ^5.21.0 - version: 5.21.0 + specifier: ^5.23.0 + version: 5.23.0 '@strapi/strapi': specifier: 5.21.0 - version: 5.21.0(@babel/runtime@7.28.2)(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.11.2)(@codemirror/lint@6.8.5)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/theme-one-dark@6.1.3)(@codemirror/view@6.38.1)(@swc/helpers@0.5.17)(@types/hoist-non-react-statics@3.3.7(@types/react@18.3.23))(@types/node@20.19.9)(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(codemirror@5.65.19)(esbuild@0.25.8)(koa@2.16.1)(pg@8.8.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@6.30.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(terser@5.43.1)(type-fest@4.41.0) + version: 5.21.0(@babel/runtime@7.28.3)(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.11.3)(@codemirror/lint@6.8.5)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/theme-one-dark@6.1.3)(@codemirror/view@6.38.1)(@swc/helpers@0.5.17)(@types/hoist-non-react-statics@3.3.7(@types/react@18.3.24))(@types/node@20.19.11)(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(codemirror@5.65.20)(esbuild@0.25.9)(koa@2.16.1)(pg@8.8.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@6.30.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(terser@5.43.1)(type-fest@4.41.0) jsonwebtoken: specifier: ^9.0.2 version: 9.0.2 @@ -30,41 +30,41 @@ importers: specifier: 8.8.0 version: 8.8.0 react: - specifier: ^18.0.0 + specifier: ^18.3.1 version: 18.3.1 react-dom: - specifier: ^18.0.0 + specifier: ^18.3.1 version: 18.3.1(react@18.3.1) react-router-dom: - specifier: ^6.0.0 + specifier: ^6.30.1 version: 6.30.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) remeda: - specifier: ^2.29.0 - version: 2.29.0 + specifier: ^2.30.0 + version: 2.30.0 strapi-plugin-config-sync: specifier: ^3.1.2 - version: 3.1.2(3ea19e63023fc365216b0eadad674f29) + version: 3.1.2(52e6ec3649dcd08b3bad78457edca3d9) strapi-plugin-email-designer-5: specifier: ^0.0.7 - version: 0.0.7(14e4c45c83df9dbd43a1192c3d17303b) + version: 0.0.7(d2545caab219c2322de95b1255ab0636) strapi-provider-upload-aws-s3-advanced: specifier: ^5.0.1 version: 5.0.1 styled-components: - specifier: ^6.0.0 + specifier: ^6.1.19 version: 6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1) devDependencies: '@types/node': - specifier: ^20 - version: 20.19.9 + specifier: ^20.19.11 + version: 20.19.11 '@types/react': - specifier: ^18 - version: 18.3.23 + specifier: ^18.3.24 + version: 18.3.24 '@types/react-dom': - specifier: ^18 - version: 18.3.7(@types/react@18.3.23) + specifier: ^18.3.7 + version: 18.3.7(@types/react@18.3.24) typescript: - specifier: ^5 + specifier: ^5.9.2 version: 5.9.2 packages: @@ -92,129 +92,129 @@ packages: '@aws-crypto/util@5.2.0': resolution: {integrity: sha512-4RkU9EsI6ZpBve5fseQlGNUWKMa1RLPQ1dnjnQoe07ldfIzcsGb5hC5W0Dm7u423KWzawlrpbjXBrXCEv9zazQ==} - '@aws-sdk/client-s3@3.862.0': - resolution: {integrity: sha512-sPmqv2qKORtGRN51cRoHyTOK/SMejG1snXUQytuximeDPn5e/p6cCsYwOI8QuQNW+/7HbmosEz91lPcbClWXxg==} + '@aws-sdk/client-s3@3.876.0': + resolution: {integrity: sha512-rrdrB0IlHfRaY+qxo87iSPJJxjCZ2WIV0wKi0EWz02yBpq17c0o6Vzc8f1+ksR+IZGkGttQnD2j4UpItMdLSKg==} engines: {node: '>=18.0.0'} - '@aws-sdk/client-sso@3.862.0': - resolution: {integrity: sha512-zHf7Bn22K09BdFgiGg6yWfy927djGhs58KB5qpqD2ie7u796TvetPH14p6UUAOGyk6aah+wR/WLFFoc+51uADA==} + '@aws-sdk/client-sso@3.876.0': + resolution: {integrity: sha512-Vf0PMF7HVpvllrfPODnBZmlz6kT/y2AvOt1RQG3+qD0VrHWzShc5nwgRZ+yyP3xkKVhZsQ3sJapfZTFnjqMOYA==} engines: {node: '>=18.0.0'} - '@aws-sdk/core@3.862.0': - resolution: {integrity: sha512-oJ5Au3QCAQmOmh7PD7dUxnPDxWsT9Z95XEOiJV027//11pwRSUMiNSvW8srPa3i7CZRNjz5QHX6O4KqX9PxNsQ==} + '@aws-sdk/core@3.876.0': + resolution: {integrity: sha512-sVFBFkdoPOPyY13NaXO1E/R9O5J6ixzHnnRbqrbXYM2QQgLNPTKIiRtmVEuVoFV9YULg+/aKm7caix8m468y9w==} engines: {node: '>=18.0.0'} - '@aws-sdk/credential-provider-env@3.862.0': - resolution: {integrity: sha512-/nafSJMuixcrCN1SmsOBIQ5m1fhr9ZnCxw3JZD9qJm3yNXhAshqAC+KcA3JGFnvdBVLhY/pUpdoQmxZmuFJItQ==} + '@aws-sdk/credential-provider-env@3.876.0': + resolution: {integrity: sha512-cof7lwp2AlrAfRs0pt4W2KMS2VMBvEmpcti1UOFfSJIqkn+cyJliMJ8LHg22GI+kUexjvxdAqSbf3M7OHvEW+w==} engines: {node: '>=18.0.0'} - '@aws-sdk/credential-provider-http@3.862.0': - resolution: {integrity: sha512-JnF3vH6GxvPuMGSI5QsmVlmWc0ebElEiJvUGByTMSr/BfzywZdJBKzPVqViwNqAW5cBWiZ/rpL+ekZ24Nb0Vow==} + '@aws-sdk/credential-provider-http@3.876.0': + resolution: {integrity: sha512-wzmef2NBp2+X1l8D4Q8hx1G8oI3+WdvLdPev9VnVpRYZxYGRWVPl++wvCBsCn/ZL0mdWopPkhHA3kFexQhMzvg==} engines: {node: '>=18.0.0'} - '@aws-sdk/credential-provider-ini@3.862.0': - resolution: {integrity: sha512-LkpZ2S9DQCTHTPu1p0Qg5bM5DN/b/cEflW269RoeuYpiznxdV8r/mqYuhh/VPXQKkBZdiILe4/OODtg+vk4S0A==} + '@aws-sdk/credential-provider-ini@3.876.0': + resolution: {integrity: sha512-JHbW6fqnJsVjGHCyko7B0NVPT1nEAPxkM3CGjUcVGsHgJBkxOLVCMQqTRyHcDdeHR2qeojlLoOHRz97xIHQjYw==} engines: {node: '>=18.0.0'} - '@aws-sdk/credential-provider-node@3.862.0': - resolution: {integrity: sha512-4+X/LdEGPCBMlhn6MCcNJ5yJ8k+yDXeSO1l9X49NNQiG60SH/yObB3VvotcHWC+A3EEZx4dOw/ylcPt86e7Irg==} + '@aws-sdk/credential-provider-node@3.876.0': + resolution: {integrity: sha512-eHbNt1+Hi43e8ANnwf6toapLSxfMiyGq459y3Uh6i7NBOiWWKEsOVcgOfUC3RCoqeikxovt1tFM2cEElWUIOhg==} engines: {node: '>=18.0.0'} - '@aws-sdk/credential-provider-process@3.862.0': - resolution: {integrity: sha512-bR/eRCjRsilAuaUpNzTWWE4sUxJC4k571+4LLxE6Xo+0oYHfH+Ih00+sQRX06s4SqZZROdppissm3OOr5d26qA==} + '@aws-sdk/credential-provider-process@3.876.0': + resolution: {integrity: sha512-SMX4OlHvspu3gF4hxe7WAnZFhxpiCye+WlBSVoWfW/i9XNhtrZS1JMr29MK34GlCTk9qO7FlRwds/Z5k7xPpHg==} engines: {node: '>=18.0.0'} - '@aws-sdk/credential-provider-sso@3.862.0': - resolution: {integrity: sha512-1E1rTKWJAbzN/uiIXFPCVAS2PrZgy87O6BEO69404bI7o/iYHOfohfn66bdSqBnZ7Tn/hFJdCk6i23U3pibf5w==} + '@aws-sdk/credential-provider-sso@3.876.0': + resolution: {integrity: sha512-iP5dz9XqwePbgnh7Bdrq5e1319JpCRKLyomUfHH1XVeXkIHmwIJdmTj1Upeo1J8L/5cLHmhXAN6CTN11bLo8SA==} engines: {node: '>=18.0.0'} - '@aws-sdk/credential-provider-web-identity@3.862.0': - resolution: {integrity: sha512-Skv07eOS4usDf/Bna3FWKIo0/35qhxb22Z/OxrbNtx2Hxa/upp42S+Y6fA9qzgLqXMNYDZngKYwwMPtzrbkMAg==} + '@aws-sdk/credential-provider-web-identity@3.876.0': + resolution: {integrity: sha512-q/XSCP1uae5aB9veM8zcm6Gqu6A4ckX9ZbhHgCzURXVJDwp+nINW1hM9vppMjGw3ND9Ibx/adR+KfTI0TDMzqw==} engines: {node: '>=18.0.0'} - '@aws-sdk/lib-storage@3.862.0': - resolution: {integrity: sha512-LonTzJcUZh9wg5NsqT5lWy2VRLrbjLu/EpmQSC6vr1x2Eqj/T47HPEMXomeQyEChRM3c4e3KXFt3qPpz4d61rQ==} + '@aws-sdk/lib-storage@3.876.0': + resolution: {integrity: sha512-6wydbk8enmPQmj8I0NvRhDcq3J5GhY72RBwQKyShQdD8q6xLEbSnJAudTKSmsVzfjnL8hA/cP/dBY+6T6RvlYQ==} engines: {node: '>=18.0.0'} peerDependencies: - '@aws-sdk/client-s3': ^3.862.0 + '@aws-sdk/client-s3': ^3.876.0 - '@aws-sdk/middleware-bucket-endpoint@3.862.0': - resolution: {integrity: sha512-Wcsc7VPLjImQw+CP1/YkwyofMs9Ab6dVq96iS8p0zv0C6YTaMjvillkau4zFfrrrTshdzFWKptIFhKK8Zsei1g==} + '@aws-sdk/middleware-bucket-endpoint@3.873.0': + resolution: {integrity: sha512-b4bvr0QdADeTUs+lPc9Z48kXzbKHXQKgTvxx/jXDgSW9tv4KmYPO1gIj6Z9dcrBkRWQuUtSW3Tu2S5n6pe+zeg==} engines: {node: '>=18.0.0'} - '@aws-sdk/middleware-expect-continue@3.862.0': - resolution: {integrity: sha512-oG3AaVUJ+26p0ESU4INFn6MmqqiBFZGrebST66Or+YBhteed2rbbFl7mCfjtPWUFgquQlvT1UP19P3LjQKeKpw==} + '@aws-sdk/middleware-expect-continue@3.873.0': + resolution: {integrity: sha512-GIqoc8WgRcf/opBOZXFLmplJQKwOMjiOMmDz9gQkaJ8FiVJoAp8EGVmK2TOWZMQUYsavvHYsHaor5R2xwPoGVg==} engines: {node: '>=18.0.0'} - '@aws-sdk/middleware-flexible-checksums@3.862.0': - resolution: {integrity: sha512-3PuTNJs43GmtNIfj4R/aNPGX6lfIq0gjfekVPUO/MnP/eV+RVgkCvEqWYyN6RZyOzrzsJydXbmydwLHAwMzxiw==} + '@aws-sdk/middleware-flexible-checksums@3.876.0': + resolution: {integrity: sha512-Xfb9/XP0WcQq/yJxUubfzMUF0AYSX10UUIRbCJog0/lnDNocEiGEIaarwuQzoxb9QW9TQ1l5dDc/5bOMa1YVGw==} engines: {node: '>=18.0.0'} - '@aws-sdk/middleware-host-header@3.862.0': - resolution: {integrity: sha512-jDje8dCFeFHfuCAxMDXBs8hy8q9NCTlyK4ThyyfAj3U4Pixly2mmzY2u7b7AyGhWsjJNx8uhTjlYq5zkQPQCYw==} + '@aws-sdk/middleware-host-header@3.873.0': + resolution: {integrity: sha512-KZ/W1uruWtMOs7D5j3KquOxzCnV79KQW9MjJFZM/M0l6KI8J6V3718MXxFHsTjUE4fpdV6SeCNLV1lwGygsjJA==} engines: {node: '>=18.0.0'} - '@aws-sdk/middleware-location-constraint@3.862.0': - resolution: {integrity: sha512-MnwLxCw7Cc9OngEH3SHFhrLlDI9WVxaBkp3oTsdY9JE7v8OE38wQ9vtjaRsynjwu0WRtrctSHbpd7h/QVvtjyA==} + '@aws-sdk/middleware-location-constraint@3.873.0': + resolution: {integrity: sha512-r+hIaORsW/8rq6wieDordXnA/eAu7xAPLue2InhoEX6ML7irP52BgiibHLpt9R0psiCzIHhju8qqKa4pJOrmiw==} engines: {node: '>=18.0.0'} - '@aws-sdk/middleware-logger@3.862.0': - resolution: {integrity: sha512-N/bXSJznNBR/i7Ofmf9+gM6dx/SPBK09ZWLKsW5iQjqKxAKn/2DozlnE54uiEs1saHZWoNDRg69Ww4XYYSlG1Q==} + '@aws-sdk/middleware-logger@3.876.0': + resolution: {integrity: sha512-cpWJhOuMSyz9oV25Z/CMHCBTgafDCbv7fHR80nlRrPdPZ8ETNsahwRgltXP1QJJ8r3X/c1kwpOR7tc+RabVzNA==} engines: {node: '>=18.0.0'} - '@aws-sdk/middleware-recursion-detection@3.862.0': - resolution: {integrity: sha512-KVoo3IOzEkTq97YKM4uxZcYFSNnMkhW/qj22csofLegZi5fk90ztUnnaeKfaEJHfHp/tm1Y3uSoOXH45s++kKQ==} + '@aws-sdk/middleware-recursion-detection@3.873.0': + resolution: {integrity: sha512-OtgY8EXOzRdEWR//WfPkA/fXl0+WwE8hq0y9iw2caNyKPtca85dzrrZWnPqyBK/cpImosrpR1iKMYr41XshsCg==} engines: {node: '>=18.0.0'} - '@aws-sdk/middleware-sdk-s3@3.862.0': - resolution: {integrity: sha512-rDRHxxZuY9E7py/OVYN1VQRAw0efEThvK5sZ3HfNNpL6Zk4HeOGtc6NtULSfeCeyHCVlJsdOVkIxJge2Ax5vSA==} + '@aws-sdk/middleware-sdk-s3@3.876.0': + resolution: {integrity: sha512-h+TDs9EKAfXnrkogQpQz3o11zvs6Vh9+ehxyd35OcM7evnDeoV4GFjjnAKq+MxbBk/5Ewnvng+d6/WQDvMbj7Q==} engines: {node: '>=18.0.0'} - '@aws-sdk/middleware-ssec@3.862.0': - resolution: {integrity: sha512-72VtP7DZC8lYTE2L3Efx2BrD98oe9WTK8X6hmd3WTLkbIjvgWQWIdjgaFXBs8WevsXkewIctfyA3KEezvL5ggw==} + '@aws-sdk/middleware-ssec@3.873.0': + resolution: {integrity: sha512-AF55J94BoiuzN7g3hahy0dXTVZahVi8XxRBLgzNp6yQf0KTng+hb/V9UQZVYY1GZaDczvvvnqC54RGe9OZZ9zQ==} engines: {node: '>=18.0.0'} - '@aws-sdk/middleware-user-agent@3.862.0': - resolution: {integrity: sha512-7OOaGbAw7Kg1zoKO9wV8cA5NnJC+RYsocjmP3FZ0FiKa7gbmeQ6Cfheunzd1Re9fgelgL3OIRjqO5mSmOIhyhA==} + '@aws-sdk/middleware-user-agent@3.876.0': + resolution: {integrity: sha512-FR+8INfnbNv32QDQ5szxkWX6mB/QgezfNyx8LnAh1ErISZMmEFBxXXir+ZOfuV8vsmal1a6cy9qmnMNDaNnaNQ==} engines: {node: '>=18.0.0'} - '@aws-sdk/nested-clients@3.862.0': - resolution: {integrity: sha512-fPrfXa+m9S0DA5l8+p4A9NFQ22lEHm/ezaUWWWs6F3/U49lR6yKhNAGji3LlIG7b7ZdTJ3smAcaxNHclJsoQIg==} + '@aws-sdk/nested-clients@3.876.0': + resolution: {integrity: sha512-R4TZrkM2gUElTsotk8mt3y7iLG8TNi1LL1wgVdEEWSLOYTaFyglGdoNBMtEeP7lmXilaTy00AbYF6BakJvSTHg==} engines: {node: '>=18.0.0'} - '@aws-sdk/region-config-resolver@3.862.0': - resolution: {integrity: sha512-VisR+/HuVFICrBPY+q9novEiE4b3mvDofWqyvmxHcWM7HumTz9ZQSuEtnlB/92GVM3KDUrR9EmBHNRrfXYZkcQ==} + '@aws-sdk/region-config-resolver@3.873.0': + resolution: {integrity: sha512-q9sPoef+BBG6PJnc4x60vK/bfVwvRWsPgcoQyIra057S/QGjq5VkjvNk6H8xedf6vnKlXNBwq9BaANBXnldUJg==} engines: {node: '>=18.0.0'} - '@aws-sdk/signature-v4-multi-region@3.862.0': - resolution: {integrity: sha512-ZAjrbXnu3yTxXMPiEVxDP/I8zfssrLQGgUi0NgJP6Cz/mOS/S/3hfOZrMown1jLhkTrzLpjNE8Q2n18VtRbScQ==} + '@aws-sdk/signature-v4-multi-region@3.876.0': + resolution: {integrity: sha512-OMDcuaVlC2rbze92w4QcNfuEA0IeT2GsT1ByZCwe+Y9tZwxzj7fCiOOU0UmJfa+juuQ/YBzVYxnkrkz3Rg6DEw==} engines: {node: '>=18.0.0'} - '@aws-sdk/token-providers@3.862.0': - resolution: {integrity: sha512-p3u7aom3WQ7ArFByNbccRIkCssk5BB4IUX9oFQa2P0MOFCbkKFBLG7WMegRXhq5grOHmI4SRftEDDy3CcoTqSQ==} + '@aws-sdk/token-providers@3.876.0': + resolution: {integrity: sha512-iU08kaQbhXnY0CC2TBcr7y/2PqPwZP2CTWX/Rbq0NvhOyteikfh7ASC+bRfLUp0XMSHKvSb+w2dh8a0lvx4oHg==} engines: {node: '>=18.0.0'} '@aws-sdk/types@3.862.0': resolution: {integrity: sha512-Bei+RL0cDxxV+lW2UezLbCYYNeJm6Nzee0TpW0FfyTRBhH9C1XQh4+x+IClriXvgBnRquTMMYsmJfvx8iyLKrg==} engines: {node: '>=18.0.0'} - '@aws-sdk/util-arn-parser@3.804.0': - resolution: {integrity: sha512-wmBJqn1DRXnZu3b4EkE6CWnoWMo1ZMvlfkqU5zPz67xx1GMaXlDCchFvKAXMjk4jn/L1O3tKnoFDNsoLV1kgNQ==} + '@aws-sdk/util-arn-parser@3.873.0': + resolution: {integrity: sha512-qag+VTqnJWDn8zTAXX4wiVioa0hZDQMtbZcGRERVnLar4/3/VIKBhxX2XibNQXFu1ufgcRn4YntT/XEPecFWcg==} engines: {node: '>=18.0.0'} - '@aws-sdk/util-endpoints@3.862.0': - resolution: {integrity: sha512-eCZuScdE9MWWkHGM2BJxm726MCmWk/dlHjOKvkM0sN1zxBellBMw5JohNss1Z8/TUmnW2gb9XHTOiHuGjOdksA==} + '@aws-sdk/util-endpoints@3.873.0': + resolution: {integrity: sha512-YByHrhjxYdjKRf/RQygRK1uh0As1FIi9+jXTcIEX/rBgN8mUByczr2u4QXBzw7ZdbdcOBMOkPnLRjNOWW1MkFg==} engines: {node: '>=18.0.0'} - '@aws-sdk/util-locate-window@3.804.0': - resolution: {integrity: sha512-zVoRfpmBVPodYlnMjgVjfGoEZagyRF5IPn3Uo6ZvOZp24chnW/FRstH7ESDHDDRga4z3V+ElUQHKpFDXWyBW5A==} + '@aws-sdk/util-locate-window@3.873.0': + resolution: {integrity: sha512-xcVhZF6svjM5Rj89T1WzkjQmrTF6dpR2UvIHPMTnSZoNe6CixejPZ6f0JJ2kAhO8H+dUHwNBlsUgOTIKiK/Syg==} engines: {node: '>=18.0.0'} - '@aws-sdk/util-user-agent-browser@3.862.0': - resolution: {integrity: sha512-BmPTlm0r9/10MMr5ND9E92r8KMZbq5ltYXYpVcUbAsnB1RJ8ASJuRoLne5F7mB3YMx0FJoOTuSq7LdQM3LgW3Q==} + '@aws-sdk/util-user-agent-browser@3.873.0': + resolution: {integrity: sha512-AcRdbK6o19yehEcywI43blIBhOCSo6UgyWcuOJX5CFF8k39xm1ILCjQlRRjchLAxWrm0lU0Q7XV90RiMMFMZtA==} - '@aws-sdk/util-user-agent-node@3.862.0': - resolution: {integrity: sha512-KtJdSoa1Vmwquy+zwiqRQjtsuKaHlVcZm8tsTchHbc6809/VeaC+ZZOqlil9IWOOyWNGIX8GTRwP9TEb8cT5Gw==} + '@aws-sdk/util-user-agent-node@3.876.0': + resolution: {integrity: sha512-/ZIaeUt60JBdI0mNc7sZ8v3Tuzp8Pbe4gIAYnppGyF4KV8QA+Yu8tp2bGHfkKn150t1uvQ6P/4CwFfoGF34dzg==} engines: {node: '>=18.0.0'} peerDependencies: aws-crt: '>=1.0.0' @@ -222,16 +222,16 @@ packages: aws-crt: optional: true - '@aws-sdk/xml-builder@3.862.0': - resolution: {integrity: sha512-6Ed0kmC1NMbuFTEgNmamAUU1h5gShgxL1hBVLbEzUa3trX5aJBz1vU4bXaBTvOYUAnOHtiy1Ml4AMStd6hJnFA==} + '@aws-sdk/xml-builder@3.873.0': + resolution: {integrity: sha512-kLO7k7cGJ6KaHiExSJWojZurF7SnGMDHXRuQunFnEoD0n1yB6Lqy/S/zHiQ7oJnBhPr9q0TW9qFkrsZb1Uc54w==} engines: {node: '>=18.0.0'} '@babel/code-frame@7.27.1': resolution: {integrity: sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==} engines: {node: '>=6.9.0'} - '@babel/generator@7.28.0': - resolution: {integrity: sha512-lJjzvrbEeWrhB4P3QBsH7tey117PjLZnDbLiQEKjQ/fNJTjuq4HSqgFA+UNSwZT8D7dxxbnuSBMsa1lrWzKlQg==} + '@babel/generator@7.28.3': + resolution: {integrity: sha512-3lSpxGgvnmZznmBkCRnVREPUFJv2wrv9iAoFDvADJc0ypmdOxdUtcLeBgBJ6zE0PMeTKnxeQzyk0xTBq4Ep7zw==} engines: {node: '>=6.9.0'} '@babel/helper-globals@7.28.0': @@ -250,21 +250,21 @@ packages: resolution: {integrity: sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==} engines: {node: '>=6.9.0'} - '@babel/parser@7.28.0': - resolution: {integrity: sha512-jVZGvOxOuNSsuQuLRTh13nU0AogFlw32w/MT+LV6D3sP5WdbW61E77RnkbaO2dUvmPAYrBDJXGn5gGS6tH4j8g==} + '@babel/parser@7.28.3': + resolution: {integrity: sha512-7+Ey1mAgYqFAx2h0RuoxcQT5+MlG3GTV0TQrgr7/ZliKsm/MNDxVVutlWaziMq7wJNAz8MTqz55XLpWvva6StA==} engines: {node: '>=6.0.0'} hasBin: true - '@babel/runtime@7.28.2': - resolution: {integrity: sha512-KHp2IflsnGywDjBWDkR9iEqiWSpc8GIi0lgTT3mOElT0PP1tG26P4tmFI2YvAdzgq9RGyoHZQEIEdZy6Ec5xCA==} + '@babel/runtime@7.28.3': + resolution: {integrity: sha512-9uIQ10o0WGdpP6GDhXcdOJPJuDgFtIDtN/9+ArJQ2NAfAmiuhTQdzkaTGR33v43GYS2UrSA0eX2pPPHoFVvpxA==} engines: {node: '>=6.9.0'} '@babel/template@7.27.2': resolution: {integrity: sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==} engines: {node: '>=6.9.0'} - '@babel/traverse@7.28.0': - resolution: {integrity: sha512-mGe7UK5wWyh0bKRfupsUchrQGqvDbZDbKJw+kcRGSmdHVYrv+ltd0pnpDTVpiTqnaBru9iEvA8pz8W46v0Amwg==} + '@babel/traverse@7.28.3': + resolution: {integrity: sha512-7w4kZYHneL3A6NP2nxzHvT3HCZ7puDZZjFMqDpBPECub79sTtSO5CGXDkKrTQq8ksAwfD/XI2MRFX23njdDaIQ==} engines: {node: '>=6.9.0'} '@babel/types@7.28.2': @@ -283,8 +283,8 @@ packages: '@codemirror/lang-json@6.0.1': resolution: {integrity: sha512-+T1flHdgpqDDlJZ2Lkil/rLiRy684WMLc74xUnjJH48GQdfJo/pudlTRreZmKwzP8/tGdKf83wlbAdOCzlJOGQ==} - '@codemirror/language@6.11.2': - resolution: {integrity: sha512-p44TsNArL4IVXDTbapUmEkAlvWs2CFQbcfc0ymDsis1kH2wh0gcY96AS29c/vp2d0y2Tquk1EDSaawpzilUiAw==} + '@codemirror/language@6.11.3': + resolution: {integrity: sha512-9HBM2XnwDj7fnu0551HkGdrUrrqmYq/WC5iv6nbY2WdicXdGbhR/gfbZOH73Aqj4351alY1+aoG9rCNfiwS1RA==} '@codemirror/lint@6.8.5': resolution: {integrity: sha512-s3n3KisH7dx3vsoeGMxsbRAgKe4O1vbrnKBClm99PU0fWxmxsx5rR2PfqQgIt+2MMJBHbiJ5rfIdLYfB9NNvsA==} @@ -412,8 +412,8 @@ packages: cpu: [ppc64] os: [aix] - '@esbuild/aix-ppc64@0.25.8': - resolution: {integrity: sha512-urAvrUedIqEiFR3FYSLTWQgLu5tb+m0qZw0NBEasUeo6wuqatkMDaRT+1uABiGXEu5vqgPd7FGE1BhsAIy9QVA==} + '@esbuild/aix-ppc64@0.25.9': + resolution: {integrity: sha512-OaGtL73Jck6pBKjNIe24BnFE6agGl+6KxDtTfHhy1HmhthfKouEcOhqpSL64K4/0WCtbKFLOdzD/44cJ4k9opA==} engines: {node: '>=18'} cpu: [ppc64] os: [aix] @@ -430,8 +430,8 @@ packages: cpu: [arm64] os: [android] - '@esbuild/android-arm64@0.25.8': - resolution: {integrity: sha512-OD3p7LYzWpLhZEyATcTSJ67qB5D+20vbtr6vHlHWSQYhKtzUYrETuWThmzFpZtFsBIxRvhO07+UgVA9m0i/O1w==} + '@esbuild/android-arm64@0.25.9': + resolution: {integrity: sha512-IDrddSmpSv51ftWslJMvl3Q2ZT98fUSL2/rlUXuVqRXHCs5EUF1/f+jbjF5+NG9UffUDMCiTyh8iec7u8RlTLg==} engines: {node: '>=18'} cpu: [arm64] os: [android] @@ -448,8 +448,8 @@ packages: cpu: [arm] os: [android] - '@esbuild/android-arm@0.25.8': - resolution: {integrity: sha512-RONsAvGCz5oWyePVnLdZY/HHwA++nxYWIX1atInlaW6SEkwq6XkP3+cb825EUcRs5Vss/lGh/2YxAb5xqc07Uw==} + '@esbuild/android-arm@0.25.9': + resolution: {integrity: sha512-5WNI1DaMtxQ7t7B6xa572XMXpHAaI/9Hnhk8lcxF4zVN4xstUgTlvuGDorBguKEnZO70qwEcLpfifMLoxiPqHQ==} engines: {node: '>=18'} cpu: [arm] os: [android] @@ -466,8 +466,8 @@ packages: cpu: [x64] os: [android] - '@esbuild/android-x64@0.25.8': - resolution: {integrity: sha512-yJAVPklM5+4+9dTeKwHOaA+LQkmrKFX96BM0A/2zQrbS6ENCmxc4OVoBs5dPkCCak2roAD+jKCdnmOqKszPkjA==} + '@esbuild/android-x64@0.25.9': + resolution: {integrity: sha512-I853iMZ1hWZdNllhVZKm34f4wErd4lMyeV7BLzEExGEIZYsOzqDWDf+y082izYUE8gtJnYHdeDpN/6tUdwvfiw==} engines: {node: '>=18'} cpu: [x64] os: [android] @@ -484,8 +484,8 @@ packages: cpu: [arm64] os: [darwin] - '@esbuild/darwin-arm64@0.25.8': - resolution: {integrity: sha512-Jw0mxgIaYX6R8ODrdkLLPwBqHTtYHJSmzzd+QeytSugzQ0Vg4c5rDky5VgkoowbZQahCbsv1rT1KW72MPIkevw==} + '@esbuild/darwin-arm64@0.25.9': + resolution: {integrity: sha512-XIpIDMAjOELi/9PB30vEbVMs3GV1v2zkkPnuyRRURbhqjyzIINwj+nbQATh4H9GxUgH1kFsEyQMxwiLFKUS6Rg==} engines: {node: '>=18'} cpu: [arm64] os: [darwin] @@ -502,8 +502,8 @@ packages: cpu: [x64] os: [darwin] - '@esbuild/darwin-x64@0.25.8': - resolution: {integrity: sha512-Vh2gLxxHnuoQ+GjPNvDSDRpoBCUzY4Pu0kBqMBDlK4fuWbKgGtmDIeEC081xi26PPjn+1tct+Bh8FjyLlw1Zlg==} + '@esbuild/darwin-x64@0.25.9': + resolution: {integrity: sha512-jhHfBzjYTA1IQu8VyrjCX4ApJDnH+ez+IYVEoJHeqJm9VhG9Dh2BYaJritkYK3vMaXrf7Ogr/0MQ8/MeIefsPQ==} engines: {node: '>=18'} cpu: [x64] os: [darwin] @@ -520,8 +520,8 @@ packages: cpu: [arm64] os: [freebsd] - '@esbuild/freebsd-arm64@0.25.8': - resolution: {integrity: sha512-YPJ7hDQ9DnNe5vxOm6jaie9QsTwcKedPvizTVlqWG9GBSq+BuyWEDazlGaDTC5NGU4QJd666V0yqCBL2oWKPfA==} + '@esbuild/freebsd-arm64@0.25.9': + resolution: {integrity: sha512-z93DmbnY6fX9+KdD4Ue/H6sYs+bhFQJNCPZsi4XWJoYblUqT06MQUdBCpcSfuiN72AbqeBFu5LVQTjfXDE2A6Q==} engines: {node: '>=18'} cpu: [arm64] os: [freebsd] @@ -538,8 +538,8 @@ packages: cpu: [x64] os: [freebsd] - '@esbuild/freebsd-x64@0.25.8': - resolution: {integrity: sha512-MmaEXxQRdXNFsRN/KcIimLnSJrk2r5H8v+WVafRWz5xdSVmWLoITZQXcgehI2ZE6gioE6HirAEToM/RvFBeuhw==} + '@esbuild/freebsd-x64@0.25.9': + resolution: {integrity: sha512-mrKX6H/vOyo5v71YfXWJxLVxgy1kyt1MQaD8wZJgJfG4gq4DpQGpgTB74e5yBeQdyMTbgxp0YtNj7NuHN0PoZg==} engines: {node: '>=18'} cpu: [x64] os: [freebsd] @@ -556,8 +556,8 @@ packages: cpu: [arm64] os: [linux] - '@esbuild/linux-arm64@0.25.8': - resolution: {integrity: sha512-WIgg00ARWv/uYLU7lsuDK00d/hHSfES5BzdWAdAig1ioV5kaFNrtK8EqGcUBJhYqotlUByUKz5Qo6u8tt7iD/w==} + '@esbuild/linux-arm64@0.25.9': + resolution: {integrity: sha512-BlB7bIcLT3G26urh5Dmse7fiLmLXnRlopw4s8DalgZ8ef79Jj4aUcYbk90g8iCa2467HX8SAIidbL7gsqXHdRw==} engines: {node: '>=18'} cpu: [arm64] os: [linux] @@ -574,8 +574,8 @@ packages: cpu: [arm] os: [linux] - '@esbuild/linux-arm@0.25.8': - resolution: {integrity: sha512-FuzEP9BixzZohl1kLf76KEVOsxtIBFwCaLupVuk4eFVnOZfU+Wsn+x5Ryam7nILV2pkq2TqQM9EZPsOBuMC+kg==} + '@esbuild/linux-arm@0.25.9': + resolution: {integrity: sha512-HBU2Xv78SMgaydBmdor38lg8YDnFKSARg1Q6AT0/y2ezUAKiZvc211RDFHlEZRFNRVhcMamiToo7bDx3VEOYQw==} engines: {node: '>=18'} cpu: [arm] os: [linux] @@ -592,8 +592,8 @@ packages: cpu: [ia32] os: [linux] - '@esbuild/linux-ia32@0.25.8': - resolution: {integrity: sha512-A1D9YzRX1i+1AJZuFFUMP1E9fMaYY+GnSQil9Tlw05utlE86EKTUA7RjwHDkEitmLYiFsRd9HwKBPEftNdBfjg==} + '@esbuild/linux-ia32@0.25.9': + resolution: {integrity: sha512-e7S3MOJPZGp2QW6AK6+Ly81rC7oOSerQ+P8L0ta4FhVi+/j/v2yZzx5CqqDaWjtPFfYz21Vi1S0auHrap3Ma3A==} engines: {node: '>=18'} cpu: [ia32] os: [linux] @@ -610,8 +610,8 @@ packages: cpu: [loong64] os: [linux] - '@esbuild/linux-loong64@0.25.8': - resolution: {integrity: sha512-O7k1J/dwHkY1RMVvglFHl1HzutGEFFZ3kNiDMSOyUrB7WcoHGf96Sh+64nTRT26l3GMbCW01Ekh/ThKM5iI7hQ==} + '@esbuild/linux-loong64@0.25.9': + resolution: {integrity: sha512-Sbe10Bnn0oUAB2AalYztvGcK+o6YFFA/9829PhOCUS9vkJElXGdphz0A3DbMdP8gmKkqPmPcMJmJOrI3VYB1JQ==} engines: {node: '>=18'} cpu: [loong64] os: [linux] @@ -628,8 +628,8 @@ packages: cpu: [mips64el] os: [linux] - '@esbuild/linux-mips64el@0.25.8': - resolution: {integrity: sha512-uv+dqfRazte3BzfMp8PAQXmdGHQt2oC/y2ovwpTteqrMx2lwaksiFZ/bdkXJC19ttTvNXBuWH53zy/aTj1FgGw==} + '@esbuild/linux-mips64el@0.25.9': + resolution: {integrity: sha512-YcM5br0mVyZw2jcQeLIkhWtKPeVfAerES5PvOzaDxVtIyZ2NUBZKNLjC5z3/fUlDgT6w89VsxP2qzNipOaaDyA==} engines: {node: '>=18'} cpu: [mips64el] os: [linux] @@ -646,8 +646,8 @@ packages: cpu: [ppc64] os: [linux] - '@esbuild/linux-ppc64@0.25.8': - resolution: {integrity: sha512-GyG0KcMi1GBavP5JgAkkstMGyMholMDybAf8wF5A70CALlDM2p/f7YFE7H92eDeH/VBtFJA5MT4nRPDGg4JuzQ==} + '@esbuild/linux-ppc64@0.25.9': + resolution: {integrity: sha512-++0HQvasdo20JytyDpFvQtNrEsAgNG2CY1CLMwGXfFTKGBGQT3bOeLSYE2l1fYdvML5KUuwn9Z8L1EWe2tzs1w==} engines: {node: '>=18'} cpu: [ppc64] os: [linux] @@ -664,8 +664,8 @@ packages: cpu: [riscv64] os: [linux] - '@esbuild/linux-riscv64@0.25.8': - resolution: {integrity: sha512-rAqDYFv3yzMrq7GIcen3XP7TUEG/4LK86LUPMIz6RT8A6pRIDn0sDcvjudVZBiiTcZCY9y2SgYX2lgK3AF+1eg==} + '@esbuild/linux-riscv64@0.25.9': + resolution: {integrity: sha512-uNIBa279Y3fkjV+2cUjx36xkx7eSjb8IvnL01eXUKXez/CBHNRw5ekCGMPM0BcmqBxBcdgUWuUXmVWwm4CH9kg==} engines: {node: '>=18'} cpu: [riscv64] os: [linux] @@ -682,8 +682,8 @@ packages: cpu: [s390x] os: [linux] - '@esbuild/linux-s390x@0.25.8': - resolution: {integrity: sha512-Xutvh6VjlbcHpsIIbwY8GVRbwoviWT19tFhgdA7DlenLGC/mbc3lBoVb7jxj9Z+eyGqvcnSyIltYUrkKzWqSvg==} + '@esbuild/linux-s390x@0.25.9': + resolution: {integrity: sha512-Mfiphvp3MjC/lctb+7D287Xw1DGzqJPb/J2aHHcHxflUo+8tmN/6d4k6I2yFR7BVo5/g7x2Monq4+Yew0EHRIA==} engines: {node: '>=18'} cpu: [s390x] os: [linux] @@ -700,14 +700,14 @@ packages: cpu: [x64] os: [linux] - '@esbuild/linux-x64@0.25.8': - resolution: {integrity: sha512-ASFQhgY4ElXh3nDcOMTkQero4b1lgubskNlhIfJrsH5OKZXDpUAKBlNS0Kx81jwOBp+HCeZqmoJuihTv57/jvQ==} + '@esbuild/linux-x64@0.25.9': + resolution: {integrity: sha512-iSwByxzRe48YVkmpbgoxVzn76BXjlYFXC7NvLYq+b+kDjyyk30J0JY47DIn8z1MO3K0oSl9fZoRmZPQI4Hklzg==} engines: {node: '>=18'} cpu: [x64] os: [linux] - '@esbuild/netbsd-arm64@0.25.8': - resolution: {integrity: sha512-d1KfruIeohqAi6SA+gENMuObDbEjn22olAR7egqnkCD9DGBG0wsEARotkLgXDu6c4ncgWTZJtN5vcgxzWRMzcw==} + '@esbuild/netbsd-arm64@0.25.9': + resolution: {integrity: sha512-9jNJl6FqaUG+COdQMjSCGW4QiMHH88xWbvZ+kRVblZsWrkXlABuGdFJ1E9L7HK+T0Yqd4akKNa/lO0+jDxQD4Q==} engines: {node: '>=18'} cpu: [arm64] os: [netbsd] @@ -724,14 +724,14 @@ packages: cpu: [x64] os: [netbsd] - '@esbuild/netbsd-x64@0.25.8': - resolution: {integrity: sha512-nVDCkrvx2ua+XQNyfrujIG38+YGyuy2Ru9kKVNyh5jAys6n+l44tTtToqHjino2My8VAY6Lw9H7RI73XFi66Cg==} + '@esbuild/netbsd-x64@0.25.9': + resolution: {integrity: sha512-RLLdkflmqRG8KanPGOU7Rpg829ZHu8nFy5Pqdi9U01VYtG9Y0zOG6Vr2z4/S+/3zIyOxiK6cCeYNWOFR9QP87g==} engines: {node: '>=18'} cpu: [x64] os: [netbsd] - '@esbuild/openbsd-arm64@0.25.8': - resolution: {integrity: sha512-j8HgrDuSJFAujkivSMSfPQSAa5Fxbvk4rgNAS5i3K+r8s1X0p1uOO2Hl2xNsGFppOeHOLAVgYwDVlmxhq5h+SQ==} + '@esbuild/openbsd-arm64@0.25.9': + resolution: {integrity: sha512-YaFBlPGeDasft5IIM+CQAhJAqS3St3nJzDEgsgFixcfZeyGPCd6eJBWzke5piZuZ7CtL656eOSYKk4Ls2C0FRQ==} engines: {node: '>=18'} cpu: [arm64] os: [openbsd] @@ -748,14 +748,14 @@ packages: cpu: [x64] os: [openbsd] - '@esbuild/openbsd-x64@0.25.8': - resolution: {integrity: sha512-1h8MUAwa0VhNCDp6Af0HToI2TJFAn1uqT9Al6DJVzdIBAd21m/G0Yfc77KDM3uF3T/YaOgQq3qTJHPbTOInaIQ==} + '@esbuild/openbsd-x64@0.25.9': + resolution: {integrity: sha512-1MkgTCuvMGWuqVtAvkpkXFmtL8XhWy+j4jaSO2wxfJtilVCi0ZE37b8uOdMItIHz4I6z1bWWtEX4CJwcKYLcuA==} engines: {node: '>=18'} cpu: [x64] os: [openbsd] - '@esbuild/openharmony-arm64@0.25.8': - resolution: {integrity: sha512-r2nVa5SIK9tSWd0kJd9HCffnDHKchTGikb//9c7HX+r+wHYCpQrSgxhlY6KWV1nFo1l4KFbsMlHk+L6fekLsUg==} + '@esbuild/openharmony-arm64@0.25.9': + resolution: {integrity: sha512-4Xd0xNiMVXKh6Fa7HEJQbrpP3m3DDn43jKxMjxLLRjWnRsfxjORYJlXPO4JNcXtOyfajXorRKY9NkOpTHptErg==} engines: {node: '>=18'} cpu: [arm64] os: [openharmony] @@ -772,8 +772,8 @@ packages: cpu: [x64] os: [sunos] - '@esbuild/sunos-x64@0.25.8': - resolution: {integrity: sha512-zUlaP2S12YhQ2UzUfcCuMDHQFJyKABkAjvO5YSndMiIkMimPmxA+BYSBikWgsRpvyxuRnow4nS5NPnf9fpv41w==} + '@esbuild/sunos-x64@0.25.9': + resolution: {integrity: sha512-WjH4s6hzo00nNezhp3wFIAfmGZ8U7KtrJNlFMRKxiI9mxEK1scOMAaa9i4crUtu+tBr+0IN6JCuAcSBJZfnphw==} engines: {node: '>=18'} cpu: [x64] os: [sunos] @@ -790,8 +790,8 @@ packages: cpu: [arm64] os: [win32] - '@esbuild/win32-arm64@0.25.8': - resolution: {integrity: sha512-YEGFFWESlPva8hGL+zvj2z/SaK+pH0SwOM0Nc/d+rVnW7GSTFlLBGzZkuSU9kFIGIo8q9X3ucpZhu8PDN5A2sQ==} + '@esbuild/win32-arm64@0.25.9': + resolution: {integrity: sha512-mGFrVJHmZiRqmP8xFOc6b84/7xa5y5YvR1x8djzXpJBSv/UsNK6aqec+6JDjConTgvvQefdGhFDAs2DLAds6gQ==} engines: {node: '>=18'} cpu: [arm64] os: [win32] @@ -808,8 +808,8 @@ packages: cpu: [ia32] os: [win32] - '@esbuild/win32-ia32@0.25.8': - resolution: {integrity: sha512-hiGgGC6KZ5LZz58OL/+qVVoZiuZlUYlYHNAmczOm7bs2oE1XriPFi5ZHHrS8ACpV5EjySrnoCKmcbQMN+ojnHg==} + '@esbuild/win32-ia32@0.25.9': + resolution: {integrity: sha512-b33gLVU2k11nVx1OhX3C8QQP6UHQK4ZtN56oFWvVXvz2VkDoe6fbG8TOgHFxEvqeqohmRnIHe5A1+HADk4OQww==} engines: {node: '>=18'} cpu: [ia32] os: [win32] @@ -826,8 +826,8 @@ packages: cpu: [x64] os: [win32] - '@esbuild/win32-x64@0.25.8': - resolution: {integrity: sha512-cn3Yr7+OaaZq1c+2pe+8yxC8E144SReCQjN6/2ynubzYjvyqZjTXfQJpAcQpsdJq3My7XADANiYGHoFC69pLQw==} + '@esbuild/win32-x64@0.25.9': + resolution: {integrity: sha512-PPOl1mi6lpLNQxnGoyAfschAodRFYXJ+9fs6WHXz7CSWKbOqiMZsubC+BQsVKuul+3vKLuwTHsS2c2y9EoKwxQ==} engines: {node: '>=18'} cpu: [x64] os: [win32] @@ -835,8 +835,8 @@ packages: '@floating-ui/core@1.7.3': resolution: {integrity: sha512-sGnvb5dmrJaKEZ+LDIpguvdX3bDlEllmv4/ClQ9awcmCZrlx5jQyyMWFM5kBI+EyNOCDDiKk8il0zeuX3Zlg/w==} - '@floating-ui/dom@1.7.3': - resolution: {integrity: sha512-uZA413QEpNuhtb3/iIKoYMSK07keHPYeXF02Zhd6e213j+d1NamLix/mCLxBUDW/Gx52sPH2m+chlUsyaBs/Ag==} + '@floating-ui/dom@1.7.4': + resolution: {integrity: sha512-OOchDgh4F2CchOX94cRVqhvy7b3AFb+/rQXyswmzmGakRfkMgoWVjfnLWkRirfLEfuD4ysVW16eXzwt3jHIzKA==} '@floating-ui/react-dom@2.1.0': resolution: {integrity: sha512-lNzj5EQmEKn5FFKc04+zasr09h/uX8RtJRNj5gUXsSQIXHVWTVh+hVAg1vOMCexkX8EgvemMvIFpQfkosnVNyA==} @@ -1013,6 +1013,15 @@ packages: cpu: [x64] os: [win32] + '@inquirer/external-editor@1.0.1': + resolution: {integrity: sha512-Oau4yL24d2B5IL4ma4UpbQigkVhzPDXLoqy1ggK4gnHg/stmkffJE4oOXHXF3uz0UEpywG68KcyXsyYpA1Re/Q==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + '@inquirer/figures@1.0.13': resolution: {integrity: sha512-lGPVU3yO9ZNqA7vTYz26jny41lE7yoQansmqdMLBEfqaGsmdg7V3W9mK9Pvb5IL4EVZ9GnSDGMO/cJXud5dMaw==} engines: {node: '>=18'} @@ -1027,21 +1036,21 @@ packages: resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} engines: {node: '>=12'} - '@jridgewell/gen-mapping@0.3.12': - resolution: {integrity: sha512-OuLGC46TjB5BbN1dH8JULVVZY4WTdkF7tV9Ys6wLL1rubZnCMstOhNHueU5bLCrnRuDhKPDM4g6sw4Bel5Gzqg==} + '@jridgewell/gen-mapping@0.3.13': + resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==} '@jridgewell/resolve-uri@3.1.2': resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} engines: {node: '>=6.0.0'} - '@jridgewell/source-map@0.3.10': - resolution: {integrity: sha512-0pPkgz9dY+bijgistcTTJ5mR+ocqRXLuhXHYdzoMmmoJ2C9S46RCm2GMUbatPEUK9Yjy26IrAy8D/M00lLkv+Q==} + '@jridgewell/source-map@0.3.11': + resolution: {integrity: sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA==} - '@jridgewell/sourcemap-codec@1.5.4': - resolution: {integrity: sha512-VT2+G1VQs/9oz078bLrYbecdZKs912zQlkelYpuf+SXF+QvZDYJlbx/LSx+meSAwdDFnF8FVXW92AVjjkVmgFw==} + '@jridgewell/sourcemap-codec@1.5.5': + resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==} - '@jridgewell/trace-mapping@0.3.29': - resolution: {integrity: sha512-uw6guiW/gcAGPDhLmd77/6lW8QLeiV5RUTsAX46Db6oLhGaVj4lhnPwb184s1bkc8kdVg/+h988dro8GRDpmYQ==} + '@jridgewell/trace-mapping@0.3.30': + resolution: {integrity: sha512-GQ7Nw5G2lTu/BtHTKfXhKHok2WGetd4XYcVKGx00SjAk8GMwgJM3zr6zORiPGuOE+/vkc90KtTosSSvaCjKb2Q==} '@juggle/resize-observer@3.4.0': resolution: {integrity: sha512-dfLbk+PwWvFzSxwk3n5ySL0hfBog779o8h68wK/7/APo/7cgyWp5jcXockbxdk5kFRkbeXWm4Fbi9FrdN381sA==} @@ -1686,103 +1695,103 @@ packages: resolution: {integrity: sha512-O3rHJzAQKamUz1fvE0Qaw0xSFqsA/yafi2iqeE0pvdFtCO1viYx8QL6f3Ln/aCCTLxs68SLf0KPM9eSeM8yBnA==} engines: {node: '>=14.0.0'} - '@rollup/rollup-android-arm-eabi@4.46.2': - resolution: {integrity: sha512-Zj3Hl6sN34xJtMv7Anwb5Gu01yujyE/cLBDB2gnHTAHaWS1Z38L7kuSG+oAh0giZMqG060f/YBStXtMH6FvPMA==} + '@rollup/rollup-android-arm-eabi@4.48.1': + resolution: {integrity: sha512-rGmb8qoG/zdmKoYELCBwu7vt+9HxZ7Koos3pD0+sH5fR3u3Wb/jGcpnqxcnWsPEKDUyzeLSqksN8LJtgXjqBYw==} cpu: [arm] os: [android] - '@rollup/rollup-android-arm64@4.46.2': - resolution: {integrity: sha512-nTeCWY83kN64oQ5MGz3CgtPx8NSOhC5lWtsjTs+8JAJNLcP3QbLCtDDgUKQc/Ro/frpMq4SHUaHN6AMltcEoLQ==} + '@rollup/rollup-android-arm64@4.48.1': + resolution: {integrity: sha512-4e9WtTxrk3gu1DFE+imNJr4WsL13nWbD/Y6wQcyku5qadlKHY3OQ3LJ/INrrjngv2BJIHnIzbqMk1GTAC2P8yQ==} cpu: [arm64] os: [android] - '@rollup/rollup-darwin-arm64@4.46.2': - resolution: {integrity: sha512-HV7bW2Fb/F5KPdM/9bApunQh68YVDU8sO8BvcW9OngQVN3HHHkw99wFupuUJfGR9pYLLAjcAOA6iO+evsbBaPQ==} + '@rollup/rollup-darwin-arm64@4.48.1': + resolution: {integrity: sha512-+XjmyChHfc4TSs6WUQGmVf7Hkg8ferMAE2aNYYWjiLzAS/T62uOsdfnqv+GHRjq7rKRnYh4mwWb4Hz7h/alp8A==} cpu: [arm64] os: [darwin] - '@rollup/rollup-darwin-x64@4.46.2': - resolution: {integrity: sha512-SSj8TlYV5nJixSsm/y3QXfhspSiLYP11zpfwp6G/YDXctf3Xkdnk4woJIF5VQe0of2OjzTt8EsxnJDCdHd2xMA==} + '@rollup/rollup-darwin-x64@4.48.1': + resolution: {integrity: sha512-upGEY7Ftw8M6BAJyGwnwMw91rSqXTcOKZnnveKrVWsMTF8/k5mleKSuh7D4v4IV1pLxKAk3Tbs0Lo9qYmii5mQ==} cpu: [x64] os: [darwin] - '@rollup/rollup-freebsd-arm64@4.46.2': - resolution: {integrity: sha512-ZyrsG4TIT9xnOlLsSSi9w/X29tCbK1yegE49RYm3tu3wF1L/B6LVMqnEWyDB26d9Ecx9zrmXCiPmIabVuLmNSg==} + '@rollup/rollup-freebsd-arm64@4.48.1': + resolution: {integrity: sha512-P9ViWakdoynYFUOZhqq97vBrhuvRLAbN/p2tAVJvhLb8SvN7rbBnJQcBu8e/rQts42pXGLVhfsAP0k9KXWa3nQ==} cpu: [arm64] os: [freebsd] - '@rollup/rollup-freebsd-x64@4.46.2': - resolution: {integrity: sha512-pCgHFoOECwVCJ5GFq8+gR8SBKnMO+xe5UEqbemxBpCKYQddRQMgomv1104RnLSg7nNvgKy05sLsY51+OVRyiVw==} + '@rollup/rollup-freebsd-x64@4.48.1': + resolution: {integrity: sha512-VLKIwIpnBya5/saccM8JshpbxfyJt0Dsli0PjXozHwbSVaHTvWXJH1bbCwPXxnMzU4zVEfgD1HpW3VQHomi2AQ==} cpu: [x64] os: [freebsd] - '@rollup/rollup-linux-arm-gnueabihf@4.46.2': - resolution: {integrity: sha512-EtP8aquZ0xQg0ETFcxUbU71MZlHaw9MChwrQzatiE8U/bvi5uv/oChExXC4mWhjiqK7azGJBqU0tt5H123SzVA==} + '@rollup/rollup-linux-arm-gnueabihf@4.48.1': + resolution: {integrity: sha512-3zEuZsXfKaw8n/yF7t8N6NNdhyFw3s8xJTqjbTDXlipwrEHo4GtIKcMJr5Ed29leLpB9AugtAQpAHW0jvtKKaQ==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm-musleabihf@4.46.2': - resolution: {integrity: sha512-qO7F7U3u1nfxYRPM8HqFtLd+raev2K137dsV08q/LRKRLEc7RsiDWihUnrINdsWQxPR9jqZ8DIIZ1zJJAm5PjQ==} + '@rollup/rollup-linux-arm-musleabihf@4.48.1': + resolution: {integrity: sha512-leo9tOIlKrcBmmEypzunV/2w946JeLbTdDlwEZ7OnnsUyelZ72NMnT4B2vsikSgwQifjnJUbdXzuW4ToN1wV+Q==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm64-gnu@4.46.2': - resolution: {integrity: sha512-3dRaqLfcOXYsfvw5xMrxAk9Lb1f395gkoBYzSFcc/scgRFptRXL9DOaDpMiehf9CO8ZDRJW2z45b6fpU5nwjng==} + '@rollup/rollup-linux-arm64-gnu@4.48.1': + resolution: {integrity: sha512-Vy/WS4z4jEyvnJm+CnPfExIv5sSKqZrUr98h03hpAMbE2aI0aD2wvK6GiSe8Gx2wGp3eD81cYDpLLBqNb2ydwQ==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-arm64-musl@4.46.2': - resolution: {integrity: sha512-fhHFTutA7SM+IrR6lIfiHskxmpmPTJUXpWIsBXpeEwNgZzZZSg/q4i6FU4J8qOGyJ0TR+wXBwx/L7Ho9z0+uDg==} + '@rollup/rollup-linux-arm64-musl@4.48.1': + resolution: {integrity: sha512-x5Kzn7XTwIssU9UYqWDB9VpLpfHYuXw5c6bJr4Mzv9kIv242vmJHbI5PJJEnmBYitUIfoMCODDhR7KoZLot2VQ==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-loongarch64-gnu@4.46.2': - resolution: {integrity: sha512-i7wfGFXu8x4+FRqPymzjD+Hyav8l95UIZ773j7J7zRYc3Xsxy2wIn4x+llpunexXe6laaO72iEjeeGyUFmjKeA==} + '@rollup/rollup-linux-loongarch64-gnu@4.48.1': + resolution: {integrity: sha512-yzCaBbwkkWt/EcgJOKDUdUpMHjhiZT/eDktOPWvSRpqrVE04p0Nd6EGV4/g7MARXXeOqstflqsKuXVM3H9wOIQ==} cpu: [loong64] os: [linux] - '@rollup/rollup-linux-ppc64-gnu@4.46.2': - resolution: {integrity: sha512-B/l0dFcHVUnqcGZWKcWBSV2PF01YUt0Rvlurci5P+neqY/yMKchGU8ullZvIv5e8Y1C6wOn+U03mrDylP5q9Yw==} + '@rollup/rollup-linux-ppc64-gnu@4.48.1': + resolution: {integrity: sha512-UK0WzWUjMAJccHIeOpPhPcKBqax7QFg47hwZTp6kiMhQHeOYJeaMwzeRZe1q5IiTKsaLnHu9s6toSYVUlZ2QtQ==} cpu: [ppc64] os: [linux] - '@rollup/rollup-linux-riscv64-gnu@4.46.2': - resolution: {integrity: sha512-32k4ENb5ygtkMwPMucAb8MtV8olkPT03oiTxJbgkJa7lJ7dZMr0GCFJlyvy+K8iq7F/iuOr41ZdUHaOiqyR3iQ==} + '@rollup/rollup-linux-riscv64-gnu@4.48.1': + resolution: {integrity: sha512-3NADEIlt+aCdCbWVZ7D3tBjBX1lHpXxcvrLt/kdXTiBrOds8APTdtk2yRL2GgmnSVeX4YS1JIf0imFujg78vpw==} cpu: [riscv64] os: [linux] - '@rollup/rollup-linux-riscv64-musl@4.46.2': - resolution: {integrity: sha512-t5B2loThlFEauloaQkZg9gxV05BYeITLvLkWOkRXogP4qHXLkWSbSHKM9S6H1schf/0YGP/qNKtiISlxvfmmZw==} + '@rollup/rollup-linux-riscv64-musl@4.48.1': + resolution: {integrity: sha512-euuwm/QTXAMOcyiFCcrx0/S2jGvFlKJ2Iro8rsmYL53dlblp3LkUQVFzEidHhvIPPvcIsxDhl2wkBE+I6YVGzA==} cpu: [riscv64] os: [linux] - '@rollup/rollup-linux-s390x-gnu@4.46.2': - resolution: {integrity: sha512-YKjekwTEKgbB7n17gmODSmJVUIvj8CX7q5442/CK80L8nqOUbMtf8b01QkG3jOqyr1rotrAnW6B/qiHwfcuWQA==} + '@rollup/rollup-linux-s390x-gnu@4.48.1': + resolution: {integrity: sha512-w8mULUjmPdWLJgmTYJx/W6Qhln1a+yqvgwmGXcQl2vFBkWsKGUBRbtLRuKJUln8Uaimf07zgJNxOhHOvjSQmBQ==} cpu: [s390x] os: [linux] - '@rollup/rollup-linux-x64-gnu@4.46.2': - resolution: {integrity: sha512-Jj5a9RUoe5ra+MEyERkDKLwTXVu6s3aACP51nkfnK9wJTraCC8IMe3snOfALkrjTYd2G1ViE1hICj0fZ7ALBPA==} + '@rollup/rollup-linux-x64-gnu@4.48.1': + resolution: {integrity: sha512-90taWXCWxTbClWuMZD0DKYohY1EovA+W5iytpE89oUPmT5O1HFdf8cuuVIylE6vCbrGdIGv85lVRzTcpTRZ+kA==} cpu: [x64] os: [linux] - '@rollup/rollup-linux-x64-musl@4.46.2': - resolution: {integrity: sha512-7kX69DIrBeD7yNp4A5b81izs8BqoZkCIaxQaOpumcJ1S/kmqNFjPhDu1LHeVXv0SexfHQv5cqHsxLOjETuqDuA==} + '@rollup/rollup-linux-x64-musl@4.48.1': + resolution: {integrity: sha512-2Gu29SkFh1FfTRuN1GR1afMuND2GKzlORQUP3mNMJbqdndOg7gNsa81JnORctazHRokiDzQ5+MLE5XYmZW5VWg==} cpu: [x64] os: [linux] - '@rollup/rollup-win32-arm64-msvc@4.46.2': - resolution: {integrity: sha512-wiJWMIpeaak/jsbaq2HMh/rzZxHVW1rU6coyeNNpMwk5isiPjSTx0a4YLSlYDwBH/WBvLz+EtsNqQScZTLJy3g==} + '@rollup/rollup-win32-arm64-msvc@4.48.1': + resolution: {integrity: sha512-6kQFR1WuAO50bxkIlAVeIYsz3RUx+xymwhTo9j94dJ+kmHe9ly7muH23sdfWduD0BA8pD9/yhonUvAjxGh34jQ==} cpu: [arm64] os: [win32] - '@rollup/rollup-win32-ia32-msvc@4.46.2': - resolution: {integrity: sha512-gBgaUDESVzMgWZhcyjfs9QFK16D8K6QZpwAaVNJxYDLHWayOta4ZMjGm/vsAEy3hvlS2GosVFlBlP9/Wb85DqQ==} + '@rollup/rollup-win32-ia32-msvc@4.48.1': + resolution: {integrity: sha512-RUyZZ/mga88lMI3RlXFs4WQ7n3VyU07sPXmMG7/C1NOi8qisUg57Y7LRarqoGoAiopmGmChUhSwfpvQ3H5iGSQ==} cpu: [ia32] os: [win32] - '@rollup/rollup-win32-x64-msvc@4.46.2': - resolution: {integrity: sha512-CvUo2ixeIQGtF6WvuB87XWqPQkoFAFqW+HUo/WzHwuHDvIwZCtjdWXoYCcr06iKGydiqTclC4jU/TNObC/xKZg==} + '@rollup/rollup-win32-x64-msvc@4.48.1': + resolution: {integrity: sha512-8a/caCUN4vkTChxkaIJcMtwIVcBhi4X2PQRoT+yCK3qRYaZ7cURrmJFL5Ux9H9RaMIXj9RuihckdmkBX3zZsgg==} cpu: [x64] os: [win32] @@ -2193,8 +2202,8 @@ packages: react-router-dom: ^6.0.0 styled-components: ^6.0.0 - '@strapi/plugin-sentry@5.21.0': - resolution: {integrity: sha512-wtbDDlZX6cLBAM/GoCYCUSWUEs68F+29IzUPRYpJDY8XJJVWS6WokJ3JnthYru68/77edOHOW/6xlte68WvPQQ==} + '@strapi/plugin-sentry@5.23.0': + resolution: {integrity: sha512-TMWE/gB8D026UKZG3sa0NknO+47VVkhKkf9Y2puMC3rQrVrJwuzyE5GV0ECLoWTkBF1btWaf/oSg4eZ3DFfb4g==} engines: {node: '>=18.0.0 <=22.x.x', npm: '>=6.0.0'} peerDependencies: '@strapi/strapi': ^5.0.0 @@ -2203,8 +2212,8 @@ packages: react-router-dom: ^6.0.0 styled-components: ^6.0.0 - '@strapi/plugin-users-permissions@5.21.0': - resolution: {integrity: sha512-FYBEB2iixuTYtMby5hL7nfctvipTD8BfmuEZQGBAGoiDPRwKvKR9+PLcJF7fEwkQVtRKpOl2C+7YQwg1bP2oow==} + '@strapi/plugin-users-permissions@5.23.0': + resolution: {integrity: sha512-lf0LCbBFtL6BDIg2222sftGKRKJNLZ5Uiontx1TKbsqbawSuyrjNBYIUcuEZIRx4KGHQqXO/R8ijOETZdSlPcQ==} engines: {node: '>=18.0.0 <=22.x.x', npm: '>=6.0.0'} peerDependencies: '@strapi/strapi': ^5.0.0 @@ -2213,8 +2222,8 @@ packages: react-router-dom: ^6.0.0 styled-components: ^6.0.0 - '@strapi/provider-email-amazon-ses@5.21.0': - resolution: {integrity: sha512-BeXpHFI0uS6Us3AkYQHq27HbtFu6J6yzjHpHIvhBPRE4mvmubGj3zKiYG6tQEXYoLnOw4LHt7XNfb1zKKMjFTg==} + '@strapi/provider-email-amazon-ses@5.23.0': + resolution: {integrity: sha512-CjHtrUwSVqS/zDn/k+q36qoqdIcQg2/oCA6H92cJNQOKFqhMgbMJG3Jk+L1CWwjf+Apye2nRJinkoV+ZFRgCaA==} engines: {node: '>=18.0.0 <=22.x.x', npm: '>=6.0.0'} '@strapi/provider-email-sendmail@5.21.0': @@ -2279,68 +2288,72 @@ packages: resolution: {integrity: sha512-w3pJzi0KnxOe7grpaJOgZOSUz6p7k2UYJXKgV/6Kia6+Pqjb8UkV3gNFOJucJyK9LVf1aD6dDUAFUXPWGQiv/A==} engines: {node: '>=18.0.0 <=22.x.x', npm: '>=6.0.0'} - '@swc/core-darwin-arm64@1.13.3': - resolution: {integrity: sha512-ux0Ws4pSpBTqbDS9GlVP354MekB1DwYlbxXU3VhnDr4GBcCOimpocx62x7cFJkSpEBF8bmX8+/TTCGKh4PbyXw==} + '@strapi/utils@5.23.0': + resolution: {integrity: sha512-gv5qzcZE3yhQgcMpG02PA+1fyWjiFrYm0hAXQ964koAGK9ROLpVaTsv4Tbk8u62sFnXYoF/GVDk8RtryTligRA==} + engines: {node: '>=18.0.0 <=22.x.x', npm: '>=6.0.0'} + + '@swc/core-darwin-arm64@1.13.5': + resolution: {integrity: sha512-lKNv7SujeXvKn16gvQqUQI5DdyY8v7xcoO3k06/FJbHJS90zEwZdQiMNRiqpYw/orU543tPaWgz7cIYWhbopiQ==} engines: {node: '>=10'} cpu: [arm64] os: [darwin] - '@swc/core-darwin-x64@1.13.3': - resolution: {integrity: sha512-p0X6yhxmNUOMZrbeZ3ZNsPige8lSlSe1llllXvpCLkKKxN/k5vZt1sULoq6Nj4eQ7KeHQVm81/+AwKZyf/e0TA==} + '@swc/core-darwin-x64@1.13.5': + resolution: {integrity: sha512-ILd38Fg/w23vHb0yVjlWvQBoE37ZJTdlLHa8LRCFDdX4WKfnVBiblsCU9ar4QTMNdeTBEX9iUF4IrbNWhaF1Ng==} engines: {node: '>=10'} cpu: [x64] os: [darwin] - '@swc/core-linux-arm-gnueabihf@1.13.3': - resolution: {integrity: sha512-OmDoiexL2fVWvQTCtoh0xHMyEkZweQAlh4dRyvl8ugqIPEVARSYtaj55TBMUJIP44mSUOJ5tytjzhn2KFxFcBA==} + '@swc/core-linux-arm-gnueabihf@1.13.5': + resolution: {integrity: sha512-Q6eS3Pt8GLkXxqz9TAw+AUk9HpVJt8Uzm54MvPsqp2yuGmY0/sNaPPNVqctCX9fu/Nu8eaWUen0si6iEiCsazQ==} engines: {node: '>=10'} cpu: [arm] os: [linux] - '@swc/core-linux-arm64-gnu@1.13.3': - resolution: {integrity: sha512-STfKku3QfnuUj6k3g9ld4vwhtgCGYIFQmsGPPgT9MK/dI3Lwnpe5Gs5t1inoUIoGNP8sIOLlBB4HV4MmBjQuhw==} + '@swc/core-linux-arm64-gnu@1.13.5': + resolution: {integrity: sha512-aNDfeN+9af+y+M2MYfxCzCy/VDq7Z5YIbMqRI739o8Ganz6ST+27kjQFd8Y/57JN/hcnUEa9xqdS3XY7WaVtSw==} engines: {node: '>=10'} cpu: [arm64] os: [linux] - '@swc/core-linux-arm64-musl@1.13.3': - resolution: {integrity: sha512-bc+CXYlFc1t8pv9yZJGus372ldzOVscBl7encUBlU1m/Sig0+NDJLz6cXXRcFyl6ABNOApWeR4Yl7iUWx6C8og==} + '@swc/core-linux-arm64-musl@1.13.5': + resolution: {integrity: sha512-9+ZxFN5GJag4CnYnq6apKTnnezpfJhCumyz0504/JbHLo+Ue+ZtJnf3RhyA9W9TINtLE0bC4hKpWi8ZKoETyOQ==} engines: {node: '>=10'} cpu: [arm64] os: [linux] - '@swc/core-linux-x64-gnu@1.13.3': - resolution: {integrity: sha512-dFXoa0TEhohrKcxn/54YKs1iwNeW6tUkHJgXW33H381SvjKFUV53WR231jh1sWVJETjA3vsAwxKwR23s7UCmUA==} + '@swc/core-linux-x64-gnu@1.13.5': + resolution: {integrity: sha512-WD530qvHrki8Ywt/PloKUjaRKgstQqNGvmZl54g06kA+hqtSE2FTG9gngXr3UJxYu/cNAjJYiBifm7+w4nbHbA==} engines: {node: '>=10'} cpu: [x64] os: [linux] - '@swc/core-linux-x64-musl@1.13.3': - resolution: {integrity: sha512-ieyjisLB+ldexiE/yD8uomaZuZIbTc8tjquYln9Quh5ykOBY7LpJJYBWvWtm1g3pHv6AXlBI8Jay7Fffb6aLfA==} + '@swc/core-linux-x64-musl@1.13.5': + resolution: {integrity: sha512-Luj8y4OFYx4DHNQTWjdIuKTq2f5k6uSXICqx+FSabnXptaOBAbJHNbHT/06JZh6NRUouaf0mYXN0mcsqvkhd7Q==} engines: {node: '>=10'} cpu: [x64] os: [linux] - '@swc/core-win32-arm64-msvc@1.13.3': - resolution: {integrity: sha512-elTQpnaX5vESSbhCEgcwXjpMsnUbqqHfEpB7ewpkAsLzKEXZaK67ihSRYAuAx6ewRQTo7DS5iTT6X5aQD3MzMw==} + '@swc/core-win32-arm64-msvc@1.13.5': + resolution: {integrity: sha512-cZ6UpumhF9SDJvv4DA2fo9WIzlNFuKSkZpZmPG1c+4PFSEMy5DFOjBSllCvnqihCabzXzpn6ykCwBmHpy31vQw==} engines: {node: '>=10'} cpu: [arm64] os: [win32] - '@swc/core-win32-ia32-msvc@1.13.3': - resolution: {integrity: sha512-nvehQVEOdI1BleJpuUgPLrclJ0TzbEMc+MarXDmmiRFwEUGqj+pnfkTSb7RZyS1puU74IXdK/YhTirHurtbI9w==} + '@swc/core-win32-ia32-msvc@1.13.5': + resolution: {integrity: sha512-C5Yi/xIikrFUzZcyGj9L3RpKljFvKiDMtyDzPKzlsDrKIw2EYY+bF88gB6oGY5RGmv4DAX8dbnpRAqgFD0FMEw==} engines: {node: '>=10'} cpu: [ia32] os: [win32] - '@swc/core-win32-x64-msvc@1.13.3': - resolution: {integrity: sha512-A+JSKGkRbPLVV2Kwx8TaDAV0yXIXm/gc8m98hSkVDGlPBBmydgzNdWy3X7HTUBM7IDk7YlWE7w2+RUGjdgpTmg==} + '@swc/core-win32-x64-msvc@1.13.5': + resolution: {integrity: sha512-YrKdMVxbYmlfybCSbRtrilc6UA8GF5aPmGKBdPvjrarvsmf4i7ZHGCEnLtfOMd3Lwbs2WUZq3WdMbozYeLU93Q==} engines: {node: '>=10'} cpu: [x64] os: [win32] - '@swc/core@1.13.3': - resolution: {integrity: sha512-ZaDETVWnm6FE0fc+c2UE8MHYVS3Fe91o5vkmGfgwGXFbxYvAjKSqxM/j4cRc9T7VZNSJjriXq58XkfCp3Y6f+w==} + '@swc/core@1.13.5': + resolution: {integrity: sha512-WezcBo8a0Dg2rnR82zhwoR6aRNxeTGfK5QCD6TQ+kg3xx/zNT02s/0o+81h/3zhvFSB24NtqEr8FTw88O5W/JQ==} engines: {node: '>=10'} peerDependencies: '@swc/helpers': '>=0.5.17' @@ -2492,8 +2505,8 @@ packages: '@types/ms@2.1.0': resolution: {integrity: sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==} - '@types/node@20.19.9': - resolution: {integrity: sha512-cuVNgarYWZqxRJDQHEB58GEONhOK79QVR/qYx4S7kcUObQvUwvFnYxJuuHUKm2aieN9X3yZB4LZsuYNU1Qphsw==} + '@types/node@20.19.11': + resolution: {integrity: sha512-uug3FEEGv0r+jrecvUUpbY8lLisvIjg6AAic6a2bSP5OEOLeJsDSnvhCDov7ipFFMXS3orMpzlmi0ZcuGkBbow==} '@types/nodemon@1.19.6': resolution: {integrity: sha512-vjKuaQOLUA5EY2zkUmWG1ipXbKt9Wd+H/0SiIuHVeH4cHtt6509iRUGH9ZR0iqgUrtj3BrP9KqoTuV3ZCbQcYA==} @@ -2529,8 +2542,8 @@ packages: peerDependencies: '@types/react': '*' - '@types/react@18.3.23': - resolution: {integrity: sha512-/LDXMQh55EzZQ0uVAZmKKhfENivEvWz6E+EYzh+/MCjMhNsotd+ZHhBGIjFDTi6+fz0OhQQQLbTgdQIxxCsC0w==} + '@types/react@18.3.24': + resolution: {integrity: sha512-0dLEBsA1kI3OezMBF8nSsb7Nk19ZnsyE1LLhB8r27KbgU5H4pvuqZLdtE+aUkJVoXgTVuA+iLIwmZ0TuK4tx6A==} '@types/responselike@1.0.3': resolution: {integrity: sha512-H/+L+UkTV33uf49PH5pCAUBVPNj2nDBXTN+qS1dOwyyg24l3CcicicCA7ca+HMvJBZcFgl5r8e+RR6elsb4Lyw==} @@ -2752,8 +2765,8 @@ packages: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} engines: {node: '>=8'} - ansi-regex@6.1.0: - resolution: {integrity: sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==} + ansi-regex@6.2.0: + resolution: {integrity: sha512-TKY5pyBkHyADOPYlRT9Lx6F544mPl0vS5Ew7BJ45hA08Q+t3GjbueLliBWN3sMICk6+y7HdyxSzC4bWS8baBdg==} engines: {node: '>=12'} ansi-sequence-parser@1.1.3: @@ -2875,8 +2888,8 @@ packages: resolution: {integrity: sha512-d0II/GO9uf9lfUHH2BQsjxzRJZBdsjgsBiW4BvhWk/3qoKwQFjIDVN19PfX8F2D/r9PCMTtLWjYVCFrpeYUzsw==} deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. - bowser@2.11.0: - resolution: {integrity: sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA==} + bowser@2.12.1: + resolution: {integrity: sha512-z4rE2Gxh7tvshQ4hluIT7XcFrgLIQaw9X3A+kTTRdovCz5PMukm/0QC/BKSYPj3omF5Qfypn9O/c5kgpmvYUCw==} boxen@5.1.2: resolution: {integrity: sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ==} @@ -2902,8 +2915,8 @@ packages: resolution: {integrity: sha512-ftrrbI/VHBgEnmnSyhkqvQVMp6jAKybfs0qMIlm7SLBrQTGMsdCIP4q3BoKeLsZTBQllIQtY9kbxgRYV2WU47g==} engines: {node: '>=12'} - browserslist@4.25.1: - resolution: {integrity: sha512-KGj0KoOMXLpSNkkEI6Z6mShmQy0bc1I+T7K9N81k4WWMrfz+6fQ6es80B/YLAeRoKvjYE1YSHHOW1qe9xIVzHw==} + browserslist@4.25.3: + resolution: {integrity: sha512-cDGv1kkDI4/0e5yON9yM5G/0A5u8sf5TnmdX5C9qHzI9PPu++sQ9zjm1k9NiOrf3riY4OkK0zSGqfvJyJsgCBQ==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true @@ -2969,8 +2982,8 @@ packages: camelize@1.0.1: resolution: {integrity: sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ==} - caniuse-lite@1.0.30001731: - resolution: {integrity: sha512-lDdp2/wrOmTRWuoB5DpfNkC0rJDU8DqRa6nYL6HK6sytw70QMopt/NIc/9SM7ylItlBWfACXk0tEn37UWM/+mg==} + caniuse-lite@1.0.30001737: + resolution: {integrity: sha512-BiloLiXtQNrY5UyF0+1nSJLXUENuhka2pzy2Fx5pGxqavdrxSCW4U6Pn/PoG3Efspi2frRbHpBV2XsrPE6EDlw==} capital-case@1.0.4: resolution: {integrity: sha512-ds37W8CytHgwnhGGTi88pcPyR15qoNkOpYwmMMfnWqqWgESapLqvDx6huFjQ5vqWSn2Z06173XNA7LtMOeUh1A==} @@ -2989,8 +3002,8 @@ packages: resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} engines: {node: '>=10'} - chalk@5.5.0: - resolution: {integrity: sha512-1tm8DTaJhPBG3bIkVeZt1iZM9GfSX2lzOeDVZH9R9ffRHpmHvxZ/QhgQH/aDTkswQVt+YHdXAdS/In/30OjCbg==} + chalk@5.6.0: + resolution: {integrity: sha512-46QrSQFyVSEyYAgQ22hQ+zDa60YHA4fBstHmtSApj1Y5vKtG27fWowW03jCk5KcbXEWPZUIR894aARCA/G1kfQ==} engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} change-case@4.1.2: @@ -2999,6 +3012,9 @@ packages: chardet@0.7.0: resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} + chardet@2.1.0: + resolution: {integrity: sha512-bNFETTG/pM5ryzQ9Ad0lJOTa6HWD/YsScAR3EnCPZRPlQh77JocYktSHOUHelyhm8IARL+o4c4F1bP5KVOjiRA==} + chokidar@3.6.0: resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} engines: {node: '>= 8.10.0'} @@ -3100,8 +3116,8 @@ packages: resolution: {integrity: sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==} engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'} - codemirror@5.65.19: - resolution: {integrity: sha512-+aFkvqhaAVr1gferNMuN8vkTSrWIFvzlMV9I2KBLCWS2WpZ2+UAkZjlMZmEuT+gcXTi6RrGQCkWq1/bDtGqhIA==} + codemirror@5.65.20: + resolution: {integrity: sha512-i5dLDDxwkFCbhjvL2pNjShsojoL3XHyDwsGv1jqETUoW+lzpBKKqNTUWgQwVAOa0tUm4BwekT455ujafi8payA==} color-convert@1.9.3: resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} @@ -3214,8 +3230,8 @@ packages: resolution: {integrity: sha512-fereAvAvxDrQDOXybk3Qu3dPbOoKoysFMWtkY3mv5BsL8//OSZVL5DCLYqgRfY5cWirgRzlC+WSrxp6Bo3eNZg==} hasBin: true - core-js-pure@3.45.0: - resolution: {integrity: sha512-OtwjqcDpY2X/eIIg1ol/n0y/X8A9foliaNt1dSK0gV3J2/zw+89FcNG3mPK+N8YWts4ZFUPxnrAzsxs/lf8yDA==} + core-js-pure@3.45.1: + resolution: {integrity: sha512-OHnWFKgTUshEU8MK+lOs1H8kC8GkTi9Z1tvNkxrCcw9wl3MJIO7q2ld77wjWn4/xuGrVu2X+nME1iIIPBSdyEQ==} core-util-is@1.0.2: resolution: {integrity: sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==} @@ -3306,8 +3322,8 @@ packages: resolution: {integrity: sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==} engines: {node: '>=0.11'} - dayjs@1.11.13: - resolution: {integrity: sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==} + dayjs@1.11.14: + resolution: {integrity: sha512-E8fIdSxUlyqSA8XYGnNa3IkIzxtEmFjI+JU/6ic0P1zmSqyL6HyG5jHnpPjRguDNiaHLpfvHKWFiohNsJLqcJQ==} debounce@1.2.1: resolution: {integrity: sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug==} @@ -3537,8 +3553,8 @@ packages: ee-first@1.1.1: resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} - electron-to-chromium@1.5.198: - resolution: {integrity: sha512-G5COfnp3w+ydVu80yprgWSfmfQaYRh9DOxfhAxstLyetKaLyl55QrNjx8C38Pc/C+RaDmb1M0Lk8wPEMQ+bGgQ==} + electron-to-chromium@1.5.209: + resolution: {integrity: sha512-Xoz0uMrim9ZETCQt8UgM5FxQF9+imA7PBpokoGcZloA1uw2LeHzTlip5cb5KOAsXZLjh/moN2vReN3ZjJmjI9A==} elliptic@6.6.1: resolution: {integrity: sha512-RaddvvMatK2LJHqFJ+YA4WysVN5Ita9E35botqIYspQ4TkRAlCicdzKOjlyv/1Za5RyTNn7di//eEV0uTAfe3g==} @@ -3633,8 +3649,8 @@ packages: engines: {node: '>=12'} hasBin: true - esbuild@0.25.8: - resolution: {integrity: sha512-vVC0USHGtMi8+R4Kz8rt6JhEWLxsv9Rnu/lGYbPR8u47B+DCBksq9JarW0zOO7bs37hyOK1l2/oqtbciutL5+Q==} + esbuild@0.25.9: + resolution: {integrity: sha512-CRbODhYyQx3qp7ZEwzxOk4JBqmD/seJrzPa/cGjY1VtIn5E09Oi9/dB4JwctnfZ8Q8iT7rioVv5k/FNT/uf54g==} engines: {node: '>=18'} hasBin: true @@ -3730,8 +3746,8 @@ packages: fast-safe-stringify@2.1.1: resolution: {integrity: sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==} - fast-uri@3.0.6: - resolution: {integrity: sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw==} + fast-uri@3.1.0: + resolution: {integrity: sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==} fast-xml-parser@5.2.5: resolution: {integrity: sha512-pfX9uG9Ki0yekDHx2SiuRIyFdyAr1kMIMitPvb0YBo8SUfKvia7w7FIyd/l6av85pFYRhZscS75MwMnbvY+hcQ==} @@ -4173,6 +4189,10 @@ packages: resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} engines: {node: '>=0.10.0'} + iconv-lite@0.6.3: + resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} + engines: {node: '>=0.10.0'} + icss-utils@5.1.0: resolution: {integrity: sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==} engines: {node: ^10 || ^12 || >= 14} @@ -4251,8 +4271,8 @@ packages: resolution: {integrity: sha512-QAgPDQMEgrDssk1XiwwHoOGYF9BAbUcc1+j+FhEvaOt8/cKRqyLn0U5qA6F74fGhTMGxf92pOvPBeh29jQJDTQ==} engines: {node: '>=12.0.0'} - inquirer@8.2.6: - resolution: {integrity: sha512-M1WuAmb7pn9zdFRtQYk26ZBoY043Sse0wVDdk4Bppr+JOXyQYybdtvK+l9wUibhtjdjvtoiNy8tk+EgsYIUqKg==} + inquirer@8.2.7: + resolution: {integrity: sha512-UjOaSel/iddGZJ5xP/Eixh6dY1XghiBw4XK13rCCIJcJfyhhoul/7KhLLUGtebEj6GDYM6Vnx/mVsjx2L/mFIA==} engines: {node: '>=12.0.0'} inquirer@9.3.7: @@ -4501,8 +4521,8 @@ packages: jsonfile@4.0.0: resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} - jsonfile@6.1.0: - resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} + jsonfile@6.2.0: + resolution: {integrity: sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==} jsonwebtoken@9.0.0: resolution: {integrity: sha512-tuGfYXxkQGDPnLJ7SibiQgVgeDgfbPq2k2ICcbgqW8WxWLBAxKQM/ZCu/IT8SOSwmaYl4dpTFCW5xZv7YbbWUw==} @@ -5855,8 +5875,8 @@ packages: resolution: {integrity: sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==} engines: {node: '>= 0.10'} - remeda@2.29.0: - resolution: {integrity: sha512-+Izkt+G9OS0cZLJ7Ca3Yd0OYs+/mASCow8GnsEu3KHm22/bvV4WLzbH3ohDRk2/cWCELb3eSrc36wdAJolV5rw==} + remeda@2.30.0: + resolution: {integrity: sha512-TcRpI1ecqnMer3jHhFtMerGvHFCDlCHljUp0/9A4HxHOh5bSY3kP1l8nQDFMnWYJKl3MSarDNY1tb0Bs/bCmvw==} remove-accents@0.5.0: resolution: {integrity: sha512-8g3/Otx1eJaVD12e31UbJj1YzdtVvzH85HV7t+9MJYk/u3XmkOUJ5Ys9wQrf9PCPK8+xn4ymzqYCiZl6QWKn+A==} @@ -5959,8 +5979,8 @@ packages: resolution: {integrity: sha512-CHhPh+UNHD2GTXNYhPWLnU8ONHdI+5DI+4EYIAOaiD63rHeYlZvyh8P+in5999TTSFgUYuKUAjzRI4mdh/p+2A==} engines: {node: '>=8.0'} - rollup@4.46.2: - resolution: {integrity: sha512-WMmLFI+Boh6xbop+OAGo9cQ3OgX9MIg7xOQjn+pTCwOkk+FNDAeAemXkJ3HzDJrVXleLOFVa1ipuc1AmEx1Dwg==} + rollup@4.48.1: + resolution: {integrity: sha512-jVG20NvbhTYDkGAty2/Yh7HK6/q3DGSRH4o8ALKGArmMuaauM9kLfoMZ+WliPwA5+JHr2lTn3g557FxBV87ifg==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true @@ -6377,8 +6397,8 @@ packages: resolution: {integrity: sha512-7gr8p9TQP6RAHusBOSLs46F4564ZrjV8xFmw5zCmgmhGUcw2hxsShhJ6CEiHQMgPDwAQ1fWHPM0ypc4RMAig4A==} engines: {node: ^14.18.0 || >=16.0.0} - tapable@2.2.2: - resolution: {integrity: sha512-Re10+NauLTMCudc7T5WLFLAwDhQ0JWdrMK+9B2M8zR5hRExKmsRDCBA7/aV/pNJFltmBFO5BAMlQFi/vq3nKOg==} + tapable@2.2.3: + resolution: {integrity: sha512-ZL6DDuAlRlLGghwcfmSn9sK3Hr6ArtyudlSAiCqQ6IfE+b+HHbydbYDIG15IfS5do+7XQQBdBiubF/cV2dnDzg==} engines: {node: '>=6'} tar-stream@2.2.0: @@ -6605,8 +6625,8 @@ packages: resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} engines: {node: '>= 10.0.0'} - unlayer-types@1.289.0: - resolution: {integrity: sha512-3nqnOUbAPV84ektF3f1cKNvfl5uK8uwR7WzVR1nMqCCWLZTUo9j9Y9W5dcIVWVUcmJyWiPXADiPOcHxLbSo+Lw==} + unlayer-types@1.298.0: + resolution: {integrity: sha512-LiOO3KxYDfd1Ag9dmzu0yxQulaLw7oj2JbTyA0XMuUaCP0hHmbfu2y1JmuOcL9KlqI+j87ElDLiMGYpWDJe9Bg==} unload@2.2.0: resolution: {integrity: sha512-B60uB5TNBLtN6/LsgAf3udH9saB5p7gqJwcFfbOEZ8BcBHnGwCf6G/TGiEqkRAxX7zAFIUtzdrXQSdL3Q/wqNA==} @@ -6842,8 +6862,8 @@ packages: resolution: {integrity: sha512-yd1RBzSGanHkitROoPFd6qsrxt+oFhg/129YzheDGqeustzX0vTZJZsSsQjVQC4yzBQ56K55XU8gaNCtIzOnTg==} engines: {node: '>=10.13.0'} - webpack@5.101.0: - resolution: {integrity: sha512-B4t+nJqytPeuZlHuIKTbalhljIFXeNRqrUGAQgTGlfOl2lXXKXw+yZu6bicycP+PUlM44CxBjCFD6aciKFT3LQ==} + webpack@5.101.3: + resolution: {integrity: sha512-7b0dTKR3Ed//AD/6kkx/o7duS8H3f1a4w3BYpIriX4BzIhjkn4teo05cptsxvLesHFKK5KObnadmCHBwGc+51A==} engines: {node: '>=10.13.0'} hasBin: true peerDependencies: @@ -6985,12 +7005,12 @@ packages: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} engines: {node: '>=10'} - yoctocolors-cjs@2.1.2: - resolution: {integrity: sha512-cYVsTjKl8b+FrnidjibDWskAv7UKOfcwaVZdp/it9n1s9fU3IkgDbhdIRKCW4JDsAlECJY0ytoVPT3sK6kideA==} + yoctocolors-cjs@2.1.3: + resolution: {integrity: sha512-U/PBtDf35ff0D8X8D0jfdzHYEPFxAI7jJlxZXwCSez5M3190m+QobIfh+sWDWSHMCWWJN2AWamkegn6vr6YBTw==} engines: {node: '>=18'} - yoctocolors@2.1.1: - resolution: {integrity: sha512-GQHQqAopRhwU8Kt1DDM8NjibDXHC8eoh1erhGAJPEyveY9qqVeXvVikNKrDz69sHowPMorbPUrH/mx8c50eiBQ==} + yoctocolors@2.1.2: + resolution: {integrity: sha512-CzhO+pFNo8ajLM2d2IW/R93ipy99LWjtwblvC1RsoSUMZgyLbYFr221TnSNT7GjGdYui6P459mw9JH/g/zW2ug==} engines: {node: '>=18'} yup@0.32.9: @@ -7022,7 +7042,7 @@ snapshots: '@aws-crypto/supports-web-crypto': 5.2.0 '@aws-crypto/util': 5.2.0 '@aws-sdk/types': 3.862.0 - '@aws-sdk/util-locate-window': 3.804.0 + '@aws-sdk/util-locate-window': 3.873.0 '@smithy/util-utf8': 2.3.0 tslib: 2.8.1 @@ -7032,7 +7052,7 @@ snapshots: '@aws-crypto/supports-web-crypto': 5.2.0 '@aws-crypto/util': 5.2.0 '@aws-sdk/types': 3.862.0 - '@aws-sdk/util-locate-window': 3.804.0 + '@aws-sdk/util-locate-window': 3.873.0 '@smithy/util-utf8': 2.3.0 tslib: 2.8.1 @@ -7052,30 +7072,30 @@ snapshots: '@smithy/util-utf8': 2.3.0 tslib: 2.8.1 - '@aws-sdk/client-s3@3.862.0': + '@aws-sdk/client-s3@3.876.0': dependencies: '@aws-crypto/sha1-browser': 5.2.0 '@aws-crypto/sha256-browser': 5.2.0 '@aws-crypto/sha256-js': 5.2.0 - '@aws-sdk/core': 3.862.0 - '@aws-sdk/credential-provider-node': 3.862.0 - '@aws-sdk/middleware-bucket-endpoint': 3.862.0 - '@aws-sdk/middleware-expect-continue': 3.862.0 - '@aws-sdk/middleware-flexible-checksums': 3.862.0 - '@aws-sdk/middleware-host-header': 3.862.0 - '@aws-sdk/middleware-location-constraint': 3.862.0 - '@aws-sdk/middleware-logger': 3.862.0 - '@aws-sdk/middleware-recursion-detection': 3.862.0 - '@aws-sdk/middleware-sdk-s3': 3.862.0 - '@aws-sdk/middleware-ssec': 3.862.0 - '@aws-sdk/middleware-user-agent': 3.862.0 - '@aws-sdk/region-config-resolver': 3.862.0 - '@aws-sdk/signature-v4-multi-region': 3.862.0 + '@aws-sdk/core': 3.876.0 + '@aws-sdk/credential-provider-node': 3.876.0 + '@aws-sdk/middleware-bucket-endpoint': 3.873.0 + '@aws-sdk/middleware-expect-continue': 3.873.0 + '@aws-sdk/middleware-flexible-checksums': 3.876.0 + '@aws-sdk/middleware-host-header': 3.873.0 + '@aws-sdk/middleware-location-constraint': 3.873.0 + '@aws-sdk/middleware-logger': 3.876.0 + '@aws-sdk/middleware-recursion-detection': 3.873.0 + '@aws-sdk/middleware-sdk-s3': 3.876.0 + '@aws-sdk/middleware-ssec': 3.873.0 + '@aws-sdk/middleware-user-agent': 3.876.0 + '@aws-sdk/region-config-resolver': 3.873.0 + '@aws-sdk/signature-v4-multi-region': 3.876.0 '@aws-sdk/types': 3.862.0 - '@aws-sdk/util-endpoints': 3.862.0 - '@aws-sdk/util-user-agent-browser': 3.862.0 - '@aws-sdk/util-user-agent-node': 3.862.0 - '@aws-sdk/xml-builder': 3.862.0 + '@aws-sdk/util-endpoints': 3.873.0 + '@aws-sdk/util-user-agent-browser': 3.873.0 + '@aws-sdk/util-user-agent-node': 3.876.0 + '@aws-sdk/xml-builder': 3.873.0 '@smithy/config-resolver': 4.1.5 '@smithy/core': 3.8.0 '@smithy/eventstream-serde-browser': 4.0.5 @@ -7115,20 +7135,20 @@ snapshots: transitivePeerDependencies: - aws-crt - '@aws-sdk/client-sso@3.862.0': + '@aws-sdk/client-sso@3.876.0': dependencies: '@aws-crypto/sha256-browser': 5.2.0 '@aws-crypto/sha256-js': 5.2.0 - '@aws-sdk/core': 3.862.0 - '@aws-sdk/middleware-host-header': 3.862.0 - '@aws-sdk/middleware-logger': 3.862.0 - '@aws-sdk/middleware-recursion-detection': 3.862.0 - '@aws-sdk/middleware-user-agent': 3.862.0 - '@aws-sdk/region-config-resolver': 3.862.0 + '@aws-sdk/core': 3.876.0 + '@aws-sdk/middleware-host-header': 3.873.0 + '@aws-sdk/middleware-logger': 3.876.0 + '@aws-sdk/middleware-recursion-detection': 3.873.0 + '@aws-sdk/middleware-user-agent': 3.876.0 + '@aws-sdk/region-config-resolver': 3.873.0 '@aws-sdk/types': 3.862.0 - '@aws-sdk/util-endpoints': 3.862.0 - '@aws-sdk/util-user-agent-browser': 3.862.0 - '@aws-sdk/util-user-agent-node': 3.862.0 + '@aws-sdk/util-endpoints': 3.873.0 + '@aws-sdk/util-user-agent-browser': 3.873.0 + '@aws-sdk/util-user-agent-node': 3.876.0 '@smithy/config-resolver': 4.1.5 '@smithy/core': 3.8.0 '@smithy/fetch-http-handler': 5.1.1 @@ -7158,10 +7178,10 @@ snapshots: transitivePeerDependencies: - aws-crt - '@aws-sdk/core@3.862.0': + '@aws-sdk/core@3.876.0': dependencies: '@aws-sdk/types': 3.862.0 - '@aws-sdk/xml-builder': 3.862.0 + '@aws-sdk/xml-builder': 3.873.0 '@smithy/core': 3.8.0 '@smithy/node-config-provider': 4.1.4 '@smithy/property-provider': 4.0.5 @@ -7176,17 +7196,17 @@ snapshots: fast-xml-parser: 5.2.5 tslib: 2.8.1 - '@aws-sdk/credential-provider-env@3.862.0': + '@aws-sdk/credential-provider-env@3.876.0': dependencies: - '@aws-sdk/core': 3.862.0 + '@aws-sdk/core': 3.876.0 '@aws-sdk/types': 3.862.0 '@smithy/property-provider': 4.0.5 '@smithy/types': 4.3.2 tslib: 2.8.1 - '@aws-sdk/credential-provider-http@3.862.0': + '@aws-sdk/credential-provider-http@3.876.0': dependencies: - '@aws-sdk/core': 3.862.0 + '@aws-sdk/core': 3.876.0 '@aws-sdk/types': 3.862.0 '@smithy/fetch-http-handler': 5.1.1 '@smithy/node-http-handler': 4.1.1 @@ -7197,15 +7217,15 @@ snapshots: '@smithy/util-stream': 4.2.4 tslib: 2.8.1 - '@aws-sdk/credential-provider-ini@3.862.0': + '@aws-sdk/credential-provider-ini@3.876.0': dependencies: - '@aws-sdk/core': 3.862.0 - '@aws-sdk/credential-provider-env': 3.862.0 - '@aws-sdk/credential-provider-http': 3.862.0 - '@aws-sdk/credential-provider-process': 3.862.0 - '@aws-sdk/credential-provider-sso': 3.862.0 - '@aws-sdk/credential-provider-web-identity': 3.862.0 - '@aws-sdk/nested-clients': 3.862.0 + '@aws-sdk/core': 3.876.0 + '@aws-sdk/credential-provider-env': 3.876.0 + '@aws-sdk/credential-provider-http': 3.876.0 + '@aws-sdk/credential-provider-process': 3.876.0 + '@aws-sdk/credential-provider-sso': 3.876.0 + '@aws-sdk/credential-provider-web-identity': 3.876.0 + '@aws-sdk/nested-clients': 3.876.0 '@aws-sdk/types': 3.862.0 '@smithy/credential-provider-imds': 4.0.7 '@smithy/property-provider': 4.0.5 @@ -7215,14 +7235,14 @@ snapshots: transitivePeerDependencies: - aws-crt - '@aws-sdk/credential-provider-node@3.862.0': + '@aws-sdk/credential-provider-node@3.876.0': dependencies: - '@aws-sdk/credential-provider-env': 3.862.0 - '@aws-sdk/credential-provider-http': 3.862.0 - '@aws-sdk/credential-provider-ini': 3.862.0 - '@aws-sdk/credential-provider-process': 3.862.0 - '@aws-sdk/credential-provider-sso': 3.862.0 - '@aws-sdk/credential-provider-web-identity': 3.862.0 + '@aws-sdk/credential-provider-env': 3.876.0 + '@aws-sdk/credential-provider-http': 3.876.0 + '@aws-sdk/credential-provider-ini': 3.876.0 + '@aws-sdk/credential-provider-process': 3.876.0 + '@aws-sdk/credential-provider-sso': 3.876.0 + '@aws-sdk/credential-provider-web-identity': 3.876.0 '@aws-sdk/types': 3.862.0 '@smithy/credential-provider-imds': 4.0.7 '@smithy/property-provider': 4.0.5 @@ -7232,20 +7252,20 @@ snapshots: transitivePeerDependencies: - aws-crt - '@aws-sdk/credential-provider-process@3.862.0': + '@aws-sdk/credential-provider-process@3.876.0': dependencies: - '@aws-sdk/core': 3.862.0 + '@aws-sdk/core': 3.876.0 '@aws-sdk/types': 3.862.0 '@smithy/property-provider': 4.0.5 '@smithy/shared-ini-file-loader': 4.0.5 '@smithy/types': 4.3.2 tslib: 2.8.1 - '@aws-sdk/credential-provider-sso@3.862.0': + '@aws-sdk/credential-provider-sso@3.876.0': dependencies: - '@aws-sdk/client-sso': 3.862.0 - '@aws-sdk/core': 3.862.0 - '@aws-sdk/token-providers': 3.862.0 + '@aws-sdk/client-sso': 3.876.0 + '@aws-sdk/core': 3.876.0 + '@aws-sdk/token-providers': 3.876.0 '@aws-sdk/types': 3.862.0 '@smithy/property-provider': 4.0.5 '@smithy/shared-ini-file-loader': 4.0.5 @@ -7254,10 +7274,10 @@ snapshots: transitivePeerDependencies: - aws-crt - '@aws-sdk/credential-provider-web-identity@3.862.0': + '@aws-sdk/credential-provider-web-identity@3.876.0': dependencies: - '@aws-sdk/core': 3.862.0 - '@aws-sdk/nested-clients': 3.862.0 + '@aws-sdk/core': 3.876.0 + '@aws-sdk/nested-clients': 3.876.0 '@aws-sdk/types': 3.862.0 '@smithy/property-provider': 4.0.5 '@smithy/types': 4.3.2 @@ -7265,9 +7285,9 @@ snapshots: transitivePeerDependencies: - aws-crt - '@aws-sdk/lib-storage@3.862.0(@aws-sdk/client-s3@3.862.0)': + '@aws-sdk/lib-storage@3.876.0(@aws-sdk/client-s3@3.876.0)': dependencies: - '@aws-sdk/client-s3': 3.862.0 + '@aws-sdk/client-s3': 3.876.0 '@smithy/abort-controller': 4.0.5 '@smithy/middleware-endpoint': 4.1.18 '@smithy/smithy-client': 4.4.10 @@ -7276,29 +7296,29 @@ snapshots: stream-browserify: 3.0.0 tslib: 2.8.1 - '@aws-sdk/middleware-bucket-endpoint@3.862.0': + '@aws-sdk/middleware-bucket-endpoint@3.873.0': dependencies: '@aws-sdk/types': 3.862.0 - '@aws-sdk/util-arn-parser': 3.804.0 + '@aws-sdk/util-arn-parser': 3.873.0 '@smithy/node-config-provider': 4.1.4 '@smithy/protocol-http': 5.1.3 '@smithy/types': 4.3.2 '@smithy/util-config-provider': 4.0.0 tslib: 2.8.1 - '@aws-sdk/middleware-expect-continue@3.862.0': + '@aws-sdk/middleware-expect-continue@3.873.0': dependencies: '@aws-sdk/types': 3.862.0 '@smithy/protocol-http': 5.1.3 '@smithy/types': 4.3.2 tslib: 2.8.1 - '@aws-sdk/middleware-flexible-checksums@3.862.0': + '@aws-sdk/middleware-flexible-checksums@3.876.0': dependencies: '@aws-crypto/crc32': 5.2.0 '@aws-crypto/crc32c': 5.2.0 '@aws-crypto/util': 5.2.0 - '@aws-sdk/core': 3.862.0 + '@aws-sdk/core': 3.876.0 '@aws-sdk/types': 3.862.0 '@smithy/is-array-buffer': 4.0.0 '@smithy/node-config-provider': 4.1.4 @@ -7309,37 +7329,37 @@ snapshots: '@smithy/util-utf8': 4.0.0 tslib: 2.8.1 - '@aws-sdk/middleware-host-header@3.862.0': + '@aws-sdk/middleware-host-header@3.873.0': dependencies: '@aws-sdk/types': 3.862.0 '@smithy/protocol-http': 5.1.3 '@smithy/types': 4.3.2 tslib: 2.8.1 - '@aws-sdk/middleware-location-constraint@3.862.0': + '@aws-sdk/middleware-location-constraint@3.873.0': dependencies: '@aws-sdk/types': 3.862.0 '@smithy/types': 4.3.2 tslib: 2.8.1 - '@aws-sdk/middleware-logger@3.862.0': + '@aws-sdk/middleware-logger@3.876.0': dependencies: '@aws-sdk/types': 3.862.0 '@smithy/types': 4.3.2 tslib: 2.8.1 - '@aws-sdk/middleware-recursion-detection@3.862.0': + '@aws-sdk/middleware-recursion-detection@3.873.0': dependencies: '@aws-sdk/types': 3.862.0 '@smithy/protocol-http': 5.1.3 '@smithy/types': 4.3.2 tslib: 2.8.1 - '@aws-sdk/middleware-sdk-s3@3.862.0': + '@aws-sdk/middleware-sdk-s3@3.876.0': dependencies: - '@aws-sdk/core': 3.862.0 + '@aws-sdk/core': 3.876.0 '@aws-sdk/types': 3.862.0 - '@aws-sdk/util-arn-parser': 3.804.0 + '@aws-sdk/util-arn-parser': 3.873.0 '@smithy/core': 3.8.0 '@smithy/node-config-provider': 4.1.4 '@smithy/protocol-http': 5.1.3 @@ -7352,36 +7372,36 @@ snapshots: '@smithy/util-utf8': 4.0.0 tslib: 2.8.1 - '@aws-sdk/middleware-ssec@3.862.0': + '@aws-sdk/middleware-ssec@3.873.0': dependencies: '@aws-sdk/types': 3.862.0 '@smithy/types': 4.3.2 tslib: 2.8.1 - '@aws-sdk/middleware-user-agent@3.862.0': + '@aws-sdk/middleware-user-agent@3.876.0': dependencies: - '@aws-sdk/core': 3.862.0 + '@aws-sdk/core': 3.876.0 '@aws-sdk/types': 3.862.0 - '@aws-sdk/util-endpoints': 3.862.0 + '@aws-sdk/util-endpoints': 3.873.0 '@smithy/core': 3.8.0 '@smithy/protocol-http': 5.1.3 '@smithy/types': 4.3.2 tslib: 2.8.1 - '@aws-sdk/nested-clients@3.862.0': + '@aws-sdk/nested-clients@3.876.0': dependencies: '@aws-crypto/sha256-browser': 5.2.0 '@aws-crypto/sha256-js': 5.2.0 - '@aws-sdk/core': 3.862.0 - '@aws-sdk/middleware-host-header': 3.862.0 - '@aws-sdk/middleware-logger': 3.862.0 - '@aws-sdk/middleware-recursion-detection': 3.862.0 - '@aws-sdk/middleware-user-agent': 3.862.0 - '@aws-sdk/region-config-resolver': 3.862.0 + '@aws-sdk/core': 3.876.0 + '@aws-sdk/middleware-host-header': 3.873.0 + '@aws-sdk/middleware-logger': 3.876.0 + '@aws-sdk/middleware-recursion-detection': 3.873.0 + '@aws-sdk/middleware-user-agent': 3.876.0 + '@aws-sdk/region-config-resolver': 3.873.0 '@aws-sdk/types': 3.862.0 - '@aws-sdk/util-endpoints': 3.862.0 - '@aws-sdk/util-user-agent-browser': 3.862.0 - '@aws-sdk/util-user-agent-node': 3.862.0 + '@aws-sdk/util-endpoints': 3.873.0 + '@aws-sdk/util-user-agent-browser': 3.873.0 + '@aws-sdk/util-user-agent-node': 3.876.0 '@smithy/config-resolver': 4.1.5 '@smithy/core': 3.8.0 '@smithy/fetch-http-handler': 5.1.1 @@ -7411,7 +7431,7 @@ snapshots: transitivePeerDependencies: - aws-crt - '@aws-sdk/region-config-resolver@3.862.0': + '@aws-sdk/region-config-resolver@3.873.0': dependencies: '@aws-sdk/types': 3.862.0 '@smithy/node-config-provider': 4.1.4 @@ -7420,19 +7440,19 @@ snapshots: '@smithy/util-middleware': 4.0.5 tslib: 2.8.1 - '@aws-sdk/signature-v4-multi-region@3.862.0': + '@aws-sdk/signature-v4-multi-region@3.876.0': dependencies: - '@aws-sdk/middleware-sdk-s3': 3.862.0 + '@aws-sdk/middleware-sdk-s3': 3.876.0 '@aws-sdk/types': 3.862.0 '@smithy/protocol-http': 5.1.3 '@smithy/signature-v4': 5.1.3 '@smithy/types': 4.3.2 tslib: 2.8.1 - '@aws-sdk/token-providers@3.862.0': + '@aws-sdk/token-providers@3.876.0': dependencies: - '@aws-sdk/core': 3.862.0 - '@aws-sdk/nested-clients': 3.862.0 + '@aws-sdk/core': 3.876.0 + '@aws-sdk/nested-clients': 3.876.0 '@aws-sdk/types': 3.862.0 '@smithy/property-provider': 4.0.5 '@smithy/shared-ini-file-loader': 4.0.5 @@ -7446,11 +7466,11 @@ snapshots: '@smithy/types': 4.3.2 tslib: 2.8.1 - '@aws-sdk/util-arn-parser@3.804.0': + '@aws-sdk/util-arn-parser@3.873.0': dependencies: tslib: 2.8.1 - '@aws-sdk/util-endpoints@3.862.0': + '@aws-sdk/util-endpoints@3.873.0': dependencies: '@aws-sdk/types': 3.862.0 '@smithy/types': 4.3.2 @@ -7458,26 +7478,26 @@ snapshots: '@smithy/util-endpoints': 3.0.7 tslib: 2.8.1 - '@aws-sdk/util-locate-window@3.804.0': + '@aws-sdk/util-locate-window@3.873.0': dependencies: tslib: 2.8.1 - '@aws-sdk/util-user-agent-browser@3.862.0': + '@aws-sdk/util-user-agent-browser@3.873.0': dependencies: '@aws-sdk/types': 3.862.0 '@smithy/types': 4.3.2 - bowser: 2.11.0 + bowser: 2.12.1 tslib: 2.8.1 - '@aws-sdk/util-user-agent-node@3.862.0': + '@aws-sdk/util-user-agent-node@3.876.0': dependencies: - '@aws-sdk/middleware-user-agent': 3.862.0 + '@aws-sdk/middleware-user-agent': 3.876.0 '@aws-sdk/types': 3.862.0 '@smithy/node-config-provider': 4.1.4 '@smithy/types': 4.3.2 tslib: 2.8.1 - '@aws-sdk/xml-builder@3.862.0': + '@aws-sdk/xml-builder@3.873.0': dependencies: '@smithy/types': 4.3.2 tslib: 2.8.1 @@ -7488,19 +7508,19 @@ snapshots: js-tokens: 4.0.0 picocolors: 1.1.1 - '@babel/generator@7.28.0': + '@babel/generator@7.28.3': dependencies: - '@babel/parser': 7.28.0 + '@babel/parser': 7.28.3 '@babel/types': 7.28.2 - '@jridgewell/gen-mapping': 0.3.12 - '@jridgewell/trace-mapping': 0.3.29 + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.30 jsesc: 3.1.0 '@babel/helper-globals@7.28.0': {} '@babel/helper-module-imports@7.27.1': dependencies: - '@babel/traverse': 7.28.0 + '@babel/traverse': 7.28.3 '@babel/types': 7.28.2 transitivePeerDependencies: - supports-color @@ -7509,24 +7529,24 @@ snapshots: '@babel/helper-validator-identifier@7.27.1': {} - '@babel/parser@7.28.0': + '@babel/parser@7.28.3': dependencies: '@babel/types': 7.28.2 - '@babel/runtime@7.28.2': {} + '@babel/runtime@7.28.3': {} '@babel/template@7.27.2': dependencies: '@babel/code-frame': 7.27.1 - '@babel/parser': 7.28.0 + '@babel/parser': 7.28.3 '@babel/types': 7.28.2 - '@babel/traverse@7.28.0': + '@babel/traverse@7.28.3': dependencies: '@babel/code-frame': 7.27.1 - '@babel/generator': 7.28.0 + '@babel/generator': 7.28.3 '@babel/helper-globals': 7.28.0 - '@babel/parser': 7.28.0 + '@babel/parser': 7.28.3 '@babel/template': 7.27.2 '@babel/types': 7.28.2 debug: 4.4.1(supports-color@5.5.0) @@ -7544,24 +7564,24 @@ snapshots: '@codemirror/autocomplete@6.18.6': dependencies: - '@codemirror/language': 6.11.2 + '@codemirror/language': 6.11.3 '@codemirror/state': 6.5.2 '@codemirror/view': 6.38.1 '@lezer/common': 1.2.3 '@codemirror/commands@6.8.1': dependencies: - '@codemirror/language': 6.11.2 + '@codemirror/language': 6.11.3 '@codemirror/state': 6.5.2 '@codemirror/view': 6.38.1 '@lezer/common': 1.2.3 '@codemirror/lang-json@6.0.1': dependencies: - '@codemirror/language': 6.11.2 + '@codemirror/language': 6.11.3 '@lezer/json': 1.0.3 - '@codemirror/language@6.11.2': + '@codemirror/language@6.11.3': dependencies: '@codemirror/state': 6.5.2 '@codemirror/view': 6.38.1 @@ -7588,7 +7608,7 @@ snapshots: '@codemirror/theme-one-dark@6.1.3': dependencies: - '@codemirror/language': 6.11.2 + '@codemirror/language': 6.11.3 '@codemirror/state': 6.5.2 '@codemirror/view': 6.38.1 '@lezer/highlight': 1.2.1 @@ -7652,7 +7672,7 @@ snapshots: '@emotion/babel-plugin@11.13.5': dependencies: '@babel/helper-module-imports': 7.27.1 - '@babel/runtime': 7.28.2 + '@babel/runtime': 7.28.3 '@emotion/hash': 0.9.2 '@emotion/memoize': 0.9.0 '@emotion/serialize': 1.3.3 @@ -7693,9 +7713,9 @@ snapshots: '@emotion/memoize@0.9.0': {} - '@emotion/react@11.14.0(@types/react@18.3.23)(react@18.3.1)': + '@emotion/react@11.14.0(@types/react@18.3.24)(react@18.3.1)': dependencies: - '@babel/runtime': 7.28.2 + '@babel/runtime': 7.28.3 '@emotion/babel-plugin': 11.13.5 '@emotion/cache': 11.14.0 '@emotion/serialize': 1.3.3 @@ -7705,7 +7725,7 @@ snapshots: hoist-non-react-statics: 3.3.2 react: 18.3.1 optionalDependencies: - '@types/react': 18.3.23 + '@types/react': 18.3.24 transitivePeerDependencies: - supports-color @@ -7737,7 +7757,7 @@ snapshots: '@esbuild/aix-ppc64@0.21.5': optional: true - '@esbuild/aix-ppc64@0.25.8': + '@esbuild/aix-ppc64@0.25.9': optional: true '@esbuild/android-arm64@0.20.2': @@ -7746,7 +7766,7 @@ snapshots: '@esbuild/android-arm64@0.21.5': optional: true - '@esbuild/android-arm64@0.25.8': + '@esbuild/android-arm64@0.25.9': optional: true '@esbuild/android-arm@0.20.2': @@ -7755,7 +7775,7 @@ snapshots: '@esbuild/android-arm@0.21.5': optional: true - '@esbuild/android-arm@0.25.8': + '@esbuild/android-arm@0.25.9': optional: true '@esbuild/android-x64@0.20.2': @@ -7764,7 +7784,7 @@ snapshots: '@esbuild/android-x64@0.21.5': optional: true - '@esbuild/android-x64@0.25.8': + '@esbuild/android-x64@0.25.9': optional: true '@esbuild/darwin-arm64@0.20.2': @@ -7773,7 +7793,7 @@ snapshots: '@esbuild/darwin-arm64@0.21.5': optional: true - '@esbuild/darwin-arm64@0.25.8': + '@esbuild/darwin-arm64@0.25.9': optional: true '@esbuild/darwin-x64@0.20.2': @@ -7782,7 +7802,7 @@ snapshots: '@esbuild/darwin-x64@0.21.5': optional: true - '@esbuild/darwin-x64@0.25.8': + '@esbuild/darwin-x64@0.25.9': optional: true '@esbuild/freebsd-arm64@0.20.2': @@ -7791,7 +7811,7 @@ snapshots: '@esbuild/freebsd-arm64@0.21.5': optional: true - '@esbuild/freebsd-arm64@0.25.8': + '@esbuild/freebsd-arm64@0.25.9': optional: true '@esbuild/freebsd-x64@0.20.2': @@ -7800,7 +7820,7 @@ snapshots: '@esbuild/freebsd-x64@0.21.5': optional: true - '@esbuild/freebsd-x64@0.25.8': + '@esbuild/freebsd-x64@0.25.9': optional: true '@esbuild/linux-arm64@0.20.2': @@ -7809,7 +7829,7 @@ snapshots: '@esbuild/linux-arm64@0.21.5': optional: true - '@esbuild/linux-arm64@0.25.8': + '@esbuild/linux-arm64@0.25.9': optional: true '@esbuild/linux-arm@0.20.2': @@ -7818,7 +7838,7 @@ snapshots: '@esbuild/linux-arm@0.21.5': optional: true - '@esbuild/linux-arm@0.25.8': + '@esbuild/linux-arm@0.25.9': optional: true '@esbuild/linux-ia32@0.20.2': @@ -7827,7 +7847,7 @@ snapshots: '@esbuild/linux-ia32@0.21.5': optional: true - '@esbuild/linux-ia32@0.25.8': + '@esbuild/linux-ia32@0.25.9': optional: true '@esbuild/linux-loong64@0.20.2': @@ -7836,7 +7856,7 @@ snapshots: '@esbuild/linux-loong64@0.21.5': optional: true - '@esbuild/linux-loong64@0.25.8': + '@esbuild/linux-loong64@0.25.9': optional: true '@esbuild/linux-mips64el@0.20.2': @@ -7845,7 +7865,7 @@ snapshots: '@esbuild/linux-mips64el@0.21.5': optional: true - '@esbuild/linux-mips64el@0.25.8': + '@esbuild/linux-mips64el@0.25.9': optional: true '@esbuild/linux-ppc64@0.20.2': @@ -7854,7 +7874,7 @@ snapshots: '@esbuild/linux-ppc64@0.21.5': optional: true - '@esbuild/linux-ppc64@0.25.8': + '@esbuild/linux-ppc64@0.25.9': optional: true '@esbuild/linux-riscv64@0.20.2': @@ -7863,7 +7883,7 @@ snapshots: '@esbuild/linux-riscv64@0.21.5': optional: true - '@esbuild/linux-riscv64@0.25.8': + '@esbuild/linux-riscv64@0.25.9': optional: true '@esbuild/linux-s390x@0.20.2': @@ -7872,7 +7892,7 @@ snapshots: '@esbuild/linux-s390x@0.21.5': optional: true - '@esbuild/linux-s390x@0.25.8': + '@esbuild/linux-s390x@0.25.9': optional: true '@esbuild/linux-x64@0.20.2': @@ -7881,10 +7901,10 @@ snapshots: '@esbuild/linux-x64@0.21.5': optional: true - '@esbuild/linux-x64@0.25.8': + '@esbuild/linux-x64@0.25.9': optional: true - '@esbuild/netbsd-arm64@0.25.8': + '@esbuild/netbsd-arm64@0.25.9': optional: true '@esbuild/netbsd-x64@0.20.2': @@ -7893,10 +7913,10 @@ snapshots: '@esbuild/netbsd-x64@0.21.5': optional: true - '@esbuild/netbsd-x64@0.25.8': + '@esbuild/netbsd-x64@0.25.9': optional: true - '@esbuild/openbsd-arm64@0.25.8': + '@esbuild/openbsd-arm64@0.25.9': optional: true '@esbuild/openbsd-x64@0.20.2': @@ -7905,10 +7925,10 @@ snapshots: '@esbuild/openbsd-x64@0.21.5': optional: true - '@esbuild/openbsd-x64@0.25.8': + '@esbuild/openbsd-x64@0.25.9': optional: true - '@esbuild/openharmony-arm64@0.25.8': + '@esbuild/openharmony-arm64@0.25.9': optional: true '@esbuild/sunos-x64@0.20.2': @@ -7917,7 +7937,7 @@ snapshots: '@esbuild/sunos-x64@0.21.5': optional: true - '@esbuild/sunos-x64@0.25.8': + '@esbuild/sunos-x64@0.25.9': optional: true '@esbuild/win32-arm64@0.20.2': @@ -7926,7 +7946,7 @@ snapshots: '@esbuild/win32-arm64@0.21.5': optional: true - '@esbuild/win32-arm64@0.25.8': + '@esbuild/win32-arm64@0.25.9': optional: true '@esbuild/win32-ia32@0.20.2': @@ -7935,7 +7955,7 @@ snapshots: '@esbuild/win32-ia32@0.21.5': optional: true - '@esbuild/win32-ia32@0.25.8': + '@esbuild/win32-ia32@0.25.9': optional: true '@esbuild/win32-x64@0.20.2': @@ -7944,21 +7964,21 @@ snapshots: '@esbuild/win32-x64@0.21.5': optional: true - '@esbuild/win32-x64@0.25.8': + '@esbuild/win32-x64@0.25.9': optional: true '@floating-ui/core@1.7.3': dependencies: '@floating-ui/utils': 0.2.10 - '@floating-ui/dom@1.7.3': + '@floating-ui/dom@1.7.4': dependencies: '@floating-ui/core': 1.7.3 '@floating-ui/utils': 0.2.10 '@floating-ui/react-dom@2.1.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@floating-ui/dom': 1.7.3 + '@floating-ui/dom': 1.7.4 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) @@ -8037,6 +8057,18 @@ snapshots: dependencies: tslib: 2.8.1 + '@formatjs/intl@2.10.0(typescript@5.4.4)': + dependencies: + '@formatjs/ecma402-abstract': 1.18.2 + '@formatjs/fast-memoize': 2.2.0 + '@formatjs/icu-messageformat-parser': 2.7.6 + '@formatjs/intl-displaynames': 6.6.6 + '@formatjs/intl-listformat': 7.5.5 + intl-messageformat: 10.5.11 + tslib: 2.8.1 + optionalDependencies: + typescript: 5.4.4 + '@formatjs/intl@2.10.0(typescript@5.9.2)': dependencies: '@formatjs/ecma402-abstract': 1.18.2 @@ -8138,6 +8170,13 @@ snapshots: '@img/sharp-win32-x64@0.33.5': optional: true + '@inquirer/external-editor@1.0.1(@types/node@20.19.11)': + dependencies: + chardet: 2.1.0 + iconv-lite: 0.6.3 + optionalDependencies: + '@types/node': 20.19.11 + '@inquirer/figures@1.0.13': {} '@internationalized/date@3.5.4': @@ -8157,24 +8196,24 @@ snapshots: wrap-ansi: 8.1.0 wrap-ansi-cjs: wrap-ansi@7.0.0 - '@jridgewell/gen-mapping@0.3.12': + '@jridgewell/gen-mapping@0.3.13': dependencies: - '@jridgewell/sourcemap-codec': 1.5.4 - '@jridgewell/trace-mapping': 0.3.29 + '@jridgewell/sourcemap-codec': 1.5.5 + '@jridgewell/trace-mapping': 0.3.30 '@jridgewell/resolve-uri@3.1.2': {} - '@jridgewell/source-map@0.3.10': + '@jridgewell/source-map@0.3.11': dependencies: - '@jridgewell/gen-mapping': 0.3.12 - '@jridgewell/trace-mapping': 0.3.29 + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.30 - '@jridgewell/sourcemap-codec@1.5.4': {} + '@jridgewell/sourcemap-codec@1.5.5': {} - '@jridgewell/trace-mapping@0.3.29': + '@jridgewell/trace-mapping@0.3.30': dependencies: '@jridgewell/resolve-uri': 3.1.2 - '@jridgewell/sourcemap-codec': 1.5.4 + '@jridgewell/sourcemap-codec': 1.5.5 '@juggle/resize-observer@3.4.0': {} @@ -8184,7 +8223,7 @@ snapshots: '@koa/router@12.0.2': dependencies: - debug: 4.4.1(supports-color@5.5.0) + debug: 4.3.4 http-errors: 2.0.0 koa-compose: 4.1.0 methods: 1.1.2 @@ -8210,7 +8249,7 @@ snapshots: '@marijn/find-cluster-break@1.0.2': {} - '@mux/mux-player-react@3.1.0(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@mux/mux-player-react@3.1.0(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@mux/mux-player': 3.1.0 '@mux/playback-core': 0.27.0 @@ -8218,8 +8257,8 @@ snapshots: react: 18.3.1 react-dom: 18.3.1(react@18.3.1) optionalDependencies: - '@types/react': 18.3.23 - '@types/react-dom': 18.3.7(@types/react@18.3.23) + '@types/react': 18.3.24 + '@types/react-dom': 18.3.7(@types/react@18.3.24) '@mux/mux-player@3.1.0': dependencies: @@ -8263,17 +8302,17 @@ snapshots: '@pkgr/core@0.1.2': {} - '@pmmmwh/react-refresh-webpack-plugin@0.5.15(react-refresh@0.14.0)(type-fest@4.41.0)(webpack-hot-middleware@2.26.1)(webpack@5.101.0(esbuild@0.25.8))': + '@pmmmwh/react-refresh-webpack-plugin@0.5.15(react-refresh@0.14.0)(type-fest@4.41.0)(webpack-hot-middleware@2.26.1)(webpack@5.101.3(esbuild@0.25.9))': dependencies: ansi-html: 0.0.9 - core-js-pure: 3.45.0 + core-js-pure: 3.45.1 error-stack-parser: 2.1.4 html-entities: 2.6.0 loader-utils: 2.0.4 react-refresh: 0.14.0 schema-utils: 4.3.2 source-map: 0.7.6 - webpack: 5.101.0(esbuild@0.25.8) + webpack: 5.101.3(esbuild@0.25.9) optionalDependencies: type-fest: 4.41.0 webpack-hot-middleware: 2.26.1 @@ -8294,565 +8333,565 @@ snapshots: '@radix-ui/number@1.0.1': dependencies: - '@babel/runtime': 7.28.2 + '@babel/runtime': 7.28.3 '@radix-ui/primitive@1.0.1': dependencies: - '@babel/runtime': 7.28.2 + '@babel/runtime': 7.28.3 - '@radix-ui/react-accordion@1.1.2(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-accordion@1.1.2(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@babel/runtime': 7.28.2 + '@babel/runtime': 7.28.3 '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-collapsible': 1.0.3(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-collection': 1.0.3(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.23)(react@18.3.1) - '@radix-ui/react-context': 1.0.1(@types/react@18.3.23)(react@18.3.1) - '@radix-ui/react-direction': 1.0.1(@types/react@18.3.23)(react@18.3.1) - '@radix-ui/react-id': 1.0.1(@types/react@18.3.23)(react@18.3.1) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.3.23)(react@18.3.1) + '@radix-ui/react-collapsible': 1.0.3(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-collection': 1.0.3(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.24)(react@18.3.1) + '@radix-ui/react-context': 1.0.1(@types/react@18.3.24)(react@18.3.1) + '@radix-ui/react-direction': 1.0.1(@types/react@18.3.24)(react@18.3.1) + '@radix-ui/react-id': 1.0.1(@types/react@18.3.24)(react@18.3.1) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.3.24)(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) optionalDependencies: - '@types/react': 18.3.23 - '@types/react-dom': 18.3.7(@types/react@18.3.23) + '@types/react': 18.3.24 + '@types/react-dom': 18.3.7(@types/react@18.3.24) - '@radix-ui/react-alert-dialog@1.0.5(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-alert-dialog@1.0.5(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@babel/runtime': 7.28.2 + '@babel/runtime': 7.28.3 '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.23)(react@18.3.1) - '@radix-ui/react-context': 1.0.1(@types/react@18.3.23)(react@18.3.1) - '@radix-ui/react-dialog': 1.0.5(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(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.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-slot': 1.0.2(@types/react@18.3.23)(react@18.3.1) + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.24)(react@18.3.1) + '@radix-ui/react-context': 1.0.1(@types/react@18.3.24)(react@18.3.1) + '@radix-ui/react-dialog': 1.0.5(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(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.7(@types/react@18.3.24))(@types/react@18.3.24)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-slot': 1.0.2(@types/react@18.3.24)(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) optionalDependencies: - '@types/react': 18.3.23 - '@types/react-dom': 18.3.7(@types/react@18.3.23) + '@types/react': 18.3.24 + '@types/react-dom': 18.3.7(@types/react@18.3.24) - '@radix-ui/react-arrow@1.0.3(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-arrow@1.0.3(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@babel/runtime': 7.28.2 - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@babel/runtime': 7.28.3 + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(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.23 - '@types/react-dom': 18.3.7(@types/react@18.3.23) + '@types/react': 18.3.24 + '@types/react-dom': 18.3.7(@types/react@18.3.24) - '@radix-ui/react-avatar@1.0.4(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-avatar@1.0.4(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@babel/runtime': 7.28.2 - '@radix-ui/react-context': 1.0.1(@types/react@18.3.23)(react@18.3.1) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(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.23)(react@18.3.1) - '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.3.23)(react@18.3.1) + '@babel/runtime': 7.28.3 + '@radix-ui/react-context': 1.0.1(@types/react@18.3.24)(react@18.3.1) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(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.24)(react@18.3.1) + '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.3.24)(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) optionalDependencies: - '@types/react': 18.3.23 - '@types/react-dom': 18.3.7(@types/react@18.3.23) + '@types/react': 18.3.24 + '@types/react-dom': 18.3.7(@types/react@18.3.24) - '@radix-ui/react-checkbox@1.0.4(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-checkbox@1.0.4(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@babel/runtime': 7.28.2 + '@babel/runtime': 7.28.3 '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.23)(react@18.3.1) - '@radix-ui/react-context': 1.0.1(@types/react@18.3.23)(react@18.3.1) - '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(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.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.3.23)(react@18.3.1) - '@radix-ui/react-use-previous': 1.0.1(@types/react@18.3.23)(react@18.3.1) - '@radix-ui/react-use-size': 1.0.1(@types/react@18.3.23)(react@18.3.1) + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.24)(react@18.3.1) + '@radix-ui/react-context': 1.0.1(@types/react@18.3.24)(react@18.3.1) + '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(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.7(@types/react@18.3.24))(@types/react@18.3.24)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.3.24)(react@18.3.1) + '@radix-ui/react-use-previous': 1.0.1(@types/react@18.3.24)(react@18.3.1) + '@radix-ui/react-use-size': 1.0.1(@types/react@18.3.24)(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) optionalDependencies: - '@types/react': 18.3.23 - '@types/react-dom': 18.3.7(@types/react@18.3.23) + '@types/react': 18.3.24 + '@types/react-dom': 18.3.7(@types/react@18.3.24) - '@radix-ui/react-collapsible@1.0.3(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-collapsible@1.0.3(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@babel/runtime': 7.28.2 + '@babel/runtime': 7.28.3 '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.23)(react@18.3.1) - '@radix-ui/react-context': 1.0.1(@types/react@18.3.23)(react@18.3.1) - '@radix-ui/react-id': 1.0.1(@types/react@18.3.23)(react@18.3.1) - '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(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.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.3.23)(react@18.3.1) - '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.3.23)(react@18.3.1) + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.24)(react@18.3.1) + '@radix-ui/react-context': 1.0.1(@types/react@18.3.24)(react@18.3.1) + '@radix-ui/react-id': 1.0.1(@types/react@18.3.24)(react@18.3.1) + '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(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.7(@types/react@18.3.24))(@types/react@18.3.24)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.3.24)(react@18.3.1) + '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.3.24)(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) optionalDependencies: - '@types/react': 18.3.23 - '@types/react-dom': 18.3.7(@types/react@18.3.23) + '@types/react': 18.3.24 + '@types/react-dom': 18.3.7(@types/react@18.3.24) - '@radix-ui/react-collection@1.0.3(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-collection@1.0.3(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@babel/runtime': 7.28.2 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.23)(react@18.3.1) - '@radix-ui/react-context': 1.0.1(@types/react@18.3.23)(react@18.3.1) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-slot': 1.0.2(@types/react@18.3.23)(react@18.3.1) + '@babel/runtime': 7.28.3 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.24)(react@18.3.1) + '@radix-ui/react-context': 1.0.1(@types/react@18.3.24)(react@18.3.1) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-slot': 1.0.2(@types/react@18.3.24)(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) optionalDependencies: - '@types/react': 18.3.23 - '@types/react-dom': 18.3.7(@types/react@18.3.23) + '@types/react': 18.3.24 + '@types/react-dom': 18.3.7(@types/react@18.3.24) - '@radix-ui/react-compose-refs@1.0.1(@types/react@18.3.23)(react@18.3.1)': + '@radix-ui/react-compose-refs@1.0.1(@types/react@18.3.24)(react@18.3.1)': dependencies: - '@babel/runtime': 7.28.2 + '@babel/runtime': 7.28.3 react: 18.3.1 optionalDependencies: - '@types/react': 18.3.23 + '@types/react': 18.3.24 - '@radix-ui/react-context@1.0.1(@types/react@18.3.23)(react@18.3.1)': + '@radix-ui/react-context@1.0.1(@types/react@18.3.24)(react@18.3.1)': dependencies: - '@babel/runtime': 7.28.2 + '@babel/runtime': 7.28.3 react: 18.3.1 optionalDependencies: - '@types/react': 18.3.23 + '@types/react': 18.3.24 - '@radix-ui/react-dialog@1.0.5(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-dialog@1.0.5(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@babel/runtime': 7.28.2 + '@babel/runtime': 7.28.3 '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.23)(react@18.3.1) - '@radix-ui/react-context': 1.0.1(@types/react@18.3.23)(react@18.3.1) - '@radix-ui/react-dismissable-layer': 1.0.5(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(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.23)(react@18.3.1) - '@radix-ui/react-focus-scope': 1.0.4(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-id': 1.0.1(@types/react@18.3.23)(react@18.3.1) - '@radix-ui/react-portal': 1.0.4(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(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.7(@types/react@18.3.23))(@types/react@18.3.23)(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.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-slot': 1.0.2(@types/react@18.3.23)(react@18.3.1) - '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.3.23)(react@18.3.1) + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.24)(react@18.3.1) + '@radix-ui/react-context': 1.0.1(@types/react@18.3.24)(react@18.3.1) + '@radix-ui/react-dismissable-layer': 1.0.5(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(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.24)(react@18.3.1) + '@radix-ui/react-focus-scope': 1.0.4(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-id': 1.0.1(@types/react@18.3.24)(react@18.3.1) + '@radix-ui/react-portal': 1.0.4(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(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.7(@types/react@18.3.24))(@types/react@18.3.24)(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.7(@types/react@18.3.24))(@types/react@18.3.24)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-slot': 1.0.2(@types/react@18.3.24)(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.3.24)(react@18.3.1) aria-hidden: 1.2.6 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - react-remove-scroll: 2.5.5(@types/react@18.3.23)(react@18.3.1) + react-remove-scroll: 2.5.5(@types/react@18.3.24)(react@18.3.1) optionalDependencies: - '@types/react': 18.3.23 - '@types/react-dom': 18.3.7(@types/react@18.3.23) + '@types/react': 18.3.24 + '@types/react-dom': 18.3.7(@types/react@18.3.24) - '@radix-ui/react-direction@1.0.1(@types/react@18.3.23)(react@18.3.1)': + '@radix-ui/react-direction@1.0.1(@types/react@18.3.24)(react@18.3.1)': dependencies: - '@babel/runtime': 7.28.2 + '@babel/runtime': 7.28.3 react: 18.3.1 optionalDependencies: - '@types/react': 18.3.23 + '@types/react': 18.3.24 - '@radix-ui/react-dismissable-layer@1.0.5(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-dismissable-layer@1.0.5(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@babel/runtime': 7.28.2 + '@babel/runtime': 7.28.3 '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.23)(react@18.3.1) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(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.23)(react@18.3.1) - '@radix-ui/react-use-escape-keydown': 1.0.3(@types/react@18.3.23)(react@18.3.1) + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.24)(react@18.3.1) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(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.24)(react@18.3.1) + '@radix-ui/react-use-escape-keydown': 1.0.3(@types/react@18.3.24)(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) optionalDependencies: - '@types/react': 18.3.23 - '@types/react-dom': 18.3.7(@types/react@18.3.23) + '@types/react': 18.3.24 + '@types/react-dom': 18.3.7(@types/react@18.3.24) - '@radix-ui/react-dropdown-menu@2.0.6(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-dropdown-menu@2.0.6(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@babel/runtime': 7.28.2 + '@babel/runtime': 7.28.3 '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.23)(react@18.3.1) - '@radix-ui/react-context': 1.0.1(@types/react@18.3.23)(react@18.3.1) - '@radix-ui/react-id': 1.0.1(@types/react@18.3.23)(react@18.3.1) - '@radix-ui/react-menu': 2.0.6(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(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.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.3.23)(react@18.3.1) + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.24)(react@18.3.1) + '@radix-ui/react-context': 1.0.1(@types/react@18.3.24)(react@18.3.1) + '@radix-ui/react-id': 1.0.1(@types/react@18.3.24)(react@18.3.1) + '@radix-ui/react-menu': 2.0.6(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(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.7(@types/react@18.3.24))(@types/react@18.3.24)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.3.24)(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) optionalDependencies: - '@types/react': 18.3.23 - '@types/react-dom': 18.3.7(@types/react@18.3.23) + '@types/react': 18.3.24 + '@types/react-dom': 18.3.7(@types/react@18.3.24) - '@radix-ui/react-focus-guards@1.0.1(@types/react@18.3.23)(react@18.3.1)': + '@radix-ui/react-focus-guards@1.0.1(@types/react@18.3.24)(react@18.3.1)': dependencies: - '@babel/runtime': 7.28.2 + '@babel/runtime': 7.28.3 react: 18.3.1 optionalDependencies: - '@types/react': 18.3.23 + '@types/react': 18.3.24 - '@radix-ui/react-focus-scope@1.0.4(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-focus-scope@1.0.4(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@babel/runtime': 7.28.2 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.23)(react@18.3.1) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(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.23)(react@18.3.1) + '@babel/runtime': 7.28.3 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.24)(react@18.3.1) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(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.24)(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) optionalDependencies: - '@types/react': 18.3.23 - '@types/react-dom': 18.3.7(@types/react@18.3.23) + '@types/react': 18.3.24 + '@types/react-dom': 18.3.7(@types/react@18.3.24) - '@radix-ui/react-id@1.0.1(@types/react@18.3.23)(react@18.3.1)': + '@radix-ui/react-id@1.0.1(@types/react@18.3.24)(react@18.3.1)': dependencies: - '@babel/runtime': 7.28.2 - '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.3.23)(react@18.3.1) + '@babel/runtime': 7.28.3 + '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.3.24)(react@18.3.1) react: 18.3.1 optionalDependencies: - '@types/react': 18.3.23 + '@types/react': 18.3.24 - '@radix-ui/react-menu@2.0.6(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-menu@2.0.6(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@babel/runtime': 7.28.2 + '@babel/runtime': 7.28.3 '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-collection': 1.0.3(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.23)(react@18.3.1) - '@radix-ui/react-context': 1.0.1(@types/react@18.3.23)(react@18.3.1) - '@radix-ui/react-direction': 1.0.1(@types/react@18.3.23)(react@18.3.1) - '@radix-ui/react-dismissable-layer': 1.0.5(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(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.23)(react@18.3.1) - '@radix-ui/react-focus-scope': 1.0.4(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-id': 1.0.1(@types/react@18.3.23)(react@18.3.1) - '@radix-ui/react-popper': 1.1.3(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-portal': 1.0.4(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(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.7(@types/react@18.3.23))(@types/react@18.3.23)(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.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-roving-focus': 1.0.4(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-slot': 1.0.2(@types/react@18.3.23)(react@18.3.1) - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.3.23)(react@18.3.1) + '@radix-ui/react-collection': 1.0.3(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.24)(react@18.3.1) + '@radix-ui/react-context': 1.0.1(@types/react@18.3.24)(react@18.3.1) + '@radix-ui/react-direction': 1.0.1(@types/react@18.3.24)(react@18.3.1) + '@radix-ui/react-dismissable-layer': 1.0.5(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(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.24)(react@18.3.1) + '@radix-ui/react-focus-scope': 1.0.4(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-id': 1.0.1(@types/react@18.3.24)(react@18.3.1) + '@radix-ui/react-popper': 1.1.3(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-portal': 1.0.4(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(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.7(@types/react@18.3.24))(@types/react@18.3.24)(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.7(@types/react@18.3.24))(@types/react@18.3.24)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-roving-focus': 1.0.4(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-slot': 1.0.2(@types/react@18.3.24)(react@18.3.1) + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.3.24)(react@18.3.1) aria-hidden: 1.2.6 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - react-remove-scroll: 2.5.5(@types/react@18.3.23)(react@18.3.1) + react-remove-scroll: 2.5.5(@types/react@18.3.24)(react@18.3.1) optionalDependencies: - '@types/react': 18.3.23 - '@types/react-dom': 18.3.7(@types/react@18.3.23) + '@types/react': 18.3.24 + '@types/react-dom': 18.3.7(@types/react@18.3.24) - '@radix-ui/react-popover@1.0.7(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-popover@1.0.7(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@babel/runtime': 7.28.2 + '@babel/runtime': 7.28.3 '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.23)(react@18.3.1) - '@radix-ui/react-context': 1.0.1(@types/react@18.3.23)(react@18.3.1) - '@radix-ui/react-dismissable-layer': 1.0.5(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(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.23)(react@18.3.1) - '@radix-ui/react-focus-scope': 1.0.4(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-id': 1.0.1(@types/react@18.3.23)(react@18.3.1) - '@radix-ui/react-popper': 1.1.3(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-portal': 1.0.4(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(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.7(@types/react@18.3.23))(@types/react@18.3.23)(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.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-slot': 1.0.2(@types/react@18.3.23)(react@18.3.1) - '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.3.23)(react@18.3.1) + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.24)(react@18.3.1) + '@radix-ui/react-context': 1.0.1(@types/react@18.3.24)(react@18.3.1) + '@radix-ui/react-dismissable-layer': 1.0.5(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(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.24)(react@18.3.1) + '@radix-ui/react-focus-scope': 1.0.4(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-id': 1.0.1(@types/react@18.3.24)(react@18.3.1) + '@radix-ui/react-popper': 1.1.3(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-portal': 1.0.4(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(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.7(@types/react@18.3.24))(@types/react@18.3.24)(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.7(@types/react@18.3.24))(@types/react@18.3.24)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-slot': 1.0.2(@types/react@18.3.24)(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.3.24)(react@18.3.1) aria-hidden: 1.2.6 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - react-remove-scroll: 2.5.5(@types/react@18.3.23)(react@18.3.1) + react-remove-scroll: 2.5.5(@types/react@18.3.24)(react@18.3.1) optionalDependencies: - '@types/react': 18.3.23 - '@types/react-dom': 18.3.7(@types/react@18.3.23) + '@types/react': 18.3.24 + '@types/react-dom': 18.3.7(@types/react@18.3.24) - '@radix-ui/react-popper@1.1.3(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-popper@1.1.3(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@babel/runtime': 7.28.2 + '@babel/runtime': 7.28.3 '@floating-ui/react-dom': 2.1.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-arrow': 1.0.3(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.23)(react@18.3.1) - '@radix-ui/react-context': 1.0.1(@types/react@18.3.23)(react@18.3.1) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(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.23)(react@18.3.1) - '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.3.23)(react@18.3.1) - '@radix-ui/react-use-rect': 1.0.1(@types/react@18.3.23)(react@18.3.1) - '@radix-ui/react-use-size': 1.0.1(@types/react@18.3.23)(react@18.3.1) + '@radix-ui/react-arrow': 1.0.3(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.24)(react@18.3.1) + '@radix-ui/react-context': 1.0.1(@types/react@18.3.24)(react@18.3.1) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(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.24)(react@18.3.1) + '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.3.24)(react@18.3.1) + '@radix-ui/react-use-rect': 1.0.1(@types/react@18.3.24)(react@18.3.1) + '@radix-ui/react-use-size': 1.0.1(@types/react@18.3.24)(react@18.3.1) '@radix-ui/rect': 1.0.1 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) optionalDependencies: - '@types/react': 18.3.23 - '@types/react-dom': 18.3.7(@types/react@18.3.23) + '@types/react': 18.3.24 + '@types/react-dom': 18.3.7(@types/react@18.3.24) - '@radix-ui/react-portal@1.0.4(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-portal@1.0.4(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@babel/runtime': 7.28.2 - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@babel/runtime': 7.28.3 + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(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.23 - '@types/react-dom': 18.3.7(@types/react@18.3.23) + '@types/react': 18.3.24 + '@types/react-dom': 18.3.7(@types/react@18.3.24) - '@radix-ui/react-presence@1.0.1(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(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.7(@types/react@18.3.24))(@types/react@18.3.24)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@babel/runtime': 7.28.2 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.23)(react@18.3.1) - '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.3.23)(react@18.3.1) + '@babel/runtime': 7.28.3 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.24)(react@18.3.1) + '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.3.24)(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) optionalDependencies: - '@types/react': 18.3.23 - '@types/react-dom': 18.3.7(@types/react@18.3.23) + '@types/react': 18.3.24 + '@types/react-dom': 18.3.7(@types/react@18.3.24) - '@radix-ui/react-primitive@1.0.3(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(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.7(@types/react@18.3.24))(@types/react@18.3.24)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@babel/runtime': 7.28.2 - '@radix-ui/react-slot': 1.0.2(@types/react@18.3.23)(react@18.3.1) + '@babel/runtime': 7.28.3 + '@radix-ui/react-slot': 1.0.2(@types/react@18.3.24)(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) optionalDependencies: - '@types/react': 18.3.23 - '@types/react-dom': 18.3.7(@types/react@18.3.23) + '@types/react': 18.3.24 + '@types/react-dom': 18.3.7(@types/react@18.3.24) - '@radix-ui/react-progress@1.0.3(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-progress@1.0.3(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@babel/runtime': 7.28.2 - '@radix-ui/react-context': 1.0.1(@types/react@18.3.23)(react@18.3.1) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@babel/runtime': 7.28.3 + '@radix-ui/react-context': 1.0.1(@types/react@18.3.24)(react@18.3.1) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(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.23 - '@types/react-dom': 18.3.7(@types/react@18.3.23) + '@types/react': 18.3.24 + '@types/react-dom': 18.3.7(@types/react@18.3.24) - '@radix-ui/react-radio-group@1.1.3(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-radio-group@1.1.3(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@babel/runtime': 7.28.2 + '@babel/runtime': 7.28.3 '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.23)(react@18.3.1) - '@radix-ui/react-context': 1.0.1(@types/react@18.3.23)(react@18.3.1) - '@radix-ui/react-direction': 1.0.1(@types/react@18.3.23)(react@18.3.1) - '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(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.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-roving-focus': 1.0.4(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.3.23)(react@18.3.1) - '@radix-ui/react-use-previous': 1.0.1(@types/react@18.3.23)(react@18.3.1) - '@radix-ui/react-use-size': 1.0.1(@types/react@18.3.23)(react@18.3.1) + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.24)(react@18.3.1) + '@radix-ui/react-context': 1.0.1(@types/react@18.3.24)(react@18.3.1) + '@radix-ui/react-direction': 1.0.1(@types/react@18.3.24)(react@18.3.1) + '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(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.7(@types/react@18.3.24))(@types/react@18.3.24)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-roving-focus': 1.0.4(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.3.24)(react@18.3.1) + '@radix-ui/react-use-previous': 1.0.1(@types/react@18.3.24)(react@18.3.1) + '@radix-ui/react-use-size': 1.0.1(@types/react@18.3.24)(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) optionalDependencies: - '@types/react': 18.3.23 - '@types/react-dom': 18.3.7(@types/react@18.3.23) + '@types/react': 18.3.24 + '@types/react-dom': 18.3.7(@types/react@18.3.24) - '@radix-ui/react-roving-focus@1.0.4(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-roving-focus@1.0.4(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@babel/runtime': 7.28.2 + '@babel/runtime': 7.28.3 '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-collection': 1.0.3(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.23)(react@18.3.1) - '@radix-ui/react-context': 1.0.1(@types/react@18.3.23)(react@18.3.1) - '@radix-ui/react-direction': 1.0.1(@types/react@18.3.23)(react@18.3.1) - '@radix-ui/react-id': 1.0.1(@types/react@18.3.23)(react@18.3.1) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(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.23)(react@18.3.1) - '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.3.23)(react@18.3.1) + '@radix-ui/react-collection': 1.0.3(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.24)(react@18.3.1) + '@radix-ui/react-context': 1.0.1(@types/react@18.3.24)(react@18.3.1) + '@radix-ui/react-direction': 1.0.1(@types/react@18.3.24)(react@18.3.1) + '@radix-ui/react-id': 1.0.1(@types/react@18.3.24)(react@18.3.1) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(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.24)(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.3.24)(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) optionalDependencies: - '@types/react': 18.3.23 - '@types/react-dom': 18.3.7(@types/react@18.3.23) + '@types/react': 18.3.24 + '@types/react-dom': 18.3.7(@types/react@18.3.24) - '@radix-ui/react-scroll-area@1.0.5(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-scroll-area@1.0.5(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@babel/runtime': 7.28.2 + '@babel/runtime': 7.28.3 '@radix-ui/number': 1.0.1 '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.23)(react@18.3.1) - '@radix-ui/react-context': 1.0.1(@types/react@18.3.23)(react@18.3.1) - '@radix-ui/react-direction': 1.0.1(@types/react@18.3.23)(react@18.3.1) - '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(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.7(@types/react@18.3.23))(@types/react@18.3.23)(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.23)(react@18.3.1) - '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.3.23)(react@18.3.1) + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.24)(react@18.3.1) + '@radix-ui/react-context': 1.0.1(@types/react@18.3.24)(react@18.3.1) + '@radix-ui/react-direction': 1.0.1(@types/react@18.3.24)(react@18.3.1) + '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(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.7(@types/react@18.3.24))(@types/react@18.3.24)(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.24)(react@18.3.1) + '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.3.24)(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) optionalDependencies: - '@types/react': 18.3.23 - '@types/react-dom': 18.3.7(@types/react@18.3.23) + '@types/react': 18.3.24 + '@types/react-dom': 18.3.7(@types/react@18.3.24) - '@radix-ui/react-separator@1.0.3(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-separator@1.0.3(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@babel/runtime': 7.28.2 - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@babel/runtime': 7.28.3 + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(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.23 - '@types/react-dom': 18.3.7(@types/react@18.3.23) + '@types/react': 18.3.24 + '@types/react-dom': 18.3.7(@types/react@18.3.24) - '@radix-ui/react-slot@1.0.2(@types/react@18.3.23)(react@18.3.1)': + '@radix-ui/react-slot@1.0.2(@types/react@18.3.24)(react@18.3.1)': dependencies: - '@babel/runtime': 7.28.2 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.23)(react@18.3.1) + '@babel/runtime': 7.28.3 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.24)(react@18.3.1) react: 18.3.1 optionalDependencies: - '@types/react': 18.3.23 + '@types/react': 18.3.24 - '@radix-ui/react-switch@1.0.3(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-switch@1.0.3(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@babel/runtime': 7.28.2 + '@babel/runtime': 7.28.3 '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.23)(react@18.3.1) - '@radix-ui/react-context': 1.0.1(@types/react@18.3.23)(react@18.3.1) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.3.23)(react@18.3.1) - '@radix-ui/react-use-previous': 1.0.1(@types/react@18.3.23)(react@18.3.1) - '@radix-ui/react-use-size': 1.0.1(@types/react@18.3.23)(react@18.3.1) + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.24)(react@18.3.1) + '@radix-ui/react-context': 1.0.1(@types/react@18.3.24)(react@18.3.1) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.3.24)(react@18.3.1) + '@radix-ui/react-use-previous': 1.0.1(@types/react@18.3.24)(react@18.3.1) + '@radix-ui/react-use-size': 1.0.1(@types/react@18.3.24)(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) optionalDependencies: - '@types/react': 18.3.23 - '@types/react-dom': 18.3.7(@types/react@18.3.23) + '@types/react': 18.3.24 + '@types/react-dom': 18.3.7(@types/react@18.3.24) - '@radix-ui/react-tabs@1.0.4(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-tabs@1.0.4(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@babel/runtime': 7.28.2 + '@babel/runtime': 7.28.3 '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-context': 1.0.1(@types/react@18.3.23)(react@18.3.1) - '@radix-ui/react-direction': 1.0.1(@types/react@18.3.23)(react@18.3.1) - '@radix-ui/react-id': 1.0.1(@types/react@18.3.23)(react@18.3.1) - '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(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.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-roving-focus': 1.0.4(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.3.23)(react@18.3.1) + '@radix-ui/react-context': 1.0.1(@types/react@18.3.24)(react@18.3.1) + '@radix-ui/react-direction': 1.0.1(@types/react@18.3.24)(react@18.3.1) + '@radix-ui/react-id': 1.0.1(@types/react@18.3.24)(react@18.3.1) + '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(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.7(@types/react@18.3.24))(@types/react@18.3.24)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-roving-focus': 1.0.4(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.3.24)(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) optionalDependencies: - '@types/react': 18.3.23 - '@types/react-dom': 18.3.7(@types/react@18.3.23) + '@types/react': 18.3.24 + '@types/react-dom': 18.3.7(@types/react@18.3.24) - '@radix-ui/react-toggle-group@1.0.4(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-toggle-group@1.0.4(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@babel/runtime': 7.28.2 + '@babel/runtime': 7.28.3 '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-context': 1.0.1(@types/react@18.3.23)(react@18.3.1) - '@radix-ui/react-direction': 1.0.1(@types/react@18.3.23)(react@18.3.1) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-roving-focus': 1.0.4(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-toggle': 1.0.3(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.3.23)(react@18.3.1) + '@radix-ui/react-context': 1.0.1(@types/react@18.3.24)(react@18.3.1) + '@radix-ui/react-direction': 1.0.1(@types/react@18.3.24)(react@18.3.1) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-roving-focus': 1.0.4(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-toggle': 1.0.3(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.3.24)(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) optionalDependencies: - '@types/react': 18.3.23 - '@types/react-dom': 18.3.7(@types/react@18.3.23) + '@types/react': 18.3.24 + '@types/react-dom': 18.3.7(@types/react@18.3.24) - '@radix-ui/react-toggle@1.0.3(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-toggle@1.0.3(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@babel/runtime': 7.28.2 + '@babel/runtime': 7.28.3 '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.3.23)(react@18.3.1) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.3.24)(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) optionalDependencies: - '@types/react': 18.3.23 - '@types/react-dom': 18.3.7(@types/react@18.3.23) + '@types/react': 18.3.24 + '@types/react-dom': 18.3.7(@types/react@18.3.24) - '@radix-ui/react-toolbar@1.0.4(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-toolbar@1.0.4(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@babel/runtime': 7.28.2 + '@babel/runtime': 7.28.3 '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-context': 1.0.1(@types/react@18.3.23)(react@18.3.1) - '@radix-ui/react-direction': 1.0.1(@types/react@18.3.23)(react@18.3.1) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-roving-focus': 1.0.4(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-separator': 1.0.3(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-toggle-group': 1.0.4(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-context': 1.0.1(@types/react@18.3.24)(react@18.3.1) + '@radix-ui/react-direction': 1.0.1(@types/react@18.3.24)(react@18.3.1) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-roving-focus': 1.0.4(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-separator': 1.0.3(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-toggle-group': 1.0.4(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(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.23 - '@types/react-dom': 18.3.7(@types/react@18.3.23) + '@types/react': 18.3.24 + '@types/react-dom': 18.3.7(@types/react@18.3.24) - '@radix-ui/react-tooltip@1.0.7(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-tooltip@1.0.7(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@babel/runtime': 7.28.2 + '@babel/runtime': 7.28.3 '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.23)(react@18.3.1) - '@radix-ui/react-context': 1.0.1(@types/react@18.3.23)(react@18.3.1) - '@radix-ui/react-dismissable-layer': 1.0.5(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-id': 1.0.1(@types/react@18.3.23)(react@18.3.1) - '@radix-ui/react-popper': 1.1.3(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-portal': 1.0.4(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(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.7(@types/react@18.3.23))(@types/react@18.3.23)(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.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-slot': 1.0.2(@types/react@18.3.23)(react@18.3.1) - '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.3.23)(react@18.3.1) - '@radix-ui/react-visually-hidden': 1.0.3(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.24)(react@18.3.1) + '@radix-ui/react-context': 1.0.1(@types/react@18.3.24)(react@18.3.1) + '@radix-ui/react-dismissable-layer': 1.0.5(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-id': 1.0.1(@types/react@18.3.24)(react@18.3.1) + '@radix-ui/react-popper': 1.1.3(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-portal': 1.0.4(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(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.7(@types/react@18.3.24))(@types/react@18.3.24)(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.7(@types/react@18.3.24))(@types/react@18.3.24)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-slot': 1.0.2(@types/react@18.3.24)(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.3.24)(react@18.3.1) + '@radix-ui/react-visually-hidden': 1.0.3(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(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.23 - '@types/react-dom': 18.3.7(@types/react@18.3.23) + '@types/react': 18.3.24 + '@types/react-dom': 18.3.7(@types/react@18.3.24) - '@radix-ui/react-use-callback-ref@1.0.1(@types/react@18.3.23)(react@18.3.1)': + '@radix-ui/react-use-callback-ref@1.0.1(@types/react@18.3.24)(react@18.3.1)': dependencies: - '@babel/runtime': 7.28.2 + '@babel/runtime': 7.28.3 react: 18.3.1 optionalDependencies: - '@types/react': 18.3.23 + '@types/react': 18.3.24 - '@radix-ui/react-use-controllable-state@1.0.1(@types/react@18.3.23)(react@18.3.1)': + '@radix-ui/react-use-controllable-state@1.0.1(@types/react@18.3.24)(react@18.3.1)': dependencies: - '@babel/runtime': 7.28.2 - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.3.23)(react@18.3.1) + '@babel/runtime': 7.28.3 + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.3.24)(react@18.3.1) react: 18.3.1 optionalDependencies: - '@types/react': 18.3.23 + '@types/react': 18.3.24 - '@radix-ui/react-use-escape-keydown@1.0.3(@types/react@18.3.23)(react@18.3.1)': + '@radix-ui/react-use-escape-keydown@1.0.3(@types/react@18.3.24)(react@18.3.1)': dependencies: - '@babel/runtime': 7.28.2 - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.3.23)(react@18.3.1) + '@babel/runtime': 7.28.3 + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.3.24)(react@18.3.1) react: 18.3.1 optionalDependencies: - '@types/react': 18.3.23 + '@types/react': 18.3.24 - '@radix-ui/react-use-layout-effect@1.0.1(@types/react@18.3.23)(react@18.3.1)': + '@radix-ui/react-use-layout-effect@1.0.1(@types/react@18.3.24)(react@18.3.1)': dependencies: - '@babel/runtime': 7.28.2 + '@babel/runtime': 7.28.3 react: 18.3.1 optionalDependencies: - '@types/react': 18.3.23 + '@types/react': 18.3.24 - '@radix-ui/react-use-previous@1.0.1(@types/react@18.3.23)(react@18.3.1)': + '@radix-ui/react-use-previous@1.0.1(@types/react@18.3.24)(react@18.3.1)': dependencies: - '@babel/runtime': 7.28.2 + '@babel/runtime': 7.28.3 react: 18.3.1 optionalDependencies: - '@types/react': 18.3.23 + '@types/react': 18.3.24 - '@radix-ui/react-use-rect@1.0.1(@types/react@18.3.23)(react@18.3.1)': + '@radix-ui/react-use-rect@1.0.1(@types/react@18.3.24)(react@18.3.1)': dependencies: - '@babel/runtime': 7.28.2 + '@babel/runtime': 7.28.3 '@radix-ui/rect': 1.0.1 react: 18.3.1 optionalDependencies: - '@types/react': 18.3.23 + '@types/react': 18.3.24 - '@radix-ui/react-use-size@1.0.1(@types/react@18.3.23)(react@18.3.1)': + '@radix-ui/react-use-size@1.0.1(@types/react@18.3.24)(react@18.3.1)': dependencies: - '@babel/runtime': 7.28.2 - '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.3.23)(react@18.3.1) + '@babel/runtime': 7.28.3 + '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.3.24)(react@18.3.1) react: 18.3.1 optionalDependencies: - '@types/react': 18.3.23 + '@types/react': 18.3.24 - '@radix-ui/react-visually-hidden@1.0.3(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-visually-hidden@1.0.3(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@babel/runtime': 7.28.2 - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@babel/runtime': 7.28.3 + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(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.23 - '@types/react-dom': 18.3.7(@types/react@18.3.23) + '@types/react': 18.3.24 + '@types/react-dom': 18.3.7(@types/react@18.3.24) '@radix-ui/rect@1.0.1': dependencies: - '@babel/runtime': 7.28.2 + '@babel/runtime': 7.28.3 '@react-dnd/asap@5.0.2': {} @@ -8860,7 +8899,7 @@ snapshots: '@react-dnd/shallowequal@4.0.2': {} - '@reduxjs/toolkit@1.9.7(react-redux@8.1.3(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(redux@4.2.1))(react@18.3.1)': + '@reduxjs/toolkit@1.9.7(react-redux@8.1.3(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(redux@4.2.1))(react@18.3.1)': dependencies: immer: 9.0.21 redux: 4.2.1 @@ -8868,71 +8907,71 @@ snapshots: reselect: 4.1.8 optionalDependencies: react: 18.3.1 - react-redux: 8.1.3(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(redux@4.2.1) + react-redux: 8.1.3(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(redux@4.2.1) '@remix-run/router@1.23.0': {} - '@rollup/rollup-android-arm-eabi@4.46.2': + '@rollup/rollup-android-arm-eabi@4.48.1': optional: true - '@rollup/rollup-android-arm64@4.46.2': + '@rollup/rollup-android-arm64@4.48.1': optional: true - '@rollup/rollup-darwin-arm64@4.46.2': + '@rollup/rollup-darwin-arm64@4.48.1': optional: true - '@rollup/rollup-darwin-x64@4.46.2': + '@rollup/rollup-darwin-x64@4.48.1': optional: true - '@rollup/rollup-freebsd-arm64@4.46.2': + '@rollup/rollup-freebsd-arm64@4.48.1': optional: true - '@rollup/rollup-freebsd-x64@4.46.2': + '@rollup/rollup-freebsd-x64@4.48.1': optional: true - '@rollup/rollup-linux-arm-gnueabihf@4.46.2': + '@rollup/rollup-linux-arm-gnueabihf@4.48.1': optional: true - '@rollup/rollup-linux-arm-musleabihf@4.46.2': + '@rollup/rollup-linux-arm-musleabihf@4.48.1': optional: true - '@rollup/rollup-linux-arm64-gnu@4.46.2': + '@rollup/rollup-linux-arm64-gnu@4.48.1': optional: true - '@rollup/rollup-linux-arm64-musl@4.46.2': + '@rollup/rollup-linux-arm64-musl@4.48.1': optional: true - '@rollup/rollup-linux-loongarch64-gnu@4.46.2': + '@rollup/rollup-linux-loongarch64-gnu@4.48.1': optional: true - '@rollup/rollup-linux-ppc64-gnu@4.46.2': + '@rollup/rollup-linux-ppc64-gnu@4.48.1': optional: true - '@rollup/rollup-linux-riscv64-gnu@4.46.2': + '@rollup/rollup-linux-riscv64-gnu@4.48.1': optional: true - '@rollup/rollup-linux-riscv64-musl@4.46.2': + '@rollup/rollup-linux-riscv64-musl@4.48.1': optional: true - '@rollup/rollup-linux-s390x-gnu@4.46.2': + '@rollup/rollup-linux-s390x-gnu@4.48.1': optional: true - '@rollup/rollup-linux-x64-gnu@4.46.2': + '@rollup/rollup-linux-x64-gnu@4.48.1': optional: true - '@rollup/rollup-linux-x64-musl@4.46.2': + '@rollup/rollup-linux-x64-musl@4.48.1': optional: true - '@rollup/rollup-win32-arm64-msvc@4.46.2': + '@rollup/rollup-win32-arm64-msvc@4.48.1': optional: true - '@rollup/rollup-win32-ia32-msvc@4.46.2': + '@rollup/rollup-win32-ia32-msvc@4.48.1': optional: true - '@rollup/rollup-win32-x64-msvc@4.46.2': + '@rollup/rollup-win32-x64-msvc@4.48.1': optional: true - '@rushstack/node-core-library@5.13.0(@types/node@20.19.9)': + '@rushstack/node-core-library@5.13.0(@types/node@20.19.11)': dependencies: ajv: 8.13.0 ajv-draft-04: 1.0.0(ajv@8.13.0) @@ -8943,18 +8982,18 @@ snapshots: resolve: 1.22.10 semver: 7.5.4 optionalDependencies: - '@types/node': 20.19.9 + '@types/node': 20.19.11 - '@rushstack/terminal@0.15.2(@types/node@20.19.9)': + '@rushstack/terminal@0.15.2(@types/node@20.19.11)': dependencies: - '@rushstack/node-core-library': 5.13.0(@types/node@20.19.9) + '@rushstack/node-core-library': 5.13.0(@types/node@20.19.11) supports-color: 8.1.1 optionalDependencies: - '@types/node': 20.19.9 + '@types/node': 20.19.11 - '@rushstack/ts-command-line@4.23.7(@types/node@20.19.9)': + '@rushstack/ts-command-line@4.23.7(@types/node@20.19.11)': dependencies: - '@rushstack/terminal': 0.15.2(@types/node@20.19.9) + '@rushstack/terminal': 0.15.2(@types/node@20.19.11) '@types/argparse': 1.0.38 argparse: 1.0.10 string-argv: 0.3.2 @@ -9287,7 +9326,7 @@ snapshots: '@smithy/property-provider': 4.0.5 '@smithy/smithy-client': 4.4.10 '@smithy/types': 4.3.2 - bowser: 2.11.0 + bowser: 2.12.1 tslib: 2.8.1 '@smithy/util-defaults-mode-node@4.0.26': @@ -9352,33 +9391,33 @@ snapshots: '@smithy/types': 4.3.2 tslib: 2.8.1 - '@strapi/admin@5.21.0(@babel/runtime@7.28.2)(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.11.2)(@codemirror/lint@6.8.5)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/theme-one-dark@6.1.3)(@codemirror/view@6.38.1)(@strapi/data-transfer@5.21.0(@types/node@20.19.9)(pg@8.8.0)(typescript@5.4.4))(@types/hoist-non-react-statics@3.3.7(@types/react@18.3.23))(@types/node@20.19.9)(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(codemirror@5.65.19)(debug@4.3.4)(pg@8.8.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@6.30.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1))': + '@strapi/admin@5.21.0(@babel/runtime@7.28.3)(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.11.3)(@codemirror/lint@6.8.5)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/theme-one-dark@6.1.3)(@codemirror/view@6.38.1)(@strapi/data-transfer@5.21.0(@types/node@20.19.11)(pg@8.8.0)(typescript@5.4.4))(@types/hoist-non-react-statics@3.3.7(@types/react@18.3.24))(@types/node@20.19.11)(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(codemirror@5.65.20)(debug@4.3.4)(pg@8.8.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@6.30.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1))': dependencies: '@casl/ability': 6.5.0 '@internationalized/date': 3.5.4 - '@radix-ui/react-context': 1.0.1(@types/react@18.3.23)(react@18.3.1) - '@radix-ui/react-toolbar': 1.0.4(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@reduxjs/toolkit': 1.9.7(react-redux@8.1.3(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(redux@4.2.1))(react@18.3.1) - '@strapi/data-transfer': 5.21.0(@types/node@20.19.9)(pg@8.8.0)(typescript@5.9.2) - '@strapi/design-system': 2.0.0-rc.29(@babel/runtime@7.28.2)(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.11.2)(@codemirror/lint@6.8.5)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/theme-one-dark@6.1.3)(@codemirror/view@6.38.1)(@strapi/icons@2.0.0-rc.29(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)))(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(codemirror@5.65.19)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) + '@radix-ui/react-context': 1.0.1(@types/react@18.3.24)(react@18.3.1) + '@radix-ui/react-toolbar': 1.0.4(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@reduxjs/toolkit': 1.9.7(react-redux@8.1.3(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(redux@4.2.1))(react@18.3.1) + '@strapi/data-transfer': 5.21.0(@types/node@20.19.11)(pg@8.8.0)(typescript@5.9.2) + '@strapi/design-system': 2.0.0-rc.29(@babel/runtime@7.28.3)(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.11.3)(@codemirror/lint@6.8.5)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/theme-one-dark@6.1.3)(@codemirror/view@6.38.1)(@strapi/icons@2.0.0-rc.29(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)))(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(codemirror@5.65.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) '@strapi/icons': 2.0.0-rc.29(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) '@strapi/permissions': 5.21.0 - '@strapi/types': 5.21.0(@types/node@20.19.9)(pg@8.8.0)(typescript@5.9.2) + '@strapi/types': 5.21.0(@types/node@20.19.11)(pg@8.8.0)(typescript@5.4.4) '@strapi/typescript-utils': 5.21.0 '@strapi/utils': 5.21.0 '@testing-library/dom': 10.1.0 - '@testing-library/react': 15.0.7(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@testing-library/react': 15.0.7(@types/react@18.3.24)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@testing-library/user-event': 14.5.2(@testing-library/dom@10.1.0) axios: 1.8.4(debug@4.3.4) bcryptjs: 2.4.3 boxen: 5.1.2 chalk: 4.1.2 - codemirror5: codemirror@5.65.19 + codemirror5: codemirror@5.65.20 cross-env: 7.0.3 date-fns: 2.30.0 execa: 5.1.1 fast-deep-equal: 3.1.3 - formik: 2.4.5(@types/react@18.3.23)(react@18.3.1) + formik: 2.4.5(@types/react@18.3.24)(react@18.3.1) fractional-indexing: 3.2.0 fs-extra: 11.2.0 highlight.js: 10.7.3 @@ -9401,15 +9440,15 @@ snapshots: punycode: 2.3.1 qs: 6.11.1 react: 18.3.1 - react-dnd: 16.0.1(@types/hoist-non-react-statics@3.3.7(@types/react@18.3.23))(@types/node@20.19.9)(@types/react@18.3.23)(react@18.3.1) + react-dnd: 16.0.1(@types/hoist-non-react-statics@3.3.7(@types/react@18.3.24))(@types/node@20.19.11)(@types/react@18.3.24)(react@18.3.1) react-dnd-html5-backend: 16.0.1 react-dom: 18.3.1(react@18.3.1) react-intl: 6.6.2(react@18.3.1)(typescript@5.4.4) react-is: 18.3.1 react-query: 3.39.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - react-redux: 8.1.3(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(redux@4.2.1) + react-redux: 8.1.3(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(redux@4.2.1) react-router-dom: 6.30.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - react-select: 5.8.0(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react-select: 5.8.0(@types/react@18.3.24)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react-window: 1.8.10(react-dom@18.3.1(react@18.3.1))(react@18.3.1) rimraf: 5.0.5 sanitize-html: 2.13.0 @@ -9476,20 +9515,20 @@ snapshots: - debug - supports-color - '@strapi/content-manager@5.21.0(09a34515f7266fe9956ed4c11e0f16ba)': + '@strapi/content-manager@5.21.0(a3e5e00edca7e118a3d6b54d1e59117c)': dependencies: '@dnd-kit/core': 6.3.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@dnd-kit/sortable': 10.0.0(@dnd-kit/core@6.3.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1) '@dnd-kit/utilities': 3.2.2(react@18.3.1) - '@radix-ui/react-toolbar': 1.0.4(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@reduxjs/toolkit': 1.9.7(react-redux@8.1.3(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(redux@4.2.1))(react@18.3.1) + '@radix-ui/react-toolbar': 1.0.4(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@reduxjs/toolkit': 1.9.7(react-redux@8.1.3(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(redux@4.2.1))(react@18.3.1) '@sindresorhus/slugify': 1.1.0 - '@strapi/admin': 5.21.0(@babel/runtime@7.28.2)(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.11.2)(@codemirror/lint@6.8.5)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/theme-one-dark@6.1.3)(@codemirror/view@6.38.1)(@strapi/data-transfer@5.21.0(@types/node@20.19.9)(pg@8.8.0)(typescript@5.4.4))(@types/hoist-non-react-statics@3.3.7(@types/react@18.3.23))(@types/node@20.19.9)(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(codemirror@5.65.19)(debug@4.3.4)(pg@8.8.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@6.30.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) - '@strapi/design-system': 2.0.0-rc.29(@babel/runtime@7.28.2)(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.11.2)(@codemirror/lint@6.8.5)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/theme-one-dark@6.1.3)(@codemirror/view@6.38.1)(@strapi/icons@2.0.0-rc.29(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)))(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(codemirror@5.65.19)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) + '@strapi/admin': 5.21.0(@babel/runtime@7.28.3)(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.11.3)(@codemirror/lint@6.8.5)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/theme-one-dark@6.1.3)(@codemirror/view@6.38.1)(@strapi/data-transfer@5.21.0(@types/node@20.19.11)(pg@8.8.0)(typescript@5.4.4))(@types/hoist-non-react-statics@3.3.7(@types/react@18.3.24))(@types/node@20.19.11)(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(codemirror@5.65.20)(debug@4.3.4)(pg@8.8.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@6.30.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) + '@strapi/design-system': 2.0.0-rc.29(@babel/runtime@7.28.3)(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.11.3)(@codemirror/lint@6.8.5)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/theme-one-dark@6.1.3)(@codemirror/view@6.38.1)(@strapi/icons@2.0.0-rc.29(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)))(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(codemirror@5.65.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) '@strapi/icons': 2.0.0-rc.29(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) - '@strapi/types': 5.21.0(@types/node@20.19.9)(pg@8.8.0)(typescript@5.9.2) + '@strapi/types': 5.21.0(@types/node@20.19.11)(pg@8.8.0)(typescript@5.9.2) '@strapi/utils': 5.21.0 - codemirror5: codemirror@5.65.19 + codemirror5: codemirror@5.65.20 date-fns: 2.30.0 fractional-indexing: 3.2.0 highlight.js: 10.7.3 @@ -9509,13 +9548,13 @@ snapshots: prismjs: 1.30.0 qs: 6.11.1 react: 18.3.1 - react-dnd: 16.0.1(@types/hoist-non-react-statics@3.3.7(@types/react@18.3.23))(@types/node@20.19.9)(@types/react@18.3.23)(react@18.3.1) + react-dnd: 16.0.1(@types/hoist-non-react-statics@3.3.7(@types/react@18.3.24))(@types/node@20.19.11)(@types/react@18.3.24)(react@18.3.1) react-dnd-html5-backend: 16.0.1 react-dom: 18.3.1(react@18.3.1) react-helmet: 6.1.0(react@18.3.1) react-intl: 6.6.2(react@18.3.1)(typescript@5.9.2) react-query: 3.39.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - react-redux: 8.1.3(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(redux@4.2.1) + react-redux: 8.1.3(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(redux@4.2.1) react-router-dom: 6.30.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react-window: 1.8.10(react-dom@18.3.1(react@18.3.1))(react@18.3.1) sanitize-html: 2.13.0 @@ -9550,25 +9589,25 @@ snapshots: - tedious - typescript - '@strapi/content-releases@5.21.0(7e0583346370238bee0a571c4a2a8918)': + '@strapi/content-releases@5.21.0(49cc319b97b6dcf67d1f87987412f97a)': dependencies: - '@reduxjs/toolkit': 1.9.7(react-redux@8.1.3(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(redux@4.2.1))(react@18.3.1) - '@strapi/admin': 5.21.0(@babel/runtime@7.28.2)(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.11.2)(@codemirror/lint@6.8.5)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/theme-one-dark@6.1.3)(@codemirror/view@6.38.1)(@strapi/data-transfer@5.21.0(@types/node@20.19.9)(pg@8.8.0)(typescript@5.4.4))(@types/hoist-non-react-statics@3.3.7(@types/react@18.3.23))(@types/node@20.19.9)(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(codemirror@5.65.19)(debug@4.3.4)(pg@8.8.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@6.30.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) - '@strapi/content-manager': 5.21.0(09a34515f7266fe9956ed4c11e0f16ba) - '@strapi/database': 5.21.0(@types/node@20.19.9)(pg@8.8.0) - '@strapi/design-system': 2.0.0-rc.29(@babel/runtime@7.28.2)(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.11.2)(@codemirror/lint@6.8.5)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/theme-one-dark@6.1.3)(@codemirror/view@6.38.1)(@strapi/icons@2.0.0-rc.29(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)))(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(codemirror@5.65.19)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) + '@reduxjs/toolkit': 1.9.7(react-redux@8.1.3(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(redux@4.2.1))(react@18.3.1) + '@strapi/admin': 5.21.0(@babel/runtime@7.28.3)(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.11.3)(@codemirror/lint@6.8.5)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/theme-one-dark@6.1.3)(@codemirror/view@6.38.1)(@strapi/data-transfer@5.21.0(@types/node@20.19.11)(pg@8.8.0)(typescript@5.4.4))(@types/hoist-non-react-statics@3.3.7(@types/react@18.3.24))(@types/node@20.19.11)(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(codemirror@5.65.20)(debug@4.3.4)(pg@8.8.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@6.30.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) + '@strapi/content-manager': 5.21.0(a3e5e00edca7e118a3d6b54d1e59117c) + '@strapi/database': 5.21.0(@types/node@20.19.11)(pg@8.8.0) + '@strapi/design-system': 2.0.0-rc.29(@babel/runtime@7.28.3)(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.11.3)(@codemirror/lint@6.8.5)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/theme-one-dark@6.1.3)(@codemirror/view@6.38.1)(@strapi/icons@2.0.0-rc.29(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)))(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(codemirror@5.65.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) '@strapi/icons': 2.0.0-rc.29(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) - '@strapi/types': 5.21.0(@types/node@20.19.9)(pg@8.8.0)(typescript@5.9.2) + '@strapi/types': 5.21.0(@types/node@20.19.11)(pg@8.8.0)(typescript@5.4.4) '@strapi/utils': 5.21.0 date-fns: 2.30.0 date-fns-tz: 2.0.1(date-fns@2.30.0) - formik: 2.4.5(@types/react@18.3.23)(react@18.3.1) + formik: 2.4.5(@types/react@18.3.24)(react@18.3.1) lodash: 4.17.21 qs: 6.11.1 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) react-intl: 6.6.2(react@18.3.1)(typescript@5.4.4) - react-redux: 8.1.3(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(redux@4.2.1) + react-redux: 8.1.3(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(redux@4.2.1) react-router-dom: 6.30.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) styled-components: 6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1) yup: 0.32.9 @@ -9597,16 +9636,16 @@ snapshots: - tedious - typescript - '@strapi/content-type-builder@5.21.0(ea66cbd5889d9c139873f4fdfbc7149b)': + '@strapi/content-type-builder@5.21.0(4a7a746baac11fe4ef913f9df888e21b)': dependencies: '@dnd-kit/core': 6.3.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@dnd-kit/modifiers': 9.0.0(@dnd-kit/core@6.3.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1) '@dnd-kit/sortable': 10.0.0(@dnd-kit/core@6.3.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1) '@dnd-kit/utilities': 3.2.2(react@18.3.1) - '@reduxjs/toolkit': 1.9.7(react-redux@8.1.3(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(redux@4.2.1))(react@18.3.1) + '@reduxjs/toolkit': 1.9.7(react-redux@8.1.3(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(redux@4.2.1))(react@18.3.1) '@sindresorhus/slugify': 1.1.0 - '@strapi/admin': 5.21.0(@babel/runtime@7.28.2)(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.11.2)(@codemirror/lint@6.8.5)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/theme-one-dark@6.1.3)(@codemirror/view@6.38.1)(@strapi/data-transfer@5.21.0(@types/node@20.19.9)(pg@8.8.0)(typescript@5.4.4))(@types/hoist-non-react-statics@3.3.7(@types/react@18.3.23))(@types/node@20.19.9)(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(codemirror@5.65.19)(debug@4.3.4)(pg@8.8.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@6.30.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) - '@strapi/design-system': 2.0.0-rc.29(@babel/runtime@7.28.2)(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.11.2)(@codemirror/lint@6.8.5)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/theme-one-dark@6.1.3)(@codemirror/view@6.38.1)(@strapi/icons@2.0.0-rc.29(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)))(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(codemirror@5.65.19)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) + '@strapi/admin': 5.21.0(@babel/runtime@7.28.3)(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.11.3)(@codemirror/lint@6.8.5)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/theme-one-dark@6.1.3)(@codemirror/view@6.38.1)(@strapi/data-transfer@5.21.0(@types/node@20.19.11)(pg@8.8.0)(typescript@5.4.4))(@types/hoist-non-react-statics@3.3.7(@types/react@18.3.24))(@types/node@20.19.11)(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(codemirror@5.65.20)(debug@4.3.4)(pg@8.8.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@6.30.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) + '@strapi/design-system': 2.0.0-rc.29(@babel/runtime@7.28.3)(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.11.3)(@codemirror/lint@6.8.5)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/theme-one-dark@6.1.3)(@codemirror/view@6.38.1)(@strapi/icons@2.0.0-rc.29(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)))(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(codemirror@5.65.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) '@strapi/generators': 5.21.0 '@strapi/icons': 2.0.0-rc.29(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) '@strapi/utils': 5.21.0 @@ -9619,7 +9658,7 @@ snapshots: react: 18.3.1 react-dom: 18.3.1(react@18.3.1) react-intl: 6.6.2(react@18.3.1)(typescript@5.4.4) - react-redux: 8.1.3(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(redux@4.2.1) + react-redux: 8.1.3(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(redux@4.2.1) react-router-dom: 6.30.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) styled-components: 6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1) yup: 0.32.9 @@ -9640,17 +9679,17 @@ snapshots: - redux - typescript - '@strapi/core@5.21.0(@babel/runtime@7.28.2)(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.11.2)(@codemirror/lint@6.8.5)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/theme-one-dark@6.1.3)(@codemirror/view@6.38.1)(@strapi/data-transfer@5.21.0(@types/node@20.19.9)(pg@8.8.0)(typescript@5.4.4))(@types/hoist-non-react-statics@3.3.7(@types/react@18.3.23))(@types/node@20.19.9)(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(codemirror@5.65.19)(pg@8.8.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@6.30.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1))': + '@strapi/core@5.21.0(@babel/runtime@7.28.3)(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.11.3)(@codemirror/lint@6.8.5)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/theme-one-dark@6.1.3)(@codemirror/view@6.38.1)(@strapi/data-transfer@5.21.0(@types/node@20.19.11)(pg@8.8.0)(typescript@5.4.4))(@types/hoist-non-react-statics@3.3.7(@types/react@18.3.24))(@types/node@20.19.11)(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(codemirror@5.65.20)(pg@8.8.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@6.30.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1))': dependencies: '@koa/cors': 5.0.0 '@koa/router': 12.0.2 '@paralleldrive/cuid2': 2.2.2 - '@strapi/admin': 5.21.0(@babel/runtime@7.28.2)(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.11.2)(@codemirror/lint@6.8.5)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/theme-one-dark@6.1.3)(@codemirror/view@6.38.1)(@strapi/data-transfer@5.21.0(@types/node@20.19.9)(pg@8.8.0)(typescript@5.4.4))(@types/hoist-non-react-statics@3.3.7(@types/react@18.3.23))(@types/node@20.19.9)(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(codemirror@5.65.19)(debug@4.3.4)(pg@8.8.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@6.30.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) - '@strapi/database': 5.21.0(@types/node@20.19.9)(pg@8.8.0) + '@strapi/admin': 5.21.0(@babel/runtime@7.28.3)(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.11.3)(@codemirror/lint@6.8.5)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/theme-one-dark@6.1.3)(@codemirror/view@6.38.1)(@strapi/data-transfer@5.21.0(@types/node@20.19.11)(pg@8.8.0)(typescript@5.4.4))(@types/hoist-non-react-statics@3.3.7(@types/react@18.3.24))(@types/node@20.19.11)(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(codemirror@5.65.20)(debug@4.3.4)(pg@8.8.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@6.30.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) + '@strapi/database': 5.21.0(@types/node@20.19.11)(pg@8.8.0) '@strapi/generators': 5.21.0 '@strapi/logger': 5.21.0 '@strapi/permissions': 5.21.0 - '@strapi/types': 5.21.0(@types/node@20.19.9)(pg@8.8.0)(typescript@5.9.2) + '@strapi/types': 5.21.0(@types/node@20.19.11)(pg@8.8.0)(typescript@5.4.4) '@strapi/typescript-utils': 5.21.0 '@strapi/utils': 5.21.0 bcryptjs: 2.4.3 @@ -9729,10 +9768,10 @@ snapshots: - supports-color - tedious - '@strapi/data-transfer@5.21.0(@types/node@20.19.9)(pg@8.8.0)(typescript@5.9.2)': + '@strapi/data-transfer@5.21.0(@types/node@20.19.11)(pg@8.8.0)(typescript@5.9.2)': dependencies: '@strapi/logger': 5.21.0 - '@strapi/types': 5.21.0(@types/node@20.19.9)(pg@8.8.0)(typescript@5.9.2) + '@strapi/types': 5.21.0(@types/node@20.19.11)(pg@8.8.0)(typescript@5.9.2) '@strapi/utils': 5.21.0 chalk: 4.1.2 cli-table3: 0.6.5 @@ -9762,7 +9801,7 @@ snapshots: - typescript - utf-8-validate - '@strapi/database@5.21.0(@types/node@20.19.9)(pg@8.8.0)': + '@strapi/database@5.21.0(@types/node@20.19.11)(pg@8.8.0)': dependencies: '@paralleldrive/cuid2': 2.2.2 '@strapi/utils': 5.21.0 @@ -9773,7 +9812,7 @@ snapshots: knex: 3.0.1(pg@8.8.0) lodash: 4.17.21 semver: 7.5.4 - umzug: 3.8.1(@types/node@20.19.9) + umzug: 3.8.1(@types/node@20.19.11) transitivePeerDependencies: - '@types/node' - better-sqlite3 @@ -9785,36 +9824,36 @@ snapshots: - supports-color - tedious - '@strapi/design-system@2.0.0-rc.29(@babel/runtime@7.28.2)(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.11.2)(@codemirror/lint@6.8.5)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/theme-one-dark@6.1.3)(@codemirror/view@6.38.1)(@strapi/icons@2.0.0-rc.29(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)))(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(codemirror@5.65.19)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1))': + '@strapi/design-system@2.0.0-rc.29(@babel/runtime@7.28.3)(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.11.3)(@codemirror/lint@6.8.5)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/theme-one-dark@6.1.3)(@codemirror/view@6.38.1)(@strapi/icons@2.0.0-rc.29(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)))(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(codemirror@5.65.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1))': dependencies: '@codemirror/lang-json': 6.0.1 '@floating-ui/react-dom': 2.1.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@internationalized/date': 3.5.4 '@internationalized/number': 3.5.3 - '@radix-ui/react-accordion': 1.1.2(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-alert-dialog': 1.0.5(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-avatar': 1.0.4(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-checkbox': 1.0.4(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-dialog': 1.0.5(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-dismissable-layer': 1.0.5(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-dropdown-menu': 2.0.6(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(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.23)(react@18.3.1) - '@radix-ui/react-focus-scope': 1.0.4(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-popover': 1.0.7(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-progress': 1.0.3(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-radio-group': 1.1.3(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-scroll-area': 1.0.5(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-switch': 1.0.3(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-tabs': 1.0.4(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-tooltip': 1.0.7(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(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.23)(react@18.3.1) + '@radix-ui/react-accordion': 1.1.2(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-alert-dialog': 1.0.5(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-avatar': 1.0.4(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-checkbox': 1.0.4(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-dialog': 1.0.5(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-dismissable-layer': 1.0.5(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-dropdown-menu': 2.0.6(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(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.24)(react@18.3.1) + '@radix-ui/react-focus-scope': 1.0.4(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-popover': 1.0.7(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-progress': 1.0.3(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-radio-group': 1.1.3(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-scroll-area': 1.0.5(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-switch': 1.0.3(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-tabs': 1.0.4(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-tooltip': 1.0.7(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(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.24)(react@18.3.1) '@strapi/icons': 2.0.0-rc.29(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) - '@strapi/ui-primitives': 2.0.0-rc.29(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@uiw/react-codemirror': 4.22.2(@babel/runtime@7.28.2)(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.11.2)(@codemirror/lint@6.8.5)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/theme-one-dark@6.1.3)(@codemirror/view@6.38.1)(codemirror@5.65.19)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@strapi/ui-primitives': 2.0.0-rc.29(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@uiw/react-codemirror': 4.22.2(@babel/runtime@7.28.3)(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.11.3)(@codemirror/lint@6.8.5)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/theme-one-dark@6.1.3)(@codemirror/view@6.38.1)(codemirror@5.65.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) lodash: 4.17.21 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - react-remove-scroll: 2.5.10(@types/react@18.3.23)(react@18.3.1) + react-remove-scroll: 2.5.10(@types/react@18.3.24)(react@18.3.1) styled-components: 6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1) transitivePeerDependencies: - '@babel/runtime' @@ -9829,10 +9868,10 @@ snapshots: - '@types/react-dom' - codemirror - '@strapi/email@5.21.0(d316550ab1256976168aaec8ae01cc55)': + '@strapi/email@5.21.0(6f13ff780246cdadccc7712d62be9213)': dependencies: - '@strapi/admin': 5.21.0(@babel/runtime@7.28.2)(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.11.2)(@codemirror/lint@6.8.5)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/theme-one-dark@6.1.3)(@codemirror/view@6.38.1)(@strapi/data-transfer@5.21.0(@types/node@20.19.9)(pg@8.8.0)(typescript@5.4.4))(@types/hoist-non-react-statics@3.3.7(@types/react@18.3.23))(@types/node@20.19.9)(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(codemirror@5.65.19)(debug@4.3.4)(pg@8.8.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@6.30.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) - '@strapi/design-system': 2.0.0-rc.29(@babel/runtime@7.28.2)(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.11.2)(@codemirror/lint@6.8.5)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/theme-one-dark@6.1.3)(@codemirror/view@6.38.1)(@strapi/icons@2.0.0-rc.29(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)))(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(codemirror@5.65.19)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) + '@strapi/admin': 5.21.0(@babel/runtime@7.28.3)(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.11.3)(@codemirror/lint@6.8.5)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/theme-one-dark@6.1.3)(@codemirror/view@6.38.1)(@strapi/data-transfer@5.21.0(@types/node@20.19.11)(pg@8.8.0)(typescript@5.4.4))(@types/hoist-non-react-statics@3.3.7(@types/react@18.3.24))(@types/node@20.19.11)(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(codemirror@5.65.20)(debug@4.3.4)(pg@8.8.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@6.30.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) + '@strapi/design-system': 2.0.0-rc.29(@babel/runtime@7.28.3)(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.11.3)(@codemirror/lint@6.8.5)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/theme-one-dark@6.1.3)(@codemirror/view@6.38.1)(@strapi/icons@2.0.0-rc.29(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)))(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(codemirror@5.65.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) '@strapi/icons': 2.0.0-rc.29(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) '@strapi/provider-email-sendmail': 5.21.0 '@strapi/utils': 5.21.0 @@ -9877,12 +9916,12 @@ snapshots: plop: 4.0.1 pluralize: 8.0.0 - '@strapi/i18n@5.21.0(9e4d6fe568819ba998a3e1cb511b79c4)': + '@strapi/i18n@5.21.0(2ca36b8202f8a877e77defa2d37e6abd)': dependencies: - '@reduxjs/toolkit': 1.9.7(react-redux@8.1.3(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(redux@4.2.1))(react@18.3.1) - '@strapi/admin': 5.21.0(@babel/runtime@7.28.2)(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.11.2)(@codemirror/lint@6.8.5)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/theme-one-dark@6.1.3)(@codemirror/view@6.38.1)(@strapi/data-transfer@5.21.0(@types/node@20.19.9)(pg@8.8.0)(typescript@5.4.4))(@types/hoist-non-react-statics@3.3.7(@types/react@18.3.23))(@types/node@20.19.9)(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(codemirror@5.65.19)(debug@4.3.4)(pg@8.8.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@6.30.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) - '@strapi/content-manager': 5.21.0(09a34515f7266fe9956ed4c11e0f16ba) - '@strapi/design-system': 2.0.0-rc.29(@babel/runtime@7.28.2)(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.11.2)(@codemirror/lint@6.8.5)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/theme-one-dark@6.1.3)(@codemirror/view@6.38.1)(@strapi/icons@2.0.0-rc.29(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)))(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(codemirror@5.65.19)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) + '@reduxjs/toolkit': 1.9.7(react-redux@8.1.3(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(redux@4.2.1))(react@18.3.1) + '@strapi/admin': 5.21.0(@babel/runtime@7.28.3)(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.11.3)(@codemirror/lint@6.8.5)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/theme-one-dark@6.1.3)(@codemirror/view@6.38.1)(@strapi/data-transfer@5.21.0(@types/node@20.19.11)(pg@8.8.0)(typescript@5.4.4))(@types/hoist-non-react-statics@3.3.7(@types/react@18.3.24))(@types/node@20.19.11)(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(codemirror@5.65.20)(debug@4.3.4)(pg@8.8.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@6.30.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) + '@strapi/content-manager': 5.21.0(a3e5e00edca7e118a3d6b54d1e59117c) + '@strapi/design-system': 2.0.0-rc.29(@babel/runtime@7.28.3)(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.11.3)(@codemirror/lint@6.8.5)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/theme-one-dark@6.1.3)(@codemirror/view@6.38.1)(@strapi/icons@2.0.0-rc.29(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)))(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(codemirror@5.65.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) '@strapi/icons': 2.0.0-rc.29(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) '@strapi/utils': 5.21.0 lodash: 4.17.21 @@ -9890,7 +9929,7 @@ snapshots: react: 18.3.1 react-dom: 18.3.1(react@18.3.1) react-intl: 6.6.2(react@18.3.1)(typescript@5.4.4) - react-redux: 8.1.3(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(redux@4.2.1) + react-redux: 8.1.3(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(redux@4.2.1) react-router-dom: 6.30.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) styled-components: 6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1) yup: 0.32.9 @@ -9930,9 +9969,9 @@ snapshots: transitivePeerDependencies: - supports-color - '@strapi/pack-up@5.1.0(@swc/helpers@0.5.17)(@types/node@20.19.9)(terser@5.43.1)': + '@strapi/pack-up@5.1.0(@swc/helpers@0.5.17)(@types/node@20.19.11)(terser@5.43.1)': dependencies: - '@vitejs/plugin-react-swc': 3.7.0(@swc/helpers@0.5.17)(vite@5.4.8(@types/node@20.19.9)(terser@5.43.1)) + '@vitejs/plugin-react-swc': 3.7.0(@swc/helpers@0.5.17)(vite@5.4.8(@types/node@20.19.11)(terser@5.43.1)) boxen: 5.1.2 browserslist-to-esbuild: 1.2.0 chalk: 4.1.2 @@ -9951,7 +9990,7 @@ snapshots: prompts: 2.4.2 rxjs: 7.8.1 typescript: 5.4.4 - vite: 5.4.8(@types/node@20.19.9)(terser@5.43.1) + vite: 5.4.8(@types/node@20.19.11)(terser@5.43.1) yup: 0.32.9 transitivePeerDependencies: - '@swc/helpers' @@ -9974,12 +10013,12 @@ snapshots: qs: 6.11.1 sift: 16.0.1 - '@strapi/plugin-cloud@5.21.0(b78edc8e6032cc93fefd648fba2b1773)': + '@strapi/plugin-cloud@5.21.0(cb2ce4845517a894efe3c13c07d0698e)': dependencies: - '@strapi/admin': 5.21.0(@babel/runtime@7.28.2)(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.11.2)(@codemirror/lint@6.8.5)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/theme-one-dark@6.1.3)(@codemirror/view@6.38.1)(@strapi/data-transfer@5.21.0(@types/node@20.19.9)(pg@8.8.0)(typescript@5.4.4))(@types/hoist-non-react-statics@3.3.7(@types/react@18.3.23))(@types/node@20.19.9)(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(codemirror@5.65.19)(debug@4.3.4)(pg@8.8.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@6.30.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) - '@strapi/design-system': 2.0.0-rc.29(@babel/runtime@7.28.2)(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.11.2)(@codemirror/lint@6.8.5)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/theme-one-dark@6.1.3)(@codemirror/view@6.38.1)(@strapi/icons@2.0.0-rc.29(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)))(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(codemirror@5.65.19)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) + '@strapi/admin': 5.21.0(@babel/runtime@7.28.3)(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.11.3)(@codemirror/lint@6.8.5)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/theme-one-dark@6.1.3)(@codemirror/view@6.38.1)(@strapi/data-transfer@5.21.0(@types/node@20.19.11)(pg@8.8.0)(typescript@5.4.4))(@types/hoist-non-react-statics@3.3.7(@types/react@18.3.24))(@types/node@20.19.11)(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(codemirror@5.65.20)(debug@4.3.4)(pg@8.8.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@6.30.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) + '@strapi/design-system': 2.0.0-rc.29(@babel/runtime@7.28.3)(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.11.3)(@codemirror/lint@6.8.5)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/theme-one-dark@6.1.3)(@codemirror/view@6.38.1)(@strapi/icons@2.0.0-rc.29(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)))(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(codemirror@5.65.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) '@strapi/icons': 2.0.0-rc.29(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) - '@strapi/strapi': 5.21.0(@babel/runtime@7.28.2)(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.11.2)(@codemirror/lint@6.8.5)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/theme-one-dark@6.1.3)(@codemirror/view@6.38.1)(@swc/helpers@0.5.17)(@types/hoist-non-react-statics@3.3.7(@types/react@18.3.23))(@types/node@20.19.9)(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(codemirror@5.65.19)(esbuild@0.25.8)(koa@2.16.1)(pg@8.8.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@6.30.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(terser@5.43.1)(type-fest@4.41.0) + '@strapi/strapi': 5.21.0(@babel/runtime@7.28.3)(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.11.3)(@codemirror/lint@6.8.5)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/theme-one-dark@6.1.3)(@codemirror/view@6.38.1)(@swc/helpers@0.5.17)(@types/hoist-non-react-statics@3.3.7(@types/react@18.3.24))(@types/node@20.19.11)(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(codemirror@5.65.20)(esbuild@0.25.9)(koa@2.16.1)(pg@8.8.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@6.30.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(terser@5.43.1)(type-fest@4.41.0) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) react-intl: 6.6.2(react@18.3.1)(typescript@5.9.2) @@ -9999,12 +10038,12 @@ snapshots: - codemirror - typescript - '@strapi/plugin-sentry@5.21.0(49919b52d571c5aa24a3c5910cc24b78)': + '@strapi/plugin-sentry@5.23.0(c860b69b0dd1292fe40b5a4547e19872)': dependencies: '@sentry/node': 7.112.2 - '@strapi/design-system': 2.0.0-rc.29(@babel/runtime@7.28.2)(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.11.2)(@codemirror/lint@6.8.5)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/theme-one-dark@6.1.3)(@codemirror/view@6.38.1)(@strapi/icons@2.0.0-rc.29(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)))(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(codemirror@5.65.19)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) + '@strapi/design-system': 2.0.0-rc.29(@babel/runtime@7.28.3)(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.11.3)(@codemirror/lint@6.8.5)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/theme-one-dark@6.1.3)(@codemirror/view@6.38.1)(@strapi/icons@2.0.0-rc.29(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)))(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(codemirror@5.65.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) '@strapi/icons': 2.0.0-rc.29(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) - '@strapi/strapi': 5.21.0(@babel/runtime@7.28.2)(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.11.2)(@codemirror/lint@6.8.5)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/theme-one-dark@6.1.3)(@codemirror/view@6.38.1)(@swc/helpers@0.5.17)(@types/hoist-non-react-statics@3.3.7(@types/react@18.3.23))(@types/node@20.19.9)(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(codemirror@5.65.19)(esbuild@0.25.8)(koa@2.16.1)(pg@8.8.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@6.30.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(terser@5.43.1)(type-fest@4.41.0) + '@strapi/strapi': 5.21.0(@babel/runtime@7.28.3)(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.11.3)(@codemirror/lint@6.8.5)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/theme-one-dark@6.1.3)(@codemirror/view@6.38.1)(@swc/helpers@0.5.17)(@types/hoist-non-react-statics@3.3.7(@types/react@18.3.24))(@types/node@20.19.11)(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(codemirror@5.65.20)(esbuild@0.25.9)(koa@2.16.1)(pg@8.8.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@6.30.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(terser@5.43.1)(type-fest@4.41.0) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) react-router-dom: 6.30.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) @@ -10022,14 +10061,14 @@ snapshots: - '@types/react-dom' - codemirror - '@strapi/plugin-users-permissions@5.21.0(afbaa5d9706a16fc6f0a3a153d49a5f8)': + '@strapi/plugin-users-permissions@5.23.0(9daaddb1d802a12fdb5cc3606c26db94)': dependencies: - '@strapi/design-system': 2.0.0-rc.29(@babel/runtime@7.28.2)(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.11.2)(@codemirror/lint@6.8.5)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/theme-one-dark@6.1.3)(@codemirror/view@6.38.1)(@strapi/icons@2.0.0-rc.29(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)))(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(codemirror@5.65.19)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) + '@strapi/design-system': 2.0.0-rc.29(@babel/runtime@7.28.3)(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.11.3)(@codemirror/lint@6.8.5)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/theme-one-dark@6.1.3)(@codemirror/view@6.38.1)(@strapi/icons@2.0.0-rc.29(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)))(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(codemirror@5.65.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) '@strapi/icons': 2.0.0-rc.29(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) - '@strapi/strapi': 5.21.0(@babel/runtime@7.28.2)(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.11.2)(@codemirror/lint@6.8.5)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/theme-one-dark@6.1.3)(@codemirror/view@6.38.1)(@swc/helpers@0.5.17)(@types/hoist-non-react-statics@3.3.7(@types/react@18.3.23))(@types/node@20.19.9)(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(codemirror@5.65.19)(esbuild@0.25.8)(koa@2.16.1)(pg@8.8.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@6.30.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(terser@5.43.1)(type-fest@4.41.0) - '@strapi/utils': 5.21.0 + '@strapi/strapi': 5.21.0(@babel/runtime@7.28.3)(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.11.3)(@codemirror/lint@6.8.5)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/theme-one-dark@6.1.3)(@codemirror/view@6.38.1)(@swc/helpers@0.5.17)(@types/hoist-non-react-statics@3.3.7(@types/react@18.3.24))(@types/node@20.19.11)(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(codemirror@5.65.20)(esbuild@0.25.9)(koa@2.16.1)(pg@8.8.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@6.30.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(terser@5.43.1)(type-fest@4.41.0) + '@strapi/utils': 5.23.0 bcryptjs: 2.4.3 - formik: 2.4.5(@types/react@18.3.23)(react@18.3.1) + formik: 2.4.5(@types/react@18.3.24)(react@18.3.1) grant: 5.4.24 immer: 9.0.21 jsonwebtoken: 9.0.0 @@ -10043,7 +10082,7 @@ snapshots: react-dom: 18.3.1(react@18.3.1) react-intl: 6.6.2(react@18.3.1)(typescript@5.9.2) react-query: 3.39.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - react-redux: 8.1.3(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(redux@4.2.1) + react-redux: 8.1.3(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(redux@4.2.1) react-router-dom: 6.30.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) styled-components: 6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1) url-join: 4.0.1 @@ -10069,9 +10108,9 @@ snapshots: - supports-color - typescript - '@strapi/provider-email-amazon-ses@5.21.0': + '@strapi/provider-email-amazon-ses@5.23.0': dependencies: - '@strapi/utils': 5.21.0 + '@strapi/utils': 5.23.0 node-ses: 3.0.3 transitivePeerDependencies: - supports-color @@ -10086,22 +10125,22 @@ snapshots: '@strapi/utils': 5.21.0 fs-extra: 11.2.0 - '@strapi/review-workflows@5.21.0(4e40bc2f75a4b32d3892c0a9596bd2cb)': + '@strapi/review-workflows@5.21.0(287956a5177ca65433c276582fc6d4ab)': dependencies: - '@reduxjs/toolkit': 1.9.7(react-redux@8.1.3(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(redux@4.2.1))(react@18.3.1) - '@strapi/admin': 5.21.0(@babel/runtime@7.28.2)(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.11.2)(@codemirror/lint@6.8.5)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/theme-one-dark@6.1.3)(@codemirror/view@6.38.1)(@strapi/data-transfer@5.21.0(@types/node@20.19.9)(pg@8.8.0)(typescript@5.4.4))(@types/hoist-non-react-statics@3.3.7(@types/react@18.3.23))(@types/node@20.19.9)(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(codemirror@5.65.19)(debug@4.3.4)(pg@8.8.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@6.30.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) - '@strapi/content-manager': 5.21.0(09a34515f7266fe9956ed4c11e0f16ba) - '@strapi/design-system': 2.0.0-rc.29(@babel/runtime@7.28.2)(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.11.2)(@codemirror/lint@6.8.5)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/theme-one-dark@6.1.3)(@codemirror/view@6.38.1)(@strapi/icons@2.0.0-rc.29(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)))(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(codemirror@5.65.19)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) + '@reduxjs/toolkit': 1.9.7(react-redux@8.1.3(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(redux@4.2.1))(react@18.3.1) + '@strapi/admin': 5.21.0(@babel/runtime@7.28.3)(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.11.3)(@codemirror/lint@6.8.5)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/theme-one-dark@6.1.3)(@codemirror/view@6.38.1)(@strapi/data-transfer@5.21.0(@types/node@20.19.11)(pg@8.8.0)(typescript@5.4.4))(@types/hoist-non-react-statics@3.3.7(@types/react@18.3.24))(@types/node@20.19.11)(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(codemirror@5.65.20)(debug@4.3.4)(pg@8.8.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@6.30.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) + '@strapi/content-manager': 5.21.0(a3e5e00edca7e118a3d6b54d1e59117c) + '@strapi/design-system': 2.0.0-rc.29(@babel/runtime@7.28.3)(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.11.3)(@codemirror/lint@6.8.5)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/theme-one-dark@6.1.3)(@codemirror/view@6.38.1)(@strapi/icons@2.0.0-rc.29(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)))(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(codemirror@5.65.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) '@strapi/icons': 2.0.0-rc.29(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) '@strapi/utils': 5.21.0 fractional-indexing: 3.2.0 react: 18.3.1 - react-dnd: 16.0.1(@types/hoist-non-react-statics@3.3.7(@types/react@18.3.23))(@types/node@20.19.9)(@types/react@18.3.23)(react@18.3.1) + react-dnd: 16.0.1(@types/hoist-non-react-statics@3.3.7(@types/react@18.3.24))(@types/node@20.19.11)(@types/react@18.3.24)(react@18.3.1) react-dnd-html5-backend: 16.0.1 react-dom: 18.3.1(react@18.3.1) react-helmet: 6.1.0(react@18.3.1) react-intl: 6.6.2(react@18.3.1)(typescript@5.4.4) - react-redux: 8.1.3(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(redux@4.2.1) + react-redux: 8.1.3(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(redux@4.2.1) react-router-dom: 6.30.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) styled-components: 6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1) yup: 0.32.9 @@ -10123,9 +10162,9 @@ snapshots: - redux - typescript - '@strapi/sdk-plugin@5.3.2(@swc/helpers@0.5.17)(@types/node@20.19.9)(terser@5.43.1)': + '@strapi/sdk-plugin@5.3.2(@swc/helpers@0.5.17)(@types/node@20.19.11)(terser@5.43.1)': dependencies: - '@strapi/pack-up': 5.1.0(@swc/helpers@0.5.17)(@types/node@20.19.9)(terser@5.43.1) + '@strapi/pack-up': 5.1.0(@swc/helpers@0.5.17)(@types/node@20.19.11)(terser@5.43.1) '@types/prompts': 2.4.9 boxen: 5.1.2 chalk: 4.1.2 @@ -10154,32 +10193,32 @@ snapshots: - supports-color - terser - '@strapi/strapi@5.21.0(@babel/runtime@7.28.2)(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.11.2)(@codemirror/lint@6.8.5)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/theme-one-dark@6.1.3)(@codemirror/view@6.38.1)(@swc/helpers@0.5.17)(@types/hoist-non-react-statics@3.3.7(@types/react@18.3.23))(@types/node@20.19.9)(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(codemirror@5.65.19)(esbuild@0.25.8)(koa@2.16.1)(pg@8.8.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@6.30.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(terser@5.43.1)(type-fest@4.41.0)': + '@strapi/strapi@5.21.0(@babel/runtime@7.28.3)(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.11.3)(@codemirror/lint@6.8.5)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/theme-one-dark@6.1.3)(@codemirror/view@6.38.1)(@swc/helpers@0.5.17)(@types/hoist-non-react-statics@3.3.7(@types/react@18.3.24))(@types/node@20.19.11)(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(codemirror@5.65.20)(esbuild@0.25.9)(koa@2.16.1)(pg@8.8.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@6.30.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(terser@5.43.1)(type-fest@4.41.0)': dependencies: - '@pmmmwh/react-refresh-webpack-plugin': 0.5.15(react-refresh@0.14.0)(type-fest@4.41.0)(webpack-hot-middleware@2.26.1)(webpack@5.101.0(esbuild@0.25.8)) - '@strapi/admin': 5.21.0(@babel/runtime@7.28.2)(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.11.2)(@codemirror/lint@6.8.5)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/theme-one-dark@6.1.3)(@codemirror/view@6.38.1)(@strapi/data-transfer@5.21.0(@types/node@20.19.9)(pg@8.8.0)(typescript@5.4.4))(@types/hoist-non-react-statics@3.3.7(@types/react@18.3.23))(@types/node@20.19.9)(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(codemirror@5.65.19)(debug@4.3.4)(pg@8.8.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@6.30.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) + '@pmmmwh/react-refresh-webpack-plugin': 0.5.15(react-refresh@0.14.0)(type-fest@4.41.0)(webpack-hot-middleware@2.26.1)(webpack@5.101.3(esbuild@0.25.9)) + '@strapi/admin': 5.21.0(@babel/runtime@7.28.3)(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.11.3)(@codemirror/lint@6.8.5)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/theme-one-dark@6.1.3)(@codemirror/view@6.38.1)(@strapi/data-transfer@5.21.0(@types/node@20.19.11)(pg@8.8.0)(typescript@5.4.4))(@types/hoist-non-react-statics@3.3.7(@types/react@18.3.24))(@types/node@20.19.11)(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(codemirror@5.65.20)(debug@4.3.4)(pg@8.8.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@6.30.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) '@strapi/cloud-cli': 5.21.0 - '@strapi/content-manager': 5.21.0(09a34515f7266fe9956ed4c11e0f16ba) - '@strapi/content-releases': 5.21.0(7e0583346370238bee0a571c4a2a8918) - '@strapi/content-type-builder': 5.21.0(ea66cbd5889d9c139873f4fdfbc7149b) - '@strapi/core': 5.21.0(@babel/runtime@7.28.2)(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.11.2)(@codemirror/lint@6.8.5)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/theme-one-dark@6.1.3)(@codemirror/view@6.38.1)(@strapi/data-transfer@5.21.0(@types/node@20.19.9)(pg@8.8.0)(typescript@5.4.4))(@types/hoist-non-react-statics@3.3.7(@types/react@18.3.23))(@types/node@20.19.9)(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(codemirror@5.65.19)(pg@8.8.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@6.30.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) - '@strapi/data-transfer': 5.21.0(@types/node@20.19.9)(pg@8.8.0)(typescript@5.9.2) - '@strapi/database': 5.21.0(@types/node@20.19.9)(pg@8.8.0) - '@strapi/email': 5.21.0(d316550ab1256976168aaec8ae01cc55) + '@strapi/content-manager': 5.21.0(a3e5e00edca7e118a3d6b54d1e59117c) + '@strapi/content-releases': 5.21.0(49cc319b97b6dcf67d1f87987412f97a) + '@strapi/content-type-builder': 5.21.0(4a7a746baac11fe4ef913f9df888e21b) + '@strapi/core': 5.21.0(@babel/runtime@7.28.3)(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.11.3)(@codemirror/lint@6.8.5)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/theme-one-dark@6.1.3)(@codemirror/view@6.38.1)(@strapi/data-transfer@5.21.0(@types/node@20.19.11)(pg@8.8.0)(typescript@5.4.4))(@types/hoist-non-react-statics@3.3.7(@types/react@18.3.24))(@types/node@20.19.11)(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(codemirror@5.65.20)(pg@8.8.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@6.30.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) + '@strapi/data-transfer': 5.21.0(@types/node@20.19.11)(pg@8.8.0)(typescript@5.9.2) + '@strapi/database': 5.21.0(@types/node@20.19.11)(pg@8.8.0) + '@strapi/email': 5.21.0(6f13ff780246cdadccc7712d62be9213) '@strapi/generators': 5.21.0 - '@strapi/i18n': 5.21.0(9e4d6fe568819ba998a3e1cb511b79c4) + '@strapi/i18n': 5.21.0(2ca36b8202f8a877e77defa2d37e6abd) '@strapi/logger': 5.21.0 '@strapi/openapi': 5.21.0 '@strapi/permissions': 5.21.0 - '@strapi/review-workflows': 5.21.0(4e40bc2f75a4b32d3892c0a9596bd2cb) - '@strapi/types': 5.21.0(@types/node@20.19.9)(pg@8.8.0)(typescript@5.9.2) + '@strapi/review-workflows': 5.21.0(287956a5177ca65433c276582fc6d4ab) + '@strapi/types': 5.21.0(@types/node@20.19.11)(pg@8.8.0)(typescript@5.4.4) '@strapi/typescript-utils': 5.21.0 - '@strapi/upload': 5.21.0(596c2b01761534af1b520a640e3306bf) + '@strapi/upload': 5.21.0(e187285805bc4b8ab0202e0e0154b006) '@strapi/utils': 5.21.0 '@types/nodemon': 1.19.6 - '@vitejs/plugin-react-swc': 3.6.0(@swc/helpers@0.5.17)(vite@5.4.19(@types/node@20.19.9)(terser@5.43.1)) + '@vitejs/plugin-react-swc': 3.6.0(@swc/helpers@0.5.17)(vite@5.4.19(@types/node@20.19.11)(terser@5.43.1)) boxen: 5.1.2 - browserslist: 4.25.1 + browserslist: 4.25.3 browserslist-to-esbuild: 1.2.0 chalk: 4.1.2 chokidar: 3.6.0 @@ -10189,19 +10228,19 @@ snapshots: commander: 8.3.0 concurrently: 8.2.2 copyfiles: 2.4.1 - css-loader: 6.11.0(webpack@5.101.0(esbuild@0.25.8)) + css-loader: 6.11.0(webpack@5.101.3(esbuild@0.25.9)) dotenv: 16.4.5 - esbuild-loader: 4.3.0(webpack@5.101.0(esbuild@0.25.8)) - esbuild-register: 3.5.0(esbuild@0.25.8) + esbuild-loader: 4.3.0(webpack@5.101.3(esbuild@0.25.9)) + esbuild-register: 3.5.0(esbuild@0.25.9) execa: 5.1.1 - fork-ts-checker-webpack-plugin: 8.0.0(typescript@5.4.4)(webpack@5.101.0(esbuild@0.25.8)) + fork-ts-checker-webpack-plugin: 8.0.0(typescript@5.4.4)(webpack@5.101.3(esbuild@0.25.9)) fs-extra: 11.2.0 get-latest-version: 5.1.0 git-url-parse: 14.0.0 - html-webpack-plugin: 5.6.0(webpack@5.101.0(esbuild@0.25.8)) + html-webpack-plugin: 5.6.0(webpack@5.101.3(esbuild@0.25.9)) inquirer: 8.2.5 lodash: 4.17.21 - mini-css-extract-plugin: 2.7.7(webpack@5.101.0(esbuild@0.25.8)) + mini-css-extract-plugin: 2.7.7(webpack@5.101.3(esbuild@0.25.9)) nodemon: 3.0.2 ora: 5.4.1 outdent: 0.8.0 @@ -10214,13 +10253,13 @@ snapshots: read-pkg-up: 7.0.1 resolve-from: 5.0.0 semver: 7.5.4 - style-loader: 3.3.4(webpack@5.101.0(esbuild@0.25.8)) + style-loader: 3.3.4(webpack@5.101.3(esbuild@0.25.9)) styled-components: 6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1) typescript: 5.4.4 - vite: 5.4.19(@types/node@20.19.9)(terser@5.43.1) - webpack: 5.101.0(esbuild@0.25.8) + vite: 5.4.19(@types/node@20.19.11)(terser@5.43.1) + webpack: 5.101.3(esbuild@0.25.9) webpack-bundle-analyzer: 4.10.2 - webpack-dev-middleware: 6.1.2(webpack@5.101.0(esbuild@0.25.8)) + webpack-dev-middleware: 6.1.2(webpack@5.101.3(esbuild@0.25.9)) webpack-hot-middleware: 2.26.1 yalc: 1.0.0-pre.53 yup: 0.32.9 @@ -10274,12 +10313,42 @@ snapshots: - webpack-dev-server - webpack-plugin-serve - '@strapi/types@5.21.0(@types/node@20.19.9)(pg@8.8.0)(typescript@5.9.2)': + '@strapi/types@5.21.0(@types/node@20.19.11)(pg@8.8.0)(typescript@5.4.4)': dependencies: '@casl/ability': 6.5.0 '@koa/cors': 5.0.0 '@koa/router': 12.0.2 - '@strapi/database': 5.21.0(@types/node@20.19.9)(pg@8.8.0) + '@strapi/database': 5.21.0(@types/node@20.19.11)(pg@8.8.0) + '@strapi/logger': 5.21.0 + '@strapi/permissions': 5.21.0 + '@strapi/utils': 5.21.0 + commander: 8.3.0 + json-logic-js: 2.0.5 + koa: 2.16.1 + koa-body: 6.0.1 + node-schedule: 2.1.1 + typedoc: 0.25.10(typescript@5.4.4) + typedoc-github-wiki-theme: 1.1.0(typedoc-plugin-markdown@3.17.1(typedoc@0.25.10(typescript@5.9.2)))(typedoc@0.25.10(typescript@5.9.2)) + typedoc-plugin-markdown: 3.17.1(typedoc@0.25.10(typescript@5.9.2)) + zod: 3.25.67 + transitivePeerDependencies: + - '@types/node' + - better-sqlite3 + - mysql + - mysql2 + - pg + - pg-native + - sqlite3 + - supports-color + - tedious + - typescript + + '@strapi/types@5.21.0(@types/node@20.19.11)(pg@8.8.0)(typescript@5.9.2)': + dependencies: + '@casl/ability': 6.5.0 + '@koa/cors': 5.0.0 + '@koa/router': 12.0.2 + '@strapi/database': 5.21.0(@types/node@20.19.11)(pg@8.8.0) '@strapi/logger': 5.21.0 '@strapi/permissions': 5.21.0 '@strapi/utils': 5.21.0 @@ -10313,47 +10382,47 @@ snapshots: prettier: 3.3.3 typescript: 5.4.4 - '@strapi/ui-primitives@2.0.0-rc.29(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@strapi/ui-primitives@2.0.0-rc.29(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@radix-ui/number': 1.0.1 '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-collection': 1.0.3(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.23)(react@18.3.1) - '@radix-ui/react-context': 1.0.1(@types/react@18.3.23)(react@18.3.1) - '@radix-ui/react-direction': 1.0.1(@types/react@18.3.23)(react@18.3.1) - '@radix-ui/react-dismissable-layer': 1.0.5(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(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.23)(react@18.3.1) - '@radix-ui/react-focus-scope': 1.0.4(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-id': 1.0.1(@types/react@18.3.23)(react@18.3.1) - '@radix-ui/react-popper': 1.1.3(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-portal': 1.0.4(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(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.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-slot': 1.0.2(@types/react@18.3.23)(react@18.3.1) - '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.3.23)(react@18.3.1) - '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.3.23)(react@18.3.1) - '@radix-ui/react-use-previous': 1.0.1(@types/react@18.3.23)(react@18.3.1) - '@radix-ui/react-visually-hidden': 1.0.3(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-collection': 1.0.3(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.24)(react@18.3.1) + '@radix-ui/react-context': 1.0.1(@types/react@18.3.24)(react@18.3.1) + '@radix-ui/react-direction': 1.0.1(@types/react@18.3.24)(react@18.3.1) + '@radix-ui/react-dismissable-layer': 1.0.5(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(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.24)(react@18.3.1) + '@radix-ui/react-focus-scope': 1.0.4(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-id': 1.0.1(@types/react@18.3.24)(react@18.3.1) + '@radix-ui/react-popper': 1.1.3(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-portal': 1.0.4(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(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.7(@types/react@18.3.24))(@types/react@18.3.24)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-slot': 1.0.2(@types/react@18.3.24)(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.3.24)(react@18.3.1) + '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.3.24)(react@18.3.1) + '@radix-ui/react-use-previous': 1.0.1(@types/react@18.3.24)(react@18.3.1) + '@radix-ui/react-visually-hidden': 1.0.3(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(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.5.10(@types/react@18.3.23)(react@18.3.1) + react-remove-scroll: 2.5.10(@types/react@18.3.24)(react@18.3.1) transitivePeerDependencies: - '@types/react' - '@types/react-dom' - '@strapi/upload@5.21.0(596c2b01761534af1b520a640e3306bf)': + '@strapi/upload@5.21.0(e187285805bc4b8ab0202e0e0154b006)': dependencies: - '@mux/mux-player-react': 3.1.0(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@reduxjs/toolkit': 1.9.7(react-redux@8.1.3(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(redux@4.2.1))(react@18.3.1) - '@strapi/admin': 5.21.0(@babel/runtime@7.28.2)(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.11.2)(@codemirror/lint@6.8.5)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/theme-one-dark@6.1.3)(@codemirror/view@6.38.1)(@strapi/data-transfer@5.21.0(@types/node@20.19.9)(pg@8.8.0)(typescript@5.4.4))(@types/hoist-non-react-statics@3.3.7(@types/react@18.3.23))(@types/node@20.19.9)(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(codemirror@5.65.19)(debug@4.3.4)(pg@8.8.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@6.30.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) - '@strapi/design-system': 2.0.0-rc.29(@babel/runtime@7.28.2)(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.11.2)(@codemirror/lint@6.8.5)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/theme-one-dark@6.1.3)(@codemirror/view@6.38.1)(@strapi/icons@2.0.0-rc.29(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)))(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(codemirror@5.65.19)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) + '@mux/mux-player-react': 3.1.0(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@reduxjs/toolkit': 1.9.7(react-redux@8.1.3(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(redux@4.2.1))(react@18.3.1) + '@strapi/admin': 5.21.0(@babel/runtime@7.28.3)(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.11.3)(@codemirror/lint@6.8.5)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/theme-one-dark@6.1.3)(@codemirror/view@6.38.1)(@strapi/data-transfer@5.21.0(@types/node@20.19.11)(pg@8.8.0)(typescript@5.4.4))(@types/hoist-non-react-statics@3.3.7(@types/react@18.3.24))(@types/node@20.19.11)(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(codemirror@5.65.20)(debug@4.3.4)(pg@8.8.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@6.30.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) + '@strapi/design-system': 2.0.0-rc.29(@babel/runtime@7.28.3)(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.11.3)(@codemirror/lint@6.8.5)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/theme-one-dark@6.1.3)(@codemirror/view@6.38.1)(@strapi/icons@2.0.0-rc.29(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)))(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(codemirror@5.65.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) '@strapi/icons': 2.0.0-rc.29(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) '@strapi/provider-upload-local': 5.21.0 '@strapi/utils': 5.21.0 byte-size: 8.1.1 cropperjs: 1.6.1 date-fns: 2.30.0 - formik: 2.4.5(@types/react@18.3.23)(react@18.3.1) + formik: 2.4.5(@types/react@18.3.24)(react@18.3.1) fs-extra: 11.2.0 immer: 9.0.21 koa-range: 0.3.0 @@ -10363,13 +10432,13 @@ snapshots: prop-types: 15.8.1 qs: 6.11.1 react: 18.3.1 - react-dnd: 16.0.1(@types/hoist-non-react-statics@3.3.7(@types/react@18.3.23))(@types/node@20.19.9)(@types/react@18.3.23)(react@18.3.1) + react-dnd: 16.0.1(@types/hoist-non-react-statics@3.3.7(@types/react@18.3.24))(@types/node@20.19.11)(@types/react@18.3.24)(react@18.3.1) react-dom: 18.3.1(react@18.3.1) react-intl: 6.6.2(react@18.3.1)(typescript@5.4.4) react-query: 3.39.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - react-redux: 8.1.3(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(redux@4.2.1) + react-redux: 8.1.3(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(redux@4.2.1) react-router-dom: 6.30.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - react-select: 5.8.0(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react-select: 5.8.0(@types/react@18.3.24)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) sharp: 0.33.5 styled-components: 6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1) yup: 0.32.9 @@ -10406,51 +10475,64 @@ snapshots: yup: 0.32.9 zod: 3.25.67 - '@swc/core-darwin-arm64@1.13.3': + '@strapi/utils@5.23.0': + dependencies: + '@sindresorhus/slugify': 1.1.0 + date-fns: 2.30.0 + execa: 5.1.1 + http-errors: 2.0.0 + lodash: 4.17.21 + node-machine-id: 1.1.12 + p-map: 4.0.0 + preferred-pm: 3.1.2 + yup: 0.32.9 + zod: 3.25.67 + + '@swc/core-darwin-arm64@1.13.5': optional: true - '@swc/core-darwin-x64@1.13.3': + '@swc/core-darwin-x64@1.13.5': optional: true - '@swc/core-linux-arm-gnueabihf@1.13.3': + '@swc/core-linux-arm-gnueabihf@1.13.5': optional: true - '@swc/core-linux-arm64-gnu@1.13.3': + '@swc/core-linux-arm64-gnu@1.13.5': optional: true - '@swc/core-linux-arm64-musl@1.13.3': + '@swc/core-linux-arm64-musl@1.13.5': optional: true - '@swc/core-linux-x64-gnu@1.13.3': + '@swc/core-linux-x64-gnu@1.13.5': optional: true - '@swc/core-linux-x64-musl@1.13.3': + '@swc/core-linux-x64-musl@1.13.5': optional: true - '@swc/core-win32-arm64-msvc@1.13.3': + '@swc/core-win32-arm64-msvc@1.13.5': optional: true - '@swc/core-win32-ia32-msvc@1.13.3': + '@swc/core-win32-ia32-msvc@1.13.5': optional: true - '@swc/core-win32-x64-msvc@1.13.3': + '@swc/core-win32-x64-msvc@1.13.5': optional: true - '@swc/core@1.13.3(@swc/helpers@0.5.17)': + '@swc/core@1.13.5(@swc/helpers@0.5.17)': dependencies: '@swc/counter': 0.1.3 '@swc/types': 0.1.24 optionalDependencies: - '@swc/core-darwin-arm64': 1.13.3 - '@swc/core-darwin-x64': 1.13.3 - '@swc/core-linux-arm-gnueabihf': 1.13.3 - '@swc/core-linux-arm64-gnu': 1.13.3 - '@swc/core-linux-arm64-musl': 1.13.3 - '@swc/core-linux-x64-gnu': 1.13.3 - '@swc/core-linux-x64-musl': 1.13.3 - '@swc/core-win32-arm64-msvc': 1.13.3 - '@swc/core-win32-ia32-msvc': 1.13.3 - '@swc/core-win32-x64-msvc': 1.13.3 + '@swc/core-darwin-arm64': 1.13.5 + '@swc/core-darwin-x64': 1.13.5 + '@swc/core-linux-arm-gnueabihf': 1.13.5 + '@swc/core-linux-arm64-gnu': 1.13.5 + '@swc/core-linux-arm64-musl': 1.13.5 + '@swc/core-linux-x64-gnu': 1.13.5 + '@swc/core-linux-x64-musl': 1.13.5 + '@swc/core-win32-arm64-msvc': 1.13.5 + '@swc/core-win32-ia32-msvc': 1.13.5 + '@swc/core-win32-x64-msvc': 1.13.5 '@swc/helpers': 0.5.17 '@swc/counter@0.1.3': {} @@ -10470,7 +10552,7 @@ snapshots: '@testing-library/dom@10.1.0': dependencies: '@babel/code-frame': 7.27.1 - '@babel/runtime': 7.28.2 + '@babel/runtime': 7.28.3 '@types/aria-query': 5.0.4 aria-query: 5.3.0 chalk: 4.1.2 @@ -10478,15 +10560,15 @@ snapshots: lz-string: 1.5.0 pretty-format: 27.5.1 - '@testing-library/react@15.0.7(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@testing-library/react@15.0.7(@types/react@18.3.24)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@babel/runtime': 7.28.2 + '@babel/runtime': 7.28.3 '@testing-library/dom': 10.1.0 - '@types/react-dom': 18.3.7(@types/react@18.3.23) + '@types/react-dom': 18.3.7(@types/react@18.3.24) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) optionalDependencies: - '@types/react': 18.3.23 + '@types/react': 18.3.24 '@testing-library/user-event@14.5.2(@testing-library/dom@10.1.0)': dependencies: @@ -10494,7 +10576,7 @@ snapshots: '@types/accepts@1.3.7': dependencies: - '@types/node': 20.19.9 + '@types/node': 20.19.11 '@types/argparse@1.0.38': {} @@ -10503,23 +10585,23 @@ snapshots: '@types/body-parser@1.19.6': dependencies: '@types/connect': 3.4.38 - '@types/node': 20.19.9 + '@types/node': 20.19.11 '@types/cacheable-request@6.0.3': dependencies: '@types/http-cache-semantics': 4.0.4 '@types/keyv': 3.1.4 - '@types/node': 20.19.9 + '@types/node': 20.19.11 '@types/responselike': 1.0.3 '@types/co-body@6.1.3': dependencies: - '@types/node': 20.19.9 + '@types/node': 20.19.11 '@types/qs': 6.14.0 '@types/connect@3.4.38': dependencies: - '@types/node': 20.19.9 + '@types/node': 20.19.11 '@types/content-disposition@0.5.9': {} @@ -10528,7 +10610,7 @@ snapshots: '@types/connect': 3.4.38 '@types/express': 5.0.3 '@types/keygrip': 1.0.6 - '@types/node': 20.19.9 + '@types/node': 20.19.11 '@types/eslint-scope@3.7.7': dependencies: @@ -10544,14 +10626,14 @@ snapshots: '@types/express-serve-static-core@4.19.6': dependencies: - '@types/node': 20.19.9 + '@types/node': 20.19.11 '@types/qs': 6.14.0 '@types/range-parser': 1.2.7 '@types/send': 0.17.5 '@types/express-serve-static-core@5.0.7': dependencies: - '@types/node': 20.19.9 + '@types/node': 20.19.11 '@types/qs': 6.14.0 '@types/range-parser': 1.2.7 '@types/send': 0.17.5 @@ -10573,15 +10655,15 @@ snapshots: '@types/follow-redirects@1.14.4': dependencies: - '@types/node': 20.19.9 + '@types/node': 20.19.11 '@types/formidable@2.0.6': dependencies: - '@types/node': 20.19.9 + '@types/node': 20.19.11 - '@types/hoist-non-react-statics@3.3.7(@types/react@18.3.23)': + '@types/hoist-non-react-statics@3.3.7(@types/react@18.3.24)': dependencies: - '@types/react': 18.3.23 + '@types/react': 18.3.24 hoist-non-react-statics: 3.3.2 '@types/html-minifier-terser@6.1.0': {} @@ -10604,13 +10686,13 @@ snapshots: '@types/jsonwebtoken@9.0.10': dependencies: '@types/ms': 2.1.0 - '@types/node': 20.19.9 + '@types/node': 20.19.11 '@types/keygrip@1.0.6': {} '@types/keyv@3.1.4': dependencies: - '@types/node': 20.19.9 + '@types/node': 20.19.11 '@types/koa-compose@3.2.8': dependencies: @@ -10625,12 +10707,12 @@ snapshots: '@types/http-errors': 2.0.5 '@types/keygrip': 1.0.6 '@types/koa-compose': 3.2.8 - '@types/node': 20.19.9 + '@types/node': 20.19.11 '@types/liftoff@4.0.3': dependencies: '@types/fined': 1.1.5 - '@types/node': 20.19.9 + '@types/node': 20.19.11 '@types/lodash@4.17.20': {} @@ -10638,13 +10720,13 @@ snapshots: '@types/ms@2.1.0': {} - '@types/node@20.19.9': + '@types/node@20.19.11': dependencies: undici-types: 6.21.0 '@types/nodemon@1.19.6': dependencies: - '@types/node': 20.19.9 + '@types/node': 20.19.11 '@types/normalize-package-data@2.4.4': {} @@ -10652,7 +10734,7 @@ snapshots: '@types/prompts@2.4.9': dependencies: - '@types/node': 20.19.9 + '@types/node': 20.19.11 kleur: 3.0.3 '@types/prop-types@15.7.15': {} @@ -10661,46 +10743,46 @@ snapshots: '@types/range-parser@1.2.7': {} - '@types/react-dom@18.3.7(@types/react@18.3.23)': + '@types/react-dom@18.3.7(@types/react@18.3.24)': dependencies: - '@types/react': 18.3.23 + '@types/react': 18.3.24 '@types/react-redux@7.1.34': dependencies: - '@types/hoist-non-react-statics': 3.3.7(@types/react@18.3.23) - '@types/react': 18.3.23 + '@types/hoist-non-react-statics': 3.3.7(@types/react@18.3.24) + '@types/react': 18.3.24 hoist-non-react-statics: 3.3.2 redux: 4.2.1 - '@types/react-transition-group@4.4.12(@types/react@18.3.23)': + '@types/react-transition-group@4.4.12(@types/react@18.3.24)': dependencies: - '@types/react': 18.3.23 + '@types/react': 18.3.24 - '@types/react@18.3.23': + '@types/react@18.3.24': dependencies: '@types/prop-types': 15.7.15 csstype: 3.1.3 '@types/responselike@1.0.3': dependencies: - '@types/node': 20.19.9 + '@types/node': 20.19.11 '@types/send@0.17.5': dependencies: '@types/mime': 1.3.5 - '@types/node': 20.19.9 + '@types/node': 20.19.11 '@types/serve-static@1.15.8': dependencies: '@types/http-errors': 2.0.5 - '@types/node': 20.19.9 + '@types/node': 20.19.11 '@types/send': 0.17.5 '@types/stylis@4.2.5': {} '@types/through@0.0.33': dependencies: - '@types/node': 20.19.9 + '@types/node': 20.19.11 '@types/triple-beam@1.3.5': {} @@ -10724,25 +10806,25 @@ snapshots: dependencies: '@ucast/core': 1.10.2 - '@uiw/codemirror-extensions-basic-setup@4.22.2(@codemirror/autocomplete@6.18.6)(@codemirror/commands@6.8.1)(@codemirror/language@6.11.2)(@codemirror/lint@6.8.5)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/view@6.38.1)': + '@uiw/codemirror-extensions-basic-setup@4.22.2(@codemirror/autocomplete@6.18.6)(@codemirror/commands@6.8.1)(@codemirror/language@6.11.3)(@codemirror/lint@6.8.5)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/view@6.38.1)': dependencies: '@codemirror/autocomplete': 6.18.6 '@codemirror/commands': 6.8.1 - '@codemirror/language': 6.11.2 + '@codemirror/language': 6.11.3 '@codemirror/lint': 6.8.5 '@codemirror/search': 6.5.11 '@codemirror/state': 6.5.2 '@codemirror/view': 6.38.1 - '@uiw/react-codemirror@4.22.2(@babel/runtime@7.28.2)(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.11.2)(@codemirror/lint@6.8.5)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/theme-one-dark@6.1.3)(@codemirror/view@6.38.1)(codemirror@5.65.19)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@uiw/react-codemirror@4.22.2(@babel/runtime@7.28.3)(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.11.3)(@codemirror/lint@6.8.5)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/theme-one-dark@6.1.3)(@codemirror/view@6.38.1)(codemirror@5.65.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@babel/runtime': 7.28.2 + '@babel/runtime': 7.28.3 '@codemirror/commands': 6.8.1 '@codemirror/state': 6.5.2 '@codemirror/theme-one-dark': 6.1.3 '@codemirror/view': 6.38.1 - '@uiw/codemirror-extensions-basic-setup': 4.22.2(@codemirror/autocomplete@6.18.6)(@codemirror/commands@6.8.1)(@codemirror/language@6.11.2)(@codemirror/lint@6.8.5)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/view@6.38.1) - codemirror: 5.65.19 + '@uiw/codemirror-extensions-basic-setup': 4.22.2(@codemirror/autocomplete@6.18.6)(@codemirror/commands@6.8.1)(@codemirror/language@6.11.3)(@codemirror/lint@6.8.5)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/view@6.38.1) + codemirror: 5.65.20 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) transitivePeerDependencies: @@ -10751,17 +10833,17 @@ snapshots: - '@codemirror/lint' - '@codemirror/search' - '@vitejs/plugin-react-swc@3.6.0(@swc/helpers@0.5.17)(vite@5.4.19(@types/node@20.19.9)(terser@5.43.1))': + '@vitejs/plugin-react-swc@3.6.0(@swc/helpers@0.5.17)(vite@5.4.19(@types/node@20.19.11)(terser@5.43.1))': dependencies: - '@swc/core': 1.13.3(@swc/helpers@0.5.17) - vite: 5.4.19(@types/node@20.19.9)(terser@5.43.1) + '@swc/core': 1.13.5(@swc/helpers@0.5.17) + vite: 5.4.19(@types/node@20.19.11)(terser@5.43.1) transitivePeerDependencies: - '@swc/helpers' - '@vitejs/plugin-react-swc@3.7.0(@swc/helpers@0.5.17)(vite@5.4.8(@types/node@20.19.9)(terser@5.43.1))': + '@vitejs/plugin-react-swc@3.7.0(@swc/helpers@0.5.17)(vite@5.4.8(@types/node@20.19.11)(terser@5.43.1))': dependencies: - '@swc/core': 1.13.3(@swc/helpers@0.5.17) - vite: 5.4.8(@types/node@20.19.9)(terser@5.43.1) + '@swc/core': 1.13.5(@swc/helpers@0.5.17) + vite: 5.4.8(@types/node@20.19.11)(terser@5.43.1) transitivePeerDependencies: - '@swc/helpers' @@ -10919,7 +11001,7 @@ snapshots: ajv@8.17.1: dependencies: fast-deep-equal: 3.1.3 - fast-uri: 3.0.6 + fast-uri: 3.1.0 json-schema-traverse: 1.0.0 require-from-string: 2.0.2 @@ -10937,7 +11019,7 @@ snapshots: ansi-regex@5.0.1: {} - ansi-regex@6.1.0: {} + ansi-regex@6.2.0: {} ansi-sequence-parser@1.1.3: {} @@ -11015,7 +11097,7 @@ snapshots: babel-plugin-macros@3.1.0: dependencies: - '@babel/runtime': 7.28.2 + '@babel/runtime': 7.28.3 cosmiconfig: 7.1.0 resolve: 1.22.10 @@ -11047,7 +11129,7 @@ snapshots: boolean@3.2.0: {} - bowser@2.11.0: {} + bowser@2.12.1: {} boxen@5.1.2: dependencies: @@ -11075,7 +11157,7 @@ snapshots: broadcast-channel@3.7.0: dependencies: - '@babel/runtime': 7.28.2 + '@babel/runtime': 7.28.3 detect-node: 2.1.0 js-sha3: 0.8.0 microseconds: 0.2.0 @@ -11088,14 +11170,14 @@ snapshots: browserslist-to-esbuild@1.2.0: dependencies: - browserslist: 4.25.1 + browserslist: 4.25.3 - browserslist@4.25.1: + browserslist@4.25.3: dependencies: - caniuse-lite: 1.0.30001731 - electron-to-chromium: 1.5.198 + caniuse-lite: 1.0.30001737 + electron-to-chromium: 1.5.209 node-releases: 2.0.19 - update-browserslist-db: 1.1.3(browserslist@4.25.1) + update-browserslist-db: 1.1.3(browserslist@4.25.3) buffer-equal-constant-time@1.0.1: {} @@ -11164,7 +11246,7 @@ snapshots: camelize@1.0.1: {} - caniuse-lite@1.0.30001731: {} + caniuse-lite@1.0.30001737: {} capital-case@1.0.4: dependencies: @@ -11189,7 +11271,7 @@ snapshots: ansi-styles: 4.3.0 supports-color: 7.2.0 - chalk@5.5.0: {} + chalk@5.6.0: {} change-case@4.1.2: dependencies: @@ -11208,6 +11290,8 @@ snapshots: chardet@0.7.0: {} + chardet@2.1.0: {} + chokidar@3.6.0: dependencies: anymatch: 3.1.3 @@ -11302,13 +11386,13 @@ snapshots: dependencies: '@hapi/bourne': 3.0.0 inflation: 2.1.0 - qs: 6.14.0 + qs: 6.11.1 raw-body: 2.5.2 type-is: 1.6.18 co@4.6.0: {} - codemirror@5.65.19: {} + codemirror@5.65.20: {} color-convert@1.9.3: dependencies: @@ -11431,7 +11515,7 @@ snapshots: untildify: 4.0.0 yargs: 16.2.0 - core-js-pure@3.45.0: {} + core-js-pure@3.45.1: {} core-util-is@1.0.2: {} @@ -11471,7 +11555,7 @@ snapshots: css-color-keywords@1.0.0: {} - css-loader@6.11.0(webpack@5.101.0(esbuild@0.25.8)): + css-loader@6.11.0(webpack@5.101.3(esbuild@0.25.9)): dependencies: icss-utils: 5.1.0(postcss@8.5.6) postcss: 8.5.6 @@ -11480,9 +11564,9 @@ snapshots: postcss-modules-scope: 3.2.1(postcss@8.5.6) postcss-modules-values: 4.0.0(postcss@8.5.6) postcss-value-parser: 4.2.0 - semver: 7.7.2 + semver: 7.5.4 optionalDependencies: - webpack: 5.101.0(esbuild@0.25.8) + webpack: 5.101.3(esbuild@0.25.9) css-select@4.3.0: dependencies: @@ -11518,9 +11602,9 @@ snapshots: date-fns@2.30.0: dependencies: - '@babel/runtime': 7.28.2 + '@babel/runtime': 7.28.3 - dayjs@1.11.13: {} + dayjs@1.11.14: {} debounce@1.2.1: {} @@ -11654,7 +11738,7 @@ snapshots: dom-helpers@5.2.1: dependencies: - '@babel/runtime': 7.28.2 + '@babel/runtime': 7.28.3 csstype: 3.1.3 dom-serializer@1.4.1: @@ -11723,7 +11807,7 @@ snapshots: ee-first@1.1.1: {} - electron-to-chromium@1.5.198: {} + electron-to-chromium@1.5.209: {} elliptic@6.6.1: dependencies: @@ -11756,7 +11840,7 @@ snapshots: enhanced-resolve@5.18.3: dependencies: graceful-fs: 4.2.11 - tapable: 2.2.2 + tapable: 2.2.3 entities@2.2.0: {} @@ -11791,12 +11875,12 @@ snapshots: es6-error@4.1.1: {} - esbuild-loader@4.3.0(webpack@5.101.0(esbuild@0.25.8)): + esbuild-loader@4.3.0(webpack@5.101.3(esbuild@0.25.9)): dependencies: - esbuild: 0.25.8 + esbuild: 0.25.9 get-tsconfig: 4.10.1 loader-utils: 2.0.4 - webpack: 5.101.0(esbuild@0.25.8) + webpack: 5.101.3(esbuild@0.25.9) webpack-sources: 1.4.3 esbuild-register@3.5.0(esbuild@0.20.2): @@ -11806,10 +11890,10 @@ snapshots: transitivePeerDependencies: - supports-color - esbuild-register@3.5.0(esbuild@0.25.8): + esbuild-register@3.5.0(esbuild@0.25.9): dependencies: debug: 4.4.1(supports-color@5.5.0) - esbuild: 0.25.8 + esbuild: 0.25.9 transitivePeerDependencies: - supports-color @@ -11865,34 +11949,34 @@ snapshots: '@esbuild/win32-ia32': 0.21.5 '@esbuild/win32-x64': 0.21.5 - esbuild@0.25.8: + esbuild@0.25.9: optionalDependencies: - '@esbuild/aix-ppc64': 0.25.8 - '@esbuild/android-arm': 0.25.8 - '@esbuild/android-arm64': 0.25.8 - '@esbuild/android-x64': 0.25.8 - '@esbuild/darwin-arm64': 0.25.8 - '@esbuild/darwin-x64': 0.25.8 - '@esbuild/freebsd-arm64': 0.25.8 - '@esbuild/freebsd-x64': 0.25.8 - '@esbuild/linux-arm': 0.25.8 - '@esbuild/linux-arm64': 0.25.8 - '@esbuild/linux-ia32': 0.25.8 - '@esbuild/linux-loong64': 0.25.8 - '@esbuild/linux-mips64el': 0.25.8 - '@esbuild/linux-ppc64': 0.25.8 - '@esbuild/linux-riscv64': 0.25.8 - '@esbuild/linux-s390x': 0.25.8 - '@esbuild/linux-x64': 0.25.8 - '@esbuild/netbsd-arm64': 0.25.8 - '@esbuild/netbsd-x64': 0.25.8 - '@esbuild/openbsd-arm64': 0.25.8 - '@esbuild/openbsd-x64': 0.25.8 - '@esbuild/openharmony-arm64': 0.25.8 - '@esbuild/sunos-x64': 0.25.8 - '@esbuild/win32-arm64': 0.25.8 - '@esbuild/win32-ia32': 0.25.8 - '@esbuild/win32-x64': 0.25.8 + '@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 escalade@3.2.0: {} @@ -11952,7 +12036,7 @@ snapshots: pretty-ms: 9.2.0 signal-exit: 4.1.0 strip-final-newline: 4.0.0 - yoctocolors: 2.1.1 + yoctocolors: 2.1.2 expand-tilde@2.0.2: dependencies: @@ -11982,7 +12066,7 @@ snapshots: fast-safe-stringify@2.1.1: {} - fast-uri@3.0.6: {} + fast-uri@3.1.0: {} fast-xml-parser@5.2.5: dependencies: @@ -12065,7 +12149,7 @@ snapshots: forever-agent@0.6.1: {} - fork-ts-checker-webpack-plugin@8.0.0(typescript@5.4.4)(webpack@5.101.0(esbuild@0.25.8)): + fork-ts-checker-webpack-plugin@8.0.0(typescript@5.4.4)(webpack@5.101.3(esbuild@0.25.9)): dependencies: '@babel/code-frame': 7.27.1 chalk: 4.1.2 @@ -12077,10 +12161,10 @@ snapshots: minimatch: 3.1.2 node-abort-controller: 3.1.1 schema-utils: 3.3.0 - semver: 7.7.2 - tapable: 2.2.2 + semver: 7.5.4 + tapable: 2.2.3 typescript: 5.4.4 - webpack: 5.101.0(esbuild@0.25.8) + webpack: 5.101.3(esbuild@0.25.9) form-data@2.3.3: dependencies: @@ -12101,11 +12185,11 @@ snapshots: '@paralleldrive/cuid2': 2.2.2 dezalgo: 1.0.4 once: 1.4.0 - qs: 6.14.0 + qs: 6.11.1 - formik@2.4.5(@types/react@18.3.23)(react@18.3.1): + formik@2.4.5(@types/react@18.3.24)(react@18.3.1): dependencies: - '@types/hoist-non-react-statics': 3.3.7(@types/react@18.3.23) + '@types/hoist-non-react-statics': 3.3.7(@types/react@18.3.24) deepmerge: 2.2.1 hoist-non-react-statics: 3.3.2 lodash: 4.17.21 @@ -12126,19 +12210,19 @@ snapshots: fs-extra@10.1.0: dependencies: graceful-fs: 4.2.11 - jsonfile: 6.1.0 + jsonfile: 6.2.0 universalify: 2.0.1 fs-extra@11.2.0: dependencies: graceful-fs: 4.2.11 - jsonfile: 6.1.0 + jsonfile: 6.2.0 universalify: 2.0.1 fs-extra@11.3.1: dependencies: graceful-fs: 4.2.11 - jsonfile: 6.1.0 + jsonfile: 6.2.0 universalify: 2.0.1 fs-extra@8.1.0: @@ -12193,7 +12277,7 @@ snapshots: get-it: 8.6.10 registry-auth-token: 5.1.0 registry-url: 5.1.0 - semver: 7.7.2 + semver: 7.5.4 transitivePeerDependencies: - debug @@ -12290,7 +12374,7 @@ snapshots: es6-error: 4.1.1 matcher: 3.0.0 roarr: 2.15.4 - semver: 7.7.2 + semver: 7.5.4 serialize-error: 7.0.1 global-modules@1.0.0: @@ -12454,15 +12538,15 @@ snapshots: htmlparser2: 8.0.2 selderee: 0.11.0 - html-webpack-plugin@5.6.0(webpack@5.101.0(esbuild@0.25.8)): + html-webpack-plugin@5.6.0(webpack@5.101.3(esbuild@0.25.9)): dependencies: '@types/html-minifier-terser': 6.1.0 html-minifier-terser: 6.1.0 lodash: 4.17.21 pretty-error: 4.0.0 - tapable: 2.2.2 + tapable: 2.2.3 optionalDependencies: - webpack: 5.101.0(esbuild@0.25.8) + webpack: 5.101.3(esbuild@0.25.9) htmlparser2@6.1.0: dependencies: @@ -12531,6 +12615,10 @@ snapshots: dependencies: safer-buffer: 2.1.2 + iconv-lite@0.6.3: + dependencies: + safer-buffer: 2.1.2 + icss-utils@5.1.0(postcss@8.5.6): dependencies: postcss: 8.5.6 @@ -12599,13 +12687,13 @@ snapshots: through: 2.3.8 wrap-ansi: 7.0.0 - inquirer@8.2.6: + inquirer@8.2.7(@types/node@20.19.11): dependencies: + '@inquirer/external-editor': 1.0.1(@types/node@20.19.11) ansi-escapes: 4.3.2 chalk: 4.1.2 cli-cursor: 3.1.0 cli-width: 3.0.0 - external-editor: 3.1.0 figures: 3.2.0 lodash: 4.17.21 mute-stream: 0.0.8 @@ -12616,6 +12704,8 @@ snapshots: strip-ansi: 6.0.1 through: 2.3.8 wrap-ansi: 6.2.0 + transitivePeerDependencies: + - '@types/node' inquirer@9.3.7: dependencies: @@ -12630,7 +12720,7 @@ snapshots: string-width: 4.2.3 strip-ansi: 6.0.1 wrap-ansi: 6.2.0 - yoctocolors-cjs: 2.1.2 + yoctocolors-cjs: 2.1.3 interpret@1.4.0: {} @@ -12783,7 +12873,7 @@ snapshots: jest-worker@27.5.1: dependencies: - '@types/node': 20.19.9 + '@types/node': 20.19.11 merge-stream: 2.0.0 supports-color: 8.1.1 @@ -12826,7 +12916,7 @@ snapshots: optionalDependencies: graceful-fs: 4.2.11 - jsonfile@6.1.0: + jsonfile@6.2.0: dependencies: universalify: 2.0.1 optionalDependencies: @@ -12991,7 +13081,7 @@ snapshots: koa-send@5.0.1: dependencies: - debug: 4.4.1(supports-color@5.5.0) + debug: 4.3.4 http-errors: 1.8.1 resolve-path: 1.4.0 transitivePeerDependencies: @@ -13000,7 +13090,7 @@ snapshots: koa-session@6.4.0: dependencies: crc: 3.8.0 - debug: 4.4.1(supports-color@5.5.0) + debug: 4.3.4 is-type-of: 1.4.0 uuid: 8.3.2 transitivePeerDependencies: @@ -13149,7 +13239,7 @@ snapshots: log-symbols@6.0.0: dependencies: - chalk: 5.5.0 + chalk: 5.6.0 is-unicode-supported: 1.3.0 logform@2.7.0: @@ -13237,7 +13327,7 @@ snapshots: match-sorter@6.3.4: dependencies: - '@babel/runtime': 7.28.2 + '@babel/runtime': 7.28.3 remove-accents: 0.5.0 matcher@3.0.0: @@ -13291,10 +13381,10 @@ snapshots: mimic-response@3.1.0: {} - mini-css-extract-plugin@2.7.7(webpack@5.101.0(esbuild@0.25.8)): + mini-css-extract-plugin@2.7.7(webpack@5.101.3(esbuild@0.25.9)): dependencies: schema-utils: 4.3.2 - webpack: 5.101.0(esbuild@0.25.8) + webpack: 5.101.3(esbuild@0.25.9) minimalistic-assert@1.0.1: {} @@ -13425,7 +13515,7 @@ snapshots: ignore-by-default: 1.0.1 minimatch: 3.1.2 pstree.remy: 1.1.8 - semver: 7.7.2 + semver: 7.5.4 simple-update-notifier: 2.0.0 supports-color: 5.5.0 touch: 3.1.1 @@ -13558,7 +13648,7 @@ snapshots: ora@8.2.0: dependencies: - chalk: 5.5.0 + chalk: 5.6.0 cli-cursor: 5.0.0 cli-spinners: 2.9.2 is-interactive: 2.0.0 @@ -13615,7 +13705,7 @@ snapshots: got: 11.8.6 registry-auth-token: 4.2.2 registry-url: 5.1.0 - semver: 7.7.2 + semver: 7.5.4 packet-reader@1.0.0: {} @@ -13772,7 +13862,7 @@ snapshots: plop@4.0.1: dependencies: '@types/liftoff': 4.0.3 - chalk: 5.5.0 + chalk: 5.6.0 interpret: 3.1.1 liftoff: 4.0.0 minimist: 1.2.8 @@ -13961,7 +14051,7 @@ snapshots: dependencies: dnd-core: 16.0.1 - react-dnd@16.0.1(@types/hoist-non-react-statics@3.3.7(@types/react@18.3.23))(@types/node@20.19.9)(@types/react@18.3.23)(react@18.3.1): + react-dnd@16.0.1(@types/hoist-non-react-statics@3.3.7(@types/react@18.3.24))(@types/node@20.19.11)(@types/react@18.3.24)(react@18.3.1): dependencies: '@react-dnd/invariant': 4.0.2 '@react-dnd/shallowequal': 4.0.2 @@ -13970,9 +14060,9 @@ snapshots: hoist-non-react-statics: 3.3.2 react: 18.3.1 optionalDependencies: - '@types/hoist-non-react-statics': 3.3.7(@types/react@18.3.23) - '@types/node': 20.19.9 - '@types/react': 18.3.23 + '@types/hoist-non-react-statics': 3.3.7(@types/react@18.3.24) + '@types/node': 20.19.11 + '@types/react': 18.3.24 react-dom@18.3.1(react@18.3.1): dependencies: @@ -13983,7 +14073,7 @@ snapshots: react-email-editor@1.7.11(react@18.3.1): dependencies: react: 18.3.1 - unlayer-types: 1.289.0 + unlayer-types: 1.298.0 react-fast-compare@2.0.4: {} @@ -14005,11 +14095,11 @@ snapshots: dependencies: '@formatjs/ecma402-abstract': 1.18.2 '@formatjs/icu-messageformat-parser': 2.7.6 - '@formatjs/intl': 2.10.0(typescript@5.9.2) + '@formatjs/intl': 2.10.0(typescript@5.4.4) '@formatjs/intl-displaynames': 6.6.6 '@formatjs/intl-listformat': 7.5.5 - '@types/hoist-non-react-statics': 3.3.7(@types/react@18.3.23) - '@types/react': 18.3.23 + '@types/hoist-non-react-statics': 3.3.7(@types/react@18.3.24) + '@types/react': 18.3.24 hoist-non-react-statics: 3.3.2 intl-messageformat: 10.5.11 react: 18.3.1 @@ -14024,8 +14114,8 @@ snapshots: '@formatjs/intl': 2.10.0(typescript@5.9.2) '@formatjs/intl-displaynames': 6.6.6 '@formatjs/intl-listformat': 7.5.5 - '@types/hoist-non-react-statics': 3.3.7(@types/react@18.3.23) - '@types/react': 18.3.23 + '@types/hoist-non-react-statics': 3.3.7(@types/react@18.3.24) + '@types/react': 18.3.24 hoist-non-react-statics: 3.3.2 intl-messageformat: 10.5.11 react: 18.3.1 @@ -14040,8 +14130,8 @@ snapshots: '@formatjs/intl': 2.10.15(typescript@5.9.2) '@formatjs/intl-displaynames': 6.8.5 '@formatjs/intl-listformat': 7.7.5 - '@types/hoist-non-react-statics': 3.3.7(@types/react@18.3.23) - '@types/react': 18.3.23 + '@types/hoist-non-react-statics': 3.3.7(@types/react@18.3.24) + '@types/react': 18.3.24 hoist-non-react-statics: 3.3.2 intl-messageformat: 10.7.7 react: 18.3.1 @@ -14057,7 +14147,7 @@ snapshots: react-query@3.39.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1): dependencies: - '@babel/runtime': 7.28.2 + '@babel/runtime': 7.28.3 broadcast-channel: 3.7.0 match-sorter: 6.3.4 react: 18.3.1 @@ -14066,7 +14156,7 @@ snapshots: react-redux@7.2.9(react-dom@18.3.1(react@18.3.1))(react@18.3.1): dependencies: - '@babel/runtime': 7.28.2 + '@babel/runtime': 7.28.3 '@types/react-redux': 7.1.34 hoist-non-react-statics: 3.3.2 loose-envify: 1.4.0 @@ -14076,52 +14166,52 @@ snapshots: optionalDependencies: react-dom: 18.3.1(react@18.3.1) - react-redux@8.1.3(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(redux@4.2.1): + react-redux@8.1.3(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(redux@4.2.1): dependencies: - '@babel/runtime': 7.28.2 - '@types/hoist-non-react-statics': 3.3.7(@types/react@18.3.23) + '@babel/runtime': 7.28.3 + '@types/hoist-non-react-statics': 3.3.7(@types/react@18.3.24) '@types/use-sync-external-store': 0.0.3 hoist-non-react-statics: 3.3.2 react: 18.3.1 react-is: 18.3.1 use-sync-external-store: 1.5.0(react@18.3.1) optionalDependencies: - '@types/react': 18.3.23 - '@types/react-dom': 18.3.7(@types/react@18.3.23) + '@types/react': 18.3.24 + '@types/react-dom': 18.3.7(@types/react@18.3.24) react-dom: 18.3.1(react@18.3.1) redux: 4.2.1 react-refresh@0.14.0: {} - react-remove-scroll-bar@2.3.8(@types/react@18.3.23)(react@18.3.1): + react-remove-scroll-bar@2.3.8(@types/react@18.3.24)(react@18.3.1): dependencies: react: 18.3.1 - react-style-singleton: 2.2.3(@types/react@18.3.23)(react@18.3.1) + react-style-singleton: 2.2.3(@types/react@18.3.24)(react@18.3.1) tslib: 2.8.1 optionalDependencies: - '@types/react': 18.3.23 + '@types/react': 18.3.24 - react-remove-scroll@2.5.10(@types/react@18.3.23)(react@18.3.1): + react-remove-scroll@2.5.10(@types/react@18.3.24)(react@18.3.1): dependencies: react: 18.3.1 - react-remove-scroll-bar: 2.3.8(@types/react@18.3.23)(react@18.3.1) - react-style-singleton: 2.2.3(@types/react@18.3.23)(react@18.3.1) + react-remove-scroll-bar: 2.3.8(@types/react@18.3.24)(react@18.3.1) + react-style-singleton: 2.2.3(@types/react@18.3.24)(react@18.3.1) tslib: 2.8.1 - use-callback-ref: 1.3.3(@types/react@18.3.23)(react@18.3.1) - use-sidecar: 1.1.3(@types/react@18.3.23)(react@18.3.1) + use-callback-ref: 1.3.3(@types/react@18.3.24)(react@18.3.1) + use-sidecar: 1.1.3(@types/react@18.3.24)(react@18.3.1) optionalDependencies: - '@types/react': 18.3.23 + '@types/react': 18.3.24 - react-remove-scroll@2.5.5(@types/react@18.3.23)(react@18.3.1): + react-remove-scroll@2.5.5(@types/react@18.3.24)(react@18.3.1): dependencies: react: 18.3.1 - react-remove-scroll-bar: 2.3.8(@types/react@18.3.23)(react@18.3.1) - react-style-singleton: 2.2.3(@types/react@18.3.23)(react@18.3.1) + react-remove-scroll-bar: 2.3.8(@types/react@18.3.24)(react@18.3.1) + react-style-singleton: 2.2.3(@types/react@18.3.24)(react@18.3.1) tslib: 2.8.1 - use-callback-ref: 1.3.3(@types/react@18.3.23)(react@18.3.1) - use-sidecar: 1.1.3(@types/react@18.3.23)(react@18.3.1) + use-callback-ref: 1.3.3(@types/react@18.3.24)(react@18.3.1) + use-sidecar: 1.1.3(@types/react@18.3.24)(react@18.3.1) optionalDependencies: - '@types/react': 18.3.23 + '@types/react': 18.3.24 react-router-dom@6.30.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1): dependencies: @@ -14135,19 +14225,19 @@ snapshots: '@remix-run/router': 1.23.0 react: 18.3.1 - react-select@5.8.0(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + react-select@5.8.0(@types/react@18.3.24)(react-dom@18.3.1(react@18.3.1))(react@18.3.1): dependencies: - '@babel/runtime': 7.28.2 + '@babel/runtime': 7.28.3 '@emotion/cache': 11.14.0 - '@emotion/react': 11.14.0(@types/react@18.3.23)(react@18.3.1) - '@floating-ui/dom': 1.7.3 - '@types/react-transition-group': 4.4.12(@types/react@18.3.23) + '@emotion/react': 11.14.0(@types/react@18.3.24)(react@18.3.1) + '@floating-ui/dom': 1.7.4 + '@types/react-transition-group': 4.4.12(@types/react@18.3.24) memoize-one: 6.0.0 prop-types: 15.8.1 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) react-transition-group: 4.4.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - use-isomorphic-layout-effect: 1.2.1(@types/react@18.3.23)(react@18.3.1) + use-isomorphic-layout-effect: 1.2.1(@types/react@18.3.24)(react@18.3.1) transitivePeerDependencies: - '@types/react' - supports-color @@ -14156,26 +14246,26 @@ snapshots: dependencies: react: 18.3.1 - react-style-singleton@2.2.3(@types/react@18.3.23)(react@18.3.1): + react-style-singleton@2.2.3(@types/react@18.3.24)(react@18.3.1): dependencies: get-nonce: 1.0.1 react: 18.3.1 tslib: 2.8.1 optionalDependencies: - '@types/react': 18.3.23 + '@types/react': 18.3.24 - react-textarea-autosize@8.5.9(@types/react@18.3.23)(react@18.3.1): + react-textarea-autosize@8.5.9(@types/react@18.3.24)(react@18.3.1): dependencies: - '@babel/runtime': 7.28.2 + '@babel/runtime': 7.28.3 react: 18.3.1 - use-composed-ref: 1.4.0(@types/react@18.3.23)(react@18.3.1) - use-latest: 1.3.0(@types/react@18.3.23)(react@18.3.1) + use-composed-ref: 1.4.0(@types/react@18.3.24)(react@18.3.1) + use-latest: 1.3.0(@types/react@18.3.24)(react@18.3.1) transitivePeerDependencies: - '@types/react' react-transition-group@4.4.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1): dependencies: - '@babel/runtime': 7.28.2 + '@babel/runtime': 7.28.3 dom-helpers: 5.2.1 loose-envify: 1.4.0 prop-types: 15.8.1 @@ -14184,7 +14274,7 @@ snapshots: react-window@1.8.10(react-dom@18.3.1(react@18.3.1))(react@18.3.1): dependencies: - '@babel/runtime': 7.28.2 + '@babel/runtime': 7.28.3 memoize-one: 5.2.1 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) @@ -14253,7 +14343,7 @@ snapshots: redux@4.2.1: dependencies: - '@babel/runtime': 7.28.2 + '@babel/runtime': 7.28.3 registry-auth-token@4.2.2: dependencies: @@ -14269,7 +14359,7 @@ snapshots: relateurl@0.2.7: {} - remeda@2.29.0: + remeda@2.30.0: dependencies: type-fest: 4.41.0 @@ -14393,30 +14483,30 @@ snapshots: semver-compare: 1.0.0 sprintf-js: 1.1.3 - rollup@4.46.2: + rollup@4.48.1: dependencies: '@types/estree': 1.0.8 optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.46.2 - '@rollup/rollup-android-arm64': 4.46.2 - '@rollup/rollup-darwin-arm64': 4.46.2 - '@rollup/rollup-darwin-x64': 4.46.2 - '@rollup/rollup-freebsd-arm64': 4.46.2 - '@rollup/rollup-freebsd-x64': 4.46.2 - '@rollup/rollup-linux-arm-gnueabihf': 4.46.2 - '@rollup/rollup-linux-arm-musleabihf': 4.46.2 - '@rollup/rollup-linux-arm64-gnu': 4.46.2 - '@rollup/rollup-linux-arm64-musl': 4.46.2 - '@rollup/rollup-linux-loongarch64-gnu': 4.46.2 - '@rollup/rollup-linux-ppc64-gnu': 4.46.2 - '@rollup/rollup-linux-riscv64-gnu': 4.46.2 - '@rollup/rollup-linux-riscv64-musl': 4.46.2 - '@rollup/rollup-linux-s390x-gnu': 4.46.2 - '@rollup/rollup-linux-x64-gnu': 4.46.2 - '@rollup/rollup-linux-x64-musl': 4.46.2 - '@rollup/rollup-win32-arm64-msvc': 4.46.2 - '@rollup/rollup-win32-ia32-msvc': 4.46.2 - '@rollup/rollup-win32-x64-msvc': 4.46.2 + '@rollup/rollup-android-arm-eabi': 4.48.1 + '@rollup/rollup-android-arm64': 4.48.1 + '@rollup/rollup-darwin-arm64': 4.48.1 + '@rollup/rollup-darwin-x64': 4.48.1 + '@rollup/rollup-freebsd-arm64': 4.48.1 + '@rollup/rollup-freebsd-x64': 4.48.1 + '@rollup/rollup-linux-arm-gnueabihf': 4.48.1 + '@rollup/rollup-linux-arm-musleabihf': 4.48.1 + '@rollup/rollup-linux-arm64-gnu': 4.48.1 + '@rollup/rollup-linux-arm64-musl': 4.48.1 + '@rollup/rollup-linux-loongarch64-gnu': 4.48.1 + '@rollup/rollup-linux-ppc64-gnu': 4.48.1 + '@rollup/rollup-linux-riscv64-gnu': 4.48.1 + '@rollup/rollup-linux-riscv64-musl': 4.48.1 + '@rollup/rollup-linux-s390x-gnu': 4.48.1 + '@rollup/rollup-linux-x64-gnu': 4.48.1 + '@rollup/rollup-linux-x64-musl': 4.48.1 + '@rollup/rollup-win32-arm64-msvc': 4.48.1 + '@rollup/rollup-win32-ia32-msvc': 4.48.1 + '@rollup/rollup-win32-x64-msvc': 4.48.1 fsevents: 2.3.3 run-async@2.4.1: {} @@ -14615,7 +14705,7 @@ snapshots: simple-update-notifier@2.0.0: dependencies: - semver: 7.7.2 + semver: 7.5.4 sirv@2.0.4: dependencies: @@ -14732,14 +14822,14 @@ snapshots: stdin-discarder@0.2.2: {} - strapi-plugin-config-sync@3.1.2(3ea19e63023fc365216b0eadad674f29): + strapi-plugin-config-sync@3.1.2(52e6ec3649dcd08b3bad78457edca3d9): dependencies: - '@strapi/admin': 5.21.0(@babel/runtime@7.28.2)(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.11.2)(@codemirror/lint@6.8.5)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/theme-one-dark@6.1.3)(@codemirror/view@6.38.1)(@strapi/data-transfer@5.21.0(@types/node@20.19.9)(pg@8.8.0)(typescript@5.4.4))(@types/hoist-non-react-statics@3.3.7(@types/react@18.3.23))(@types/node@20.19.9)(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(codemirror@5.65.19)(debug@4.3.4)(pg@8.8.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@6.30.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) - '@strapi/design-system': 2.0.0-rc.29(@babel/runtime@7.28.2)(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.11.2)(@codemirror/lint@6.8.5)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/theme-one-dark@6.1.3)(@codemirror/view@6.38.1)(@strapi/icons@2.0.0-rc.29(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)))(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(codemirror@5.65.19)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) + '@strapi/admin': 5.21.0(@babel/runtime@7.28.3)(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.11.3)(@codemirror/lint@6.8.5)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/theme-one-dark@6.1.3)(@codemirror/view@6.38.1)(@strapi/data-transfer@5.21.0(@types/node@20.19.11)(pg@8.8.0)(typescript@5.4.4))(@types/hoist-non-react-statics@3.3.7(@types/react@18.3.24))(@types/node@20.19.11)(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(codemirror@5.65.20)(debug@4.3.4)(pg@8.8.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@6.30.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) + '@strapi/design-system': 2.0.0-rc.29(@babel/runtime@7.28.3)(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.11.3)(@codemirror/lint@6.8.5)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/theme-one-dark@6.1.3)(@codemirror/view@6.38.1)(@strapi/icons@2.0.0-rc.29(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)))(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(codemirror@5.65.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) '@strapi/icons': 2.0.0-rc.29(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) - '@strapi/strapi': 5.21.0(@babel/runtime@7.28.2)(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.11.2)(@codemirror/lint@6.8.5)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/theme-one-dark@6.1.3)(@codemirror/view@6.38.1)(@swc/helpers@0.5.17)(@types/hoist-non-react-statics@3.3.7(@types/react@18.3.23))(@types/node@20.19.9)(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(codemirror@5.65.19)(esbuild@0.25.8)(koa@2.16.1)(pg@8.8.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@6.30.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(terser@5.43.1)(type-fest@4.41.0) + '@strapi/strapi': 5.21.0(@babel/runtime@7.28.3)(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.11.3)(@codemirror/lint@6.8.5)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/theme-one-dark@6.1.3)(@codemirror/view@6.38.1)(@swc/helpers@0.5.17)(@types/hoist-non-react-statics@3.3.7(@types/react@18.3.24))(@types/node@20.19.11)(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(codemirror@5.65.20)(esbuild@0.25.9)(koa@2.16.1)(pg@8.8.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@6.30.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(terser@5.43.1)(type-fest@4.41.0) '@strapi/typescript-utils': 5.21.0 - '@strapi/utils': 5.21.0 + '@strapi/utils': 5.23.0 adm-zip: 0.5.16 chalk: 4.1.2 cli-table: 0.3.11 @@ -14747,7 +14837,7 @@ snapshots: file-saver: 2.0.5 git-diff: 2.0.6 immutable: 3.8.2 - inquirer: 8.2.6 + inquirer: 8.2.7(@types/node@20.19.11) lodash: 4.17.21 react: 18.3.1 react-diff-viewer-continued: 3.2.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1) @@ -14761,17 +14851,18 @@ snapshots: redux-thunk: 2.4.2(redux@4.2.1) styled-components: 6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1) transitivePeerDependencies: + - '@types/node' - react-native - supports-color - typescript - strapi-plugin-email-designer-5@0.0.7(14e4c45c83df9dbd43a1192c3d17303b): + strapi-plugin-email-designer-5@0.0.7(d2545caab219c2322de95b1255ab0636): dependencies: - '@strapi/design-system': 2.0.0-rc.29(@babel/runtime@7.28.2)(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.11.2)(@codemirror/lint@6.8.5)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/theme-one-dark@6.1.3)(@codemirror/view@6.38.1)(@strapi/icons@2.0.0-rc.29(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)))(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(codemirror@5.65.19)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) + '@strapi/design-system': 2.0.0-rc.29(@babel/runtime@7.28.3)(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.11.3)(@codemirror/lint@6.8.5)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/theme-one-dark@6.1.3)(@codemirror/view@6.38.1)(@strapi/icons@2.0.0-rc.29(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)))(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(codemirror@5.65.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) '@strapi/icons': 2.0.0-rc.29(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) - '@strapi/sdk-plugin': 5.3.2(@swc/helpers@0.5.17)(@types/node@20.19.9)(terser@5.43.1) - '@strapi/strapi': 5.21.0(@babel/runtime@7.28.2)(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.11.2)(@codemirror/lint@6.8.5)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/theme-one-dark@6.1.3)(@codemirror/view@6.38.1)(@swc/helpers@0.5.17)(@types/hoist-non-react-statics@3.3.7(@types/react@18.3.23))(@types/node@20.19.9)(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(codemirror@5.65.19)(esbuild@0.25.8)(koa@2.16.1)(pg@8.8.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@6.30.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(terser@5.43.1)(type-fest@4.41.0) - dayjs: 1.11.13 + '@strapi/sdk-plugin': 5.3.2(@swc/helpers@0.5.17)(@types/node@20.19.11)(terser@5.43.1) + '@strapi/strapi': 5.21.0(@babel/runtime@7.28.3)(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.11.3)(@codemirror/lint@6.8.5)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/theme-one-dark@6.1.3)(@codemirror/view@6.38.1)(@swc/helpers@0.5.17)(@types/hoist-non-react-statics@3.3.7(@types/react@18.3.24))(@types/node@20.19.11)(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(codemirror@5.65.20)(esbuild@0.25.9)(koa@2.16.1)(pg@8.8.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@6.30.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(terser@5.43.1)(type-fest@4.41.0) + dayjs: 1.11.14 decode-html: 2.0.0 defu: 6.1.4 destr: 2.0.5 @@ -14784,7 +14875,7 @@ snapshots: react-icons: 5.5.0(react@18.3.1) react-intl: 6.8.9(react@18.3.1)(typescript@5.9.2) react-router-dom: 6.30.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - react-textarea-autosize: 8.5.9(@types/react@18.3.23)(react@18.3.1) + react-textarea-autosize: 8.5.9(@types/react@18.3.24)(react@18.3.1) striptags: 3.2.0 styled-components: 6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1) yup: 1.7.0 @@ -14804,8 +14895,8 @@ snapshots: strapi-provider-upload-aws-s3-advanced@5.0.1: dependencies: - '@aws-sdk/client-s3': 3.862.0 - '@aws-sdk/lib-storage': 3.862.0(@aws-sdk/client-s3@3.862.0) + '@aws-sdk/client-s3': 3.876.0 + '@aws-sdk/lib-storage': 3.876.0(@aws-sdk/client-s3@3.876.0) transitivePeerDependencies: - aws-crt @@ -14858,7 +14949,7 @@ snapshots: strip-ansi@7.1.0: dependencies: - ansi-regex: 6.1.0 + ansi-regex: 6.2.0 strip-bom@3.0.0: {} @@ -14872,9 +14963,9 @@ snapshots: strnum@2.1.1: {} - style-loader@3.3.4(webpack@5.101.0(esbuild@0.25.8)): + style-loader@3.3.4(webpack@5.101.3(esbuild@0.25.9)): dependencies: - webpack: 5.101.0(esbuild@0.25.8) + webpack: 5.101.3(esbuild@0.25.9) style-mod@4.1.2: {} @@ -14915,7 +15006,7 @@ snapshots: '@pkgr/core': 0.1.2 tslib: 2.8.1 - tapable@2.2.2: {} + tapable@2.2.3: {} tar-stream@2.2.0: dependencies: @@ -14936,20 +15027,20 @@ snapshots: tarn@3.0.2: {} - terser-webpack-plugin@5.3.14(esbuild@0.25.8)(webpack@5.101.0(esbuild@0.25.8)): + terser-webpack-plugin@5.3.14(esbuild@0.25.9)(webpack@5.101.3(esbuild@0.25.9)): dependencies: - '@jridgewell/trace-mapping': 0.3.29 + '@jridgewell/trace-mapping': 0.3.30 jest-worker: 27.5.1 schema-utils: 4.3.2 serialize-javascript: 6.0.2 terser: 5.43.1 - webpack: 5.101.0(esbuild@0.25.8) + webpack: 5.101.3(esbuild@0.25.9) optionalDependencies: - esbuild: 0.25.8 + esbuild: 0.25.9 terser@5.43.1: dependencies: - '@jridgewell/source-map': 0.3.10 + '@jridgewell/source-map': 0.3.11 acorn: 8.15.0 commander: 2.20.3 source-map-support: 0.5.21 @@ -15057,6 +15148,14 @@ snapshots: handlebars: 4.7.8 typedoc: 0.25.10(typescript@5.9.2) + typedoc@0.25.10(typescript@5.4.4): + dependencies: + lunr: 2.3.9 + marked: 4.3.0 + minimatch: 9.0.5 + shiki: 0.14.7 + typescript: 5.4.4 + typedoc@0.25.10(typescript@5.9.2): dependencies: lunr: 2.3.9 @@ -15074,9 +15173,9 @@ snapshots: uglify-js@3.19.3: optional: true - umzug@3.8.1(@types/node@20.19.9): + umzug@3.8.1(@types/node@20.19.11): dependencies: - '@rushstack/ts-command-line': 4.23.7(@types/node@20.19.9) + '@rushstack/ts-command-line': 4.23.7(@types/node@20.19.11) emittery: 0.13.1 fast-glob: 3.3.3 pony-cause: 2.1.11 @@ -15102,20 +15201,20 @@ snapshots: universalify@2.0.1: {} - unlayer-types@1.289.0: {} + unlayer-types@1.298.0: {} unload@2.2.0: dependencies: - '@babel/runtime': 7.28.2 + '@babel/runtime': 7.28.3 detect-node: 2.1.0 unpipe@1.0.0: {} untildify@4.0.0: {} - update-browserslist-db@1.1.3(browserslist@4.25.1): + update-browserslist-db@1.1.3(browserslist@4.25.3): dependencies: - browserslist: 4.25.1 + browserslist: 4.25.3 escalade: 3.2.0 picocolors: 1.1.1 @@ -15133,18 +15232,18 @@ snapshots: url-join@4.0.1: {} - use-callback-ref@1.3.3(@types/react@18.3.23)(react@18.3.1): + use-callback-ref@1.3.3(@types/react@18.3.24)(react@18.3.1): dependencies: react: 18.3.1 tslib: 2.8.1 optionalDependencies: - '@types/react': 18.3.23 + '@types/react': 18.3.24 - use-composed-ref@1.4.0(@types/react@18.3.23)(react@18.3.1): + use-composed-ref@1.4.0(@types/react@18.3.24)(react@18.3.1): dependencies: react: 18.3.1 optionalDependencies: - '@types/react': 18.3.23 + '@types/react': 18.3.24 use-context-selector@1.4.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.0): dependencies: @@ -15153,26 +15252,26 @@ snapshots: optionalDependencies: react-dom: 18.3.1(react@18.3.1) - use-isomorphic-layout-effect@1.2.1(@types/react@18.3.23)(react@18.3.1): + use-isomorphic-layout-effect@1.2.1(@types/react@18.3.24)(react@18.3.1): dependencies: react: 18.3.1 optionalDependencies: - '@types/react': 18.3.23 + '@types/react': 18.3.24 - use-latest@1.3.0(@types/react@18.3.23)(react@18.3.1): + use-latest@1.3.0(@types/react@18.3.24)(react@18.3.1): dependencies: react: 18.3.1 - use-isomorphic-layout-effect: 1.2.1(@types/react@18.3.23)(react@18.3.1) + use-isomorphic-layout-effect: 1.2.1(@types/react@18.3.24)(react@18.3.1) optionalDependencies: - '@types/react': 18.3.23 + '@types/react': 18.3.24 - use-sidecar@1.1.3(@types/react@18.3.23)(react@18.3.1): + use-sidecar@1.1.3(@types/react@18.3.24)(react@18.3.1): dependencies: detect-node-es: 1.1.0 react: 18.3.1 tslib: 2.8.1 optionalDependencies: - '@types/react': 18.3.23 + '@types/react': 18.3.24 use-sync-external-store@1.5.0(react@18.3.1): dependencies: @@ -15205,23 +15304,23 @@ snapshots: core-util-is: 1.0.2 extsprintf: 1.3.0 - vite@5.4.19(@types/node@20.19.9)(terser@5.43.1): + vite@5.4.19(@types/node@20.19.11)(terser@5.43.1): dependencies: esbuild: 0.21.5 postcss: 8.5.6 - rollup: 4.46.2 + rollup: 4.48.1 optionalDependencies: - '@types/node': 20.19.9 + '@types/node': 20.19.11 fsevents: 2.3.3 terser: 5.43.1 - vite@5.4.8(@types/node@20.19.9)(terser@5.43.1): + vite@5.4.8(@types/node@20.19.11)(terser@5.43.1): dependencies: esbuild: 0.21.5 postcss: 8.5.6 - rollup: 4.46.2 + rollup: 4.48.1 optionalDependencies: - '@types/node': 20.19.9 + '@types/node': 20.19.11 fsevents: 2.3.3 terser: 5.43.1 @@ -15258,7 +15357,7 @@ snapshots: - bufferutil - utf-8-validate - webpack-dev-middleware@6.1.2(webpack@5.101.0(esbuild@0.25.8)): + webpack-dev-middleware@6.1.2(webpack@5.101.3(esbuild@0.25.9)): dependencies: colorette: 2.0.20 memfs: 3.5.3 @@ -15266,7 +15365,7 @@ snapshots: range-parser: 1.2.1 schema-utils: 4.3.2 optionalDependencies: - webpack: 5.101.0(esbuild@0.25.8) + webpack: 5.101.3(esbuild@0.25.9) webpack-hot-middleware@2.26.1: dependencies: @@ -15281,7 +15380,7 @@ snapshots: webpack-sources@3.3.3: {} - webpack@5.101.0(esbuild@0.25.8): + webpack@5.101.3(esbuild@0.25.9): dependencies: '@types/eslint-scope': 3.7.7 '@types/estree': 1.0.8 @@ -15291,7 +15390,7 @@ snapshots: '@webassemblyjs/wasm-parser': 1.14.1 acorn: 8.15.0 acorn-import-phases: 1.0.4(acorn@8.15.0) - browserslist: 4.25.1 + browserslist: 4.25.3 chrome-trace-event: 1.0.4 enhanced-resolve: 5.18.3 es-module-lexer: 1.7.0 @@ -15304,8 +15403,8 @@ snapshots: mime-types: 2.1.35 neo-async: 2.6.2 schema-utils: 4.3.2 - tapable: 2.2.2 - terser-webpack-plugin: 5.3.14(esbuild@0.25.8)(webpack@5.101.0(esbuild@0.25.8)) + tapable: 2.2.3 + terser-webpack-plugin: 5.3.14(esbuild@0.25.9)(webpack@5.101.3(esbuild@0.25.9)) watchpack: 2.4.4 webpack-sources: 3.3.3 transitivePeerDependencies: @@ -15451,13 +15550,13 @@ snapshots: yocto-queue@0.1.0: {} - yoctocolors-cjs@2.1.2: {} + yoctocolors-cjs@2.1.3: {} - yoctocolors@2.1.1: {} + yoctocolors@2.1.2: {} yup@0.32.9: dependencies: - '@babel/runtime': 7.28.2 + '@babel/runtime': 7.28.3 '@types/lodash': 4.17.20 lodash: 4.17.21 lodash-es: 4.17.21 From bced9b76cd5c84d1cf2ff2913b09b35a8b71747f Mon Sep 17 00:00:00 2001 From: Ion Dormenco Date: Thu, 11 Sep 2025 10:14:49 +0300 Subject: [PATCH 03/61] update strapi --- server2/package.json | 4 +- server2/pnpm-lock.yaml | 386 ++++++++++++++++++++--------------------- 2 files changed, 192 insertions(+), 198 deletions(-) diff --git a/server2/package.json b/server2/package.json index 25223ba1..2d20577e 100644 --- a/server2/package.json +++ b/server2/package.json @@ -15,11 +15,11 @@ "upgrade:dry": "npx @strapi/upgrade latest --dry" }, "dependencies": { - "@strapi/plugin-cloud": "5.21.0", + "@strapi/plugin-cloud": "5.23.4", "@strapi/plugin-sentry": "^5.23.0", "@strapi/plugin-users-permissions": "^5.23.0", "@strapi/provider-email-amazon-ses": "^5.23.0", - "@strapi/strapi": "5.21.0", + "@strapi/strapi": "5.23.4", "jsonwebtoken": "^9.0.2", "pg": "8.8.0", "react": "^18.3.1", diff --git a/server2/pnpm-lock.yaml b/server2/pnpm-lock.yaml index de5482da..78a8331b 100644 --- a/server2/pnpm-lock.yaml +++ b/server2/pnpm-lock.yaml @@ -9,20 +9,20 @@ importers: .: dependencies: '@strapi/plugin-cloud': - specifier: 5.21.0 - version: 5.21.0(cb2ce4845517a894efe3c13c07d0698e) + specifier: 5.23.4 + version: 5.23.4(58f25de1d6d2a0aa42d90662b10ead98) '@strapi/plugin-sentry': specifier: ^5.23.0 - version: 5.23.0(c860b69b0dd1292fe40b5a4547e19872) + version: 5.23.0(2c76787b218aa9f504ac90478c579184) '@strapi/plugin-users-permissions': specifier: ^5.23.0 - version: 5.23.0(9daaddb1d802a12fdb5cc3606c26db94) + version: 5.23.0(f5a8cbd45b28e5d5726212a2f0103933) '@strapi/provider-email-amazon-ses': specifier: ^5.23.0 version: 5.23.0 '@strapi/strapi': - specifier: 5.21.0 - version: 5.21.0(@babel/runtime@7.28.3)(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.11.3)(@codemirror/lint@6.8.5)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/theme-one-dark@6.1.3)(@codemirror/view@6.38.1)(@swc/helpers@0.5.17)(@types/hoist-non-react-statics@3.3.7(@types/react@18.3.24))(@types/node@20.19.11)(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(codemirror@5.65.20)(esbuild@0.25.9)(koa@2.16.1)(pg@8.8.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@6.30.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(terser@5.43.1)(type-fest@4.41.0) + specifier: 5.23.4 + version: 5.23.4(@babel/runtime@7.28.3)(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.11.3)(@codemirror/lint@6.8.5)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/theme-one-dark@6.1.3)(@codemirror/view@6.38.1)(@swc/helpers@0.5.17)(@types/hoist-non-react-statics@3.3.7(@types/react@18.3.24))(@types/node@20.19.11)(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(codemirror@5.65.20)(esbuild@0.25.9)(koa@2.16.1)(pg@8.8.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@6.30.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(terser@5.43.1)(type-fest@4.41.0) jsonwebtoken: specifier: ^9.0.2 version: 9.0.2 @@ -43,10 +43,10 @@ importers: version: 2.30.0 strapi-plugin-config-sync: specifier: ^3.1.2 - version: 3.1.2(52e6ec3649dcd08b3bad78457edca3d9) + version: 3.1.2(0d4847dd80aa264fdc89b1f86fa15b72) strapi-plugin-email-designer-5: specifier: ^0.0.7 - version: 0.0.7(d2545caab219c2322de95b1255ab0636) + version: 0.0.7(dfb14f3968583c3c5b8aabc8e0e3ee37) strapi-provider-upload-aws-s3-advanced: specifier: ^5.0.1 version: 5.0.1 @@ -2076,8 +2076,8 @@ packages: resolution: {integrity: sha512-mYqtQXPmrwvUljaHyGxYUIIRI3qjBTEb/f5QFi3A6VlxhpmZd5mWXn9W+qUkf2pVE1Hv3SqxefiZOPGdxmO64A==} engines: {node: '>=18.0.0'} - '@strapi/admin@5.21.0': - resolution: {integrity: sha512-fCxQSfkJJU9tV4SG56GpIcNQWoOzK5ZRAhELvv+lrdW1NlLUqt453pqMImIIvFRP6VSMobWv5cx6qtGpJ/ewwg==} + '@strapi/admin@5.23.4': + resolution: {integrity: sha512-9fgNfUJ+miaKANz8ZPn98YnT3ZilEy/AcDEj7Sg9P22U3aGDzjFvdpNn8lspIdWO6KEkHAEaLl2FEEwn1iq/9g==} engines: {node: '>=18.0.0 <=22.x.x', npm: '>=6.0.0'} peerDependencies: '@strapi/data-transfer': ^5.0.0 @@ -2086,13 +2086,13 @@ packages: react-router-dom: ^6.0.0 styled-components: ^6.0.0 - '@strapi/cloud-cli@5.21.0': - resolution: {integrity: sha512-j0q16MPvR2jlVXq+oTVxCAf2xFMtZENAe8ac7yDFniWNNICI3kX+eRjdPmVUL9lyArs9ZPqPeEmoKiLmV5+BFA==} + '@strapi/cloud-cli@5.23.4': + resolution: {integrity: sha512-+kIrsZGRk7emoAO2JmpY1FMZW8S5aUvZiS2P++118vb6SG5MTKNSFvBz6vhu47H8t6vD1YuKIxzdOKZeSPn98w==} engines: {node: '>=18.0.0 <=22.x.x', npm: '>=6.0.0'} hasBin: true - '@strapi/content-manager@5.21.0': - resolution: {integrity: sha512-qEKECBfNM5uVdON75oRPhQeeBGqQ6Ynf94dEugX/XV0S7QjlKxD+FnyO9m8TC7gJIubSmafHJNbk2rq52aNAZw==} + '@strapi/content-manager@5.23.4': + resolution: {integrity: sha512-xF7tJD1me52lAcVx815w+tgsHnDd5hbZlnM+lqr8NEB9JluCDpMEUQISrksU6U2IG9IA0ph/SqMs2IqhJ2SS6A==} engines: {node: '>=18.0.0 <=22.x.x', npm: '>=6.0.0'} peerDependencies: '@strapi/admin': ^5.0.0 @@ -2101,8 +2101,8 @@ packages: react-router-dom: ^6.0.0 styled-components: ^6.0.0 - '@strapi/content-releases@5.21.0': - resolution: {integrity: sha512-Ewg2u5uIHJdZpzH5iY8vKFwKhQ7ptZyoJnTtHEen6YyLyCKcLdHByv5XAwf1i7mh2ph38ZeLf7dQZ5IpeC/dmA==} + '@strapi/content-releases@5.23.4': + resolution: {integrity: sha512-q+VihLm1niO3mzKVsMH13bByHBIe+oYOpA022BTE70DktuHF6DM8gDM9QK6xc+xJ0g+pwxdndNR9+OBo/QbThg==} engines: {node: '>=18.0.0 <=22.x.x', npm: '>=6.0.0'} peerDependencies: '@strapi/admin': ^5.0.0 @@ -2112,8 +2112,8 @@ packages: react-router-dom: ^6.0.0 styled-components: ^6.0.0 - '@strapi/content-type-builder@5.21.0': - resolution: {integrity: sha512-jKE+iyuQy0d0IZM41dBmSfxZ0zh3TCfmCy8AsBry3Y4eN1qdpTxjzuuO9c+YfSspGfFm2tUKMYzUALe97I+h+w==} + '@strapi/content-type-builder@5.23.4': + resolution: {integrity: sha512-lzpEACIr02HM2fROdpWuGOiCDv8DpdE26V/+U/27outpeTA4CjI8Cz28by7uTgLE6nIgooQsDCowHICTEXpyxw==} engines: {node: '>=18.0.0 <=22.x.x', npm: '>=6.0.0'} peerDependencies: '@strapi/admin': ^5.0.0 @@ -2122,16 +2122,16 @@ packages: react-router-dom: ^6.0.0 styled-components: ^6.0.0 - '@strapi/core@5.21.0': - resolution: {integrity: sha512-f0s9ErTPGtTsI3m9H44xl3gg8Q1IIAOAFEr4udLOoMkqfelVPdbjjV8UDsFRX514Bsv8ZaLzOG9UkFrdhBlbRQ==} + '@strapi/core@5.23.4': + resolution: {integrity: sha512-54uOZQc55e1Sv6wBiLQbt73ttupcwofV9flT2EVTaVRRfj6yYlG3RkdIHNQ0xcVIyKnu5PVbycVfGnelFusDmA==} engines: {node: '>=18.0.0 <=22.x.x', npm: '>=6.0.0'} - '@strapi/data-transfer@5.21.0': - resolution: {integrity: sha512-57+E7P5Qom8+XG1JiRyMMUhW+CJ6s7AZXIyeGSxiMO9qrsvpdyYjmOGv5oIXxg5RmIAyzJceJjgU4aaPAIb7eA==} + '@strapi/data-transfer@5.23.4': + resolution: {integrity: sha512-xK0aOPp76fIhl7iqb2BqVR27bIfcRhRdDamCFr59a9R/xLIGDIY/oWd3IkMt5mBXakFNTi8DCEVHmrt+Gv6p0g==} engines: {node: '>=18.0.0 <=22.x.x', npm: '>=6.0.0'} - '@strapi/database@5.21.0': - resolution: {integrity: sha512-fFujURfIC1v3mLopUvovX4HI9YVhpqfKY4afnEK7l0WKYW/42KuM9EyRNRgrtvqx7SE1R73Ylj/tcfGG2hWpag==} + '@strapi/database@5.23.4': + resolution: {integrity: sha512-74buKTBdVNjNak4yDLyWUeYEuwx67eZZfIvGucLQ1U1WUEV1olVOj7dl+72OavO3zwGtVFTTxY0Jfuaql6oUKw==} engines: {node: '>=18.0.0 <=22.x.x', npm: '>=6.0.0'} '@strapi/design-system@2.0.0-rc.29': @@ -2142,8 +2142,8 @@ packages: react-dom: ^17.0.0 || ^18.0.0 styled-components: ^6.0.0 - '@strapi/email@5.21.0': - resolution: {integrity: sha512-Nl7CqFZ8FAfuNrbRnfCCSMJIUl3thoYbhpsD0DTA+pMOg4Hpnin+2OHnM4gDBsnepTGEgKzK1cuuQubI0ZiKPg==} + '@strapi/email@5.23.4': + resolution: {integrity: sha512-afGt4gx0dOyt8vcpuDF3INxaiwwpYq7MIagpyoZYPHtiex0mhGJINCcRAwEqH7SpDgRFwF1heRBjwCuJ2iDivw==} engines: {node: '>=18.0.0 <=22.x.x', npm: '>=6.0.0'} peerDependencies: '@strapi/admin': ^5.0.0 @@ -2153,12 +2153,12 @@ packages: react-router-dom: ^6.0.0 styled-components: ^6.0.0 - '@strapi/generators@5.21.0': - resolution: {integrity: sha512-aoaErWK+5ma6SwaIEpKWjPJPRv86CznJE4kIteNnHDWaIA7BVX74c/MEuVJtBAm9LDEyXe0TKcVl1FgUIwxYYA==} + '@strapi/generators@5.23.4': + resolution: {integrity: sha512-QkkfCBhiW4KU5drwoA8nN0JegzvTUbqTxpHDPH0eiHfj24kQVnpGEImXLakWTDtJHBcovcmS5wMR4Eg2okbP0A==} engines: {node: '>=18.0.0 <=22.x.x', npm: '>=6.0.0'} - '@strapi/i18n@5.21.0': - resolution: {integrity: sha512-sUU72eJ8hxoAdKdiVmvAqwlGw/Npv8qI2qpKOfDtZaiailxiecwBeEEuAYFM2U67H1yKKvUi9M+fU4wXv86F1g==} + '@strapi/i18n@5.23.4': + resolution: {integrity: sha512-/tlo9x3lXeyhrpKzx8Dp7VWeEE7sDj4DZWNx+R0ueHk0HvtW0hSoVox6VL9PmrHy356ufbCDx8WPXXiw5h9lAg==} engines: {node: '>=18.0.0 <=22.x.x', npm: '>=6.0.0'} peerDependencies: '@strapi/admin': ^5.0.0 @@ -2175,24 +2175,24 @@ packages: react-dom: ^17.0.0 || ^18.0.0 styled-components: ^6.0.0 - '@strapi/logger@5.21.0': - resolution: {integrity: sha512-TOJvY1vEmqBtpdXwr7FdYusbiXTPtvMG5c8VXiSeXX75dbZJUBlsELf9uZmafHeF14EvhV6NIgeYp7aED1s9bA==} + '@strapi/logger@5.23.4': + resolution: {integrity: sha512-D7ErJq5jzwrGnmXAvhvIyO1zwTWHDeERL7dT56YQaqtYr2wcMzr8LJqbF6CYh29OqF5mt4LyYAtZsxShLNGIww==} engines: {node: '>=18.0.0 <=22.x.x', npm: '>=6.0.0'} - '@strapi/openapi@5.21.0': - resolution: {integrity: sha512-FRlnXV/5+WGCJ4c429b8UUe4Or8TgFAqX9O6pVGdJjweQS3ZvLk7u2uIDx3v26j1tSxqHrfZKyJszyQH89eyKQ==} + '@strapi/openapi@5.23.4': + resolution: {integrity: sha512-1lGvF3nnfTGy4JkhNKKA3LEUrA7Vcx33uqaIzJolCzXLZYi7OfZDDGE2OZPJan+ffNxyiGhkSmz+8NqiqOAobA==} engines: {node: '>=18.0.0 <=22.x.x', npm: '>=6.0.0'} '@strapi/pack-up@5.1.0': resolution: {integrity: sha512-Mi0hVkt3WgKVTlLCe4aUqGlhHWZesXTEr8PiDgYbcDexEozLgbTjcNcRoK6omehDlL4fBQ5XvwWoO+XmhQttUA==} hasBin: true - '@strapi/permissions@5.21.0': - resolution: {integrity: sha512-yFhnBCuf9SvEv3xNradyM6coGUrM72VeQwhdIJueM71pTtb3sQruWnPEO04WJLoFqj++PW/FPb264jrhvezCLw==} + '@strapi/permissions@5.23.4': + resolution: {integrity: sha512-gsxVKUAAyR2S8yAZuJ+bDw8yvsUMUIeUY+JXWDJxlQqzxErKjrRCPStHlFydytQaKKYLKeoKfmf4qa9ZmEdJTQ==} engines: {node: '>=18.0.0 <=22.x.x', npm: '>=6.0.0'} - '@strapi/plugin-cloud@5.21.0': - resolution: {integrity: sha512-leFUDxUNU0zUXuUlcZkNkVeDgvpKDS9U0Xddt8Whdrmwjat/r2//rBMg0qP+ZP4vv07g1AVqC1VV7ARmVep7jQ==} + '@strapi/plugin-cloud@5.23.4': + resolution: {integrity: sha512-XOWC9ztmjXmEwJz9u2qR91TeI0oJ8ktnr/lykq+SBtxgqwSE1nwEj5lpXRnLsbv+r9ryo7nNWT3O8y3mvq7Ttw==} engines: {node: '>=18.0.0 <=22.x.x', npm: '>=6.0.0'} peerDependencies: '@strapi/admin': ^5.0.0 @@ -2226,16 +2226,16 @@ packages: resolution: {integrity: sha512-CjHtrUwSVqS/zDn/k+q36qoqdIcQg2/oCA6H92cJNQOKFqhMgbMJG3Jk+L1CWwjf+Apye2nRJinkoV+ZFRgCaA==} engines: {node: '>=18.0.0 <=22.x.x', npm: '>=6.0.0'} - '@strapi/provider-email-sendmail@5.21.0': - resolution: {integrity: sha512-1mAGu59HJmGP07z4pDPFkjBfCnsox8GZN/p2UoSiuchMZSUurA8R0Fuoa6lukf+bq+w2n0diM8WvQWPOi66/Jw==} + '@strapi/provider-email-sendmail@5.23.4': + resolution: {integrity: sha512-5Dfwo/h+07I6WFo42pKXA70iAJSjeayEfaqgy4XY5PtdHNQrWApmgs6KB+m42FFuopb1a+k75z4C6af7G/JXoQ==} engines: {node: '>=18.0.0 <=22.x.x', npm: '>=6.0.0'} - '@strapi/provider-upload-local@5.21.0': - resolution: {integrity: sha512-dNGfUhWLcANpM9vd6Ef2oorgmI9JFWlXH16Qbkx9oh/Zatas73GF8e9JsS0FEYAD9133CS+TryEqdctYXIFG8g==} + '@strapi/provider-upload-local@5.23.4': + resolution: {integrity: sha512-TQPA16p7iIyt+rDaPUjhtxaGnUTO4UtoHoGtrLHvexdNSDu1woCfJHBVZyFPilcDu6yF0cniqUshxQD/U1Hqeg==} engines: {node: '>=18.0.0 <=22.x.x', npm: '>=6.0.0'} - '@strapi/review-workflows@5.21.0': - resolution: {integrity: sha512-Wxa7D4CURXD81hiaK+fvNa9KcbJ2/HBNZ7q+YhlW/KWl6bzj7Wf1lf/cnd3JrpS3RTXn3GOCaZFOQKHuHntHCw==} + '@strapi/review-workflows@5.23.4': + resolution: {integrity: sha512-DU0PPPcjZuBl3jWLaVcU0ciJqJeBZG4d4g+vz9p0tfC9A1bfa+cSt5lIrwIX0casasRowz1tEvIOEHhihBVRnQ==} engines: {node: '>=18.0.0 <=22.x.x', npm: '>=6.0.0'} peerDependencies: '@strapi/admin': ^5.0.0 @@ -2250,8 +2250,8 @@ packages: engines: {node: '>=18.0.0 <=22.x.x', npm: '>=6.0.0'} hasBin: true - '@strapi/strapi@5.21.0': - resolution: {integrity: sha512-jy5D3x/cGftJ+BFu8pa3EnzELEoXH0j80AnjHW7zaCY1brI9ksdqc5ENcArRGVvbBJGNuZWdUF45tB7yb8ONYw==} + '@strapi/strapi@5.23.4': + resolution: {integrity: sha512-lTgUnCi3zfrsqMoIKOVrYibUd2TcPajt9nqBizDmj3fKQeuCdgRbQrvNqa3Kv7j5DngwXKF7AX257IMcQFhjeQ==} engines: {node: '>=18.0.0 <=22.x.x', npm: '>=6.0.0'} hasBin: true peerDependencies: @@ -2260,12 +2260,12 @@ packages: react-router-dom: ^6.0.0 styled-components: ^6.0.0 - '@strapi/types@5.21.0': - resolution: {integrity: sha512-QAk317VGpHmvk6HlN0h+mlsuceP0uZHvHWNL8VcPORWVZNYbP+mbdKw0mgu6ot22mtlalTDgZuktjw4S666i3Q==} + '@strapi/types@5.23.4': + resolution: {integrity: sha512-0+HUyURFs+6PlNrBIB3QaKWgunkIpEkQFF5uVxJrPQHTvlxLF7YMpVzWRqI/eCoeuOv8assOw9bhV+Jcoh/ifA==} engines: {node: '>=18.0.0 <=22.x.x', npm: '>=6.0.0'} - '@strapi/typescript-utils@5.21.0': - resolution: {integrity: sha512-PR1/KewnUu/Y1bNN/dog6QMgT6GyWoVfokevc6Qhdm0YTxR/q62u/z7a/XqT8M2+ST2B0bdKittBp3UsqlUwdQ==} + '@strapi/typescript-utils@5.23.4': + resolution: {integrity: sha512-t+l1sedEmk8knAjpIKMGxWKoEzqB7Fp48IVncHvkb5wZNA/RZ4QmZoPMfj1klDATx7E32EM2WjVRHgGYXDeL8g==} engines: {node: '>=18.0.0 <=22.x.x', npm: '>=6.0.0'} '@strapi/ui-primitives@2.0.0-rc.29': @@ -2274,8 +2274,8 @@ packages: react: ^17.0.0 || ^18.0.0 react-dom: ^17.0.0 || ^18.0.0 - '@strapi/upload@5.21.0': - resolution: {integrity: sha512-HU85C2zZW6WP5UZgYSIm4HUJdDKX3KKMwes2cqihJ/dRXIj0Dl5Fdt/AymBfnxSn8ntl3/LRgQzrAo+Ez33Svw==} + '@strapi/upload@5.23.4': + resolution: {integrity: sha512-Mcnj+0tfsJIYi1uT6uduQHhz+dCCDCvHhp1I3lprSZAG8/X705ougsdW0qYl8iPejuu4KRxc+gtJqQBFW0CLTw==} engines: {node: '>=18.0.0 <=22.x.x', npm: '>=6.0.0'} peerDependencies: '@strapi/admin': ^5.0.0 @@ -2284,14 +2284,14 @@ packages: react-router-dom: ^6.0.0 styled-components: ^6.0.0 - '@strapi/utils@5.21.0': - resolution: {integrity: sha512-w3pJzi0KnxOe7grpaJOgZOSUz6p7k2UYJXKgV/6Kia6+Pqjb8UkV3gNFOJucJyK9LVf1aD6dDUAFUXPWGQiv/A==} - engines: {node: '>=18.0.0 <=22.x.x', npm: '>=6.0.0'} - '@strapi/utils@5.23.0': resolution: {integrity: sha512-gv5qzcZE3yhQgcMpG02PA+1fyWjiFrYm0hAXQ964koAGK9ROLpVaTsv4Tbk8u62sFnXYoF/GVDk8RtryTligRA==} engines: {node: '>=18.0.0 <=22.x.x', npm: '>=6.0.0'} + '@strapi/utils@5.23.4': + resolution: {integrity: sha512-t60+0E5lSxZQBDhLIM2g8mQv7lQj8DiAKsfX+VX05Q0kFSItKsvzYuxL+h7yqvh6PImm8NgvIME4FU1NiT9dKg==} + engines: {node: '>=18.0.0 <=22.x.x', npm: '>=6.0.0'} + '@swc/core-darwin-arm64@1.13.5': resolution: {integrity: sha512-lKNv7SujeXvKn16gvQqUQI5DdyY8v7xcoO3k06/FJbHJS90zEwZdQiMNRiqpYw/orU543tPaWgz7cIYWhbopiQ==} engines: {node: '>=10'} @@ -2603,6 +2603,9 @@ packages: react: '>=16.8.0' react-dom: '>=16.8.0' + '@vercel/stega@0.1.2': + resolution: {integrity: sha512-P7mafQXjkrsoyTRppnt0N21udKS9wUmLXHRyP9saLXLHw32j/FgUJ3FscSWgvSqRs4cj7wKZtwqJEvWJ2jbGmA==} + '@vitejs/plugin-react-swc@3.6.0': resolution: {integrity: sha512-XFRbsGgpGxGzEV5i5+vRiro1bwcIaZDIdBRP16qwm+jP68ue/S8FJTBEgOeojtVDYrbSua3XFp71kC8VJE6v+g==} peerDependencies: @@ -6625,8 +6628,8 @@ packages: resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} engines: {node: '>= 10.0.0'} - unlayer-types@1.298.0: - resolution: {integrity: sha512-LiOO3KxYDfd1Ag9dmzu0yxQulaLw7oj2JbTyA0XMuUaCP0hHmbfu2y1JmuOcL9KlqI+j87ElDLiMGYpWDJe9Bg==} + unlayer-types@1.303.0: + resolution: {integrity: sha512-bWM3ixyZRHUZq5pKg+HIIhWswT/SAEJ2JqErth5QXk8qPdHv+WXxu/W+hk+8YGNgMgAuUsQsOpTHwO7YFq3tHQ==} unload@2.2.0: resolution: {integrity: sha512-B60uB5TNBLtN6/LsgAf3udH9saB5p7gqJwcFfbOEZ8BcBHnGwCf6G/TGiEqkRAxX7zAFIUtzdrXQSdL3Q/wqNA==} @@ -8057,18 +8060,6 @@ snapshots: dependencies: tslib: 2.8.1 - '@formatjs/intl@2.10.0(typescript@5.4.4)': - dependencies: - '@formatjs/ecma402-abstract': 1.18.2 - '@formatjs/fast-memoize': 2.2.0 - '@formatjs/icu-messageformat-parser': 2.7.6 - '@formatjs/intl-displaynames': 6.6.6 - '@formatjs/intl-listformat': 7.5.5 - intl-messageformat: 10.5.11 - tslib: 2.8.1 - optionalDependencies: - typescript: 5.4.4 - '@formatjs/intl@2.10.0(typescript@5.9.2)': dependencies: '@formatjs/ecma402-abstract': 1.18.2 @@ -8223,7 +8214,7 @@ snapshots: '@koa/router@12.0.2': dependencies: - debug: 4.3.4 + debug: 4.4.1(supports-color@5.5.0) http-errors: 2.0.0 koa-compose: 4.1.0 methods: 1.1.2 @@ -9391,20 +9382,20 @@ snapshots: '@smithy/types': 4.3.2 tslib: 2.8.1 - '@strapi/admin@5.21.0(@babel/runtime@7.28.3)(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.11.3)(@codemirror/lint@6.8.5)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/theme-one-dark@6.1.3)(@codemirror/view@6.38.1)(@strapi/data-transfer@5.21.0(@types/node@20.19.11)(pg@8.8.0)(typescript@5.4.4))(@types/hoist-non-react-statics@3.3.7(@types/react@18.3.24))(@types/node@20.19.11)(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(codemirror@5.65.20)(debug@4.3.4)(pg@8.8.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@6.30.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1))': + '@strapi/admin@5.23.4(@babel/runtime@7.28.3)(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.11.3)(@codemirror/lint@6.8.5)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/theme-one-dark@6.1.3)(@codemirror/view@6.38.1)(@strapi/data-transfer@5.23.4(@types/node@20.19.11)(pg@8.8.0)(typescript@5.4.4))(@types/hoist-non-react-statics@3.3.7(@types/react@18.3.24))(@types/node@20.19.11)(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(codemirror@5.65.20)(debug@4.3.4)(pg@8.8.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@6.30.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1))': dependencies: '@casl/ability': 6.5.0 '@internationalized/date': 3.5.4 '@radix-ui/react-context': 1.0.1(@types/react@18.3.24)(react@18.3.1) '@radix-ui/react-toolbar': 1.0.4(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@reduxjs/toolkit': 1.9.7(react-redux@8.1.3(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(redux@4.2.1))(react@18.3.1) - '@strapi/data-transfer': 5.21.0(@types/node@20.19.11)(pg@8.8.0)(typescript@5.9.2) + '@strapi/data-transfer': 5.23.4(@types/node@20.19.11)(pg@8.8.0)(typescript@5.9.2) '@strapi/design-system': 2.0.0-rc.29(@babel/runtime@7.28.3)(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.11.3)(@codemirror/lint@6.8.5)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/theme-one-dark@6.1.3)(@codemirror/view@6.38.1)(@strapi/icons@2.0.0-rc.29(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)))(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(codemirror@5.65.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) '@strapi/icons': 2.0.0-rc.29(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) - '@strapi/permissions': 5.21.0 - '@strapi/types': 5.21.0(@types/node@20.19.11)(pg@8.8.0)(typescript@5.4.4) - '@strapi/typescript-utils': 5.21.0 - '@strapi/utils': 5.21.0 + '@strapi/permissions': 5.23.4 + '@strapi/types': 5.23.4(@types/node@20.19.11)(pg@8.8.0)(typescript@5.4.4) + '@strapi/typescript-utils': 5.23.4 + '@strapi/utils': 5.23.4 '@testing-library/dom': 10.1.0 '@testing-library/react': 15.0.7(@types/react@18.3.24)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@testing-library/user-event': 14.5.2(@testing-library/dom@10.1.0) @@ -9489,9 +9480,9 @@ snapshots: - supports-color - tedious - '@strapi/cloud-cli@5.21.0': + '@strapi/cloud-cli@5.23.4': dependencies: - '@strapi/utils': 5.21.0 + '@strapi/utils': 5.23.4 axios: 1.8.4(debug@4.3.4) boxen: 5.1.2 chalk: 4.1.2 @@ -9515,7 +9506,7 @@ snapshots: - debug - supports-color - '@strapi/content-manager@5.21.0(a3e5e00edca7e118a3d6b54d1e59117c)': + '@strapi/content-manager@5.23.4(a7b1222be5faf8e989ea0c6165d749dc)': dependencies: '@dnd-kit/core': 6.3.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@dnd-kit/sortable': 10.0.0(@dnd-kit/core@6.3.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1) @@ -9523,11 +9514,11 @@ snapshots: '@radix-ui/react-toolbar': 1.0.4(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@reduxjs/toolkit': 1.9.7(react-redux@8.1.3(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(redux@4.2.1))(react@18.3.1) '@sindresorhus/slugify': 1.1.0 - '@strapi/admin': 5.21.0(@babel/runtime@7.28.3)(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.11.3)(@codemirror/lint@6.8.5)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/theme-one-dark@6.1.3)(@codemirror/view@6.38.1)(@strapi/data-transfer@5.21.0(@types/node@20.19.11)(pg@8.8.0)(typescript@5.4.4))(@types/hoist-non-react-statics@3.3.7(@types/react@18.3.24))(@types/node@20.19.11)(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(codemirror@5.65.20)(debug@4.3.4)(pg@8.8.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@6.30.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) + '@strapi/admin': 5.23.4(@babel/runtime@7.28.3)(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.11.3)(@codemirror/lint@6.8.5)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/theme-one-dark@6.1.3)(@codemirror/view@6.38.1)(@strapi/data-transfer@5.23.4(@types/node@20.19.11)(pg@8.8.0)(typescript@5.4.4))(@types/hoist-non-react-statics@3.3.7(@types/react@18.3.24))(@types/node@20.19.11)(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(codemirror@5.65.20)(debug@4.3.4)(pg@8.8.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@6.30.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) '@strapi/design-system': 2.0.0-rc.29(@babel/runtime@7.28.3)(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.11.3)(@codemirror/lint@6.8.5)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/theme-one-dark@6.1.3)(@codemirror/view@6.38.1)(@strapi/icons@2.0.0-rc.29(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)))(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(codemirror@5.65.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) '@strapi/icons': 2.0.0-rc.29(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) - '@strapi/types': 5.21.0(@types/node@20.19.11)(pg@8.8.0)(typescript@5.9.2) - '@strapi/utils': 5.21.0 + '@strapi/types': 5.23.4(@types/node@20.19.11)(pg@8.8.0)(typescript@5.9.2) + '@strapi/utils': 5.23.4 codemirror5: codemirror@5.65.20 date-fns: 2.30.0 fractional-indexing: 3.2.0 @@ -9589,16 +9580,16 @@ snapshots: - tedious - typescript - '@strapi/content-releases@5.21.0(49cc319b97b6dcf67d1f87987412f97a)': + '@strapi/content-releases@5.23.4(dc0929b68f7f85aa8b096aebf7d5e87f)': dependencies: '@reduxjs/toolkit': 1.9.7(react-redux@8.1.3(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(redux@4.2.1))(react@18.3.1) - '@strapi/admin': 5.21.0(@babel/runtime@7.28.3)(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.11.3)(@codemirror/lint@6.8.5)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/theme-one-dark@6.1.3)(@codemirror/view@6.38.1)(@strapi/data-transfer@5.21.0(@types/node@20.19.11)(pg@8.8.0)(typescript@5.4.4))(@types/hoist-non-react-statics@3.3.7(@types/react@18.3.24))(@types/node@20.19.11)(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(codemirror@5.65.20)(debug@4.3.4)(pg@8.8.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@6.30.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) - '@strapi/content-manager': 5.21.0(a3e5e00edca7e118a3d6b54d1e59117c) - '@strapi/database': 5.21.0(@types/node@20.19.11)(pg@8.8.0) + '@strapi/admin': 5.23.4(@babel/runtime@7.28.3)(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.11.3)(@codemirror/lint@6.8.5)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/theme-one-dark@6.1.3)(@codemirror/view@6.38.1)(@strapi/data-transfer@5.23.4(@types/node@20.19.11)(pg@8.8.0)(typescript@5.4.4))(@types/hoist-non-react-statics@3.3.7(@types/react@18.3.24))(@types/node@20.19.11)(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(codemirror@5.65.20)(debug@4.3.4)(pg@8.8.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@6.30.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) + '@strapi/content-manager': 5.23.4(a7b1222be5faf8e989ea0c6165d749dc) + '@strapi/database': 5.23.4(@types/node@20.19.11)(pg@8.8.0) '@strapi/design-system': 2.0.0-rc.29(@babel/runtime@7.28.3)(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.11.3)(@codemirror/lint@6.8.5)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/theme-one-dark@6.1.3)(@codemirror/view@6.38.1)(@strapi/icons@2.0.0-rc.29(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)))(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(codemirror@5.65.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) '@strapi/icons': 2.0.0-rc.29(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) - '@strapi/types': 5.21.0(@types/node@20.19.11)(pg@8.8.0)(typescript@5.4.4) - '@strapi/utils': 5.21.0 + '@strapi/types': 5.23.4(@types/node@20.19.11)(pg@8.8.0)(typescript@5.4.4) + '@strapi/utils': 5.23.4 date-fns: 2.30.0 date-fns-tz: 2.0.1(date-fns@2.30.0) formik: 2.4.5(@types/react@18.3.24)(react@18.3.1) @@ -9636,7 +9627,7 @@ snapshots: - tedious - typescript - '@strapi/content-type-builder@5.21.0(4a7a746baac11fe4ef913f9df888e21b)': + '@strapi/content-type-builder@5.23.4(9a8182cf6cf68dc87ee24dab2009647d)': dependencies: '@dnd-kit/core': 6.3.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@dnd-kit/modifiers': 9.0.0(@dnd-kit/core@6.3.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1) @@ -9644,11 +9635,11 @@ snapshots: '@dnd-kit/utilities': 3.2.2(react@18.3.1) '@reduxjs/toolkit': 1.9.7(react-redux@8.1.3(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(redux@4.2.1))(react@18.3.1) '@sindresorhus/slugify': 1.1.0 - '@strapi/admin': 5.21.0(@babel/runtime@7.28.3)(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.11.3)(@codemirror/lint@6.8.5)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/theme-one-dark@6.1.3)(@codemirror/view@6.38.1)(@strapi/data-transfer@5.21.0(@types/node@20.19.11)(pg@8.8.0)(typescript@5.4.4))(@types/hoist-non-react-statics@3.3.7(@types/react@18.3.24))(@types/node@20.19.11)(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(codemirror@5.65.20)(debug@4.3.4)(pg@8.8.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@6.30.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) + '@strapi/admin': 5.23.4(@babel/runtime@7.28.3)(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.11.3)(@codemirror/lint@6.8.5)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/theme-one-dark@6.1.3)(@codemirror/view@6.38.1)(@strapi/data-transfer@5.23.4(@types/node@20.19.11)(pg@8.8.0)(typescript@5.4.4))(@types/hoist-non-react-statics@3.3.7(@types/react@18.3.24))(@types/node@20.19.11)(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(codemirror@5.65.20)(debug@4.3.4)(pg@8.8.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@6.30.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) '@strapi/design-system': 2.0.0-rc.29(@babel/runtime@7.28.3)(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.11.3)(@codemirror/lint@6.8.5)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/theme-one-dark@6.1.3)(@codemirror/view@6.38.1)(@strapi/icons@2.0.0-rc.29(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)))(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(codemirror@5.65.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) - '@strapi/generators': 5.21.0 + '@strapi/generators': 5.23.4 '@strapi/icons': 2.0.0-rc.29(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) - '@strapi/utils': 5.21.0 + '@strapi/utils': 5.23.4 date-fns: 2.30.0 fs-extra: 11.2.0 immer: 9.0.21 @@ -9679,19 +9670,20 @@ snapshots: - redux - typescript - '@strapi/core@5.21.0(@babel/runtime@7.28.3)(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.11.3)(@codemirror/lint@6.8.5)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/theme-one-dark@6.1.3)(@codemirror/view@6.38.1)(@strapi/data-transfer@5.21.0(@types/node@20.19.11)(pg@8.8.0)(typescript@5.4.4))(@types/hoist-non-react-statics@3.3.7(@types/react@18.3.24))(@types/node@20.19.11)(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(codemirror@5.65.20)(pg@8.8.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@6.30.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1))': + '@strapi/core@5.23.4(@babel/runtime@7.28.3)(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.11.3)(@codemirror/lint@6.8.5)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/theme-one-dark@6.1.3)(@codemirror/view@6.38.1)(@strapi/data-transfer@5.23.4(@types/node@20.19.11)(pg@8.8.0)(typescript@5.4.4))(@types/hoist-non-react-statics@3.3.7(@types/react@18.3.24))(@types/node@20.19.11)(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(codemirror@5.65.20)(pg@8.8.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@6.30.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1))': dependencies: '@koa/cors': 5.0.0 '@koa/router': 12.0.2 '@paralleldrive/cuid2': 2.2.2 - '@strapi/admin': 5.21.0(@babel/runtime@7.28.3)(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.11.3)(@codemirror/lint@6.8.5)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/theme-one-dark@6.1.3)(@codemirror/view@6.38.1)(@strapi/data-transfer@5.21.0(@types/node@20.19.11)(pg@8.8.0)(typescript@5.4.4))(@types/hoist-non-react-statics@3.3.7(@types/react@18.3.24))(@types/node@20.19.11)(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(codemirror@5.65.20)(debug@4.3.4)(pg@8.8.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@6.30.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) - '@strapi/database': 5.21.0(@types/node@20.19.11)(pg@8.8.0) - '@strapi/generators': 5.21.0 - '@strapi/logger': 5.21.0 - '@strapi/permissions': 5.21.0 - '@strapi/types': 5.21.0(@types/node@20.19.11)(pg@8.8.0)(typescript@5.4.4) - '@strapi/typescript-utils': 5.21.0 - '@strapi/utils': 5.21.0 + '@strapi/admin': 5.23.4(@babel/runtime@7.28.3)(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.11.3)(@codemirror/lint@6.8.5)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/theme-one-dark@6.1.3)(@codemirror/view@6.38.1)(@strapi/data-transfer@5.23.4(@types/node@20.19.11)(pg@8.8.0)(typescript@5.4.4))(@types/hoist-non-react-statics@3.3.7(@types/react@18.3.24))(@types/node@20.19.11)(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(codemirror@5.65.20)(debug@4.3.4)(pg@8.8.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@6.30.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) + '@strapi/database': 5.23.4(@types/node@20.19.11)(pg@8.8.0) + '@strapi/generators': 5.23.4 + '@strapi/logger': 5.23.4 + '@strapi/permissions': 5.23.4 + '@strapi/types': 5.23.4(@types/node@20.19.11)(pg@8.8.0)(typescript@5.4.4) + '@strapi/typescript-utils': 5.23.4 + '@strapi/utils': 5.23.4 + '@vercel/stega': 0.1.2 bcryptjs: 2.4.3 boxen: 5.1.2 chalk: 4.1.2 @@ -9768,11 +9760,11 @@ snapshots: - supports-color - tedious - '@strapi/data-transfer@5.21.0(@types/node@20.19.11)(pg@8.8.0)(typescript@5.9.2)': + '@strapi/data-transfer@5.23.4(@types/node@20.19.11)(pg@8.8.0)(typescript@5.9.2)': dependencies: - '@strapi/logger': 5.21.0 - '@strapi/types': 5.21.0(@types/node@20.19.11)(pg@8.8.0)(typescript@5.9.2) - '@strapi/utils': 5.21.0 + '@strapi/logger': 5.23.4 + '@strapi/types': 5.23.4(@types/node@20.19.11)(pg@8.8.0)(typescript@5.9.2) + '@strapi/utils': 5.23.4 chalk: 4.1.2 cli-table3: 0.6.5 commander: 8.3.0 @@ -9801,10 +9793,10 @@ snapshots: - typescript - utf-8-validate - '@strapi/database@5.21.0(@types/node@20.19.11)(pg@8.8.0)': + '@strapi/database@5.23.4(@types/node@20.19.11)(pg@8.8.0)': dependencies: '@paralleldrive/cuid2': 2.2.2 - '@strapi/utils': 5.21.0 + '@strapi/utils': 5.23.4 ajv: 8.16.0 date-fns: 2.30.0 debug: 4.3.4 @@ -9868,13 +9860,13 @@ snapshots: - '@types/react-dom' - codemirror - '@strapi/email@5.21.0(6f13ff780246cdadccc7712d62be9213)': + '@strapi/email@5.23.4(53be3c009aefee779b29660edbf88511)': dependencies: - '@strapi/admin': 5.21.0(@babel/runtime@7.28.3)(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.11.3)(@codemirror/lint@6.8.5)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/theme-one-dark@6.1.3)(@codemirror/view@6.38.1)(@strapi/data-transfer@5.21.0(@types/node@20.19.11)(pg@8.8.0)(typescript@5.4.4))(@types/hoist-non-react-statics@3.3.7(@types/react@18.3.24))(@types/node@20.19.11)(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(codemirror@5.65.20)(debug@4.3.4)(pg@8.8.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@6.30.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) + '@strapi/admin': 5.23.4(@babel/runtime@7.28.3)(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.11.3)(@codemirror/lint@6.8.5)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/theme-one-dark@6.1.3)(@codemirror/view@6.38.1)(@strapi/data-transfer@5.23.4(@types/node@20.19.11)(pg@8.8.0)(typescript@5.4.4))(@types/hoist-non-react-statics@3.3.7(@types/react@18.3.24))(@types/node@20.19.11)(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(codemirror@5.65.20)(debug@4.3.4)(pg@8.8.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@6.30.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) '@strapi/design-system': 2.0.0-rc.29(@babel/runtime@7.28.3)(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.11.3)(@codemirror/lint@6.8.5)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/theme-one-dark@6.1.3)(@codemirror/view@6.38.1)(@strapi/icons@2.0.0-rc.29(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)))(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(codemirror@5.65.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) '@strapi/icons': 2.0.0-rc.29(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) - '@strapi/provider-email-sendmail': 5.21.0 - '@strapi/utils': 5.21.0 + '@strapi/provider-email-sendmail': 5.23.4 + '@strapi/utils': 5.23.4 koa: 2.16.1 koa2-ratelimit: 1.1.3 lodash: 4.17.21 @@ -9904,11 +9896,11 @@ snapshots: - sequelize - typescript - '@strapi/generators@5.21.0': + '@strapi/generators@5.23.4': dependencies: '@sindresorhus/slugify': 1.1.0 - '@strapi/typescript-utils': 5.21.0 - '@strapi/utils': 5.21.0 + '@strapi/typescript-utils': 5.23.4 + '@strapi/utils': 5.23.4 chalk: 4.1.2 copyfiles: 2.4.1 fs-extra: 11.2.0 @@ -9916,14 +9908,14 @@ snapshots: plop: 4.0.1 pluralize: 8.0.0 - '@strapi/i18n@5.21.0(2ca36b8202f8a877e77defa2d37e6abd)': + '@strapi/i18n@5.23.4(a62ed772e7c43cb3e1c95fa34b73baee)': dependencies: '@reduxjs/toolkit': 1.9.7(react-redux@8.1.3(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(redux@4.2.1))(react@18.3.1) - '@strapi/admin': 5.21.0(@babel/runtime@7.28.3)(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.11.3)(@codemirror/lint@6.8.5)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/theme-one-dark@6.1.3)(@codemirror/view@6.38.1)(@strapi/data-transfer@5.21.0(@types/node@20.19.11)(pg@8.8.0)(typescript@5.4.4))(@types/hoist-non-react-statics@3.3.7(@types/react@18.3.24))(@types/node@20.19.11)(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(codemirror@5.65.20)(debug@4.3.4)(pg@8.8.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@6.30.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) - '@strapi/content-manager': 5.21.0(a3e5e00edca7e118a3d6b54d1e59117c) + '@strapi/admin': 5.23.4(@babel/runtime@7.28.3)(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.11.3)(@codemirror/lint@6.8.5)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/theme-one-dark@6.1.3)(@codemirror/view@6.38.1)(@strapi/data-transfer@5.23.4(@types/node@20.19.11)(pg@8.8.0)(typescript@5.4.4))(@types/hoist-non-react-statics@3.3.7(@types/react@18.3.24))(@types/node@20.19.11)(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(codemirror@5.65.20)(debug@4.3.4)(pg@8.8.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@6.30.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) + '@strapi/content-manager': 5.23.4(a7b1222be5faf8e989ea0c6165d749dc) '@strapi/design-system': 2.0.0-rc.29(@babel/runtime@7.28.3)(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.11.3)(@codemirror/lint@6.8.5)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/theme-one-dark@6.1.3)(@codemirror/view@6.38.1)(@strapi/icons@2.0.0-rc.29(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)))(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(codemirror@5.65.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) '@strapi/icons': 2.0.0-rc.29(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) - '@strapi/utils': 5.21.0 + '@strapi/utils': 5.23.4 lodash: 4.17.21 qs: 6.11.1 react: 18.3.1 @@ -9956,12 +9948,12 @@ snapshots: react-dom: 18.3.1(react@18.3.1) styled-components: 6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@strapi/logger@5.21.0': + '@strapi/logger@5.23.4': dependencies: lodash: 4.17.21 winston: 3.10.0 - '@strapi/openapi@5.21.0': + '@strapi/openapi@5.23.4': dependencies: debug: 4.3.4 openapi-types: 12.1.3 @@ -10005,20 +9997,20 @@ snapshots: - supports-color - terser - '@strapi/permissions@5.21.0': + '@strapi/permissions@5.23.4': dependencies: '@casl/ability': 6.5.0 - '@strapi/utils': 5.21.0 + '@strapi/utils': 5.23.4 lodash: 4.17.21 qs: 6.11.1 sift: 16.0.1 - '@strapi/plugin-cloud@5.21.0(cb2ce4845517a894efe3c13c07d0698e)': + '@strapi/plugin-cloud@5.23.4(58f25de1d6d2a0aa42d90662b10ead98)': dependencies: - '@strapi/admin': 5.21.0(@babel/runtime@7.28.3)(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.11.3)(@codemirror/lint@6.8.5)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/theme-one-dark@6.1.3)(@codemirror/view@6.38.1)(@strapi/data-transfer@5.21.0(@types/node@20.19.11)(pg@8.8.0)(typescript@5.4.4))(@types/hoist-non-react-statics@3.3.7(@types/react@18.3.24))(@types/node@20.19.11)(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(codemirror@5.65.20)(debug@4.3.4)(pg@8.8.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@6.30.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) + '@strapi/admin': 5.23.4(@babel/runtime@7.28.3)(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.11.3)(@codemirror/lint@6.8.5)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/theme-one-dark@6.1.3)(@codemirror/view@6.38.1)(@strapi/data-transfer@5.23.4(@types/node@20.19.11)(pg@8.8.0)(typescript@5.4.4))(@types/hoist-non-react-statics@3.3.7(@types/react@18.3.24))(@types/node@20.19.11)(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(codemirror@5.65.20)(debug@4.3.4)(pg@8.8.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@6.30.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) '@strapi/design-system': 2.0.0-rc.29(@babel/runtime@7.28.3)(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.11.3)(@codemirror/lint@6.8.5)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/theme-one-dark@6.1.3)(@codemirror/view@6.38.1)(@strapi/icons@2.0.0-rc.29(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)))(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(codemirror@5.65.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) '@strapi/icons': 2.0.0-rc.29(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) - '@strapi/strapi': 5.21.0(@babel/runtime@7.28.3)(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.11.3)(@codemirror/lint@6.8.5)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/theme-one-dark@6.1.3)(@codemirror/view@6.38.1)(@swc/helpers@0.5.17)(@types/hoist-non-react-statics@3.3.7(@types/react@18.3.24))(@types/node@20.19.11)(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(codemirror@5.65.20)(esbuild@0.25.9)(koa@2.16.1)(pg@8.8.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@6.30.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(terser@5.43.1)(type-fest@4.41.0) + '@strapi/strapi': 5.23.4(@babel/runtime@7.28.3)(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.11.3)(@codemirror/lint@6.8.5)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/theme-one-dark@6.1.3)(@codemirror/view@6.38.1)(@swc/helpers@0.5.17)(@types/hoist-non-react-statics@3.3.7(@types/react@18.3.24))(@types/node@20.19.11)(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(codemirror@5.65.20)(esbuild@0.25.9)(koa@2.16.1)(pg@8.8.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@6.30.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(terser@5.43.1)(type-fest@4.41.0) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) react-intl: 6.6.2(react@18.3.1)(typescript@5.9.2) @@ -10038,12 +10030,12 @@ snapshots: - codemirror - typescript - '@strapi/plugin-sentry@5.23.0(c860b69b0dd1292fe40b5a4547e19872)': + '@strapi/plugin-sentry@5.23.0(2c76787b218aa9f504ac90478c579184)': dependencies: '@sentry/node': 7.112.2 '@strapi/design-system': 2.0.0-rc.29(@babel/runtime@7.28.3)(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.11.3)(@codemirror/lint@6.8.5)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/theme-one-dark@6.1.3)(@codemirror/view@6.38.1)(@strapi/icons@2.0.0-rc.29(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)))(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(codemirror@5.65.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) '@strapi/icons': 2.0.0-rc.29(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) - '@strapi/strapi': 5.21.0(@babel/runtime@7.28.3)(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.11.3)(@codemirror/lint@6.8.5)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/theme-one-dark@6.1.3)(@codemirror/view@6.38.1)(@swc/helpers@0.5.17)(@types/hoist-non-react-statics@3.3.7(@types/react@18.3.24))(@types/node@20.19.11)(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(codemirror@5.65.20)(esbuild@0.25.9)(koa@2.16.1)(pg@8.8.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@6.30.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(terser@5.43.1)(type-fest@4.41.0) + '@strapi/strapi': 5.23.4(@babel/runtime@7.28.3)(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.11.3)(@codemirror/lint@6.8.5)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/theme-one-dark@6.1.3)(@codemirror/view@6.38.1)(@swc/helpers@0.5.17)(@types/hoist-non-react-statics@3.3.7(@types/react@18.3.24))(@types/node@20.19.11)(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(codemirror@5.65.20)(esbuild@0.25.9)(koa@2.16.1)(pg@8.8.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@6.30.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(terser@5.43.1)(type-fest@4.41.0) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) react-router-dom: 6.30.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) @@ -10061,11 +10053,11 @@ snapshots: - '@types/react-dom' - codemirror - '@strapi/plugin-users-permissions@5.23.0(9daaddb1d802a12fdb5cc3606c26db94)': + '@strapi/plugin-users-permissions@5.23.0(f5a8cbd45b28e5d5726212a2f0103933)': dependencies: '@strapi/design-system': 2.0.0-rc.29(@babel/runtime@7.28.3)(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.11.3)(@codemirror/lint@6.8.5)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/theme-one-dark@6.1.3)(@codemirror/view@6.38.1)(@strapi/icons@2.0.0-rc.29(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)))(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(codemirror@5.65.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) '@strapi/icons': 2.0.0-rc.29(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) - '@strapi/strapi': 5.21.0(@babel/runtime@7.28.3)(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.11.3)(@codemirror/lint@6.8.5)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/theme-one-dark@6.1.3)(@codemirror/view@6.38.1)(@swc/helpers@0.5.17)(@types/hoist-non-react-statics@3.3.7(@types/react@18.3.24))(@types/node@20.19.11)(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(codemirror@5.65.20)(esbuild@0.25.9)(koa@2.16.1)(pg@8.8.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@6.30.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(terser@5.43.1)(type-fest@4.41.0) + '@strapi/strapi': 5.23.4(@babel/runtime@7.28.3)(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.11.3)(@codemirror/lint@6.8.5)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/theme-one-dark@6.1.3)(@codemirror/view@6.38.1)(@swc/helpers@0.5.17)(@types/hoist-non-react-statics@3.3.7(@types/react@18.3.24))(@types/node@20.19.11)(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(codemirror@5.65.20)(esbuild@0.25.9)(koa@2.16.1)(pg@8.8.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@6.30.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(terser@5.43.1)(type-fest@4.41.0) '@strapi/utils': 5.23.0 bcryptjs: 2.4.3 formik: 2.4.5(@types/react@18.3.24)(react@18.3.1) @@ -10115,24 +10107,24 @@ snapshots: transitivePeerDependencies: - supports-color - '@strapi/provider-email-sendmail@5.21.0': + '@strapi/provider-email-sendmail@5.23.4': dependencies: - '@strapi/utils': 5.21.0 + '@strapi/utils': 5.23.4 sendmail: 1.6.1 - '@strapi/provider-upload-local@5.21.0': + '@strapi/provider-upload-local@5.23.4': dependencies: - '@strapi/utils': 5.21.0 + '@strapi/utils': 5.23.4 fs-extra: 11.2.0 - '@strapi/review-workflows@5.21.0(287956a5177ca65433c276582fc6d4ab)': + '@strapi/review-workflows@5.23.4(803adbb80cf0ddeb394af2da9d32810d)': dependencies: '@reduxjs/toolkit': 1.9.7(react-redux@8.1.3(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(redux@4.2.1))(react@18.3.1) - '@strapi/admin': 5.21.0(@babel/runtime@7.28.3)(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.11.3)(@codemirror/lint@6.8.5)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/theme-one-dark@6.1.3)(@codemirror/view@6.38.1)(@strapi/data-transfer@5.21.0(@types/node@20.19.11)(pg@8.8.0)(typescript@5.4.4))(@types/hoist-non-react-statics@3.3.7(@types/react@18.3.24))(@types/node@20.19.11)(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(codemirror@5.65.20)(debug@4.3.4)(pg@8.8.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@6.30.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) - '@strapi/content-manager': 5.21.0(a3e5e00edca7e118a3d6b54d1e59117c) + '@strapi/admin': 5.23.4(@babel/runtime@7.28.3)(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.11.3)(@codemirror/lint@6.8.5)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/theme-one-dark@6.1.3)(@codemirror/view@6.38.1)(@strapi/data-transfer@5.23.4(@types/node@20.19.11)(pg@8.8.0)(typescript@5.4.4))(@types/hoist-non-react-statics@3.3.7(@types/react@18.3.24))(@types/node@20.19.11)(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(codemirror@5.65.20)(debug@4.3.4)(pg@8.8.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@6.30.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) + '@strapi/content-manager': 5.23.4(a7b1222be5faf8e989ea0c6165d749dc) '@strapi/design-system': 2.0.0-rc.29(@babel/runtime@7.28.3)(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.11.3)(@codemirror/lint@6.8.5)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/theme-one-dark@6.1.3)(@codemirror/view@6.38.1)(@strapi/icons@2.0.0-rc.29(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)))(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(codemirror@5.65.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) '@strapi/icons': 2.0.0-rc.29(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) - '@strapi/utils': 5.21.0 + '@strapi/utils': 5.23.4 fractional-indexing: 3.2.0 react: 18.3.1 react-dnd: 16.0.1(@types/hoist-non-react-statics@3.3.7(@types/react@18.3.24))(@types/node@20.19.11)(@types/react@18.3.24)(react@18.3.1) @@ -10193,28 +10185,28 @@ snapshots: - supports-color - terser - '@strapi/strapi@5.21.0(@babel/runtime@7.28.3)(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.11.3)(@codemirror/lint@6.8.5)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/theme-one-dark@6.1.3)(@codemirror/view@6.38.1)(@swc/helpers@0.5.17)(@types/hoist-non-react-statics@3.3.7(@types/react@18.3.24))(@types/node@20.19.11)(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(codemirror@5.65.20)(esbuild@0.25.9)(koa@2.16.1)(pg@8.8.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@6.30.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(terser@5.43.1)(type-fest@4.41.0)': + '@strapi/strapi@5.23.4(@babel/runtime@7.28.3)(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.11.3)(@codemirror/lint@6.8.5)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/theme-one-dark@6.1.3)(@codemirror/view@6.38.1)(@swc/helpers@0.5.17)(@types/hoist-non-react-statics@3.3.7(@types/react@18.3.24))(@types/node@20.19.11)(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(codemirror@5.65.20)(esbuild@0.25.9)(koa@2.16.1)(pg@8.8.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@6.30.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(terser@5.43.1)(type-fest@4.41.0)': dependencies: '@pmmmwh/react-refresh-webpack-plugin': 0.5.15(react-refresh@0.14.0)(type-fest@4.41.0)(webpack-hot-middleware@2.26.1)(webpack@5.101.3(esbuild@0.25.9)) - '@strapi/admin': 5.21.0(@babel/runtime@7.28.3)(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.11.3)(@codemirror/lint@6.8.5)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/theme-one-dark@6.1.3)(@codemirror/view@6.38.1)(@strapi/data-transfer@5.21.0(@types/node@20.19.11)(pg@8.8.0)(typescript@5.4.4))(@types/hoist-non-react-statics@3.3.7(@types/react@18.3.24))(@types/node@20.19.11)(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(codemirror@5.65.20)(debug@4.3.4)(pg@8.8.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@6.30.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) - '@strapi/cloud-cli': 5.21.0 - '@strapi/content-manager': 5.21.0(a3e5e00edca7e118a3d6b54d1e59117c) - '@strapi/content-releases': 5.21.0(49cc319b97b6dcf67d1f87987412f97a) - '@strapi/content-type-builder': 5.21.0(4a7a746baac11fe4ef913f9df888e21b) - '@strapi/core': 5.21.0(@babel/runtime@7.28.3)(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.11.3)(@codemirror/lint@6.8.5)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/theme-one-dark@6.1.3)(@codemirror/view@6.38.1)(@strapi/data-transfer@5.21.0(@types/node@20.19.11)(pg@8.8.0)(typescript@5.4.4))(@types/hoist-non-react-statics@3.3.7(@types/react@18.3.24))(@types/node@20.19.11)(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(codemirror@5.65.20)(pg@8.8.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@6.30.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) - '@strapi/data-transfer': 5.21.0(@types/node@20.19.11)(pg@8.8.0)(typescript@5.9.2) - '@strapi/database': 5.21.0(@types/node@20.19.11)(pg@8.8.0) - '@strapi/email': 5.21.0(6f13ff780246cdadccc7712d62be9213) - '@strapi/generators': 5.21.0 - '@strapi/i18n': 5.21.0(2ca36b8202f8a877e77defa2d37e6abd) - '@strapi/logger': 5.21.0 - '@strapi/openapi': 5.21.0 - '@strapi/permissions': 5.21.0 - '@strapi/review-workflows': 5.21.0(287956a5177ca65433c276582fc6d4ab) - '@strapi/types': 5.21.0(@types/node@20.19.11)(pg@8.8.0)(typescript@5.4.4) - '@strapi/typescript-utils': 5.21.0 - '@strapi/upload': 5.21.0(e187285805bc4b8ab0202e0e0154b006) - '@strapi/utils': 5.21.0 + '@strapi/admin': 5.23.4(@babel/runtime@7.28.3)(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.11.3)(@codemirror/lint@6.8.5)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/theme-one-dark@6.1.3)(@codemirror/view@6.38.1)(@strapi/data-transfer@5.23.4(@types/node@20.19.11)(pg@8.8.0)(typescript@5.4.4))(@types/hoist-non-react-statics@3.3.7(@types/react@18.3.24))(@types/node@20.19.11)(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(codemirror@5.65.20)(debug@4.3.4)(pg@8.8.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@6.30.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) + '@strapi/cloud-cli': 5.23.4 + '@strapi/content-manager': 5.23.4(a7b1222be5faf8e989ea0c6165d749dc) + '@strapi/content-releases': 5.23.4(dc0929b68f7f85aa8b096aebf7d5e87f) + '@strapi/content-type-builder': 5.23.4(9a8182cf6cf68dc87ee24dab2009647d) + '@strapi/core': 5.23.4(@babel/runtime@7.28.3)(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.11.3)(@codemirror/lint@6.8.5)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/theme-one-dark@6.1.3)(@codemirror/view@6.38.1)(@strapi/data-transfer@5.23.4(@types/node@20.19.11)(pg@8.8.0)(typescript@5.4.4))(@types/hoist-non-react-statics@3.3.7(@types/react@18.3.24))(@types/node@20.19.11)(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(codemirror@5.65.20)(pg@8.8.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@6.30.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) + '@strapi/data-transfer': 5.23.4(@types/node@20.19.11)(pg@8.8.0)(typescript@5.9.2) + '@strapi/database': 5.23.4(@types/node@20.19.11)(pg@8.8.0) + '@strapi/email': 5.23.4(53be3c009aefee779b29660edbf88511) + '@strapi/generators': 5.23.4 + '@strapi/i18n': 5.23.4(a62ed772e7c43cb3e1c95fa34b73baee) + '@strapi/logger': 5.23.4 + '@strapi/openapi': 5.23.4 + '@strapi/permissions': 5.23.4 + '@strapi/review-workflows': 5.23.4(803adbb80cf0ddeb394af2da9d32810d) + '@strapi/types': 5.23.4(@types/node@20.19.11)(pg@8.8.0)(typescript@5.4.4) + '@strapi/typescript-utils': 5.23.4 + '@strapi/upload': 5.23.4(db0e4df9696b6d3401df11e7e32085dd) + '@strapi/utils': 5.23.4 '@types/nodemon': 1.19.6 '@vitejs/plugin-react-swc': 3.6.0(@swc/helpers@0.5.17)(vite@5.4.19(@types/node@20.19.11)(terser@5.43.1)) boxen: 5.1.2 @@ -10313,15 +10305,15 @@ snapshots: - webpack-dev-server - webpack-plugin-serve - '@strapi/types@5.21.0(@types/node@20.19.11)(pg@8.8.0)(typescript@5.4.4)': + '@strapi/types@5.23.4(@types/node@20.19.11)(pg@8.8.0)(typescript@5.4.4)': dependencies: '@casl/ability': 6.5.0 '@koa/cors': 5.0.0 '@koa/router': 12.0.2 - '@strapi/database': 5.21.0(@types/node@20.19.11)(pg@8.8.0) - '@strapi/logger': 5.21.0 - '@strapi/permissions': 5.21.0 - '@strapi/utils': 5.21.0 + '@strapi/database': 5.23.4(@types/node@20.19.11)(pg@8.8.0) + '@strapi/logger': 5.23.4 + '@strapi/permissions': 5.23.4 + '@strapi/utils': 5.23.4 commander: 8.3.0 json-logic-js: 2.0.5 koa: 2.16.1 @@ -10343,15 +10335,15 @@ snapshots: - tedious - typescript - '@strapi/types@5.21.0(@types/node@20.19.11)(pg@8.8.0)(typescript@5.9.2)': + '@strapi/types@5.23.4(@types/node@20.19.11)(pg@8.8.0)(typescript@5.9.2)': dependencies: '@casl/ability': 6.5.0 '@koa/cors': 5.0.0 '@koa/router': 12.0.2 - '@strapi/database': 5.21.0(@types/node@20.19.11)(pg@8.8.0) - '@strapi/logger': 5.21.0 - '@strapi/permissions': 5.21.0 - '@strapi/utils': 5.21.0 + '@strapi/database': 5.23.4(@types/node@20.19.11)(pg@8.8.0) + '@strapi/logger': 5.23.4 + '@strapi/permissions': 5.23.4 + '@strapi/utils': 5.23.4 commander: 8.3.0 json-logic-js: 2.0.5 koa: 2.16.1 @@ -10373,7 +10365,7 @@ snapshots: - tedious - typescript - '@strapi/typescript-utils@5.21.0': + '@strapi/typescript-utils@5.23.4': dependencies: chalk: 4.1.2 cli-table3: 0.6.5 @@ -10410,15 +10402,15 @@ snapshots: - '@types/react' - '@types/react-dom' - '@strapi/upload@5.21.0(e187285805bc4b8ab0202e0e0154b006)': + '@strapi/upload@5.23.4(db0e4df9696b6d3401df11e7e32085dd)': dependencies: '@mux/mux-player-react': 3.1.0(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@reduxjs/toolkit': 1.9.7(react-redux@8.1.3(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(redux@4.2.1))(react@18.3.1) - '@strapi/admin': 5.21.0(@babel/runtime@7.28.3)(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.11.3)(@codemirror/lint@6.8.5)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/theme-one-dark@6.1.3)(@codemirror/view@6.38.1)(@strapi/data-transfer@5.21.0(@types/node@20.19.11)(pg@8.8.0)(typescript@5.4.4))(@types/hoist-non-react-statics@3.3.7(@types/react@18.3.24))(@types/node@20.19.11)(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(codemirror@5.65.20)(debug@4.3.4)(pg@8.8.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@6.30.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) + '@strapi/admin': 5.23.4(@babel/runtime@7.28.3)(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.11.3)(@codemirror/lint@6.8.5)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/theme-one-dark@6.1.3)(@codemirror/view@6.38.1)(@strapi/data-transfer@5.23.4(@types/node@20.19.11)(pg@8.8.0)(typescript@5.4.4))(@types/hoist-non-react-statics@3.3.7(@types/react@18.3.24))(@types/node@20.19.11)(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(codemirror@5.65.20)(debug@4.3.4)(pg@8.8.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@6.30.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) '@strapi/design-system': 2.0.0-rc.29(@babel/runtime@7.28.3)(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.11.3)(@codemirror/lint@6.8.5)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/theme-one-dark@6.1.3)(@codemirror/view@6.38.1)(@strapi/icons@2.0.0-rc.29(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)))(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(codemirror@5.65.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) '@strapi/icons': 2.0.0-rc.29(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) - '@strapi/provider-upload-local': 5.21.0 - '@strapi/utils': 5.21.0 + '@strapi/provider-upload-local': 5.23.4 + '@strapi/utils': 5.23.4 byte-size: 8.1.1 cropperjs: 1.6.1 date-fns: 2.30.0 @@ -10462,7 +10454,7 @@ snapshots: - supports-color - typescript - '@strapi/utils@5.21.0': + '@strapi/utils@5.23.0': dependencies: '@sindresorhus/slugify': 1.1.0 date-fns: 2.30.0 @@ -10475,7 +10467,7 @@ snapshots: yup: 0.32.9 zod: 3.25.67 - '@strapi/utils@5.23.0': + '@strapi/utils@5.23.4': dependencies: '@sindresorhus/slugify': 1.1.0 date-fns: 2.30.0 @@ -10833,6 +10825,8 @@ snapshots: - '@codemirror/lint' - '@codemirror/search' + '@vercel/stega@0.1.2': {} + '@vitejs/plugin-react-swc@3.6.0(@swc/helpers@0.5.17)(vite@5.4.19(@types/node@20.19.11)(terser@5.43.1))': dependencies: '@swc/core': 1.13.5(@swc/helpers@0.5.17) @@ -11386,7 +11380,7 @@ snapshots: dependencies: '@hapi/bourne': 3.0.0 inflation: 2.1.0 - qs: 6.11.1 + qs: 6.14.0 raw-body: 2.5.2 type-is: 1.6.18 @@ -11564,7 +11558,7 @@ snapshots: postcss-modules-scope: 3.2.1(postcss@8.5.6) postcss-modules-values: 4.0.0(postcss@8.5.6) postcss-value-parser: 4.2.0 - semver: 7.5.4 + semver: 7.7.2 optionalDependencies: webpack: 5.101.3(esbuild@0.25.9) @@ -12161,7 +12155,7 @@ snapshots: minimatch: 3.1.2 node-abort-controller: 3.1.1 schema-utils: 3.3.0 - semver: 7.5.4 + semver: 7.7.2 tapable: 2.2.3 typescript: 5.4.4 webpack: 5.101.3(esbuild@0.25.9) @@ -12185,7 +12179,7 @@ snapshots: '@paralleldrive/cuid2': 2.2.2 dezalgo: 1.0.4 once: 1.4.0 - qs: 6.11.1 + qs: 6.14.0 formik@2.4.5(@types/react@18.3.24)(react@18.3.1): dependencies: @@ -12277,7 +12271,7 @@ snapshots: get-it: 8.6.10 registry-auth-token: 5.1.0 registry-url: 5.1.0 - semver: 7.5.4 + semver: 7.7.2 transitivePeerDependencies: - debug @@ -12374,7 +12368,7 @@ snapshots: es6-error: 4.1.1 matcher: 3.0.0 roarr: 2.15.4 - semver: 7.5.4 + semver: 7.7.2 serialize-error: 7.0.1 global-modules@1.0.0: @@ -13081,7 +13075,7 @@ snapshots: koa-send@5.0.1: dependencies: - debug: 4.3.4 + debug: 4.4.1(supports-color@5.5.0) http-errors: 1.8.1 resolve-path: 1.4.0 transitivePeerDependencies: @@ -13090,7 +13084,7 @@ snapshots: koa-session@6.4.0: dependencies: crc: 3.8.0 - debug: 4.3.4 + debug: 4.4.1(supports-color@5.5.0) is-type-of: 1.4.0 uuid: 8.3.2 transitivePeerDependencies: @@ -13515,7 +13509,7 @@ snapshots: ignore-by-default: 1.0.1 minimatch: 3.1.2 pstree.remy: 1.1.8 - semver: 7.5.4 + semver: 7.7.2 simple-update-notifier: 2.0.0 supports-color: 5.5.0 touch: 3.1.1 @@ -13705,7 +13699,7 @@ snapshots: got: 11.8.6 registry-auth-token: 4.2.2 registry-url: 5.1.0 - semver: 7.5.4 + semver: 7.7.2 packet-reader@1.0.0: {} @@ -14073,7 +14067,7 @@ snapshots: react-email-editor@1.7.11(react@18.3.1): dependencies: react: 18.3.1 - unlayer-types: 1.298.0 + unlayer-types: 1.303.0 react-fast-compare@2.0.4: {} @@ -14095,7 +14089,7 @@ snapshots: dependencies: '@formatjs/ecma402-abstract': 1.18.2 '@formatjs/icu-messageformat-parser': 2.7.6 - '@formatjs/intl': 2.10.0(typescript@5.4.4) + '@formatjs/intl': 2.10.0(typescript@5.9.2) '@formatjs/intl-displaynames': 6.6.6 '@formatjs/intl-listformat': 7.5.5 '@types/hoist-non-react-statics': 3.3.7(@types/react@18.3.24) @@ -14705,7 +14699,7 @@ snapshots: simple-update-notifier@2.0.0: dependencies: - semver: 7.5.4 + semver: 7.7.2 sirv@2.0.4: dependencies: @@ -14822,14 +14816,14 @@ snapshots: stdin-discarder@0.2.2: {} - strapi-plugin-config-sync@3.1.2(52e6ec3649dcd08b3bad78457edca3d9): + strapi-plugin-config-sync@3.1.2(0d4847dd80aa264fdc89b1f86fa15b72): dependencies: - '@strapi/admin': 5.21.0(@babel/runtime@7.28.3)(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.11.3)(@codemirror/lint@6.8.5)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/theme-one-dark@6.1.3)(@codemirror/view@6.38.1)(@strapi/data-transfer@5.21.0(@types/node@20.19.11)(pg@8.8.0)(typescript@5.4.4))(@types/hoist-non-react-statics@3.3.7(@types/react@18.3.24))(@types/node@20.19.11)(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(codemirror@5.65.20)(debug@4.3.4)(pg@8.8.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@6.30.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) + '@strapi/admin': 5.23.4(@babel/runtime@7.28.3)(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.11.3)(@codemirror/lint@6.8.5)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/theme-one-dark@6.1.3)(@codemirror/view@6.38.1)(@strapi/data-transfer@5.23.4(@types/node@20.19.11)(pg@8.8.0)(typescript@5.4.4))(@types/hoist-non-react-statics@3.3.7(@types/react@18.3.24))(@types/node@20.19.11)(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(codemirror@5.65.20)(debug@4.3.4)(pg@8.8.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@6.30.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) '@strapi/design-system': 2.0.0-rc.29(@babel/runtime@7.28.3)(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.11.3)(@codemirror/lint@6.8.5)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/theme-one-dark@6.1.3)(@codemirror/view@6.38.1)(@strapi/icons@2.0.0-rc.29(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)))(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(codemirror@5.65.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) '@strapi/icons': 2.0.0-rc.29(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) - '@strapi/strapi': 5.21.0(@babel/runtime@7.28.3)(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.11.3)(@codemirror/lint@6.8.5)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/theme-one-dark@6.1.3)(@codemirror/view@6.38.1)(@swc/helpers@0.5.17)(@types/hoist-non-react-statics@3.3.7(@types/react@18.3.24))(@types/node@20.19.11)(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(codemirror@5.65.20)(esbuild@0.25.9)(koa@2.16.1)(pg@8.8.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@6.30.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(terser@5.43.1)(type-fest@4.41.0) - '@strapi/typescript-utils': 5.21.0 - '@strapi/utils': 5.23.0 + '@strapi/strapi': 5.23.4(@babel/runtime@7.28.3)(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.11.3)(@codemirror/lint@6.8.5)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/theme-one-dark@6.1.3)(@codemirror/view@6.38.1)(@swc/helpers@0.5.17)(@types/hoist-non-react-statics@3.3.7(@types/react@18.3.24))(@types/node@20.19.11)(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(codemirror@5.65.20)(esbuild@0.25.9)(koa@2.16.1)(pg@8.8.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@6.30.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(terser@5.43.1)(type-fest@4.41.0) + '@strapi/typescript-utils': 5.23.4 + '@strapi/utils': 5.23.4 adm-zip: 0.5.16 chalk: 4.1.2 cli-table: 0.3.11 @@ -14856,12 +14850,12 @@ snapshots: - supports-color - typescript - strapi-plugin-email-designer-5@0.0.7(d2545caab219c2322de95b1255ab0636): + strapi-plugin-email-designer-5@0.0.7(dfb14f3968583c3c5b8aabc8e0e3ee37): dependencies: '@strapi/design-system': 2.0.0-rc.29(@babel/runtime@7.28.3)(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.11.3)(@codemirror/lint@6.8.5)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/theme-one-dark@6.1.3)(@codemirror/view@6.38.1)(@strapi/icons@2.0.0-rc.29(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)))(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(codemirror@5.65.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) '@strapi/icons': 2.0.0-rc.29(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) '@strapi/sdk-plugin': 5.3.2(@swc/helpers@0.5.17)(@types/node@20.19.11)(terser@5.43.1) - '@strapi/strapi': 5.21.0(@babel/runtime@7.28.3)(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.11.3)(@codemirror/lint@6.8.5)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/theme-one-dark@6.1.3)(@codemirror/view@6.38.1)(@swc/helpers@0.5.17)(@types/hoist-non-react-statics@3.3.7(@types/react@18.3.24))(@types/node@20.19.11)(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(codemirror@5.65.20)(esbuild@0.25.9)(koa@2.16.1)(pg@8.8.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@6.30.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(terser@5.43.1)(type-fest@4.41.0) + '@strapi/strapi': 5.23.4(@babel/runtime@7.28.3)(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.11.3)(@codemirror/lint@6.8.5)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/theme-one-dark@6.1.3)(@codemirror/view@6.38.1)(@swc/helpers@0.5.17)(@types/hoist-non-react-statics@3.3.7(@types/react@18.3.24))(@types/node@20.19.11)(@types/react-dom@18.3.7(@types/react@18.3.24))(@types/react@18.3.24)(codemirror@5.65.20)(esbuild@0.25.9)(koa@2.16.1)(pg@8.8.0)(react-dom@18.3.1(react@18.3.1))(react-router-dom@6.30.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)(redux@4.2.1)(styled-components@6.1.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(terser@5.43.1)(type-fest@4.41.0) dayjs: 1.11.14 decode-html: 2.0.0 defu: 6.1.4 @@ -15201,7 +15195,7 @@ snapshots: universalify@2.0.1: {} - unlayer-types@1.298.0: {} + unlayer-types@1.303.0: {} unload@2.2.0: dependencies: From e9f77043e4912d6da1d9846456f42369229355bd Mon Sep 17 00:00:00 2001 From: Ion Dormenco Date: Thu, 11 Sep 2025 11:24:01 +0300 Subject: [PATCH 04/61] add config to sync folder --- server2/.env.example | 3 +- .../config/sync/admin-role.strapi-author.json | 658 +++++++++ .../config/sync/admin-role.strapi-editor.json | 663 +++++++++ .../sync/admin-role.strapi-super-admin.json | 1296 +++++++++++++++++ .../sync/core-store.core_admin_auth.json | 13 + ...tion_components##evaluation.dimension.json | 86 ++ ...ation_components##evaluation.question.json | 65 + ...guration_components##matrix.dimension.json | 84 ++ ...iguration_components##matrix.question.json | 181 +++ ...nt_types##admin##api-token-permission.json | 143 ++ ...ation_content_types##admin##api-token.json | 277 ++++ ...tion_content_types##admin##permission.json | 225 +++ ...figuration_content_types##admin##role.json | 202 +++ ...pes##admin##transfer-token-permission.json | 143 ++ ..._content_types##admin##transfer-token.json | 239 +++ ...figuration_content_types##admin##user.json | 305 ++++ ...pes##api##activity-type.activity-type.json | 124 ++ ...content_types##api##activity.activity.json | 244 ++++ ...ntent_types##api##dimension.dimension.json | 202 +++ ...ion_content_types##api##domain.domain.json | 143 ++ ...ent_types##api##evaluation.evaluation.json | 163 +++ ...ion_content_types##api##matrix.matrix.json | 125 ++ ...mentorship-request.mentorship-request.json | 144 ++ ...n_content_types##api##program.program.json | 220 +++ ...ion_content_types##api##report.report.json | 182 +++ ...ugin##content-releases.release-action.json | 201 +++ ...pes##plugin##content-releases.release.json | 219 +++ ...il-designer-5.email-designer-template.json | 240 +++ ...on_content_types##plugin##i18n.locale.json | 142 ++ ...ugin##review-workflows.workflow-stage.json | 182 +++ ...es##plugin##review-workflows.workflow.json | 184 +++ ...on_content_types##plugin##upload.file.json | 413 ++++++ ..._content_types##plugin##upload.folder.json | 221 +++ ...#plugin##users-permissions.permission.json | 143 ++ ...types##plugin##users-permissions.role.json | 202 +++ ...types##plugin##users-permissions.user.json | 916 ++++++++++++ ...core-store.plugin_i18n_default_locale.json | 7 + .../core-store.plugin_upload_settings.json | 11 + ...tore.plugin_upload_view_configuration.json | 10 + ...ore.plugin_users-permissions_advanced.json | 14 + ...-store.plugin_users-permissions_email.json | 34 + server2/config/sync/i18n-locale.en.json | 6 + server2/config/sync/i18n-locale.ro.json | 6 + .../config/sync/user-role.authenticated.json | 58 +- server2/config/sync/user-role.fdsc.json | 70 - server2/config/sync/user-role.mentor.json | 46 - server2/config/sync/user-role.public.json | 57 +- 47 files changed, 9311 insertions(+), 201 deletions(-) create mode 100644 server2/config/sync/admin-role.strapi-author.json create mode 100644 server2/config/sync/admin-role.strapi-editor.json create mode 100644 server2/config/sync/admin-role.strapi-super-admin.json create mode 100644 server2/config/sync/core-store.core_admin_auth.json create mode 100644 server2/config/sync/core-store.plugin_content_manager_configuration_components##evaluation.dimension.json create mode 100644 server2/config/sync/core-store.plugin_content_manager_configuration_components##evaluation.question.json create mode 100644 server2/config/sync/core-store.plugin_content_manager_configuration_components##matrix.dimension.json create mode 100644 server2/config/sync/core-store.plugin_content_manager_configuration_components##matrix.question.json create mode 100644 server2/config/sync/core-store.plugin_content_manager_configuration_content_types##admin##api-token-permission.json create mode 100644 server2/config/sync/core-store.plugin_content_manager_configuration_content_types##admin##api-token.json create mode 100644 server2/config/sync/core-store.plugin_content_manager_configuration_content_types##admin##permission.json create mode 100644 server2/config/sync/core-store.plugin_content_manager_configuration_content_types##admin##role.json create mode 100644 server2/config/sync/core-store.plugin_content_manager_configuration_content_types##admin##transfer-token-permission.json create mode 100644 server2/config/sync/core-store.plugin_content_manager_configuration_content_types##admin##transfer-token.json create mode 100644 server2/config/sync/core-store.plugin_content_manager_configuration_content_types##admin##user.json create mode 100644 server2/config/sync/core-store.plugin_content_manager_configuration_content_types##api##activity-type.activity-type.json create mode 100644 server2/config/sync/core-store.plugin_content_manager_configuration_content_types##api##activity.activity.json create mode 100644 server2/config/sync/core-store.plugin_content_manager_configuration_content_types##api##dimension.dimension.json create mode 100644 server2/config/sync/core-store.plugin_content_manager_configuration_content_types##api##domain.domain.json create mode 100644 server2/config/sync/core-store.plugin_content_manager_configuration_content_types##api##evaluation.evaluation.json create mode 100644 server2/config/sync/core-store.plugin_content_manager_configuration_content_types##api##matrix.matrix.json create mode 100644 server2/config/sync/core-store.plugin_content_manager_configuration_content_types##api##mentorship-request.mentorship-request.json create mode 100644 server2/config/sync/core-store.plugin_content_manager_configuration_content_types##api##program.program.json create mode 100644 server2/config/sync/core-store.plugin_content_manager_configuration_content_types##api##report.report.json create mode 100644 server2/config/sync/core-store.plugin_content_manager_configuration_content_types##plugin##content-releases.release-action.json create mode 100644 server2/config/sync/core-store.plugin_content_manager_configuration_content_types##plugin##content-releases.release.json create mode 100644 server2/config/sync/core-store.plugin_content_manager_configuration_content_types##plugin##email-designer-5.email-designer-template.json create mode 100644 server2/config/sync/core-store.plugin_content_manager_configuration_content_types##plugin##i18n.locale.json create mode 100644 server2/config/sync/core-store.plugin_content_manager_configuration_content_types##plugin##review-workflows.workflow-stage.json create mode 100644 server2/config/sync/core-store.plugin_content_manager_configuration_content_types##plugin##review-workflows.workflow.json create mode 100644 server2/config/sync/core-store.plugin_content_manager_configuration_content_types##plugin##upload.file.json create mode 100644 server2/config/sync/core-store.plugin_content_manager_configuration_content_types##plugin##upload.folder.json create mode 100644 server2/config/sync/core-store.plugin_content_manager_configuration_content_types##plugin##users-permissions.permission.json create mode 100644 server2/config/sync/core-store.plugin_content_manager_configuration_content_types##plugin##users-permissions.role.json create mode 100644 server2/config/sync/core-store.plugin_content_manager_configuration_content_types##plugin##users-permissions.user.json create mode 100644 server2/config/sync/core-store.plugin_i18n_default_locale.json create mode 100644 server2/config/sync/core-store.plugin_upload_settings.json create mode 100644 server2/config/sync/core-store.plugin_upload_view_configuration.json create mode 100644 server2/config/sync/core-store.plugin_users-permissions_advanced.json create mode 100644 server2/config/sync/core-store.plugin_users-permissions_email.json create mode 100644 server2/config/sync/i18n-locale.en.json create mode 100644 server2/config/sync/i18n-locale.ro.json delete mode 100644 server2/config/sync/user-role.fdsc.json delete mode 100644 server2/config/sync/user-role.mentor.json diff --git a/server2/.env.example b/server2/.env.example index 5667c4e5..10042d50 100644 --- a/server2/.env.example +++ b/server2/.env.example @@ -6,7 +6,8 @@ API_TOKEN_SALT=tobemodified ADMIN_JWT_SECRET=tobemodified JWT_SECRET=tobemodified CLIENT_PUBLIC_URL=tobemodified - +DEFAULT_FROM=no-reply@crestem.ong +DEFAULT_REPLY_TO=crestem.ong@fdsc.ro # @strapi-community/dockerize variables DATABASE_HOST=localhost diff --git a/server2/config/sync/admin-role.strapi-author.json b/server2/config/sync/admin-role.strapi-author.json new file mode 100644 index 00000000..a7351439 --- /dev/null +++ b/server2/config/sync/admin-role.strapi-author.json @@ -0,0 +1,658 @@ +{ + "documentId": "dwdjd0fb9x5pn286lj2n0j9b", + "name": "Author", + "code": "strapi-author", + "description": "Authors can manage the content they have created.", + "locale": null, + "permissions": [ + { + "documentId": "m69euldc7ovsxtbfzdlgsgn9", + "action": "plugin::content-manager.explorer.create", + "actionParameters": {}, + "subject": "api::activity-type.activity-type", + "properties": { + "fields": [ + "name" + ] + }, + "conditions": [ + "admin::is-creator" + ], + "locale": null + }, + { + "documentId": "dwcqjwd0cwywwt6nil8p1ack", + "action": "plugin::content-manager.explorer.delete", + "actionParameters": {}, + "subject": "api::activity-type.activity-type", + "properties": {}, + "conditions": [ + "admin::is-creator" + ], + "locale": null + }, + { + "documentId": "zo55rublmimubr6v1x0r7qng", + "action": "plugin::content-manager.explorer.read", + "actionParameters": {}, + "subject": "api::activity-type.activity-type", + "properties": { + "fields": [ + "name" + ] + }, + "conditions": [ + "admin::is-creator" + ], + "locale": null + }, + { + "documentId": "vjhvl834yr2s48gzjnci9wyc", + "action": "plugin::content-manager.explorer.update", + "actionParameters": {}, + "subject": "api::activity-type.activity-type", + "properties": { + "fields": [ + "name" + ] + }, + "conditions": [ + "admin::is-creator" + ], + "locale": null + }, + { + "documentId": "sdfl2cr5zfi7tbui0rwdozjd", + "action": "plugin::content-manager.explorer.create", + "actionParameters": {}, + "subject": "api::activity.activity", + "properties": { + "fields": [ + "type", + "dimension", + "startDate", + "notes", + "duration", + "mentor", + "user" + ] + }, + "conditions": [ + "admin::is-creator" + ], + "locale": null + }, + { + "documentId": "i7qc31dvytyutfcrfh814o8h", + "action": "plugin::content-manager.explorer.delete", + "actionParameters": {}, + "subject": "api::activity.activity", + "properties": {}, + "conditions": [ + "admin::is-creator" + ], + "locale": null + }, + { + "documentId": "ueqh863d2jofoq32vhd8s4fb", + "action": "plugin::content-manager.explorer.read", + "actionParameters": {}, + "subject": "api::activity.activity", + "properties": { + "fields": [ + "type", + "dimension", + "startDate", + "notes", + "duration", + "mentor", + "user" + ] + }, + "conditions": [ + "admin::is-creator" + ], + "locale": null + }, + { + "documentId": "eioq5fqddee6pskg86u29q3v", + "action": "plugin::content-manager.explorer.update", + "actionParameters": {}, + "subject": "api::activity.activity", + "properties": { + "fields": [ + "type", + "dimension", + "startDate", + "notes", + "duration", + "mentor", + "user" + ] + }, + "conditions": [ + "admin::is-creator" + ], + "locale": null + }, + { + "documentId": "i7s51nm9kxevtmtkzddsb1lv", + "action": "plugin::content-manager.explorer.create", + "actionParameters": {}, + "subject": "api::dimension.dimension", + "properties": { + "fields": [ + "name", + "link", + "quiz.question", + "quiz.option_1", + "quiz.option_2", + "quiz.option_3", + "quiz.option_4", + "quiz.option_5", + "quiz.tag", + "mentors", + "activities" + ] + }, + "conditions": [ + "admin::is-creator" + ], + "locale": null + }, + { + "documentId": "zjy6pcml2f00fyoanc5rt657", + "action": "plugin::content-manager.explorer.delete", + "actionParameters": {}, + "subject": "api::dimension.dimension", + "properties": {}, + "conditions": [ + "admin::is-creator" + ], + "locale": null + }, + { + "documentId": "y241rc3zr4jbfcubk4bspxco", + "action": "plugin::content-manager.explorer.read", + "actionParameters": {}, + "subject": "api::dimension.dimension", + "properties": { + "fields": [ + "name", + "link", + "quiz.question", + "quiz.option_1", + "quiz.option_2", + "quiz.option_3", + "quiz.option_4", + "quiz.option_5", + "quiz.tag", + "mentors", + "activities" + ] + }, + "conditions": [ + "admin::is-creator" + ], + "locale": null + }, + { + "documentId": "g9c8dg910uhpbobx8v3yg5t9", + "action": "plugin::content-manager.explorer.update", + "actionParameters": {}, + "subject": "api::dimension.dimension", + "properties": { + "fields": [ + "name", + "link", + "quiz.question", + "quiz.option_1", + "quiz.option_2", + "quiz.option_3", + "quiz.option_4", + "quiz.option_5", + "quiz.tag", + "mentors", + "activities" + ] + }, + "conditions": [ + "admin::is-creator" + ], + "locale": null + }, + { + "documentId": "zi78bn3lpv3kdk0c1fbbm62h", + "action": "plugin::content-manager.explorer.create", + "actionParameters": {}, + "subject": "api::domain.domain", + "properties": { + "fields": [ + "name", + "mentors" + ] + }, + "conditions": [ + "admin::is-creator" + ], + "locale": null + }, + { + "documentId": "buq0rltxkuoybn4t72athfc0", + "action": "plugin::content-manager.explorer.delete", + "actionParameters": {}, + "subject": "api::domain.domain", + "properties": {}, + "conditions": [ + "admin::is-creator" + ], + "locale": null + }, + { + "documentId": "x22eibu4b7e3dysd8ll7qrdm", + "action": "plugin::content-manager.explorer.read", + "actionParameters": {}, + "subject": "api::domain.domain", + "properties": { + "fields": [ + "name", + "mentors" + ] + }, + "conditions": [ + "admin::is-creator" + ], + "locale": null + }, + { + "documentId": "s38xyb9sqqr2c4fawjibx29t", + "action": "plugin::content-manager.explorer.update", + "actionParameters": {}, + "subject": "api::domain.domain", + "properties": { + "fields": [ + "name", + "mentors" + ] + }, + "conditions": [ + "admin::is-creator" + ], + "locale": null + }, + { + "documentId": "tbl4q185jug3rfqt7luq84s0", + "action": "plugin::content-manager.explorer.create", + "actionParameters": {}, + "subject": "api::evaluation.evaluation", + "properties": { + "fields": [ + "dimensions.quiz.answer", + "dimensions.comment", + "email", + "report" + ] + }, + "conditions": [ + "admin::is-creator" + ], + "locale": null + }, + { + "documentId": "l7191r71a46yhtzqlvkiri5l", + "action": "plugin::content-manager.explorer.delete", + "actionParameters": {}, + "subject": "api::evaluation.evaluation", + "properties": {}, + "conditions": [ + "admin::is-creator" + ], + "locale": null + }, + { + "documentId": "vzwrow5d6hq5pxrbv0rebkbg", + "action": "plugin::content-manager.explorer.read", + "actionParameters": {}, + "subject": "api::evaluation.evaluation", + "properties": { + "fields": [ + "dimensions.quiz.answer", + "dimensions.comment", + "email", + "report" + ] + }, + "conditions": [ + "admin::is-creator" + ], + "locale": null + }, + { + "documentId": "b0vjdvxm8cqn9bb1x4gxy77r", + "action": "plugin::content-manager.explorer.update", + "actionParameters": {}, + "subject": "api::evaluation.evaluation", + "properties": { + "fields": [ + "dimensions.quiz.answer", + "dimensions.comment", + "email", + "report" + ] + }, + "conditions": [ + "admin::is-creator" + ], + "locale": null + }, + { + "documentId": "ktxbxw8lywfhz8gjdusdm5xv", + "action": "plugin::content-manager.explorer.create", + "actionParameters": {}, + "subject": "api::matrix.matrix", + "properties": { + "fields": [ + "dimensions" + ] + }, + "conditions": [ + "admin::is-creator" + ], + "locale": null + }, + { + "documentId": "n8oh42pxc6vpmlvrgej3ta3e", + "action": "plugin::content-manager.explorer.delete", + "actionParameters": {}, + "subject": "api::matrix.matrix", + "properties": {}, + "conditions": [ + "admin::is-creator" + ], + "locale": null + }, + { + "documentId": "n9wmj9wz9fthefgdwyevoz2d", + "action": "plugin::content-manager.explorer.read", + "actionParameters": {}, + "subject": "api::matrix.matrix", + "properties": { + "fields": [ + "dimensions" + ] + }, + "conditions": [ + "admin::is-creator" + ], + "locale": null + }, + { + "documentId": "g56nkfn3g8z95c0z9nc10pq4", + "action": "plugin::content-manager.explorer.update", + "actionParameters": {}, + "subject": "api::matrix.matrix", + "properties": { + "fields": [ + "dimensions" + ] + }, + "conditions": [ + "admin::is-creator" + ], + "locale": null + }, + { + "documentId": "a5n6rpqejp9tbajvbpdss615", + "action": "plugin::content-manager.explorer.create", + "actionParameters": {}, + "subject": "api::mentorship-request.mentorship-request", + "properties": { + "fields": [ + "mentor", + "user" + ] + }, + "conditions": [ + "admin::is-creator" + ], + "locale": null + }, + { + "documentId": "v4nlbjpax4e1tosi4gilhwcw", + "action": "plugin::content-manager.explorer.delete", + "actionParameters": {}, + "subject": "api::mentorship-request.mentorship-request", + "properties": {}, + "conditions": [ + "admin::is-creator" + ], + "locale": null + }, + { + "documentId": "ur5ev918cttzot2cofd37i2j", + "action": "plugin::content-manager.explorer.read", + "actionParameters": {}, + "subject": "api::mentorship-request.mentorship-request", + "properties": { + "fields": [ + "mentor", + "user" + ] + }, + "conditions": [ + "admin::is-creator" + ], + "locale": null + }, + { + "documentId": "vxekqhpkl6r63ko1qi0ebz1s", + "action": "plugin::content-manager.explorer.update", + "actionParameters": {}, + "subject": "api::mentorship-request.mentorship-request", + "properties": { + "fields": [ + "mentor", + "user" + ] + }, + "conditions": [ + "admin::is-creator" + ], + "locale": null + }, + { + "documentId": "tooigu4jq167emzz8em7hwzx", + "action": "plugin::content-manager.explorer.create", + "actionParameters": {}, + "subject": "api::program.program", + "properties": { + "fields": [ + "name", + "startDate", + "endDate", + "sponsorName", + "mentors", + "users" + ] + }, + "conditions": [ + "admin::is-creator" + ], + "locale": null + }, + { + "documentId": "zrjjar6m6ewovp47de0syv5m", + "action": "plugin::content-manager.explorer.delete", + "actionParameters": {}, + "subject": "api::program.program", + "properties": {}, + "conditions": [ + "admin::is-creator" + ], + "locale": null + }, + { + "documentId": "fs5s1sfq9n8o2445tfhs82ij", + "action": "plugin::content-manager.explorer.read", + "actionParameters": {}, + "subject": "api::program.program", + "properties": { + "fields": [ + "name", + "startDate", + "endDate", + "sponsorName", + "mentors", + "users" + ] + }, + "conditions": [ + "admin::is-creator" + ], + "locale": null + }, + { + "documentId": "ctvdqlaptqozr9u9sgw6xo9z", + "action": "plugin::content-manager.explorer.update", + "actionParameters": {}, + "subject": "api::program.program", + "properties": { + "fields": [ + "name", + "startDate", + "endDate", + "sponsorName", + "mentors", + "users" + ] + }, + "conditions": [ + "admin::is-creator" + ], + "locale": null + }, + { + "documentId": "qdai3t0618e3eoykd07inrfy", + "action": "plugin::content-manager.explorer.create", + "actionParameters": {}, + "subject": "api::report.report", + "properties": { + "fields": [ + "evaluations", + "deadline", + "finished", + "user" + ] + }, + "conditions": [ + "admin::is-creator" + ], + "locale": null + }, + { + "documentId": "q4gd73u9bssn5722s67prvcx", + "action": "plugin::content-manager.explorer.delete", + "actionParameters": {}, + "subject": "api::report.report", + "properties": {}, + "conditions": [ + "admin::is-creator" + ], + "locale": null + }, + { + "documentId": "b4vbdvn8sqvi7lrvir733fpr", + "action": "plugin::content-manager.explorer.read", + "actionParameters": {}, + "subject": "api::report.report", + "properties": { + "fields": [ + "evaluations", + "deadline", + "finished", + "user" + ] + }, + "conditions": [ + "admin::is-creator" + ], + "locale": null + }, + { + "documentId": "eultknn1ft3tfsyj6dwnv4g0", + "action": "plugin::content-manager.explorer.update", + "actionParameters": {}, + "subject": "api::report.report", + "properties": { + "fields": [ + "evaluations", + "deadline", + "finished", + "user" + ] + }, + "conditions": [ + "admin::is-creator" + ], + "locale": null + }, + { + "documentId": "xnipnpqmnq4sv3a6liphahiw", + "action": "plugin::upload.assets.copy-link", + "actionParameters": {}, + "subject": null, + "properties": {}, + "conditions": [], + "locale": null + }, + { + "documentId": "rb19b6den87z5u63mi7paplf", + "action": "plugin::upload.assets.create", + "actionParameters": {}, + "subject": null, + "properties": {}, + "conditions": [], + "locale": null + }, + { + "documentId": "s6754sg1ryqsa0iav8n5ri6f", + "action": "plugin::upload.assets.download", + "actionParameters": {}, + "subject": null, + "properties": {}, + "conditions": [], + "locale": null + }, + { + "documentId": "p1s7wt2w2pnc0zg92ztmtjel", + "action": "plugin::upload.assets.update", + "actionParameters": {}, + "subject": null, + "properties": {}, + "conditions": [ + "admin::is-creator" + ], + "locale": null + }, + { + "documentId": "jw25z5cwbkfrxwwo35r32jrc", + "action": "plugin::upload.configure-view", + "actionParameters": {}, + "subject": null, + "properties": {}, + "conditions": [], + "locale": null + }, + { + "documentId": "f4erl1iqzzabcca8mcppl5il", + "action": "plugin::upload.read", + "actionParameters": {}, + "subject": null, + "properties": {}, + "conditions": [ + "admin::is-creator" + ], + "locale": null + } + ] +} \ No newline at end of file diff --git a/server2/config/sync/admin-role.strapi-editor.json b/server2/config/sync/admin-role.strapi-editor.json new file mode 100644 index 00000000..13f1e071 --- /dev/null +++ b/server2/config/sync/admin-role.strapi-editor.json @@ -0,0 +1,663 @@ +{ + "documentId": "fe17g19yq1osozjzqesp2ic3", + "name": "Editor", + "code": "strapi-editor", + "description": "Editors can manage and publish contents including those of other users.", + "locale": null, + "permissions": [ + { + "documentId": "li3swh5esyzg1q80m86zjexk", + "action": "plugin::content-manager.explorer.create", + "actionParameters": {}, + "subject": "api::activity-type.activity-type", + "properties": { + "fields": [ + "name" + ] + }, + "conditions": [], + "locale": null + }, + { + "documentId": "crjivln4kibofuq2f4zu4ve0", + "action": "plugin::content-manager.explorer.delete", + "actionParameters": {}, + "subject": "api::activity-type.activity-type", + "properties": {}, + "conditions": [], + "locale": null + }, + { + "documentId": "xc65mcbwwal8fh5vdb8djdze", + "action": "plugin::content-manager.explorer.publish", + "actionParameters": {}, + "subject": "api::activity-type.activity-type", + "properties": {}, + "conditions": [], + "locale": null + }, + { + "documentId": "qh8iczih05ap6j7kadnebra7", + "action": "plugin::content-manager.explorer.read", + "actionParameters": {}, + "subject": "api::activity-type.activity-type", + "properties": { + "fields": [ + "name" + ] + }, + "conditions": [], + "locale": null + }, + { + "documentId": "ljt9x2x0oqifb4vn0e7qxn1h", + "action": "plugin::content-manager.explorer.update", + "actionParameters": {}, + "subject": "api::activity-type.activity-type", + "properties": { + "fields": [ + "name" + ] + }, + "conditions": [], + "locale": null + }, + { + "documentId": "zfxjxzyu61uz26j4ukl8wpmu", + "action": "plugin::content-manager.explorer.create", + "actionParameters": {}, + "subject": "api::activity.activity", + "properties": { + "fields": [ + "type", + "dimension", + "startDate", + "notes", + "duration", + "mentor", + "user" + ] + }, + "conditions": [], + "locale": null + }, + { + "documentId": "keb2eugvxcs8h6f2cfxx9p93", + "action": "plugin::content-manager.explorer.delete", + "actionParameters": {}, + "subject": "api::activity.activity", + "properties": {}, + "conditions": [], + "locale": null + }, + { + "documentId": "m9tzge0ftp311akdh6m66jp6", + "action": "plugin::content-manager.explorer.publish", + "actionParameters": {}, + "subject": "api::activity.activity", + "properties": {}, + "conditions": [], + "locale": null + }, + { + "documentId": "p8nx9i1xo3ywrz6k1kob06nj", + "action": "plugin::content-manager.explorer.read", + "actionParameters": {}, + "subject": "api::activity.activity", + "properties": { + "fields": [ + "type", + "dimension", + "startDate", + "notes", + "duration", + "mentor", + "user" + ] + }, + "conditions": [], + "locale": null + }, + { + "documentId": "fylncft9taylyfp3gzuz2got", + "action": "plugin::content-manager.explorer.update", + "actionParameters": {}, + "subject": "api::activity.activity", + "properties": { + "fields": [ + "type", + "dimension", + "startDate", + "notes", + "duration", + "mentor", + "user" + ] + }, + "conditions": [], + "locale": null + }, + { + "documentId": "k599zyolkpbo3ja2krdslxqv", + "action": "plugin::content-manager.explorer.create", + "actionParameters": {}, + "subject": "api::dimension.dimension", + "properties": { + "fields": [ + "name", + "link", + "quiz.question", + "quiz.option_1", + "quiz.option_2", + "quiz.option_3", + "quiz.option_4", + "quiz.option_5", + "quiz.tag", + "mentors", + "activities" + ] + }, + "conditions": [], + "locale": null + }, + { + "documentId": "p5b3hdhlh93uocnrzxks7l7q", + "action": "plugin::content-manager.explorer.delete", + "actionParameters": {}, + "subject": "api::dimension.dimension", + "properties": {}, + "conditions": [], + "locale": null + }, + { + "documentId": "lgwjeyidb5n62wcszlyl14wv", + "action": "plugin::content-manager.explorer.publish", + "actionParameters": {}, + "subject": "api::dimension.dimension", + "properties": {}, + "conditions": [], + "locale": null + }, + { + "documentId": "tpp8btgtnpd1poshzn1ioifm", + "action": "plugin::content-manager.explorer.read", + "actionParameters": {}, + "subject": "api::dimension.dimension", + "properties": { + "fields": [ + "name", + "link", + "quiz.question", + "quiz.option_1", + "quiz.option_2", + "quiz.option_3", + "quiz.option_4", + "quiz.option_5", + "quiz.tag", + "mentors", + "activities" + ] + }, + "conditions": [], + "locale": null + }, + { + "documentId": "sexh894fpwiv4yqjsfo0sode", + "action": "plugin::content-manager.explorer.update", + "actionParameters": {}, + "subject": "api::dimension.dimension", + "properties": { + "fields": [ + "name", + "link", + "quiz.question", + "quiz.option_1", + "quiz.option_2", + "quiz.option_3", + "quiz.option_4", + "quiz.option_5", + "quiz.tag", + "mentors", + "activities" + ] + }, + "conditions": [], + "locale": null + }, + { + "documentId": "ur78z8y7n35c47obziwqnemt", + "action": "plugin::content-manager.explorer.create", + "actionParameters": {}, + "subject": "api::domain.domain", + "properties": { + "fields": [ + "name", + "mentors" + ] + }, + "conditions": [], + "locale": null + }, + { + "documentId": "jgluhcz3t3pr0emsagqdqpao", + "action": "plugin::content-manager.explorer.delete", + "actionParameters": {}, + "subject": "api::domain.domain", + "properties": {}, + "conditions": [], + "locale": null + }, + { + "documentId": "y3tq9e9c28bx9dl3efl0rxui", + "action": "plugin::content-manager.explorer.publish", + "actionParameters": {}, + "subject": "api::domain.domain", + "properties": {}, + "conditions": [], + "locale": null + }, + { + "documentId": "qgnseqqcp45n5zijfakc7jpy", + "action": "plugin::content-manager.explorer.read", + "actionParameters": {}, + "subject": "api::domain.domain", + "properties": { + "fields": [ + "name", + "mentors" + ] + }, + "conditions": [], + "locale": null + }, + { + "documentId": "ia7uhuvb6kkdwk51wnpt5yh5", + "action": "plugin::content-manager.explorer.update", + "actionParameters": {}, + "subject": "api::domain.domain", + "properties": { + "fields": [ + "name", + "mentors" + ] + }, + "conditions": [], + "locale": null + }, + { + "documentId": "dru3ztr00j2tij0w2qfhz2va", + "action": "plugin::content-manager.explorer.create", + "actionParameters": {}, + "subject": "api::evaluation.evaluation", + "properties": { + "fields": [ + "dimensions.quiz.answer", + "dimensions.comment", + "email", + "report" + ] + }, + "conditions": [], + "locale": null + }, + { + "documentId": "v04dxre0zq23butxzmr2gi4j", + "action": "plugin::content-manager.explorer.delete", + "actionParameters": {}, + "subject": "api::evaluation.evaluation", + "properties": {}, + "conditions": [], + "locale": null + }, + { + "documentId": "mlcx6hcb7bc88sq8cwxh48zz", + "action": "plugin::content-manager.explorer.publish", + "actionParameters": {}, + "subject": "api::evaluation.evaluation", + "properties": {}, + "conditions": [], + "locale": null + }, + { + "documentId": "aoqohsbo6hiu2vs69bvei884", + "action": "plugin::content-manager.explorer.read", + "actionParameters": {}, + "subject": "api::evaluation.evaluation", + "properties": { + "fields": [ + "dimensions.quiz.answer", + "dimensions.comment", + "email", + "report" + ] + }, + "conditions": [], + "locale": null + }, + { + "documentId": "jjo48oqn30sdxu53mgxphktb", + "action": "plugin::content-manager.explorer.update", + "actionParameters": {}, + "subject": "api::evaluation.evaluation", + "properties": { + "fields": [ + "dimensions.quiz.answer", + "dimensions.comment", + "email", + "report" + ] + }, + "conditions": [], + "locale": null + }, + { + "documentId": "xpf5hiuw7pwapcsnuqkrjikb", + "action": "plugin::content-manager.explorer.create", + "actionParameters": {}, + "subject": "api::matrix.matrix", + "properties": { + "fields": [ + "dimensions" + ] + }, + "conditions": [], + "locale": null + }, + { + "documentId": "m209rskwrlmrr48lqgh874uf", + "action": "plugin::content-manager.explorer.delete", + "actionParameters": {}, + "subject": "api::matrix.matrix", + "properties": {}, + "conditions": [], + "locale": null + }, + { + "documentId": "yp1i57d6qxc72o4u1b8h1tg6", + "action": "plugin::content-manager.explorer.publish", + "actionParameters": {}, + "subject": "api::matrix.matrix", + "properties": {}, + "conditions": [], + "locale": null + }, + { + "documentId": "ifeh15xsssx0fvoak33w675p", + "action": "plugin::content-manager.explorer.read", + "actionParameters": {}, + "subject": "api::matrix.matrix", + "properties": { + "fields": [ + "dimensions" + ] + }, + "conditions": [], + "locale": null + }, + { + "documentId": "xl7l98lw55z8ljnv7y4lp9em", + "action": "plugin::content-manager.explorer.update", + "actionParameters": {}, + "subject": "api::matrix.matrix", + "properties": { + "fields": [ + "dimensions" + ] + }, + "conditions": [], + "locale": null + }, + { + "documentId": "f9654x0stzjngpiqpoh89zxe", + "action": "plugin::content-manager.explorer.create", + "actionParameters": {}, + "subject": "api::mentorship-request.mentorship-request", + "properties": { + "fields": [ + "mentor", + "user" + ] + }, + "conditions": [], + "locale": null + }, + { + "documentId": "wnqji7ajt9134qlqjt1bhmf8", + "action": "plugin::content-manager.explorer.delete", + "actionParameters": {}, + "subject": "api::mentorship-request.mentorship-request", + "properties": {}, + "conditions": [], + "locale": null + }, + { + "documentId": "ehd9nu0atpp50si2nxr4j8wv", + "action": "plugin::content-manager.explorer.publish", + "actionParameters": {}, + "subject": "api::mentorship-request.mentorship-request", + "properties": {}, + "conditions": [], + "locale": null + }, + { + "documentId": "slsvg6pkpnqr81yunq11tw2k", + "action": "plugin::content-manager.explorer.read", + "actionParameters": {}, + "subject": "api::mentorship-request.mentorship-request", + "properties": { + "fields": [ + "mentor", + "user" + ] + }, + "conditions": [], + "locale": null + }, + { + "documentId": "avk2tz9z5mkuk5gbnffl1pio", + "action": "plugin::content-manager.explorer.update", + "actionParameters": {}, + "subject": "api::mentorship-request.mentorship-request", + "properties": { + "fields": [ + "mentor", + "user" + ] + }, + "conditions": [], + "locale": null + }, + { + "documentId": "zegh5is4qima3m7unr0pa29v", + "action": "plugin::content-manager.explorer.create", + "actionParameters": {}, + "subject": "api::program.program", + "properties": { + "fields": [ + "name", + "startDate", + "endDate", + "sponsorName", + "mentors", + "users" + ] + }, + "conditions": [], + "locale": null + }, + { + "documentId": "ud9mefh06xlbu7ny0yzwg29p", + "action": "plugin::content-manager.explorer.delete", + "actionParameters": {}, + "subject": "api::program.program", + "properties": {}, + "conditions": [], + "locale": null + }, + { + "documentId": "bo4nx8p1wlq9d3xt0e5niwxx", + "action": "plugin::content-manager.explorer.publish", + "actionParameters": {}, + "subject": "api::program.program", + "properties": {}, + "conditions": [], + "locale": null + }, + { + "documentId": "n7n2vrf94hjm7fy0jy1lljd9", + "action": "plugin::content-manager.explorer.read", + "actionParameters": {}, + "subject": "api::program.program", + "properties": { + "fields": [ + "name", + "startDate", + "endDate", + "sponsorName", + "mentors", + "users" + ] + }, + "conditions": [], + "locale": null + }, + { + "documentId": "nwdt8iv6b9txablux3jw2mf5", + "action": "plugin::content-manager.explorer.update", + "actionParameters": {}, + "subject": "api::program.program", + "properties": { + "fields": [ + "name", + "startDate", + "endDate", + "sponsorName", + "mentors", + "users" + ] + }, + "conditions": [], + "locale": null + }, + { + "documentId": "skjc4arjw5ophwc63orye7qg", + "action": "plugin::content-manager.explorer.create", + "actionParameters": {}, + "subject": "api::report.report", + "properties": { + "fields": [ + "evaluations", + "deadline", + "finished", + "user" + ] + }, + "conditions": [], + "locale": null + }, + { + "documentId": "gvggsa0258c6ylra9jlmbg6z", + "action": "plugin::content-manager.explorer.delete", + "actionParameters": {}, + "subject": "api::report.report", + "properties": {}, + "conditions": [], + "locale": null + }, + { + "documentId": "sbe6zhf9q4idqvn04usbx76m", + "action": "plugin::content-manager.explorer.publish", + "actionParameters": {}, + "subject": "api::report.report", + "properties": {}, + "conditions": [], + "locale": null + }, + { + "documentId": "r2culwma73bpwq6jdtkwsc1o", + "action": "plugin::content-manager.explorer.read", + "actionParameters": {}, + "subject": "api::report.report", + "properties": { + "fields": [ + "evaluations", + "deadline", + "finished", + "user" + ] + }, + "conditions": [], + "locale": null + }, + { + "documentId": "slzcu309458shnhscccfi11j", + "action": "plugin::content-manager.explorer.update", + "actionParameters": {}, + "subject": "api::report.report", + "properties": { + "fields": [ + "evaluations", + "deadline", + "finished", + "user" + ] + }, + "conditions": [], + "locale": null + }, + { + "documentId": "y83ggixvpu582vcsbmpsgm4c", + "action": "plugin::upload.assets.copy-link", + "actionParameters": {}, + "subject": null, + "properties": {}, + "conditions": [], + "locale": null + }, + { + "documentId": "oa7ccsak4k0b2yiy8vtu3zd4", + "action": "plugin::upload.assets.create", + "actionParameters": {}, + "subject": null, + "properties": {}, + "conditions": [], + "locale": null + }, + { + "documentId": "rxr39j5x54v0xlrp6436oz2i", + "action": "plugin::upload.assets.download", + "actionParameters": {}, + "subject": null, + "properties": {}, + "conditions": [], + "locale": null + }, + { + "documentId": "ur4wq6k0ii4gwxne6gxf0q1j", + "action": "plugin::upload.assets.update", + "actionParameters": {}, + "subject": null, + "properties": {}, + "conditions": [], + "locale": null + }, + { + "documentId": "v328731zz4vfe4onsn57i65d", + "action": "plugin::upload.configure-view", + "actionParameters": {}, + "subject": null, + "properties": {}, + "conditions": [], + "locale": null + }, + { + "documentId": "auw0skdyi6spff5u0c75llab", + "action": "plugin::upload.read", + "actionParameters": {}, + "subject": null, + "properties": {}, + "conditions": [], + "locale": null + } + ] +} \ No newline at end of file diff --git a/server2/config/sync/admin-role.strapi-super-admin.json b/server2/config/sync/admin-role.strapi-super-admin.json new file mode 100644 index 00000000..0eef1b1b --- /dev/null +++ b/server2/config/sync/admin-role.strapi-super-admin.json @@ -0,0 +1,1296 @@ +{ + "documentId": "tq6f4mcaoutoiovnlqdjhiod", + "name": "Super Admin", + "code": "strapi-super-admin", + "description": "Super Admins can access and manage all features and settings.", + "locale": null, + "permissions": [ + { + "documentId": "jcb2qmmaaczwm1hfl6l0kd1d", + "action": "plugin::content-manager.explorer.create", + "actionParameters": {}, + "subject": "api::activity-type.activity-type", + "properties": { + "fields": [ + "name" + ] + }, + "conditions": [], + "locale": null + }, + { + "documentId": "zecjpc9vqagvcf9xvqmpm8co", + "action": "plugin::content-manager.explorer.delete", + "actionParameters": {}, + "subject": "api::activity-type.activity-type", + "properties": {}, + "conditions": [], + "locale": null + }, + { + "documentId": "dxsg94k59axqh1pqkvaoify2", + "action": "plugin::content-manager.explorer.publish", + "actionParameters": {}, + "subject": "api::activity-type.activity-type", + "properties": {}, + "conditions": [], + "locale": null + }, + { + "documentId": "xfgapan0eb01rw6wc16dxmi8", + "action": "plugin::content-manager.explorer.read", + "actionParameters": {}, + "subject": "api::activity-type.activity-type", + "properties": { + "fields": [ + "name" + ] + }, + "conditions": [], + "locale": null + }, + { + "documentId": "tmlr6kpo1lwhtf3kqf4il698", + "action": "plugin::content-manager.explorer.update", + "actionParameters": {}, + "subject": "api::activity-type.activity-type", + "properties": { + "fields": [ + "name" + ] + }, + "conditions": [], + "locale": null + }, + { + "documentId": "w6nk8prfl37wdt6qlvlb6fwy", + "action": "plugin::content-manager.explorer.create", + "actionParameters": {}, + "subject": "api::activity.activity", + "properties": { + "fields": [ + "type", + "dimension", + "startDate", + "notes", + "duration", + "mentor", + "user" + ] + }, + "conditions": [], + "locale": null + }, + { + "documentId": "n6uiquvnwj73zcedz412rqc4", + "action": "plugin::content-manager.explorer.delete", + "actionParameters": {}, + "subject": "api::activity.activity", + "properties": {}, + "conditions": [], + "locale": null + }, + { + "documentId": "gdbwvpcbv964zparyhziongs", + "action": "plugin::content-manager.explorer.publish", + "actionParameters": {}, + "subject": "api::activity.activity", + "properties": {}, + "conditions": [], + "locale": null + }, + { + "documentId": "a9ch1j2wyubj4jh01kqz4fpa", + "action": "plugin::content-manager.explorer.read", + "actionParameters": {}, + "subject": "api::activity.activity", + "properties": { + "fields": [ + "type", + "dimension", + "startDate", + "notes", + "duration", + "mentor", + "user" + ] + }, + "conditions": [], + "locale": null + }, + { + "documentId": "jg6zangf9n0i7io4465gc9dm", + "action": "plugin::content-manager.explorer.update", + "actionParameters": {}, + "subject": "api::activity.activity", + "properties": { + "fields": [ + "type", + "dimension", + "startDate", + "notes", + "duration", + "mentor", + "user" + ] + }, + "conditions": [], + "locale": null + }, + { + "documentId": "it8ofmilm0ajwnxmggmalsct", + "action": "plugin::content-manager.explorer.create", + "actionParameters": {}, + "subject": "api::dimension.dimension", + "properties": { + "fields": [ + "name", + "link", + "quiz.question", + "quiz.option_1", + "quiz.option_2", + "quiz.option_3", + "quiz.option_4", + "quiz.option_5", + "quiz.tag", + "mentors", + "activities" + ] + }, + "conditions": [], + "locale": null + }, + { + "documentId": "f92n4jrs9kf0qo4n6b5xtiv1", + "action": "plugin::content-manager.explorer.delete", + "actionParameters": {}, + "subject": "api::dimension.dimension", + "properties": {}, + "conditions": [], + "locale": null + }, + { + "documentId": "rubydqg2ygpvs4z509ghguir", + "action": "plugin::content-manager.explorer.publish", + "actionParameters": {}, + "subject": "api::dimension.dimension", + "properties": {}, + "conditions": [], + "locale": null + }, + { + "documentId": "dfm4y35uf0ixr23ue5grnpzk", + "action": "plugin::content-manager.explorer.read", + "actionParameters": {}, + "subject": "api::dimension.dimension", + "properties": { + "fields": [ + "name", + "link", + "quiz.question", + "quiz.option_1", + "quiz.option_2", + "quiz.option_3", + "quiz.option_4", + "quiz.option_5", + "quiz.tag", + "mentors", + "activities" + ] + }, + "conditions": [], + "locale": null + }, + { + "documentId": "mfqibyhwod7ih3eoouafshe0", + "action": "plugin::content-manager.explorer.update", + "actionParameters": {}, + "subject": "api::dimension.dimension", + "properties": { + "fields": [ + "name", + "link", + "quiz.question", + "quiz.option_1", + "quiz.option_2", + "quiz.option_3", + "quiz.option_4", + "quiz.option_5", + "quiz.tag", + "mentors", + "activities" + ] + }, + "conditions": [], + "locale": null + }, + { + "documentId": "s9fxa8bnnj2urzf2e36fr7f1", + "action": "plugin::content-manager.explorer.create", + "actionParameters": {}, + "subject": "api::domain.domain", + "properties": { + "fields": [ + "name", + "mentors" + ] + }, + "conditions": [], + "locale": null + }, + { + "documentId": "ofju0hxssx9zeo9w9umemk3y", + "action": "plugin::content-manager.explorer.delete", + "actionParameters": {}, + "subject": "api::domain.domain", + "properties": {}, + "conditions": [], + "locale": null + }, + { + "documentId": "u99puhdlemrq97wgev473edg", + "action": "plugin::content-manager.explorer.publish", + "actionParameters": {}, + "subject": "api::domain.domain", + "properties": {}, + "conditions": [], + "locale": null + }, + { + "documentId": "xv8c8cxrc83076u4bvolh1v2", + "action": "plugin::content-manager.explorer.read", + "actionParameters": {}, + "subject": "api::domain.domain", + "properties": { + "fields": [ + "name", + "mentors" + ] + }, + "conditions": [], + "locale": null + }, + { + "documentId": "akahtbirzjeuhjqlluyyrzml", + "action": "plugin::content-manager.explorer.update", + "actionParameters": {}, + "subject": "api::domain.domain", + "properties": { + "fields": [ + "name", + "mentors" + ] + }, + "conditions": [], + "locale": null + }, + { + "documentId": "gzv7tcvwbbymwrzj2wf8yfc3", + "action": "plugin::content-manager.explorer.create", + "actionParameters": {}, + "subject": "api::evaluation.evaluation", + "properties": { + "fields": [ + "dimensions.quiz.answer", + "dimensions.comment", + "email", + "report" + ] + }, + "conditions": [], + "locale": null + }, + { + "documentId": "ki3ncrk1g0g5ssa5sgfay66w", + "action": "plugin::content-manager.explorer.delete", + "actionParameters": {}, + "subject": "api::evaluation.evaluation", + "properties": {}, + "conditions": [], + "locale": null + }, + { + "documentId": "s4b880efq59dfhnd29efn2ng", + "action": "plugin::content-manager.explorer.publish", + "actionParameters": {}, + "subject": "api::evaluation.evaluation", + "properties": {}, + "conditions": [], + "locale": null + }, + { + "documentId": "yaxolp8q5fl20d7vfl0rv0te", + "action": "plugin::content-manager.explorer.read", + "actionParameters": {}, + "subject": "api::evaluation.evaluation", + "properties": { + "fields": [ + "dimensions.quiz.answer", + "dimensions.comment", + "email", + "report" + ] + }, + "conditions": [], + "locale": null + }, + { + "documentId": "o6v2b8aef64y9jnh7kbbked5", + "action": "plugin::content-manager.explorer.update", + "actionParameters": {}, + "subject": "api::evaluation.evaluation", + "properties": { + "fields": [ + "dimensions.quiz.answer", + "dimensions.comment", + "email", + "report" + ] + }, + "conditions": [], + "locale": null + }, + { + "documentId": "sssg1xp0utgwbxuvfkftj29u", + "action": "plugin::content-manager.explorer.create", + "actionParameters": {}, + "subject": "api::matrix.matrix", + "properties": { + "fields": [ + "dimensions" + ] + }, + "conditions": [], + "locale": null + }, + { + "documentId": "g400tjpivt8v7jz8qneiac5s", + "action": "plugin::content-manager.explorer.delete", + "actionParameters": {}, + "subject": "api::matrix.matrix", + "properties": {}, + "conditions": [], + "locale": null + }, + { + "documentId": "tpotecxkdgpnddf3lonbwuhr", + "action": "plugin::content-manager.explorer.publish", + "actionParameters": {}, + "subject": "api::matrix.matrix", + "properties": {}, + "conditions": [], + "locale": null + }, + { + "documentId": "b1ok0ej43zpw0amhop2vqq5q", + "action": "plugin::content-manager.explorer.read", + "actionParameters": {}, + "subject": "api::matrix.matrix", + "properties": { + "fields": [ + "dimensions" + ] + }, + "conditions": [], + "locale": null + }, + { + "documentId": "zoaqc94xrgc78j45o6gnpxxd", + "action": "plugin::content-manager.explorer.update", + "actionParameters": {}, + "subject": "api::matrix.matrix", + "properties": { + "fields": [ + "dimensions" + ] + }, + "conditions": [], + "locale": null + }, + { + "documentId": "m4sluwes331w8ygijnxqu62z", + "action": "plugin::content-manager.explorer.create", + "actionParameters": {}, + "subject": "api::mentorship-request.mentorship-request", + "properties": { + "fields": [ + "mentor", + "user" + ] + }, + "conditions": [], + "locale": null + }, + { + "documentId": "ytn3urvttrfdgvbs8bfmlhts", + "action": "plugin::content-manager.explorer.delete", + "actionParameters": {}, + "subject": "api::mentorship-request.mentorship-request", + "properties": {}, + "conditions": [], + "locale": null + }, + { + "documentId": "ro00k1ipyxk0tpb2tvgany7h", + "action": "plugin::content-manager.explorer.publish", + "actionParameters": {}, + "subject": "api::mentorship-request.mentorship-request", + "properties": {}, + "conditions": [], + "locale": null + }, + { + "documentId": "agfpsrsmjxwuwjsp3sivymlj", + "action": "plugin::content-manager.explorer.read", + "actionParameters": {}, + "subject": "api::mentorship-request.mentorship-request", + "properties": { + "fields": [ + "mentor", + "user" + ] + }, + "conditions": [], + "locale": null + }, + { + "documentId": "cp0sqekxbcniz83g0kx3u6x9", + "action": "plugin::content-manager.explorer.update", + "actionParameters": {}, + "subject": "api::mentorship-request.mentorship-request", + "properties": { + "fields": [ + "mentor", + "user" + ] + }, + "conditions": [], + "locale": null + }, + { + "documentId": "k48bvkgck3w9np619qweodpw", + "action": "plugin::content-manager.explorer.create", + "actionParameters": {}, + "subject": "api::program.program", + "properties": { + "fields": [ + "name", + "startDate", + "endDate", + "sponsorName", + "mentors", + "users" + ] + }, + "conditions": [], + "locale": null + }, + { + "documentId": "vxxzewulohot5tl62lgo8hqs", + "action": "plugin::content-manager.explorer.delete", + "actionParameters": {}, + "subject": "api::program.program", + "properties": {}, + "conditions": [], + "locale": null + }, + { + "documentId": "ilhk3ufbhy9xxzgoyigqqz8k", + "action": "plugin::content-manager.explorer.publish", + "actionParameters": {}, + "subject": "api::program.program", + "properties": {}, + "conditions": [], + "locale": null + }, + { + "documentId": "puvlglhexxcm8ygkhqj5fsxy", + "action": "plugin::content-manager.explorer.read", + "actionParameters": {}, + "subject": "api::program.program", + "properties": { + "fields": [ + "name", + "startDate", + "endDate", + "sponsorName", + "mentors", + "users" + ] + }, + "conditions": [], + "locale": null + }, + { + "documentId": "td14r7llhhfpsxinuqtbsb6y", + "action": "plugin::content-manager.explorer.update", + "actionParameters": {}, + "subject": "api::program.program", + "properties": { + "fields": [ + "name", + "startDate", + "endDate", + "sponsorName", + "mentors", + "users" + ] + }, + "conditions": [], + "locale": null + }, + { + "documentId": "llfs966zkqakrb4bulf8nfhq", + "action": "plugin::content-manager.explorer.create", + "actionParameters": {}, + "subject": "api::report.report", + "properties": { + "fields": [ + "evaluations", + "deadline", + "finished", + "user" + ] + }, + "conditions": [], + "locale": null + }, + { + "documentId": "v2hjx7jzx0h9zmxc2n8otupd", + "action": "plugin::content-manager.explorer.delete", + "actionParameters": {}, + "subject": "api::report.report", + "properties": {}, + "conditions": [], + "locale": null + }, + { + "documentId": "nhfb971d41k9x1gbgnxgg6ls", + "action": "plugin::content-manager.explorer.publish", + "actionParameters": {}, + "subject": "api::report.report", + "properties": {}, + "conditions": [], + "locale": null + }, + { + "documentId": "eyk47ea6fe2m4oys6eqlnjn8", + "action": "plugin::content-manager.explorer.read", + "actionParameters": {}, + "subject": "api::report.report", + "properties": { + "fields": [ + "evaluations", + "deadline", + "finished", + "user" + ] + }, + "conditions": [], + "locale": null + }, + { + "documentId": "qnsq0ehfaqcu7ie9m0tbq27l", + "action": "plugin::content-manager.explorer.update", + "actionParameters": {}, + "subject": "api::report.report", + "properties": { + "fields": [ + "evaluations", + "deadline", + "finished", + "user" + ] + }, + "conditions": [], + "locale": null + }, + { + "documentId": "nxj714wit6df93lhzczvcces", + "action": "admin::api-tokens.access", + "actionParameters": {}, + "subject": null, + "properties": {}, + "conditions": [], + "locale": null + }, + { + "documentId": "i9e63t3s5ikla5szql0doqg4", + "action": "admin::api-tokens.create", + "actionParameters": {}, + "subject": null, + "properties": {}, + "conditions": [], + "locale": null + }, + { + "documentId": "uqgpw6zpgjca51pnc4ur3wpz", + "action": "admin::api-tokens.delete", + "actionParameters": {}, + "subject": null, + "properties": {}, + "conditions": [], + "locale": null + }, + { + "documentId": "qy2i9d7lv84wwf6qjzd2idxg", + "action": "admin::api-tokens.read", + "actionParameters": {}, + "subject": null, + "properties": {}, + "conditions": [], + "locale": null + }, + { + "documentId": "e2cksr76zk9hgbh0s5b0ju6x", + "action": "admin::api-tokens.regenerate", + "actionParameters": {}, + "subject": null, + "properties": {}, + "conditions": [], + "locale": null + }, + { + "documentId": "la7wrsqoli07602n4sk053l2", + "action": "admin::api-tokens.update", + "actionParameters": {}, + "subject": null, + "properties": {}, + "conditions": [], + "locale": null + }, + { + "documentId": "p43t7sw0iculvi8bwvo9ti4b", + "action": "admin::marketplace.read", + "actionParameters": {}, + "subject": null, + "properties": {}, + "conditions": [], + "locale": null + }, + { + "documentId": "g86bjtrp8x3r8s8hicsp00gs", + "action": "admin::project-settings.read", + "actionParameters": {}, + "subject": null, + "properties": {}, + "conditions": [], + "locale": null + }, + { + "documentId": "hb1qysiwn5vdiiyb0l2cc4ax", + "action": "admin::project-settings.update", + "actionParameters": {}, + "subject": null, + "properties": {}, + "conditions": [], + "locale": null + }, + { + "documentId": "ol0k4yes7cjddeucyxrej9go", + "action": "admin::roles.create", + "actionParameters": {}, + "subject": null, + "properties": {}, + "conditions": [], + "locale": null + }, + { + "documentId": "humhbih4nnub2s304zseapcz", + "action": "admin::roles.delete", + "actionParameters": {}, + "subject": null, + "properties": {}, + "conditions": [], + "locale": null + }, + { + "documentId": "tcvu36z9ol7tngk8mo95i1q7", + "action": "admin::roles.read", + "actionParameters": {}, + "subject": null, + "properties": {}, + "conditions": [], + "locale": null + }, + { + "documentId": "zfxpfgvhaf4jj71xy7l5phja", + "action": "admin::roles.update", + "actionParameters": {}, + "subject": null, + "properties": {}, + "conditions": [], + "locale": null + }, + { + "documentId": "lkmkm1v46yovbzhq0bozuoul", + "action": "admin::transfer.tokens.access", + "actionParameters": {}, + "subject": null, + "properties": {}, + "conditions": [], + "locale": null + }, + { + "documentId": "yoxv8qa3r00mya1mwvl8gi1s", + "action": "admin::transfer.tokens.create", + "actionParameters": {}, + "subject": null, + "properties": {}, + "conditions": [], + "locale": null + }, + { + "documentId": "wknhcbgxcys3oz8g5e8aj0ry", + "action": "admin::transfer.tokens.delete", + "actionParameters": {}, + "subject": null, + "properties": {}, + "conditions": [], + "locale": null + }, + { + "documentId": "efyighfo4b65voywdigsgpeu", + "action": "admin::transfer.tokens.read", + "actionParameters": {}, + "subject": null, + "properties": {}, + "conditions": [], + "locale": null + }, + { + "documentId": "mnor29r816281d7hlg79h71k", + "action": "admin::transfer.tokens.regenerate", + "actionParameters": {}, + "subject": null, + "properties": {}, + "conditions": [], + "locale": null + }, + { + "documentId": "li1vp8l66m6v41bd5thdpoi7", + "action": "admin::transfer.tokens.update", + "actionParameters": {}, + "subject": null, + "properties": {}, + "conditions": [], + "locale": null + }, + { + "documentId": "h31eiga3rno12u8xw1zl6rgd", + "action": "admin::users.create", + "actionParameters": {}, + "subject": null, + "properties": {}, + "conditions": [], + "locale": null + }, + { + "documentId": "i8if5771mr142wdvj49oizwp", + "action": "admin::users.delete", + "actionParameters": {}, + "subject": null, + "properties": {}, + "conditions": [], + "locale": null + }, + { + "documentId": "ymqkexkb2bjn94g3b6s963sl", + "action": "admin::users.read", + "actionParameters": {}, + "subject": null, + "properties": {}, + "conditions": [], + "locale": null + }, + { + "documentId": "wnvhvv0vf9ikenmchmwqhds3", + "action": "admin::users.update", + "actionParameters": {}, + "subject": null, + "properties": {}, + "conditions": [], + "locale": null + }, + { + "documentId": "lwxewdf1uu6uk7x8fc4h23f4", + "action": "admin::webhooks.create", + "actionParameters": {}, + "subject": null, + "properties": {}, + "conditions": [], + "locale": null + }, + { + "documentId": "eu30yh7l0tw060ed4vagt578", + "action": "admin::webhooks.delete", + "actionParameters": {}, + "subject": null, + "properties": {}, + "conditions": [], + "locale": null + }, + { + "documentId": "btn8g185u32fjrqwk8xnagel", + "action": "admin::webhooks.read", + "actionParameters": {}, + "subject": null, + "properties": {}, + "conditions": [], + "locale": null + }, + { + "documentId": "xchdm3m5jwskrj6zppwwjiad", + "action": "admin::webhooks.update", + "actionParameters": {}, + "subject": null, + "properties": {}, + "conditions": [], + "locale": null + }, + { + "documentId": "a5hyxugewhcgfmhz390qvsgc", + "action": "plugin::config-sync.menu-link", + "actionParameters": {}, + "subject": null, + "properties": {}, + "conditions": [], + "locale": null + }, + { + "documentId": "mbw4z5v5hpslcoypuctl8ac4", + "action": "plugin::config-sync.settings.read", + "actionParameters": {}, + "subject": null, + "properties": {}, + "conditions": [], + "locale": null + }, + { + "documentId": "neb86ofl3mvp4l74yksvxgbx", + "action": "plugin::content-manager.collection-types.configure-view", + "actionParameters": {}, + "subject": null, + "properties": {}, + "conditions": [], + "locale": null + }, + { + "documentId": "an73zsuan3zuwr6slpmlelai", + "action": "plugin::content-manager.components.configure-layout", + "actionParameters": {}, + "subject": null, + "properties": {}, + "conditions": [], + "locale": null + }, + { + "documentId": "qwadje68a0hkoe3nv76s8k0e", + "action": "plugin::content-manager.explorer.create", + "actionParameters": {}, + "subject": "plugin::users-permissions.user", + "properties": { + "fields": [ + "username", + "email", + "provider", + "password", + "resetPasswordToken", + "confirmationToken", + "registrationToken", + "confirmed", + "blocked", + "role", + "avatar", + "ongName", + "ongIdentificationNumber", + "county", + "city", + "phone", + "website", + "keywords", + "logo", + "description", + "reports", + "contactFirstName", + "contactLastName", + "contactEmail", + "contactPhone", + "accountFacebook", + "accountTwitter", + "accountTiktok", + "accountInstagram", + "accountLinkedin", + "domains", + "programs", + "dimensions", + "bio", + "expertise", + "firstName", + "lastName", + "program", + "available", + "mentorActivities", + "userActivities", + "mentorSessions", + "userSessions" + ] + }, + "conditions": [], + "locale": null + }, + { + "documentId": "ic4slg8o070tsp7eh9zjlgy5", + "action": "plugin::content-manager.explorer.delete", + "actionParameters": {}, + "subject": "plugin::users-permissions.user", + "properties": {}, + "conditions": [], + "locale": null + }, + { + "documentId": "lq3aigks2twl9yuecoir04dz", + "action": "plugin::content-manager.explorer.publish", + "actionParameters": {}, + "subject": "plugin::users-permissions.user", + "properties": {}, + "conditions": [], + "locale": null + }, + { + "documentId": "x8d7qzwys4l05onir681pymg", + "action": "plugin::content-manager.explorer.read", + "actionParameters": {}, + "subject": "plugin::users-permissions.user", + "properties": { + "fields": [ + "username", + "email", + "provider", + "password", + "resetPasswordToken", + "confirmationToken", + "registrationToken", + "confirmed", + "blocked", + "role", + "avatar", + "ongName", + "ongIdentificationNumber", + "county", + "city", + "phone", + "website", + "keywords", + "logo", + "description", + "reports", + "contactFirstName", + "contactLastName", + "contactEmail", + "contactPhone", + "accountFacebook", + "accountTwitter", + "accountTiktok", + "accountInstagram", + "accountLinkedin", + "domains", + "programs", + "dimensions", + "bio", + "expertise", + "firstName", + "lastName", + "program", + "available", + "mentorActivities", + "userActivities", + "mentorSessions", + "userSessions" + ] + }, + "conditions": [], + "locale": null + }, + { + "documentId": "ummxikwlk4k1zvw6kbl4soxv", + "action": "plugin::content-manager.explorer.update", + "actionParameters": {}, + "subject": "plugin::users-permissions.user", + "properties": { + "fields": [ + "username", + "email", + "provider", + "password", + "resetPasswordToken", + "confirmationToken", + "registrationToken", + "confirmed", + "blocked", + "role", + "avatar", + "ongName", + "ongIdentificationNumber", + "county", + "city", + "phone", + "website", + "keywords", + "logo", + "description", + "reports", + "contactFirstName", + "contactLastName", + "contactEmail", + "contactPhone", + "accountFacebook", + "accountTwitter", + "accountTiktok", + "accountInstagram", + "accountLinkedin", + "domains", + "programs", + "dimensions", + "bio", + "expertise", + "firstName", + "lastName", + "program", + "available", + "mentorActivities", + "userActivities", + "mentorSessions", + "userSessions" + ] + }, + "conditions": [], + "locale": null + }, + { + "documentId": "h3mdrnnd3rfyb2lvkdvi5yja", + "action": "plugin::content-manager.single-types.configure-view", + "actionParameters": {}, + "subject": null, + "properties": {}, + "conditions": [], + "locale": null + }, + { + "documentId": "e4pw0j50389zv0bsxh15g3un", + "action": "plugin::content-type-builder.read", + "actionParameters": {}, + "subject": null, + "properties": {}, + "conditions": [], + "locale": null + }, + { + "documentId": "hzghwgl1ol6zcymdoxco9n3q", + "action": "plugin::email-designer-5.menu-link", + "actionParameters": {}, + "subject": null, + "properties": {}, + "conditions": [], + "locale": null + }, + { + "documentId": "swnh642z3xfid2si6bsaywek", + "action": "plugin::email.settings.read", + "actionParameters": {}, + "subject": null, + "properties": {}, + "conditions": [], + "locale": null + }, + { + "documentId": "wn3ksrdaow64efrdg9lvavea", + "action": "plugin::i18n.locale.create", + "actionParameters": {}, + "subject": null, + "properties": {}, + "conditions": [], + "locale": null + }, + { + "documentId": "l2rf9kovvb02hl54j9866ovq", + "action": "plugin::i18n.locale.delete", + "actionParameters": {}, + "subject": null, + "properties": {}, + "conditions": [], + "locale": null + }, + { + "documentId": "d05z0oxyt2f3qku5h74u29ez", + "action": "plugin::i18n.locale.read", + "actionParameters": {}, + "subject": null, + "properties": {}, + "conditions": [], + "locale": null + }, + { + "documentId": "b3wjez1r4g1qe6m1vv9jao53", + "action": "plugin::i18n.locale.update", + "actionParameters": {}, + "subject": null, + "properties": {}, + "conditions": [], + "locale": null + }, + { + "documentId": "ifty0rxaz4l6aonylzxvor5r", + "action": "plugin::upload.assets.copy-link", + "actionParameters": {}, + "subject": null, + "properties": {}, + "conditions": [], + "locale": null + }, + { + "documentId": "n818if6azii50wu695cjy27u", + "action": "plugin::upload.assets.create", + "actionParameters": {}, + "subject": null, + "properties": {}, + "conditions": [], + "locale": null + }, + { + "documentId": "fkvtynfpxaqg8ybn6tcw1t5f", + "action": "plugin::upload.assets.download", + "actionParameters": {}, + "subject": null, + "properties": {}, + "conditions": [], + "locale": null + }, + { + "documentId": "n9cuafnbkl5aljn6q55v49gr", + "action": "plugin::upload.assets.update", + "actionParameters": {}, + "subject": null, + "properties": {}, + "conditions": [], + "locale": null + }, + { + "documentId": "h27tpdh229ujo5r19vldyc5y", + "action": "plugin::upload.configure-view", + "actionParameters": {}, + "subject": null, + "properties": {}, + "conditions": [], + "locale": null + }, + { + "documentId": "x6ko1kh956j31co8pcx437e3", + "action": "plugin::upload.read", + "actionParameters": {}, + "subject": null, + "properties": {}, + "conditions": [], + "locale": null + }, + { + "documentId": "s68jh213sah4fx2oly7ex3r7", + "action": "plugin::upload.settings.read", + "actionParameters": {}, + "subject": null, + "properties": {}, + "conditions": [], + "locale": null + }, + { + "documentId": "rgln15m5y7t3d74caetlgull", + "action": "plugin::users-permissions.advanced-settings.read", + "actionParameters": {}, + "subject": null, + "properties": {}, + "conditions": [], + "locale": null + }, + { + "documentId": "mrjgd07a7pztrp57mlp3ruhc", + "action": "plugin::users-permissions.advanced-settings.update", + "actionParameters": {}, + "subject": null, + "properties": {}, + "conditions": [], + "locale": null + }, + { + "documentId": "nyijan7iz0ehp7mnjnt020zf", + "action": "plugin::users-permissions.email-templates.read", + "actionParameters": {}, + "subject": null, + "properties": {}, + "conditions": [], + "locale": null + }, + { + "documentId": "pfuwilmcqydhbnwzh8qr32hb", + "action": "plugin::users-permissions.email-templates.update", + "actionParameters": {}, + "subject": null, + "properties": {}, + "conditions": [], + "locale": null + }, + { + "documentId": "x2hngjeggwhmb8qtz00k3oa4", + "action": "plugin::users-permissions.providers.read", + "actionParameters": {}, + "subject": null, + "properties": {}, + "conditions": [], + "locale": null + }, + { + "documentId": "vb55maizrgp5h5rrkp7xaz9p", + "action": "plugin::users-permissions.providers.update", + "actionParameters": {}, + "subject": null, + "properties": {}, + "conditions": [], + "locale": null + }, + { + "documentId": "vjds78vds754ktx2btmvpwym", + "action": "plugin::users-permissions.roles.create", + "actionParameters": {}, + "subject": null, + "properties": {}, + "conditions": [], + "locale": null + }, + { + "documentId": "q4boqtd22xocjlwfvnyzkmo0", + "action": "plugin::users-permissions.roles.delete", + "actionParameters": {}, + "subject": null, + "properties": {}, + "conditions": [], + "locale": null + }, + { + "documentId": "il92obp8wjkxy09ten31n5eb", + "action": "plugin::users-permissions.roles.read", + "actionParameters": {}, + "subject": null, + "properties": {}, + "conditions": [], + "locale": null + }, + { + "documentId": "zvqg3v1d4jkqls1pd0itf7jg", + "action": "plugin::users-permissions.roles.update", + "actionParameters": {}, + "subject": null, + "properties": {}, + "conditions": [], + "locale": null + } + ] +} \ No newline at end of file diff --git a/server2/config/sync/core-store.core_admin_auth.json b/server2/config/sync/core-store.core_admin_auth.json new file mode 100644 index 00000000..1e1a1cc8 --- /dev/null +++ b/server2/config/sync/core-store.core_admin_auth.json @@ -0,0 +1,13 @@ +{ + "key": "core_admin_auth", + "value": { + "providers": { + "autoRegister": false, + "defaultRole": null, + "ssoLockedRoles": null + } + }, + "type": "object", + "environment": null, + "tag": null +} \ No newline at end of file diff --git a/server2/config/sync/core-store.plugin_content_manager_configuration_components##evaluation.dimension.json b/server2/config/sync/core-store.plugin_content_manager_configuration_components##evaluation.dimension.json new file mode 100644 index 00000000..ed013539 --- /dev/null +++ b/server2/config/sync/core-store.plugin_content_manager_configuration_components##evaluation.dimension.json @@ -0,0 +1,86 @@ +{ + "key": "plugin_content_manager_configuration_components::evaluation.dimension", + "value": { + "settings": { + "bulkable": true, + "filterable": true, + "searchable": true, + "pageSize": 10, + "mainField": "documentId", + "defaultSortBy": "documentId", + "defaultSortOrder": "ASC" + }, + "metadatas": { + "id": { + "edit": {}, + "list": { + "label": "id", + "searchable": false, + "sortable": false + } + }, + "quiz": { + "edit": { + "label": "quiz", + "description": "", + "placeholder": "", + "visible": true, + "editable": true + }, + "list": { + "label": "quiz", + "searchable": false, + "sortable": false + } + }, + "comment": { + "edit": { + "label": "comment", + "description": "", + "placeholder": "", + "visible": true, + "editable": true + }, + "list": { + "label": "comment", + "searchable": true, + "sortable": true + } + }, + "documentId": { + "edit": {}, + "list": { + "label": "documentId", + "searchable": true, + "sortable": true + } + } + }, + "layouts": { + "list": [ + "id", + "quiz", + "comment" + ], + "edit": [ + [ + { + "name": "quiz", + "size": 12 + } + ], + [ + { + "name": "comment", + "size": 6 + } + ] + ] + }, + "uid": "evaluation.dimension", + "isComponent": true + }, + "type": "object", + "environment": null, + "tag": null +} \ No newline at end of file diff --git a/server2/config/sync/core-store.plugin_content_manager_configuration_components##evaluation.question.json b/server2/config/sync/core-store.plugin_content_manager_configuration_components##evaluation.question.json new file mode 100644 index 00000000..6a167660 --- /dev/null +++ b/server2/config/sync/core-store.plugin_content_manager_configuration_components##evaluation.question.json @@ -0,0 +1,65 @@ +{ + "key": "plugin_content_manager_configuration_components::evaluation.question", + "value": { + "settings": { + "bulkable": true, + "filterable": true, + "searchable": true, + "pageSize": 10, + "mainField": "documentId", + "defaultSortBy": "documentId", + "defaultSortOrder": "ASC" + }, + "metadatas": { + "id": { + "edit": {}, + "list": { + "label": "id", + "searchable": false, + "sortable": false + } + }, + "answer": { + "edit": { + "label": "answer", + "description": "", + "placeholder": "", + "visible": true, + "editable": true + }, + "list": { + "label": "answer", + "searchable": true, + "sortable": true + } + }, + "documentId": { + "edit": {}, + "list": { + "label": "documentId", + "searchable": true, + "sortable": true + } + } + }, + "layouts": { + "list": [ + "id", + "answer" + ], + "edit": [ + [ + { + "name": "answer", + "size": 4 + } + ] + ] + }, + "uid": "evaluation.question", + "isComponent": true + }, + "type": "object", + "environment": null, + "tag": null +} \ No newline at end of file diff --git a/server2/config/sync/core-store.plugin_content_manager_configuration_components##matrix.dimension.json b/server2/config/sync/core-store.plugin_content_manager_configuration_components##matrix.dimension.json new file mode 100644 index 00000000..29c40804 --- /dev/null +++ b/server2/config/sync/core-store.plugin_content_manager_configuration_components##matrix.dimension.json @@ -0,0 +1,84 @@ +{ + "key": "plugin_content_manager_configuration_components::matrix.dimension", + "value": { + "settings": { + "bulkable": true, + "filterable": true, + "searchable": true, + "pageSize": 10, + "mainField": "name", + "defaultSortBy": "name", + "defaultSortOrder": "ASC" + }, + "metadatas": { + "id": { + "edit": {}, + "list": { + "label": "id", + "searchable": false, + "sortable": false + } + }, + "name": { + "edit": { + "label": "name", + "description": "", + "placeholder": "", + "visible": true, + "editable": true + }, + "list": { + "label": "name", + "searchable": true, + "sortable": true + } + }, + "link": { + "edit": { + "label": "link", + "description": "", + "placeholder": "", + "visible": true, + "editable": true + }, + "list": { + "label": "link", + "searchable": true, + "sortable": true + } + }, + "documentId": { + "edit": {}, + "list": { + "label": "documentId", + "searchable": true, + "sortable": true + } + } + }, + "layouts": { + "list": [ + "id", + "name", + "link" + ], + "edit": [ + [ + { + "name": "name", + "size": 6 + }, + { + "name": "link", + "size": 6 + } + ] + ] + }, + "uid": "matrix.dimension", + "isComponent": true + }, + "type": "object", + "environment": null, + "tag": null +} \ No newline at end of file diff --git a/server2/config/sync/core-store.plugin_content_manager_configuration_components##matrix.question.json b/server2/config/sync/core-store.plugin_content_manager_configuration_components##matrix.question.json new file mode 100644 index 00000000..4d5cf38c --- /dev/null +++ b/server2/config/sync/core-store.plugin_content_manager_configuration_components##matrix.question.json @@ -0,0 +1,181 @@ +{ + "key": "plugin_content_manager_configuration_components::matrix.question", + "value": { + "settings": { + "bulkable": true, + "filterable": true, + "searchable": true, + "pageSize": 10, + "mainField": "question", + "defaultSortBy": "question", + "defaultSortOrder": "ASC" + }, + "metadatas": { + "id": { + "edit": {}, + "list": { + "label": "id", + "searchable": false, + "sortable": false + } + }, + "question": { + "edit": { + "label": "question", + "description": "", + "placeholder": "", + "visible": true, + "editable": true + }, + "list": { + "label": "question", + "searchable": true, + "sortable": true + } + }, + "option_1": { + "edit": { + "label": "option_1", + "description": "", + "placeholder": "", + "visible": true, + "editable": true + }, + "list": { + "label": "option_1", + "searchable": true, + "sortable": true + } + }, + "option_2": { + "edit": { + "label": "option_2", + "description": "", + "placeholder": "", + "visible": true, + "editable": true + }, + "list": { + "label": "option_2", + "searchable": true, + "sortable": true + } + }, + "option_3": { + "edit": { + "label": "option_3", + "description": "", + "placeholder": "", + "visible": true, + "editable": true + }, + "list": { + "label": "option_3", + "searchable": true, + "sortable": true + } + }, + "option_4": { + "edit": { + "label": "option_4", + "description": "", + "placeholder": "", + "visible": true, + "editable": true + }, + "list": { + "label": "option_4", + "searchable": true, + "sortable": true + } + }, + "option_5": { + "edit": { + "label": "option_5", + "description": "", + "placeholder": "", + "visible": true, + "editable": true + }, + "list": { + "label": "option_5", + "searchable": true, + "sortable": true + } + }, + "tag": { + "edit": { + "label": "tag", + "description": "", + "placeholder": "", + "visible": true, + "editable": true + }, + "list": { + "label": "tag", + "searchable": true, + "sortable": true + } + }, + "documentId": { + "edit": {}, + "list": { + "label": "documentId", + "searchable": true, + "sortable": true + } + } + }, + "layouts": { + "list": [ + "id", + "question", + "option_1", + "option_2" + ], + "edit": [ + [ + { + "name": "question", + "size": 6 + }, + { + "name": "option_1", + "size": 6 + } + ], + [ + { + "name": "option_2", + "size": 6 + }, + { + "name": "option_3", + "size": 6 + } + ], + [ + { + "name": "option_4", + "size": 6 + }, + { + "name": "option_5", + "size": 6 + } + ], + [ + { + "name": "tag", + "size": 6 + } + ] + ] + }, + "uid": "matrix.question", + "isComponent": true + }, + "type": "object", + "environment": null, + "tag": null +} \ No newline at end of file diff --git a/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##admin##api-token-permission.json b/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##admin##api-token-permission.json new file mode 100644 index 00000000..aa80d150 --- /dev/null +++ b/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##admin##api-token-permission.json @@ -0,0 +1,143 @@ +{ + "key": "plugin_content_manager_configuration_content_types::admin::api-token-permission", + "value": { + "settings": { + "bulkable": true, + "filterable": true, + "searchable": true, + "pageSize": 10, + "mainField": "action", + "defaultSortBy": "action", + "defaultSortOrder": "ASC" + }, + "metadatas": { + "id": { + "edit": {}, + "list": { + "label": "id", + "searchable": true, + "sortable": true + } + }, + "action": { + "edit": { + "label": "action", + "description": "", + "placeholder": "", + "visible": true, + "editable": true + }, + "list": { + "label": "action", + "searchable": true, + "sortable": true + } + }, + "token": { + "edit": { + "label": "token", + "description": "", + "placeholder": "", + "visible": true, + "editable": true, + "mainField": "name" + }, + "list": { + "label": "token", + "searchable": true, + "sortable": true + } + }, + "createdAt": { + "edit": { + "label": "createdAt", + "description": "", + "placeholder": "", + "visible": false, + "editable": true + }, + "list": { + "label": "createdAt", + "searchable": true, + "sortable": true + } + }, + "updatedAt": { + "edit": { + "label": "updatedAt", + "description": "", + "placeholder": "", + "visible": false, + "editable": true + }, + "list": { + "label": "updatedAt", + "searchable": true, + "sortable": true + } + }, + "createdBy": { + "edit": { + "label": "createdBy", + "description": "", + "placeholder": "", + "visible": false, + "editable": true, + "mainField": "firstname" + }, + "list": { + "label": "createdBy", + "searchable": true, + "sortable": true + } + }, + "updatedBy": { + "edit": { + "label": "updatedBy", + "description": "", + "placeholder": "", + "visible": false, + "editable": true, + "mainField": "firstname" + }, + "list": { + "label": "updatedBy", + "searchable": true, + "sortable": true + } + }, + "documentId": { + "edit": {}, + "list": { + "label": "documentId", + "searchable": true, + "sortable": true + } + } + }, + "layouts": { + "list": [ + "id", + "action", + "token", + "createdAt" + ], + "edit": [ + [ + { + "name": "action", + "size": 6 + }, + { + "name": "token", + "size": 6 + } + ] + ] + }, + "uid": "admin::api-token-permission" + }, + "type": "object", + "environment": null, + "tag": null +} \ No newline at end of file diff --git a/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##admin##api-token.json b/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##admin##api-token.json new file mode 100644 index 00000000..287cfadf --- /dev/null +++ b/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##admin##api-token.json @@ -0,0 +1,277 @@ +{ + "key": "plugin_content_manager_configuration_content_types::admin::api-token", + "value": { + "settings": { + "bulkable": true, + "filterable": true, + "searchable": true, + "pageSize": 10, + "mainField": "name", + "defaultSortBy": "name", + "defaultSortOrder": "ASC" + }, + "metadatas": { + "id": { + "edit": {}, + "list": { + "label": "id", + "searchable": true, + "sortable": true + } + }, + "name": { + "edit": { + "label": "name", + "description": "", + "placeholder": "", + "visible": true, + "editable": true + }, + "list": { + "label": "name", + "searchable": true, + "sortable": true + } + }, + "description": { + "edit": { + "label": "description", + "description": "", + "placeholder": "", + "visible": true, + "editable": true + }, + "list": { + "label": "description", + "searchable": true, + "sortable": true + } + }, + "type": { + "edit": { + "label": "type", + "description": "", + "placeholder": "", + "visible": true, + "editable": true + }, + "list": { + "label": "type", + "searchable": true, + "sortable": true + } + }, + "accessKey": { + "edit": { + "label": "accessKey", + "description": "", + "placeholder": "", + "visible": true, + "editable": true + }, + "list": { + "label": "accessKey", + "searchable": true, + "sortable": true + } + }, + "encryptedKey": { + "edit": { + "label": "encryptedKey", + "description": "", + "placeholder": "", + "visible": true, + "editable": true + }, + "list": { + "label": "encryptedKey", + "searchable": true, + "sortable": true + } + }, + "lastUsedAt": { + "edit": { + "label": "lastUsedAt", + "description": "", + "placeholder": "", + "visible": true, + "editable": true + }, + "list": { + "label": "lastUsedAt", + "searchable": true, + "sortable": true + } + }, + "permissions": { + "edit": { + "label": "permissions", + "description": "", + "placeholder": "", + "visible": true, + "editable": true, + "mainField": "action" + }, + "list": { + "label": "permissions", + "searchable": false, + "sortable": false + } + }, + "expiresAt": { + "edit": { + "label": "expiresAt", + "description": "", + "placeholder": "", + "visible": true, + "editable": true + }, + "list": { + "label": "expiresAt", + "searchable": true, + "sortable": true + } + }, + "lifespan": { + "edit": { + "label": "lifespan", + "description": "", + "placeholder": "", + "visible": true, + "editable": true + }, + "list": { + "label": "lifespan", + "searchable": true, + "sortable": true + } + }, + "createdAt": { + "edit": { + "label": "createdAt", + "description": "", + "placeholder": "", + "visible": false, + "editable": true + }, + "list": { + "label": "createdAt", + "searchable": true, + "sortable": true + } + }, + "updatedAt": { + "edit": { + "label": "updatedAt", + "description": "", + "placeholder": "", + "visible": false, + "editable": true + }, + "list": { + "label": "updatedAt", + "searchable": true, + "sortable": true + } + }, + "createdBy": { + "edit": { + "label": "createdBy", + "description": "", + "placeholder": "", + "visible": false, + "editable": true, + "mainField": "firstname" + }, + "list": { + "label": "createdBy", + "searchable": true, + "sortable": true + } + }, + "updatedBy": { + "edit": { + "label": "updatedBy", + "description": "", + "placeholder": "", + "visible": false, + "editable": true, + "mainField": "firstname" + }, + "list": { + "label": "updatedBy", + "searchable": true, + "sortable": true + } + }, + "documentId": { + "edit": {}, + "list": { + "label": "documentId", + "searchable": true, + "sortable": true + } + } + }, + "layouts": { + "list": [ + "id", + "name", + "description", + "type" + ], + "edit": [ + [ + { + "name": "name", + "size": 6 + }, + { + "name": "description", + "size": 6 + } + ], + [ + { + "name": "type", + "size": 6 + }, + { + "name": "accessKey", + "size": 6 + } + ], + [ + { + "name": "encryptedKey", + "size": 6 + }, + { + "name": "lastUsedAt", + "size": 6 + } + ], + [ + { + "name": "permissions", + "size": 6 + }, + { + "name": "expiresAt", + "size": 6 + } + ], + [ + { + "name": "lifespan", + "size": 4 + } + ] + ] + }, + "uid": "admin::api-token" + }, + "type": "object", + "environment": null, + "tag": null +} \ No newline at end of file diff --git a/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##admin##permission.json b/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##admin##permission.json new file mode 100644 index 00000000..28bb766a --- /dev/null +++ b/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##admin##permission.json @@ -0,0 +1,225 @@ +{ + "key": "plugin_content_manager_configuration_content_types::admin::permission", + "value": { + "settings": { + "bulkable": true, + "filterable": true, + "searchable": true, + "pageSize": 10, + "mainField": "action", + "defaultSortBy": "action", + "defaultSortOrder": "ASC" + }, + "metadatas": { + "id": { + "edit": {}, + "list": { + "label": "id", + "searchable": true, + "sortable": true + } + }, + "action": { + "edit": { + "label": "action", + "description": "", + "placeholder": "", + "visible": true, + "editable": true + }, + "list": { + "label": "action", + "searchable": true, + "sortable": true + } + }, + "actionParameters": { + "edit": { + "label": "actionParameters", + "description": "", + "placeholder": "", + "visible": true, + "editable": true + }, + "list": { + "label": "actionParameters", + "searchable": false, + "sortable": false + } + }, + "subject": { + "edit": { + "label": "subject", + "description": "", + "placeholder": "", + "visible": true, + "editable": true + }, + "list": { + "label": "subject", + "searchable": true, + "sortable": true + } + }, + "properties": { + "edit": { + "label": "properties", + "description": "", + "placeholder": "", + "visible": true, + "editable": true + }, + "list": { + "label": "properties", + "searchable": false, + "sortable": false + } + }, + "conditions": { + "edit": { + "label": "conditions", + "description": "", + "placeholder": "", + "visible": true, + "editable": true + }, + "list": { + "label": "conditions", + "searchable": false, + "sortable": false + } + }, + "role": { + "edit": { + "label": "role", + "description": "", + "placeholder": "", + "visible": true, + "editable": true, + "mainField": "name" + }, + "list": { + "label": "role", + "searchable": true, + "sortable": true + } + }, + "createdAt": { + "edit": { + "label": "createdAt", + "description": "", + "placeholder": "", + "visible": false, + "editable": true + }, + "list": { + "label": "createdAt", + "searchable": true, + "sortable": true + } + }, + "updatedAt": { + "edit": { + "label": "updatedAt", + "description": "", + "placeholder": "", + "visible": false, + "editable": true + }, + "list": { + "label": "updatedAt", + "searchable": true, + "sortable": true + } + }, + "createdBy": { + "edit": { + "label": "createdBy", + "description": "", + "placeholder": "", + "visible": false, + "editable": true, + "mainField": "firstname" + }, + "list": { + "label": "createdBy", + "searchable": true, + "sortable": true + } + }, + "updatedBy": { + "edit": { + "label": "updatedBy", + "description": "", + "placeholder": "", + "visible": false, + "editable": true, + "mainField": "firstname" + }, + "list": { + "label": "updatedBy", + "searchable": true, + "sortable": true + } + }, + "documentId": { + "edit": {}, + "list": { + "label": "documentId", + "searchable": true, + "sortable": true + } + } + }, + "layouts": { + "list": [ + "id", + "action", + "subject", + "role" + ], + "edit": [ + [ + { + "name": "action", + "size": 6 + } + ], + [ + { + "name": "actionParameters", + "size": 12 + } + ], + [ + { + "name": "subject", + "size": 6 + } + ], + [ + { + "name": "properties", + "size": 12 + } + ], + [ + { + "name": "conditions", + "size": 12 + } + ], + [ + { + "name": "role", + "size": 6 + } + ] + ] + }, + "uid": "admin::permission" + }, + "type": "object", + "environment": null, + "tag": null +} \ No newline at end of file diff --git a/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##admin##role.json b/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##admin##role.json new file mode 100644 index 00000000..fa407857 --- /dev/null +++ b/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##admin##role.json @@ -0,0 +1,202 @@ +{ + "key": "plugin_content_manager_configuration_content_types::admin::role", + "value": { + "settings": { + "bulkable": true, + "filterable": true, + "searchable": true, + "pageSize": 10, + "mainField": "name", + "defaultSortBy": "name", + "defaultSortOrder": "ASC" + }, + "metadatas": { + "id": { + "edit": {}, + "list": { + "label": "id", + "searchable": true, + "sortable": true + } + }, + "name": { + "edit": { + "label": "name", + "description": "", + "placeholder": "", + "visible": true, + "editable": true + }, + "list": { + "label": "name", + "searchable": true, + "sortable": true + } + }, + "code": { + "edit": { + "label": "code", + "description": "", + "placeholder": "", + "visible": true, + "editable": true + }, + "list": { + "label": "code", + "searchable": true, + "sortable": true + } + }, + "description": { + "edit": { + "label": "description", + "description": "", + "placeholder": "", + "visible": true, + "editable": true + }, + "list": { + "label": "description", + "searchable": true, + "sortable": true + } + }, + "users": { + "edit": { + "label": "users", + "description": "", + "placeholder": "", + "visible": true, + "editable": true, + "mainField": "firstname" + }, + "list": { + "label": "users", + "searchable": false, + "sortable": false + } + }, + "permissions": { + "edit": { + "label": "permissions", + "description": "", + "placeholder": "", + "visible": true, + "editable": true, + "mainField": "action" + }, + "list": { + "label": "permissions", + "searchable": false, + "sortable": false + } + }, + "createdAt": { + "edit": { + "label": "createdAt", + "description": "", + "placeholder": "", + "visible": false, + "editable": true + }, + "list": { + "label": "createdAt", + "searchable": true, + "sortable": true + } + }, + "updatedAt": { + "edit": { + "label": "updatedAt", + "description": "", + "placeholder": "", + "visible": false, + "editable": true + }, + "list": { + "label": "updatedAt", + "searchable": true, + "sortable": true + } + }, + "createdBy": { + "edit": { + "label": "createdBy", + "description": "", + "placeholder": "", + "visible": false, + "editable": true, + "mainField": "firstname" + }, + "list": { + "label": "createdBy", + "searchable": true, + "sortable": true + } + }, + "updatedBy": { + "edit": { + "label": "updatedBy", + "description": "", + "placeholder": "", + "visible": false, + "editable": true, + "mainField": "firstname" + }, + "list": { + "label": "updatedBy", + "searchable": true, + "sortable": true + } + }, + "documentId": { + "edit": {}, + "list": { + "label": "documentId", + "searchable": true, + "sortable": true + } + } + }, + "layouts": { + "list": [ + "id", + "name", + "code", + "description" + ], + "edit": [ + [ + { + "name": "name", + "size": 6 + }, + { + "name": "code", + "size": 6 + } + ], + [ + { + "name": "description", + "size": 6 + }, + { + "name": "users", + "size": 6 + } + ], + [ + { + "name": "permissions", + "size": 6 + } + ] + ] + }, + "uid": "admin::role" + }, + "type": "object", + "environment": null, + "tag": null +} \ No newline at end of file diff --git a/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##admin##transfer-token-permission.json b/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##admin##transfer-token-permission.json new file mode 100644 index 00000000..5e9d4d7f --- /dev/null +++ b/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##admin##transfer-token-permission.json @@ -0,0 +1,143 @@ +{ + "key": "plugin_content_manager_configuration_content_types::admin::transfer-token-permission", + "value": { + "settings": { + "bulkable": true, + "filterable": true, + "searchable": true, + "pageSize": 10, + "mainField": "action", + "defaultSortBy": "action", + "defaultSortOrder": "ASC" + }, + "metadatas": { + "id": { + "edit": {}, + "list": { + "label": "id", + "searchable": true, + "sortable": true + } + }, + "action": { + "edit": { + "label": "action", + "description": "", + "placeholder": "", + "visible": true, + "editable": true + }, + "list": { + "label": "action", + "searchable": true, + "sortable": true + } + }, + "token": { + "edit": { + "label": "token", + "description": "", + "placeholder": "", + "visible": true, + "editable": true, + "mainField": "name" + }, + "list": { + "label": "token", + "searchable": true, + "sortable": true + } + }, + "createdAt": { + "edit": { + "label": "createdAt", + "description": "", + "placeholder": "", + "visible": false, + "editable": true + }, + "list": { + "label": "createdAt", + "searchable": true, + "sortable": true + } + }, + "updatedAt": { + "edit": { + "label": "updatedAt", + "description": "", + "placeholder": "", + "visible": false, + "editable": true + }, + "list": { + "label": "updatedAt", + "searchable": true, + "sortable": true + } + }, + "createdBy": { + "edit": { + "label": "createdBy", + "description": "", + "placeholder": "", + "visible": false, + "editable": true, + "mainField": "firstname" + }, + "list": { + "label": "createdBy", + "searchable": true, + "sortable": true + } + }, + "updatedBy": { + "edit": { + "label": "updatedBy", + "description": "", + "placeholder": "", + "visible": false, + "editable": true, + "mainField": "firstname" + }, + "list": { + "label": "updatedBy", + "searchable": true, + "sortable": true + } + }, + "documentId": { + "edit": {}, + "list": { + "label": "documentId", + "searchable": true, + "sortable": true + } + } + }, + "layouts": { + "list": [ + "id", + "action", + "token", + "createdAt" + ], + "edit": [ + [ + { + "name": "action", + "size": 6 + }, + { + "name": "token", + "size": 6 + } + ] + ] + }, + "uid": "admin::transfer-token-permission" + }, + "type": "object", + "environment": null, + "tag": null +} \ No newline at end of file diff --git a/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##admin##transfer-token.json b/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##admin##transfer-token.json new file mode 100644 index 00000000..7f593d3a --- /dev/null +++ b/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##admin##transfer-token.json @@ -0,0 +1,239 @@ +{ + "key": "plugin_content_manager_configuration_content_types::admin::transfer-token", + "value": { + "settings": { + "bulkable": true, + "filterable": true, + "searchable": true, + "pageSize": 10, + "mainField": "name", + "defaultSortBy": "name", + "defaultSortOrder": "ASC" + }, + "metadatas": { + "id": { + "edit": {}, + "list": { + "label": "id", + "searchable": true, + "sortable": true + } + }, + "name": { + "edit": { + "label": "name", + "description": "", + "placeholder": "", + "visible": true, + "editable": true + }, + "list": { + "label": "name", + "searchable": true, + "sortable": true + } + }, + "description": { + "edit": { + "label": "description", + "description": "", + "placeholder": "", + "visible": true, + "editable": true + }, + "list": { + "label": "description", + "searchable": true, + "sortable": true + } + }, + "accessKey": { + "edit": { + "label": "accessKey", + "description": "", + "placeholder": "", + "visible": true, + "editable": true + }, + "list": { + "label": "accessKey", + "searchable": true, + "sortable": true + } + }, + "lastUsedAt": { + "edit": { + "label": "lastUsedAt", + "description": "", + "placeholder": "", + "visible": true, + "editable": true + }, + "list": { + "label": "lastUsedAt", + "searchable": true, + "sortable": true + } + }, + "permissions": { + "edit": { + "label": "permissions", + "description": "", + "placeholder": "", + "visible": true, + "editable": true, + "mainField": "action" + }, + "list": { + "label": "permissions", + "searchable": false, + "sortable": false + } + }, + "expiresAt": { + "edit": { + "label": "expiresAt", + "description": "", + "placeholder": "", + "visible": true, + "editable": true + }, + "list": { + "label": "expiresAt", + "searchable": true, + "sortable": true + } + }, + "lifespan": { + "edit": { + "label": "lifespan", + "description": "", + "placeholder": "", + "visible": true, + "editable": true + }, + "list": { + "label": "lifespan", + "searchable": true, + "sortable": true + } + }, + "createdAt": { + "edit": { + "label": "createdAt", + "description": "", + "placeholder": "", + "visible": false, + "editable": true + }, + "list": { + "label": "createdAt", + "searchable": true, + "sortable": true + } + }, + "updatedAt": { + "edit": { + "label": "updatedAt", + "description": "", + "placeholder": "", + "visible": false, + "editable": true + }, + "list": { + "label": "updatedAt", + "searchable": true, + "sortable": true + } + }, + "createdBy": { + "edit": { + "label": "createdBy", + "description": "", + "placeholder": "", + "visible": false, + "editable": true, + "mainField": "firstname" + }, + "list": { + "label": "createdBy", + "searchable": true, + "sortable": true + } + }, + "updatedBy": { + "edit": { + "label": "updatedBy", + "description": "", + "placeholder": "", + "visible": false, + "editable": true, + "mainField": "firstname" + }, + "list": { + "label": "updatedBy", + "searchable": true, + "sortable": true + } + }, + "documentId": { + "edit": {}, + "list": { + "label": "documentId", + "searchable": true, + "sortable": true + } + } + }, + "layouts": { + "list": [ + "id", + "name", + "description", + "accessKey" + ], + "edit": [ + [ + { + "name": "name", + "size": 6 + }, + { + "name": "description", + "size": 6 + } + ], + [ + { + "name": "accessKey", + "size": 6 + }, + { + "name": "lastUsedAt", + "size": 6 + } + ], + [ + { + "name": "permissions", + "size": 6 + }, + { + "name": "expiresAt", + "size": 6 + } + ], + [ + { + "name": "lifespan", + "size": 4 + } + ] + ] + }, + "uid": "admin::transfer-token" + }, + "type": "object", + "environment": null, + "tag": null +} \ No newline at end of file diff --git a/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##admin##user.json b/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##admin##user.json new file mode 100644 index 00000000..25cea72b --- /dev/null +++ b/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##admin##user.json @@ -0,0 +1,305 @@ +{ + "key": "plugin_content_manager_configuration_content_types::admin::user", + "value": { + "settings": { + "bulkable": true, + "filterable": true, + "searchable": true, + "pageSize": 10, + "mainField": "firstname", + "defaultSortBy": "firstname", + "defaultSortOrder": "ASC" + }, + "metadatas": { + "id": { + "edit": {}, + "list": { + "label": "id", + "searchable": true, + "sortable": true + } + }, + "firstname": { + "edit": { + "label": "firstname", + "description": "", + "placeholder": "", + "visible": true, + "editable": true + }, + "list": { + "label": "firstname", + "searchable": true, + "sortable": true + } + }, + "lastname": { + "edit": { + "label": "lastname", + "description": "", + "placeholder": "", + "visible": true, + "editable": true + }, + "list": { + "label": "lastname", + "searchable": true, + "sortable": true + } + }, + "username": { + "edit": { + "label": "username", + "description": "", + "placeholder": "", + "visible": true, + "editable": true + }, + "list": { + "label": "username", + "searchable": true, + "sortable": true + } + }, + "email": { + "edit": { + "label": "email", + "description": "", + "placeholder": "", + "visible": true, + "editable": true + }, + "list": { + "label": "email", + "searchable": true, + "sortable": true + } + }, + "password": { + "edit": { + "label": "password", + "description": "", + "placeholder": "", + "visible": true, + "editable": true + }, + "list": { + "label": "password", + "searchable": true, + "sortable": true + } + }, + "resetPasswordToken": { + "edit": { + "label": "resetPasswordToken", + "description": "", + "placeholder": "", + "visible": false, + "editable": true + }, + "list": { + "label": "resetPasswordToken", + "searchable": true, + "sortable": true + } + }, + "registrationToken": { + "edit": { + "label": "registrationToken", + "description": "", + "placeholder": "", + "visible": false, + "editable": true + }, + "list": { + "label": "registrationToken", + "searchable": true, + "sortable": true + } + }, + "isActive": { + "edit": { + "label": "isActive", + "description": "", + "placeholder": "", + "visible": true, + "editable": true + }, + "list": { + "label": "isActive", + "searchable": true, + "sortable": true + } + }, + "roles": { + "edit": { + "label": "roles", + "description": "", + "placeholder": "", + "visible": true, + "editable": true, + "mainField": "name" + }, + "list": { + "label": "roles", + "searchable": false, + "sortable": false + } + }, + "blocked": { + "edit": { + "label": "blocked", + "description": "", + "placeholder": "", + "visible": true, + "editable": true + }, + "list": { + "label": "blocked", + "searchable": true, + "sortable": true + } + }, + "preferedLanguage": { + "edit": { + "label": "preferedLanguage", + "description": "", + "placeholder": "", + "visible": true, + "editable": true + }, + "list": { + "label": "preferedLanguage", + "searchable": true, + "sortable": true + } + }, + "createdAt": { + "edit": { + "label": "createdAt", + "description": "", + "placeholder": "", + "visible": false, + "editable": true + }, + "list": { + "label": "createdAt", + "searchable": true, + "sortable": true + } + }, + "updatedAt": { + "edit": { + "label": "updatedAt", + "description": "", + "placeholder": "", + "visible": false, + "editable": true + }, + "list": { + "label": "updatedAt", + "searchable": true, + "sortable": true + } + }, + "createdBy": { + "edit": { + "label": "createdBy", + "description": "", + "placeholder": "", + "visible": false, + "editable": true, + "mainField": "firstname" + }, + "list": { + "label": "createdBy", + "searchable": true, + "sortable": true + } + }, + "updatedBy": { + "edit": { + "label": "updatedBy", + "description": "", + "placeholder": "", + "visible": false, + "editable": true, + "mainField": "firstname" + }, + "list": { + "label": "updatedBy", + "searchable": true, + "sortable": true + } + }, + "documentId": { + "edit": {}, + "list": { + "label": "documentId", + "searchable": true, + "sortable": true + } + } + }, + "layouts": { + "list": [ + "id", + "firstname", + "lastname", + "username" + ], + "edit": [ + [ + { + "name": "firstname", + "size": 6 + }, + { + "name": "lastname", + "size": 6 + } + ], + [ + { + "name": "username", + "size": 6 + }, + { + "name": "email", + "size": 6 + } + ], + [ + { + "name": "password", + "size": 6 + }, + { + "name": "isActive", + "size": 4 + } + ], + [ + { + "name": "roles", + "size": 6 + }, + { + "name": "blocked", + "size": 4 + } + ], + [ + { + "name": "preferedLanguage", + "size": 6 + } + ] + ] + }, + "uid": "admin::user" + }, + "type": "object", + "environment": null, + "tag": null +} \ No newline at end of file diff --git a/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##api##activity-type.activity-type.json b/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##api##activity-type.activity-type.json new file mode 100644 index 00000000..9f23fbf8 --- /dev/null +++ b/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##api##activity-type.activity-type.json @@ -0,0 +1,124 @@ +{ + "key": "plugin_content_manager_configuration_content_types::api::activity-type.activity-type", + "value": { + "settings": { + "bulkable": true, + "filterable": true, + "searchable": true, + "pageSize": 10, + "mainField": "documentId", + "defaultSortBy": "documentId", + "defaultSortOrder": "ASC" + }, + "metadatas": { + "id": { + "edit": {}, + "list": { + "label": "id", + "searchable": true, + "sortable": true + } + }, + "name": { + "edit": { + "label": "name", + "description": "", + "placeholder": "", + "visible": true, + "editable": true + }, + "list": { + "label": "name", + "searchable": true, + "sortable": true + } + }, + "createdAt": { + "edit": { + "label": "createdAt", + "description": "", + "placeholder": "", + "visible": false, + "editable": true + }, + "list": { + "label": "createdAt", + "searchable": true, + "sortable": true + } + }, + "updatedAt": { + "edit": { + "label": "updatedAt", + "description": "", + "placeholder": "", + "visible": false, + "editable": true + }, + "list": { + "label": "updatedAt", + "searchable": true, + "sortable": true + } + }, + "createdBy": { + "edit": { + "label": "createdBy", + "description": "", + "placeholder": "", + "visible": false, + "editable": true, + "mainField": "firstname" + }, + "list": { + "label": "createdBy", + "searchable": true, + "sortable": true + } + }, + "updatedBy": { + "edit": { + "label": "updatedBy", + "description": "", + "placeholder": "", + "visible": false, + "editable": true, + "mainField": "firstname" + }, + "list": { + "label": "updatedBy", + "searchable": true, + "sortable": true + } + }, + "documentId": { + "edit": {}, + "list": { + "label": "documentId", + "searchable": true, + "sortable": true + } + } + }, + "layouts": { + "list": [ + "id", + "name", + "createdAt", + "updatedAt" + ], + "edit": [ + [ + { + "name": "name", + "size": 6 + } + ] + ] + }, + "uid": "api::activity-type.activity-type" + }, + "type": "object", + "environment": null, + "tag": null +} \ No newline at end of file diff --git a/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##api##activity.activity.json b/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##api##activity.activity.json new file mode 100644 index 00000000..1e936e50 --- /dev/null +++ b/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##api##activity.activity.json @@ -0,0 +1,244 @@ +{ + "key": "plugin_content_manager_configuration_content_types::api::activity.activity", + "value": { + "settings": { + "bulkable": true, + "filterable": true, + "searchable": true, + "pageSize": 10, + "mainField": "id", + "defaultSortBy": "documentId", + "defaultSortOrder": "ASC" + }, + "metadatas": { + "id": { + "edit": {}, + "list": { + "label": "id", + "searchable": true, + "sortable": true + } + }, + "type": { + "edit": { + "label": "type", + "description": "", + "placeholder": "", + "visible": true, + "editable": true, + "mainField": "documentId" + }, + "list": { + "label": "type", + "searchable": true, + "sortable": true + } + }, + "dimension": { + "edit": { + "label": "dimension", + "description": "", + "placeholder": "", + "visible": true, + "editable": true, + "mainField": "name" + }, + "list": { + "label": "dimension", + "searchable": true, + "sortable": true + } + }, + "startDate": { + "edit": { + "label": "startDate", + "description": "", + "placeholder": "", + "visible": true, + "editable": true + }, + "list": { + "label": "startDate", + "searchable": true, + "sortable": true + } + }, + "notes": { + "edit": { + "label": "notes", + "description": "", + "placeholder": "", + "visible": true, + "editable": true + }, + "list": { + "label": "notes", + "searchable": false, + "sortable": false + } + }, + "duration": { + "edit": { + "label": "duration", + "description": "", + "placeholder": "", + "visible": true, + "editable": true + }, + "list": { + "label": "duration", + "searchable": true, + "sortable": true + } + }, + "mentor": { + "edit": { + "label": "mentor", + "description": "", + "placeholder": "", + "visible": true, + "editable": true, + "mainField": "username" + }, + "list": { + "label": "mentor", + "searchable": true, + "sortable": true + } + }, + "user": { + "edit": { + "label": "user", + "description": "", + "placeholder": "", + "visible": true, + "editable": true, + "mainField": "username" + }, + "list": { + "label": "user", + "searchable": true, + "sortable": true + } + }, + "createdAt": { + "edit": { + "label": "createdAt", + "description": "", + "placeholder": "", + "visible": false, + "editable": true + }, + "list": { + "label": "createdAt", + "searchable": true, + "sortable": true + } + }, + "updatedAt": { + "edit": { + "label": "updatedAt", + "description": "", + "placeholder": "", + "visible": false, + "editable": true + }, + "list": { + "label": "updatedAt", + "searchable": true, + "sortable": true + } + }, + "createdBy": { + "edit": { + "label": "createdBy", + "description": "", + "placeholder": "", + "visible": false, + "editable": true, + "mainField": "firstname" + }, + "list": { + "label": "createdBy", + "searchable": true, + "sortable": true + } + }, + "updatedBy": { + "edit": { + "label": "updatedBy", + "description": "", + "placeholder": "", + "visible": false, + "editable": true, + "mainField": "firstname" + }, + "list": { + "label": "updatedBy", + "searchable": true, + "sortable": true + } + }, + "documentId": { + "edit": {}, + "list": { + "label": "documentId", + "searchable": true, + "sortable": true + } + } + }, + "layouts": { + "edit": [ + [ + { + "name": "type", + "size": 6 + }, + { + "name": "dimension", + "size": 6 + } + ], + [ + { + "name": "startDate", + "size": 4 + } + ], + [ + { + "name": "notes", + "size": 12 + } + ], + [ + { + "name": "duration", + "size": 4 + }, + { + "name": "mentor", + "size": 6 + } + ], + [ + { + "name": "user", + "size": 6 + } + ] + ], + "list": [ + "id", + "type", + "dimension", + "startDate" + ] + }, + "uid": "api::activity.activity" + }, + "type": "object", + "environment": null, + "tag": null +} \ No newline at end of file diff --git a/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##api##dimension.dimension.json b/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##api##dimension.dimension.json new file mode 100644 index 00000000..17df3aa6 --- /dev/null +++ b/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##api##dimension.dimension.json @@ -0,0 +1,202 @@ +{ + "key": "plugin_content_manager_configuration_content_types::api::dimension.dimension", + "value": { + "settings": { + "bulkable": true, + "filterable": true, + "searchable": true, + "pageSize": 10, + "mainField": "name", + "defaultSortBy": "name", + "defaultSortOrder": "ASC" + }, + "metadatas": { + "id": { + "edit": {}, + "list": { + "label": "id", + "searchable": true, + "sortable": true + } + }, + "name": { + "edit": { + "label": "name", + "description": "", + "placeholder": "", + "visible": true, + "editable": true + }, + "list": { + "label": "name", + "searchable": true, + "sortable": true + } + }, + "link": { + "edit": { + "label": "link", + "description": "", + "placeholder": "", + "visible": true, + "editable": true + }, + "list": { + "label": "link", + "searchable": true, + "sortable": true + } + }, + "quiz": { + "edit": { + "label": "quiz", + "description": "", + "placeholder": "", + "visible": true, + "editable": true + }, + "list": { + "label": "quiz", + "searchable": false, + "sortable": false + } + }, + "mentors": { + "edit": { + "label": "mentors", + "description": "", + "placeholder": "", + "visible": true, + "editable": true, + "mainField": "username" + }, + "list": { + "label": "mentors", + "searchable": false, + "sortable": false + } + }, + "activities": { + "edit": { + "label": "activities", + "description": "", + "placeholder": "", + "visible": true, + "editable": true, + "mainField": "documentId" + }, + "list": { + "label": "activities", + "searchable": false, + "sortable": false + } + }, + "createdAt": { + "edit": { + "label": "createdAt", + "description": "", + "placeholder": "", + "visible": false, + "editable": true + }, + "list": { + "label": "createdAt", + "searchable": true, + "sortable": true + } + }, + "updatedAt": { + "edit": { + "label": "updatedAt", + "description": "", + "placeholder": "", + "visible": false, + "editable": true + }, + "list": { + "label": "updatedAt", + "searchable": true, + "sortable": true + } + }, + "createdBy": { + "edit": { + "label": "createdBy", + "description": "", + "placeholder": "", + "visible": false, + "editable": true, + "mainField": "firstname" + }, + "list": { + "label": "createdBy", + "searchable": true, + "sortable": true + } + }, + "updatedBy": { + "edit": { + "label": "updatedBy", + "description": "", + "placeholder": "", + "visible": false, + "editable": true, + "mainField": "firstname" + }, + "list": { + "label": "updatedBy", + "searchable": true, + "sortable": true + } + }, + "documentId": { + "edit": {}, + "list": { + "label": "documentId", + "searchable": true, + "sortable": true + } + } + }, + "layouts": { + "list": [ + "id", + "name", + "link", + "quiz" + ], + "edit": [ + [ + { + "name": "name", + "size": 6 + }, + { + "name": "link", + "size": 6 + } + ], + [ + { + "name": "quiz", + "size": 12 + } + ], + [ + { + "name": "mentors", + "size": 6 + }, + { + "name": "activities", + "size": 6 + } + ] + ] + }, + "uid": "api::dimension.dimension" + }, + "type": "object", + "environment": null, + "tag": null +} \ No newline at end of file diff --git a/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##api##domain.domain.json b/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##api##domain.domain.json new file mode 100644 index 00000000..1deb3ae0 --- /dev/null +++ b/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##api##domain.domain.json @@ -0,0 +1,143 @@ +{ + "key": "plugin_content_manager_configuration_content_types::api::domain.domain", + "value": { + "settings": { + "bulkable": true, + "filterable": true, + "searchable": true, + "pageSize": 10, + "mainField": "name", + "defaultSortBy": "name", + "defaultSortOrder": "ASC" + }, + "metadatas": { + "id": { + "edit": {}, + "list": { + "label": "id", + "searchable": true, + "sortable": true + } + }, + "name": { + "edit": { + "label": "name", + "description": "", + "placeholder": "", + "visible": true, + "editable": true + }, + "list": { + "label": "name", + "searchable": true, + "sortable": true + } + }, + "mentors": { + "edit": { + "label": "mentors", + "description": "", + "placeholder": "", + "visible": true, + "editable": true, + "mainField": "username" + }, + "list": { + "label": "mentors", + "searchable": false, + "sortable": false + } + }, + "createdAt": { + "edit": { + "label": "createdAt", + "description": "", + "placeholder": "", + "visible": false, + "editable": true + }, + "list": { + "label": "createdAt", + "searchable": true, + "sortable": true + } + }, + "updatedAt": { + "edit": { + "label": "updatedAt", + "description": "", + "placeholder": "", + "visible": false, + "editable": true + }, + "list": { + "label": "updatedAt", + "searchable": true, + "sortable": true + } + }, + "createdBy": { + "edit": { + "label": "createdBy", + "description": "", + "placeholder": "", + "visible": false, + "editable": true, + "mainField": "firstname" + }, + "list": { + "label": "createdBy", + "searchable": true, + "sortable": true + } + }, + "updatedBy": { + "edit": { + "label": "updatedBy", + "description": "", + "placeholder": "", + "visible": false, + "editable": true, + "mainField": "firstname" + }, + "list": { + "label": "updatedBy", + "searchable": true, + "sortable": true + } + }, + "documentId": { + "edit": {}, + "list": { + "label": "documentId", + "searchable": true, + "sortable": true + } + } + }, + "layouts": { + "list": [ + "id", + "name", + "mentors", + "createdAt" + ], + "edit": [ + [ + { + "name": "name", + "size": 6 + }, + { + "name": "mentors", + "size": 6 + } + ] + ] + }, + "uid": "api::domain.domain" + }, + "type": "object", + "environment": null, + "tag": null +} \ No newline at end of file diff --git a/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##api##evaluation.evaluation.json b/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##api##evaluation.evaluation.json new file mode 100644 index 00000000..584d7832 --- /dev/null +++ b/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##api##evaluation.evaluation.json @@ -0,0 +1,163 @@ +{ + "key": "plugin_content_manager_configuration_content_types::api::evaluation.evaluation", + "value": { + "settings": { + "bulkable": true, + "filterable": true, + "searchable": true, + "pageSize": 10, + "mainField": "documentId", + "defaultSortBy": "documentId", + "defaultSortOrder": "ASC" + }, + "metadatas": { + "id": { + "edit": {}, + "list": { + "label": "id", + "searchable": true, + "sortable": true + } + }, + "dimensions": { + "edit": { + "label": "dimensions", + "description": "", + "placeholder": "", + "visible": true, + "editable": true + }, + "list": { + "label": "dimensions", + "searchable": false, + "sortable": false + } + }, + "email": { + "edit": { + "label": "email", + "description": "", + "placeholder": "", + "visible": true, + "editable": true + }, + "list": { + "label": "email", + "searchable": true, + "sortable": true + } + }, + "report": { + "edit": { + "label": "report", + "description": "", + "placeholder": "", + "visible": true, + "editable": true, + "mainField": "documentId" + }, + "list": { + "label": "report", + "searchable": true, + "sortable": true + } + }, + "createdAt": { + "edit": { + "label": "createdAt", + "description": "", + "placeholder": "", + "visible": false, + "editable": true + }, + "list": { + "label": "createdAt", + "searchable": true, + "sortable": true + } + }, + "updatedAt": { + "edit": { + "label": "updatedAt", + "description": "", + "placeholder": "", + "visible": false, + "editable": true + }, + "list": { + "label": "updatedAt", + "searchable": true, + "sortable": true + } + }, + "createdBy": { + "edit": { + "label": "createdBy", + "description": "", + "placeholder": "", + "visible": false, + "editable": true, + "mainField": "firstname" + }, + "list": { + "label": "createdBy", + "searchable": true, + "sortable": true + } + }, + "updatedBy": { + "edit": { + "label": "updatedBy", + "description": "", + "placeholder": "", + "visible": false, + "editable": true, + "mainField": "firstname" + }, + "list": { + "label": "updatedBy", + "searchable": true, + "sortable": true + } + }, + "documentId": { + "edit": {}, + "list": { + "label": "documentId", + "searchable": true, + "sortable": true + } + } + }, + "layouts": { + "list": [ + "id", + "dimensions", + "email", + "report" + ], + "edit": [ + [ + { + "name": "dimensions", + "size": 12 + } + ], + [ + { + "name": "email", + "size": 6 + }, + { + "name": "report", + "size": 6 + } + ] + ] + }, + "uid": "api::evaluation.evaluation" + }, + "type": "object", + "environment": null, + "tag": null +} \ No newline at end of file diff --git a/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##api##matrix.matrix.json b/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##api##matrix.matrix.json new file mode 100644 index 00000000..3c434c4b --- /dev/null +++ b/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##api##matrix.matrix.json @@ -0,0 +1,125 @@ +{ + "key": "plugin_content_manager_configuration_content_types::api::matrix.matrix", + "value": { + "settings": { + "bulkable": true, + "filterable": true, + "searchable": true, + "pageSize": 10, + "mainField": "documentId", + "defaultSortBy": "documentId", + "defaultSortOrder": "ASC" + }, + "metadatas": { + "id": { + "edit": {}, + "list": { + "label": "id", + "searchable": true, + "sortable": true + } + }, + "dimensions": { + "edit": { + "label": "dimensions", + "description": "", + "placeholder": "", + "visible": true, + "editable": true, + "mainField": "name" + }, + "list": { + "label": "dimensions", + "searchable": false, + "sortable": false + } + }, + "createdAt": { + "edit": { + "label": "createdAt", + "description": "", + "placeholder": "", + "visible": false, + "editable": true + }, + "list": { + "label": "createdAt", + "searchable": true, + "sortable": true + } + }, + "updatedAt": { + "edit": { + "label": "updatedAt", + "description": "", + "placeholder": "", + "visible": false, + "editable": true + }, + "list": { + "label": "updatedAt", + "searchable": true, + "sortable": true + } + }, + "createdBy": { + "edit": { + "label": "createdBy", + "description": "", + "placeholder": "", + "visible": false, + "editable": true, + "mainField": "firstname" + }, + "list": { + "label": "createdBy", + "searchable": true, + "sortable": true + } + }, + "updatedBy": { + "edit": { + "label": "updatedBy", + "description": "", + "placeholder": "", + "visible": false, + "editable": true, + "mainField": "firstname" + }, + "list": { + "label": "updatedBy", + "searchable": true, + "sortable": true + } + }, + "documentId": { + "edit": {}, + "list": { + "label": "documentId", + "searchable": true, + "sortable": true + } + } + }, + "layouts": { + "list": [ + "id", + "dimensions", + "createdAt", + "updatedAt" + ], + "edit": [ + [ + { + "name": "dimensions", + "size": 6 + } + ] + ] + }, + "uid": "api::matrix.matrix" + }, + "type": "object", + "environment": null, + "tag": null +} \ No newline at end of file diff --git a/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##api##mentorship-request.mentorship-request.json b/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##api##mentorship-request.mentorship-request.json new file mode 100644 index 00000000..afa62134 --- /dev/null +++ b/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##api##mentorship-request.mentorship-request.json @@ -0,0 +1,144 @@ +{ + "key": "plugin_content_manager_configuration_content_types::api::mentorship-request.mentorship-request", + "value": { + "settings": { + "bulkable": true, + "filterable": true, + "searchable": true, + "pageSize": 10, + "mainField": "documentId", + "defaultSortBy": "documentId", + "defaultSortOrder": "ASC" + }, + "metadatas": { + "id": { + "edit": {}, + "list": { + "label": "id", + "searchable": true, + "sortable": true + } + }, + "mentor": { + "edit": { + "label": "mentor", + "description": "", + "placeholder": "", + "visible": true, + "editable": true, + "mainField": "username" + }, + "list": { + "label": "mentor", + "searchable": true, + "sortable": true + } + }, + "user": { + "edit": { + "label": "user", + "description": "", + "placeholder": "", + "visible": true, + "editable": true, + "mainField": "username" + }, + "list": { + "label": "user", + "searchable": true, + "sortable": true + } + }, + "createdAt": { + "edit": { + "label": "createdAt", + "description": "", + "placeholder": "", + "visible": false, + "editable": true + }, + "list": { + "label": "createdAt", + "searchable": true, + "sortable": true + } + }, + "updatedAt": { + "edit": { + "label": "updatedAt", + "description": "", + "placeholder": "", + "visible": false, + "editable": true + }, + "list": { + "label": "updatedAt", + "searchable": true, + "sortable": true + } + }, + "createdBy": { + "edit": { + "label": "createdBy", + "description": "", + "placeholder": "", + "visible": false, + "editable": true, + "mainField": "firstname" + }, + "list": { + "label": "createdBy", + "searchable": true, + "sortable": true + } + }, + "updatedBy": { + "edit": { + "label": "updatedBy", + "description": "", + "placeholder": "", + "visible": false, + "editable": true, + "mainField": "firstname" + }, + "list": { + "label": "updatedBy", + "searchable": true, + "sortable": true + } + }, + "documentId": { + "edit": {}, + "list": { + "label": "documentId", + "searchable": true, + "sortable": true + } + } + }, + "layouts": { + "list": [ + "id", + "mentor", + "user", + "createdAt" + ], + "edit": [ + [ + { + "name": "mentor", + "size": 6 + }, + { + "name": "user", + "size": 6 + } + ] + ] + }, + "uid": "api::mentorship-request.mentorship-request" + }, + "type": "object", + "environment": null, + "tag": null +} \ No newline at end of file diff --git a/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##api##program.program.json b/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##api##program.program.json new file mode 100644 index 00000000..b51cff6b --- /dev/null +++ b/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##api##program.program.json @@ -0,0 +1,220 @@ +{ + "key": "plugin_content_manager_configuration_content_types::api::program.program", + "value": { + "settings": { + "bulkable": true, + "filterable": true, + "searchable": true, + "pageSize": 10, + "mainField": "name", + "defaultSortBy": "name", + "defaultSortOrder": "ASC" + }, + "metadatas": { + "id": { + "edit": {}, + "list": { + "label": "id", + "searchable": true, + "sortable": true + } + }, + "name": { + "edit": { + "label": "name", + "description": "", + "placeholder": "", + "visible": true, + "editable": true + }, + "list": { + "label": "name", + "searchable": true, + "sortable": true + } + }, + "startDate": { + "edit": { + "label": "startDate", + "description": "", + "placeholder": "", + "visible": true, + "editable": true + }, + "list": { + "label": "startDate", + "searchable": true, + "sortable": true + } + }, + "endDate": { + "edit": { + "label": "endDate", + "description": "", + "placeholder": "", + "visible": true, + "editable": true + }, + "list": { + "label": "endDate", + "searchable": true, + "sortable": true + } + }, + "sponsorName": { + "edit": { + "label": "sponsorName", + "description": "", + "placeholder": "", + "visible": true, + "editable": true + }, + "list": { + "label": "sponsorName", + "searchable": true, + "sortable": true + } + }, + "mentors": { + "edit": { + "label": "mentors", + "description": "", + "placeholder": "", + "visible": true, + "editable": true, + "mainField": "username" + }, + "list": { + "label": "mentors", + "searchable": false, + "sortable": false + } + }, + "users": { + "edit": { + "label": "users", + "description": "", + "placeholder": "", + "visible": true, + "editable": true, + "mainField": "username" + }, + "list": { + "label": "users", + "searchable": false, + "sortable": false + } + }, + "createdAt": { + "edit": { + "label": "createdAt", + "description": "", + "placeholder": "", + "visible": false, + "editable": true + }, + "list": { + "label": "createdAt", + "searchable": true, + "sortable": true + } + }, + "updatedAt": { + "edit": { + "label": "updatedAt", + "description": "", + "placeholder": "", + "visible": false, + "editable": true + }, + "list": { + "label": "updatedAt", + "searchable": true, + "sortable": true + } + }, + "createdBy": { + "edit": { + "label": "createdBy", + "description": "", + "placeholder": "", + "visible": false, + "editable": true, + "mainField": "firstname" + }, + "list": { + "label": "createdBy", + "searchable": true, + "sortable": true + } + }, + "updatedBy": { + "edit": { + "label": "updatedBy", + "description": "", + "placeholder": "", + "visible": false, + "editable": true, + "mainField": "firstname" + }, + "list": { + "label": "updatedBy", + "searchable": true, + "sortable": true + } + }, + "documentId": { + "edit": {}, + "list": { + "label": "documentId", + "searchable": true, + "sortable": true + } + } + }, + "layouts": { + "list": [ + "id", + "name", + "startDate", + "endDate" + ], + "edit": [ + [ + { + "name": "name", + "size": 6 + }, + { + "name": "startDate", + "size": 4 + } + ], + [ + { + "name": "endDate", + "size": 4 + }, + { + "name": "sponsorName", + "size": 6 + } + ], + [ + { + "name": "mentors", + "size": 6 + }, + { + "name": "users", + "size": 6 + } + ] + ] + }, + "uid": "api::program.program" + }, + "type": "object", + "environment": null, + "tag": null +} \ No newline at end of file diff --git a/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##api##report.report.json b/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##api##report.report.json new file mode 100644 index 00000000..afe88a94 --- /dev/null +++ b/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##api##report.report.json @@ -0,0 +1,182 @@ +{ + "key": "plugin_content_manager_configuration_content_types::api::report.report", + "value": { + "settings": { + "bulkable": true, + "filterable": true, + "searchable": true, + "pageSize": 10, + "mainField": "documentId", + "defaultSortBy": "documentId", + "defaultSortOrder": "ASC" + }, + "metadatas": { + "id": { + "edit": {}, + "list": { + "label": "id", + "searchable": true, + "sortable": true + } + }, + "evaluations": { + "edit": { + "label": "evaluations", + "description": "", + "placeholder": "", + "visible": true, + "editable": true, + "mainField": "documentId" + }, + "list": { + "label": "evaluations", + "searchable": false, + "sortable": false + } + }, + "deadline": { + "edit": { + "label": "deadline", + "description": "", + "placeholder": "", + "visible": true, + "editable": true + }, + "list": { + "label": "deadline", + "searchable": true, + "sortable": true + } + }, + "finished": { + "edit": { + "label": "finished", + "description": "", + "placeholder": "", + "visible": true, + "editable": true + }, + "list": { + "label": "finished", + "searchable": true, + "sortable": true + } + }, + "user": { + "edit": { + "label": "user", + "description": "", + "placeholder": "", + "visible": true, + "editable": true, + "mainField": "username" + }, + "list": { + "label": "user", + "searchable": true, + "sortable": true + } + }, + "createdAt": { + "edit": { + "label": "createdAt", + "description": "", + "placeholder": "", + "visible": false, + "editable": true + }, + "list": { + "label": "createdAt", + "searchable": true, + "sortable": true + } + }, + "updatedAt": { + "edit": { + "label": "updatedAt", + "description": "", + "placeholder": "", + "visible": false, + "editable": true + }, + "list": { + "label": "updatedAt", + "searchable": true, + "sortable": true + } + }, + "createdBy": { + "edit": { + "label": "createdBy", + "description": "", + "placeholder": "", + "visible": false, + "editable": true, + "mainField": "firstname" + }, + "list": { + "label": "createdBy", + "searchable": true, + "sortable": true + } + }, + "updatedBy": { + "edit": { + "label": "updatedBy", + "description": "", + "placeholder": "", + "visible": false, + "editable": true, + "mainField": "firstname" + }, + "list": { + "label": "updatedBy", + "searchable": true, + "sortable": true + } + }, + "documentId": { + "edit": {}, + "list": { + "label": "documentId", + "searchable": true, + "sortable": true + } + } + }, + "layouts": { + "list": [ + "id", + "evaluations", + "deadline", + "finished" + ], + "edit": [ + [ + { + "name": "evaluations", + "size": 6 + }, + { + "name": "deadline", + "size": 4 + } + ], + [ + { + "name": "finished", + "size": 4 + }, + { + "name": "user", + "size": 6 + } + ] + ] + }, + "uid": "api::report.report" + }, + "type": "object", + "environment": null, + "tag": null +} \ No newline at end of file diff --git a/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##plugin##content-releases.release-action.json b/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##plugin##content-releases.release-action.json new file mode 100644 index 00000000..ef448553 --- /dev/null +++ b/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##plugin##content-releases.release-action.json @@ -0,0 +1,201 @@ +{ + "key": "plugin_content_manager_configuration_content_types::plugin::content-releases.release-action", + "value": { + "settings": { + "bulkable": true, + "filterable": true, + "searchable": true, + "pageSize": 10, + "mainField": "contentType", + "defaultSortBy": "contentType", + "defaultSortOrder": "ASC" + }, + "metadatas": { + "id": { + "edit": {}, + "list": { + "label": "id", + "searchable": true, + "sortable": true + } + }, + "type": { + "edit": { + "label": "type", + "description": "", + "placeholder": "", + "visible": true, + "editable": true + }, + "list": { + "label": "type", + "searchable": true, + "sortable": true + } + }, + "contentType": { + "edit": { + "label": "contentType", + "description": "", + "placeholder": "", + "visible": true, + "editable": true + }, + "list": { + "label": "contentType", + "searchable": true, + "sortable": true + } + }, + "entryDocumentId": { + "edit": { + "label": "entryDocumentId", + "description": "", + "placeholder": "", + "visible": true, + "editable": true + }, + "list": { + "label": "entryDocumentId", + "searchable": true, + "sortable": true + } + }, + "release": { + "edit": { + "label": "release", + "description": "", + "placeholder": "", + "visible": true, + "editable": true, + "mainField": "name" + }, + "list": { + "label": "release", + "searchable": true, + "sortable": true + } + }, + "isEntryValid": { + "edit": { + "label": "isEntryValid", + "description": "", + "placeholder": "", + "visible": true, + "editable": true + }, + "list": { + "label": "isEntryValid", + "searchable": true, + "sortable": true + } + }, + "createdAt": { + "edit": { + "label": "createdAt", + "description": "", + "placeholder": "", + "visible": false, + "editable": true + }, + "list": { + "label": "createdAt", + "searchable": true, + "sortable": true + } + }, + "updatedAt": { + "edit": { + "label": "updatedAt", + "description": "", + "placeholder": "", + "visible": false, + "editable": true + }, + "list": { + "label": "updatedAt", + "searchable": true, + "sortable": true + } + }, + "createdBy": { + "edit": { + "label": "createdBy", + "description": "", + "placeholder": "", + "visible": false, + "editable": true, + "mainField": "firstname" + }, + "list": { + "label": "createdBy", + "searchable": true, + "sortable": true + } + }, + "updatedBy": { + "edit": { + "label": "updatedBy", + "description": "", + "placeholder": "", + "visible": false, + "editable": true, + "mainField": "firstname" + }, + "list": { + "label": "updatedBy", + "searchable": true, + "sortable": true + } + }, + "documentId": { + "edit": {}, + "list": { + "label": "documentId", + "searchable": true, + "sortable": true + } + } + }, + "layouts": { + "list": [ + "id", + "type", + "contentType", + "entryDocumentId" + ], + "edit": [ + [ + { + "name": "type", + "size": 6 + }, + { + "name": "contentType", + "size": 6 + } + ], + [ + { + "name": "entryDocumentId", + "size": 6 + }, + { + "name": "release", + "size": 6 + } + ], + [ + { + "name": "isEntryValid", + "size": 4 + } + ] + ] + }, + "uid": "plugin::content-releases.release-action" + }, + "type": "object", + "environment": null, + "tag": null +} \ No newline at end of file diff --git a/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##plugin##content-releases.release.json b/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##plugin##content-releases.release.json new file mode 100644 index 00000000..d8e76e7a --- /dev/null +++ b/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##plugin##content-releases.release.json @@ -0,0 +1,219 @@ +{ + "key": "plugin_content_manager_configuration_content_types::plugin::content-releases.release", + "value": { + "settings": { + "bulkable": true, + "filterable": true, + "searchable": true, + "pageSize": 10, + "mainField": "name", + "defaultSortBy": "name", + "defaultSortOrder": "ASC" + }, + "metadatas": { + "id": { + "edit": {}, + "list": { + "label": "id", + "searchable": true, + "sortable": true + } + }, + "name": { + "edit": { + "label": "name", + "description": "", + "placeholder": "", + "visible": true, + "editable": true + }, + "list": { + "label": "name", + "searchable": true, + "sortable": true + } + }, + "releasedAt": { + "edit": { + "label": "releasedAt", + "description": "", + "placeholder": "", + "visible": true, + "editable": true + }, + "list": { + "label": "releasedAt", + "searchable": true, + "sortable": true + } + }, + "scheduledAt": { + "edit": { + "label": "scheduledAt", + "description": "", + "placeholder": "", + "visible": true, + "editable": true + }, + "list": { + "label": "scheduledAt", + "searchable": true, + "sortable": true + } + }, + "timezone": { + "edit": { + "label": "timezone", + "description": "", + "placeholder": "", + "visible": true, + "editable": true + }, + "list": { + "label": "timezone", + "searchable": true, + "sortable": true + } + }, + "status": { + "edit": { + "label": "status", + "description": "", + "placeholder": "", + "visible": true, + "editable": true + }, + "list": { + "label": "status", + "searchable": true, + "sortable": true + } + }, + "actions": { + "edit": { + "label": "actions", + "description": "", + "placeholder": "", + "visible": true, + "editable": true, + "mainField": "contentType" + }, + "list": { + "label": "actions", + "searchable": false, + "sortable": false + } + }, + "createdAt": { + "edit": { + "label": "createdAt", + "description": "", + "placeholder": "", + "visible": false, + "editable": true + }, + "list": { + "label": "createdAt", + "searchable": true, + "sortable": true + } + }, + "updatedAt": { + "edit": { + "label": "updatedAt", + "description": "", + "placeholder": "", + "visible": false, + "editable": true + }, + "list": { + "label": "updatedAt", + "searchable": true, + "sortable": true + } + }, + "createdBy": { + "edit": { + "label": "createdBy", + "description": "", + "placeholder": "", + "visible": false, + "editable": true, + "mainField": "firstname" + }, + "list": { + "label": "createdBy", + "searchable": true, + "sortable": true + } + }, + "updatedBy": { + "edit": { + "label": "updatedBy", + "description": "", + "placeholder": "", + "visible": false, + "editable": true, + "mainField": "firstname" + }, + "list": { + "label": "updatedBy", + "searchable": true, + "sortable": true + } + }, + "documentId": { + "edit": {}, + "list": { + "label": "documentId", + "searchable": true, + "sortable": true + } + } + }, + "layouts": { + "list": [ + "id", + "name", + "releasedAt", + "scheduledAt" + ], + "edit": [ + [ + { + "name": "name", + "size": 6 + }, + { + "name": "releasedAt", + "size": 6 + } + ], + [ + { + "name": "scheduledAt", + "size": 6 + }, + { + "name": "timezone", + "size": 6 + } + ], + [ + { + "name": "status", + "size": 6 + }, + { + "name": "actions", + "size": 6 + } + ] + ] + }, + "uid": "plugin::content-releases.release" + }, + "type": "object", + "environment": null, + "tag": null +} \ No newline at end of file diff --git a/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##plugin##email-designer-5.email-designer-template.json b/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##plugin##email-designer-5.email-designer-template.json new file mode 100644 index 00000000..46e23e96 --- /dev/null +++ b/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##plugin##email-designer-5.email-designer-template.json @@ -0,0 +1,240 @@ +{ + "key": "plugin_content_manager_configuration_content_types::plugin::email-designer-5.email-designer-template", + "value": { + "settings": { + "bulkable": true, + "filterable": true, + "searchable": true, + "pageSize": 10, + "mainField": "name", + "defaultSortBy": "name", + "defaultSortOrder": "ASC" + }, + "metadatas": { + "id": { + "edit": {}, + "list": { + "label": "id", + "searchable": true, + "sortable": true + } + }, + "templateReferenceId": { + "edit": { + "label": "templateReferenceId", + "description": "", + "placeholder": "", + "visible": true, + "editable": true + }, + "list": { + "label": "templateReferenceId", + "searchable": true, + "sortable": true + } + }, + "design": { + "edit": { + "label": "design", + "description": "", + "placeholder": "", + "visible": true, + "editable": true + }, + "list": { + "label": "design", + "searchable": false, + "sortable": false + } + }, + "name": { + "edit": { + "label": "name", + "description": "", + "placeholder": "", + "visible": true, + "editable": true + }, + "list": { + "label": "name", + "searchable": true, + "sortable": true + } + }, + "subject": { + "edit": { + "label": "subject", + "description": "", + "placeholder": "", + "visible": true, + "editable": true + }, + "list": { + "label": "subject", + "searchable": true, + "sortable": true + } + }, + "bodyHtml": { + "edit": { + "label": "bodyHtml", + "description": "", + "placeholder": "", + "visible": true, + "editable": true + }, + "list": { + "label": "bodyHtml", + "searchable": true, + "sortable": true + } + }, + "bodyText": { + "edit": { + "label": "bodyText", + "description": "", + "placeholder": "", + "visible": true, + "editable": true + }, + "list": { + "label": "bodyText", + "searchable": true, + "sortable": true + } + }, + "tags": { + "edit": { + "label": "tags", + "description": "", + "placeholder": "", + "visible": true, + "editable": true + }, + "list": { + "label": "tags", + "searchable": false, + "sortable": false + } + }, + "createdAt": { + "edit": { + "label": "createdAt", + "description": "", + "placeholder": "", + "visible": false, + "editable": true + }, + "list": { + "label": "createdAt", + "searchable": true, + "sortable": true + } + }, + "updatedAt": { + "edit": { + "label": "updatedAt", + "description": "", + "placeholder": "", + "visible": false, + "editable": true + }, + "list": { + "label": "updatedAt", + "searchable": true, + "sortable": true + } + }, + "createdBy": { + "edit": { + "label": "createdBy", + "description": "", + "placeholder": "", + "visible": false, + "editable": true, + "mainField": "firstname" + }, + "list": { + "label": "createdBy", + "searchable": true, + "sortable": true + } + }, + "updatedBy": { + "edit": { + "label": "updatedBy", + "description": "", + "placeholder": "", + "visible": false, + "editable": true, + "mainField": "firstname" + }, + "list": { + "label": "updatedBy", + "searchable": true, + "sortable": true + } + }, + "documentId": { + "edit": {}, + "list": { + "label": "documentId", + "searchable": true, + "sortable": true + } + } + }, + "layouts": { + "list": [ + "id", + "templateReferenceId", + "name", + "subject" + ], + "edit": [ + [ + { + "name": "templateReferenceId", + "size": 4 + } + ], + [ + { + "name": "design", + "size": 12 + } + ], + [ + { + "name": "name", + "size": 6 + }, + { + "name": "subject", + "size": 6 + } + ], + [ + { + "name": "bodyHtml", + "size": 6 + }, + { + "name": "bodyText", + "size": 6 + } + ], + [ + { + "name": "tags", + "size": 12 + } + ] + ] + }, + "uid": "plugin::email-designer-5.email-designer-template" + }, + "type": "object", + "environment": null, + "tag": null +} \ No newline at end of file diff --git a/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##plugin##i18n.locale.json b/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##plugin##i18n.locale.json new file mode 100644 index 00000000..2ebf323e --- /dev/null +++ b/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##plugin##i18n.locale.json @@ -0,0 +1,142 @@ +{ + "key": "plugin_content_manager_configuration_content_types::plugin::i18n.locale", + "value": { + "settings": { + "bulkable": true, + "filterable": true, + "searchable": true, + "pageSize": 10, + "mainField": "name", + "defaultSortBy": "name", + "defaultSortOrder": "ASC" + }, + "metadatas": { + "id": { + "edit": {}, + "list": { + "label": "id", + "searchable": true, + "sortable": true + } + }, + "name": { + "edit": { + "label": "name", + "description": "", + "placeholder": "", + "visible": true, + "editable": true + }, + "list": { + "label": "name", + "searchable": true, + "sortable": true + } + }, + "code": { + "edit": { + "label": "code", + "description": "", + "placeholder": "", + "visible": true, + "editable": true + }, + "list": { + "label": "code", + "searchable": true, + "sortable": true + } + }, + "createdAt": { + "edit": { + "label": "createdAt", + "description": "", + "placeholder": "", + "visible": false, + "editable": true + }, + "list": { + "label": "createdAt", + "searchable": true, + "sortable": true + } + }, + "updatedAt": { + "edit": { + "label": "updatedAt", + "description": "", + "placeholder": "", + "visible": false, + "editable": true + }, + "list": { + "label": "updatedAt", + "searchable": true, + "sortable": true + } + }, + "createdBy": { + "edit": { + "label": "createdBy", + "description": "", + "placeholder": "", + "visible": false, + "editable": true, + "mainField": "firstname" + }, + "list": { + "label": "createdBy", + "searchable": true, + "sortable": true + } + }, + "updatedBy": { + "edit": { + "label": "updatedBy", + "description": "", + "placeholder": "", + "visible": false, + "editable": true, + "mainField": "firstname" + }, + "list": { + "label": "updatedBy", + "searchable": true, + "sortable": true + } + }, + "documentId": { + "edit": {}, + "list": { + "label": "documentId", + "searchable": true, + "sortable": true + } + } + }, + "layouts": { + "list": [ + "id", + "name", + "code", + "createdAt" + ], + "edit": [ + [ + { + "name": "name", + "size": 6 + }, + { + "name": "code", + "size": 6 + } + ] + ] + }, + "uid": "plugin::i18n.locale" + }, + "type": "object", + "environment": null, + "tag": null +} \ No newline at end of file diff --git a/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##plugin##review-workflows.workflow-stage.json b/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##plugin##review-workflows.workflow-stage.json new file mode 100644 index 00000000..2d0b6c28 --- /dev/null +++ b/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##plugin##review-workflows.workflow-stage.json @@ -0,0 +1,182 @@ +{ + "key": "plugin_content_manager_configuration_content_types::plugin::review-workflows.workflow-stage", + "value": { + "settings": { + "bulkable": true, + "filterable": true, + "searchable": true, + "pageSize": 10, + "mainField": "name", + "defaultSortBy": "name", + "defaultSortOrder": "ASC" + }, + "metadatas": { + "id": { + "edit": {}, + "list": { + "label": "id", + "searchable": true, + "sortable": true + } + }, + "name": { + "edit": { + "label": "name", + "description": "", + "placeholder": "", + "visible": true, + "editable": true + }, + "list": { + "label": "name", + "searchable": true, + "sortable": true + } + }, + "color": { + "edit": { + "label": "color", + "description": "", + "placeholder": "", + "visible": true, + "editable": true + }, + "list": { + "label": "color", + "searchable": true, + "sortable": true + } + }, + "workflow": { + "edit": { + "label": "workflow", + "description": "", + "placeholder": "", + "visible": true, + "editable": true, + "mainField": "name" + }, + "list": { + "label": "workflow", + "searchable": true, + "sortable": true + } + }, + "permissions": { + "edit": { + "label": "permissions", + "description": "", + "placeholder": "", + "visible": true, + "editable": true, + "mainField": "action" + }, + "list": { + "label": "permissions", + "searchable": false, + "sortable": false + } + }, + "createdAt": { + "edit": { + "label": "createdAt", + "description": "", + "placeholder": "", + "visible": false, + "editable": true + }, + "list": { + "label": "createdAt", + "searchable": true, + "sortable": true + } + }, + "updatedAt": { + "edit": { + "label": "updatedAt", + "description": "", + "placeholder": "", + "visible": false, + "editable": true + }, + "list": { + "label": "updatedAt", + "searchable": true, + "sortable": true + } + }, + "createdBy": { + "edit": { + "label": "createdBy", + "description": "", + "placeholder": "", + "visible": false, + "editable": true, + "mainField": "firstname" + }, + "list": { + "label": "createdBy", + "searchable": true, + "sortable": true + } + }, + "updatedBy": { + "edit": { + "label": "updatedBy", + "description": "", + "placeholder": "", + "visible": false, + "editable": true, + "mainField": "firstname" + }, + "list": { + "label": "updatedBy", + "searchable": true, + "sortable": true + } + }, + "documentId": { + "edit": {}, + "list": { + "label": "documentId", + "searchable": true, + "sortable": true + } + } + }, + "layouts": { + "list": [ + "id", + "name", + "color", + "workflow" + ], + "edit": [ + [ + { + "name": "name", + "size": 6 + }, + { + "name": "color", + "size": 6 + } + ], + [ + { + "name": "workflow", + "size": 6 + }, + { + "name": "permissions", + "size": 6 + } + ] + ] + }, + "uid": "plugin::review-workflows.workflow-stage" + }, + "type": "object", + "environment": null, + "tag": null +} \ No newline at end of file diff --git a/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##plugin##review-workflows.workflow.json b/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##plugin##review-workflows.workflow.json new file mode 100644 index 00000000..ea19020b --- /dev/null +++ b/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##plugin##review-workflows.workflow.json @@ -0,0 +1,184 @@ +{ + "key": "plugin_content_manager_configuration_content_types::plugin::review-workflows.workflow", + "value": { + "settings": { + "bulkable": true, + "filterable": true, + "searchable": true, + "pageSize": 10, + "mainField": "name", + "defaultSortBy": "name", + "defaultSortOrder": "ASC" + }, + "metadatas": { + "id": { + "edit": {}, + "list": { + "label": "id", + "searchable": true, + "sortable": true + } + }, + "name": { + "edit": { + "label": "name", + "description": "", + "placeholder": "", + "visible": true, + "editable": true + }, + "list": { + "label": "name", + "searchable": true, + "sortable": true + } + }, + "stages": { + "edit": { + "label": "stages", + "description": "", + "placeholder": "", + "visible": true, + "editable": true, + "mainField": "name" + }, + "list": { + "label": "stages", + "searchable": false, + "sortable": false + } + }, + "stageRequiredToPublish": { + "edit": { + "label": "stageRequiredToPublish", + "description": "", + "placeholder": "", + "visible": true, + "editable": true, + "mainField": "name" + }, + "list": { + "label": "stageRequiredToPublish", + "searchable": true, + "sortable": true + } + }, + "contentTypes": { + "edit": { + "label": "contentTypes", + "description": "", + "placeholder": "", + "visible": true, + "editable": true + }, + "list": { + "label": "contentTypes", + "searchable": false, + "sortable": false + } + }, + "createdAt": { + "edit": { + "label": "createdAt", + "description": "", + "placeholder": "", + "visible": false, + "editable": true + }, + "list": { + "label": "createdAt", + "searchable": true, + "sortable": true + } + }, + "updatedAt": { + "edit": { + "label": "updatedAt", + "description": "", + "placeholder": "", + "visible": false, + "editable": true + }, + "list": { + "label": "updatedAt", + "searchable": true, + "sortable": true + } + }, + "createdBy": { + "edit": { + "label": "createdBy", + "description": "", + "placeholder": "", + "visible": false, + "editable": true, + "mainField": "firstname" + }, + "list": { + "label": "createdBy", + "searchable": true, + "sortable": true + } + }, + "updatedBy": { + "edit": { + "label": "updatedBy", + "description": "", + "placeholder": "", + "visible": false, + "editable": true, + "mainField": "firstname" + }, + "list": { + "label": "updatedBy", + "searchable": true, + "sortable": true + } + }, + "documentId": { + "edit": {}, + "list": { + "label": "documentId", + "searchable": true, + "sortable": true + } + } + }, + "layouts": { + "list": [ + "id", + "name", + "stages", + "stageRequiredToPublish" + ], + "edit": [ + [ + { + "name": "name", + "size": 6 + }, + { + "name": "stages", + "size": 6 + } + ], + [ + { + "name": "stageRequiredToPublish", + "size": 6 + } + ], + [ + { + "name": "contentTypes", + "size": 12 + } + ] + ] + }, + "uid": "plugin::review-workflows.workflow" + }, + "type": "object", + "environment": null, + "tag": null +} \ No newline at end of file diff --git a/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##plugin##upload.file.json b/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##plugin##upload.file.json new file mode 100644 index 00000000..f425a816 --- /dev/null +++ b/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##plugin##upload.file.json @@ -0,0 +1,413 @@ +{ + "key": "plugin_content_manager_configuration_content_types::plugin::upload.file", + "value": { + "settings": { + "bulkable": true, + "filterable": true, + "searchable": true, + "pageSize": 10, + "mainField": "name", + "defaultSortBy": "name", + "defaultSortOrder": "ASC" + }, + "metadatas": { + "id": { + "edit": {}, + "list": { + "label": "id", + "searchable": true, + "sortable": true + } + }, + "name": { + "edit": { + "label": "name", + "description": "", + "placeholder": "", + "visible": true, + "editable": true + }, + "list": { + "label": "name", + "searchable": true, + "sortable": true + } + }, + "alternativeText": { + "edit": { + "label": "alternativeText", + "description": "", + "placeholder": "", + "visible": true, + "editable": true + }, + "list": { + "label": "alternativeText", + "searchable": true, + "sortable": true + } + }, + "caption": { + "edit": { + "label": "caption", + "description": "", + "placeholder": "", + "visible": true, + "editable": true + }, + "list": { + "label": "caption", + "searchable": true, + "sortable": true + } + }, + "width": { + "edit": { + "label": "width", + "description": "", + "placeholder": "", + "visible": true, + "editable": true + }, + "list": { + "label": "width", + "searchable": true, + "sortable": true + } + }, + "height": { + "edit": { + "label": "height", + "description": "", + "placeholder": "", + "visible": true, + "editable": true + }, + "list": { + "label": "height", + "searchable": true, + "sortable": true + } + }, + "formats": { + "edit": { + "label": "formats", + "description": "", + "placeholder": "", + "visible": true, + "editable": true + }, + "list": { + "label": "formats", + "searchable": false, + "sortable": false + } + }, + "hash": { + "edit": { + "label": "hash", + "description": "", + "placeholder": "", + "visible": true, + "editable": true + }, + "list": { + "label": "hash", + "searchable": true, + "sortable": true + } + }, + "ext": { + "edit": { + "label": "ext", + "description": "", + "placeholder": "", + "visible": true, + "editable": true + }, + "list": { + "label": "ext", + "searchable": true, + "sortable": true + } + }, + "mime": { + "edit": { + "label": "mime", + "description": "", + "placeholder": "", + "visible": true, + "editable": true + }, + "list": { + "label": "mime", + "searchable": true, + "sortable": true + } + }, + "size": { + "edit": { + "label": "size", + "description": "", + "placeholder": "", + "visible": true, + "editable": true + }, + "list": { + "label": "size", + "searchable": true, + "sortable": true + } + }, + "url": { + "edit": { + "label": "url", + "description": "", + "placeholder": "", + "visible": true, + "editable": true + }, + "list": { + "label": "url", + "searchable": true, + "sortable": true + } + }, + "previewUrl": { + "edit": { + "label": "previewUrl", + "description": "", + "placeholder": "", + "visible": true, + "editable": true + }, + "list": { + "label": "previewUrl", + "searchable": true, + "sortable": true + } + }, + "provider": { + "edit": { + "label": "provider", + "description": "", + "placeholder": "", + "visible": true, + "editable": true + }, + "list": { + "label": "provider", + "searchable": true, + "sortable": true + } + }, + "provider_metadata": { + "edit": { + "label": "provider_metadata", + "description": "", + "placeholder": "", + "visible": true, + "editable": true + }, + "list": { + "label": "provider_metadata", + "searchable": false, + "sortable": false + } + }, + "folder": { + "edit": { + "label": "folder", + "description": "", + "placeholder": "", + "visible": true, + "editable": true, + "mainField": "name" + }, + "list": { + "label": "folder", + "searchable": true, + "sortable": true + } + }, + "folderPath": { + "edit": { + "label": "folderPath", + "description": "", + "placeholder": "", + "visible": true, + "editable": true + }, + "list": { + "label": "folderPath", + "searchable": true, + "sortable": true + } + }, + "createdAt": { + "edit": { + "label": "createdAt", + "description": "", + "placeholder": "", + "visible": false, + "editable": true + }, + "list": { + "label": "createdAt", + "searchable": true, + "sortable": true + } + }, + "updatedAt": { + "edit": { + "label": "updatedAt", + "description": "", + "placeholder": "", + "visible": false, + "editable": true + }, + "list": { + "label": "updatedAt", + "searchable": true, + "sortable": true + } + }, + "createdBy": { + "edit": { + "label": "createdBy", + "description": "", + "placeholder": "", + "visible": false, + "editable": true, + "mainField": "firstname" + }, + "list": { + "label": "createdBy", + "searchable": true, + "sortable": true + } + }, + "updatedBy": { + "edit": { + "label": "updatedBy", + "description": "", + "placeholder": "", + "visible": false, + "editable": true, + "mainField": "firstname" + }, + "list": { + "label": "updatedBy", + "searchable": true, + "sortable": true + } + }, + "documentId": { + "edit": {}, + "list": { + "label": "documentId", + "searchable": true, + "sortable": true + } + } + }, + "layouts": { + "list": [ + "id", + "name", + "alternativeText", + "caption" + ], + "edit": [ + [ + { + "name": "name", + "size": 6 + }, + { + "name": "alternativeText", + "size": 6 + } + ], + [ + { + "name": "caption", + "size": 6 + }, + { + "name": "width", + "size": 4 + } + ], + [ + { + "name": "height", + "size": 4 + } + ], + [ + { + "name": "formats", + "size": 12 + } + ], + [ + { + "name": "hash", + "size": 6 + }, + { + "name": "ext", + "size": 6 + } + ], + [ + { + "name": "mime", + "size": 6 + }, + { + "name": "size", + "size": 4 + } + ], + [ + { + "name": "url", + "size": 6 + }, + { + "name": "previewUrl", + "size": 6 + } + ], + [ + { + "name": "provider", + "size": 6 + } + ], + [ + { + "name": "provider_metadata", + "size": 12 + } + ], + [ + { + "name": "folder", + "size": 6 + }, + { + "name": "folderPath", + "size": 6 + } + ] + ] + }, + "uid": "plugin::upload.file" + }, + "type": "object", + "environment": null, + "tag": null +} \ No newline at end of file diff --git a/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##plugin##upload.folder.json b/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##plugin##upload.folder.json new file mode 100644 index 00000000..ab3b3cab --- /dev/null +++ b/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##plugin##upload.folder.json @@ -0,0 +1,221 @@ +{ + "key": "plugin_content_manager_configuration_content_types::plugin::upload.folder", + "value": { + "settings": { + "bulkable": true, + "filterable": true, + "searchable": true, + "pageSize": 10, + "mainField": "name", + "defaultSortBy": "name", + "defaultSortOrder": "ASC" + }, + "metadatas": { + "id": { + "edit": {}, + "list": { + "label": "id", + "searchable": true, + "sortable": true + } + }, + "name": { + "edit": { + "label": "name", + "description": "", + "placeholder": "", + "visible": true, + "editable": true + }, + "list": { + "label": "name", + "searchable": true, + "sortable": true + } + }, + "pathId": { + "edit": { + "label": "pathId", + "description": "", + "placeholder": "", + "visible": true, + "editable": true + }, + "list": { + "label": "pathId", + "searchable": true, + "sortable": true + } + }, + "parent": { + "edit": { + "label": "parent", + "description": "", + "placeholder": "", + "visible": true, + "editable": true, + "mainField": "name" + }, + "list": { + "label": "parent", + "searchable": true, + "sortable": true + } + }, + "children": { + "edit": { + "label": "children", + "description": "", + "placeholder": "", + "visible": true, + "editable": true, + "mainField": "name" + }, + "list": { + "label": "children", + "searchable": false, + "sortable": false + } + }, + "files": { + "edit": { + "label": "files", + "description": "", + "placeholder": "", + "visible": true, + "editable": true, + "mainField": "name" + }, + "list": { + "label": "files", + "searchable": false, + "sortable": false + } + }, + "path": { + "edit": { + "label": "path", + "description": "", + "placeholder": "", + "visible": true, + "editable": true + }, + "list": { + "label": "path", + "searchable": true, + "sortable": true + } + }, + "createdAt": { + "edit": { + "label": "createdAt", + "description": "", + "placeholder": "", + "visible": false, + "editable": true + }, + "list": { + "label": "createdAt", + "searchable": true, + "sortable": true + } + }, + "updatedAt": { + "edit": { + "label": "updatedAt", + "description": "", + "placeholder": "", + "visible": false, + "editable": true + }, + "list": { + "label": "updatedAt", + "searchable": true, + "sortable": true + } + }, + "createdBy": { + "edit": { + "label": "createdBy", + "description": "", + "placeholder": "", + "visible": false, + "editable": true, + "mainField": "firstname" + }, + "list": { + "label": "createdBy", + "searchable": true, + "sortable": true + } + }, + "updatedBy": { + "edit": { + "label": "updatedBy", + "description": "", + "placeholder": "", + "visible": false, + "editable": true, + "mainField": "firstname" + }, + "list": { + "label": "updatedBy", + "searchable": true, + "sortable": true + } + }, + "documentId": { + "edit": {}, + "list": { + "label": "documentId", + "searchable": true, + "sortable": true + } + } + }, + "layouts": { + "list": [ + "id", + "name", + "pathId", + "parent" + ], + "edit": [ + [ + { + "name": "name", + "size": 6 + }, + { + "name": "pathId", + "size": 4 + } + ], + [ + { + "name": "parent", + "size": 6 + }, + { + "name": "children", + "size": 6 + } + ], + [ + { + "name": "files", + "size": 6 + }, + { + "name": "path", + "size": 6 + } + ] + ] + }, + "uid": "plugin::upload.folder" + }, + "type": "object", + "environment": null, + "tag": null +} \ No newline at end of file diff --git a/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##plugin##users-permissions.permission.json b/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##plugin##users-permissions.permission.json new file mode 100644 index 00000000..860c4190 --- /dev/null +++ b/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##plugin##users-permissions.permission.json @@ -0,0 +1,143 @@ +{ + "key": "plugin_content_manager_configuration_content_types::plugin::users-permissions.permission", + "value": { + "settings": { + "bulkable": true, + "filterable": true, + "searchable": true, + "pageSize": 10, + "mainField": "action", + "defaultSortBy": "action", + "defaultSortOrder": "ASC" + }, + "metadatas": { + "id": { + "edit": {}, + "list": { + "label": "id", + "searchable": true, + "sortable": true + } + }, + "action": { + "edit": { + "label": "action", + "description": "", + "placeholder": "", + "visible": true, + "editable": true + }, + "list": { + "label": "action", + "searchable": true, + "sortable": true + } + }, + "role": { + "edit": { + "label": "role", + "description": "", + "placeholder": "", + "visible": true, + "editable": true, + "mainField": "name" + }, + "list": { + "label": "role", + "searchable": true, + "sortable": true + } + }, + "createdAt": { + "edit": { + "label": "createdAt", + "description": "", + "placeholder": "", + "visible": false, + "editable": true + }, + "list": { + "label": "createdAt", + "searchable": true, + "sortable": true + } + }, + "updatedAt": { + "edit": { + "label": "updatedAt", + "description": "", + "placeholder": "", + "visible": false, + "editable": true + }, + "list": { + "label": "updatedAt", + "searchable": true, + "sortable": true + } + }, + "createdBy": { + "edit": { + "label": "createdBy", + "description": "", + "placeholder": "", + "visible": false, + "editable": true, + "mainField": "firstname" + }, + "list": { + "label": "createdBy", + "searchable": true, + "sortable": true + } + }, + "updatedBy": { + "edit": { + "label": "updatedBy", + "description": "", + "placeholder": "", + "visible": false, + "editable": true, + "mainField": "firstname" + }, + "list": { + "label": "updatedBy", + "searchable": true, + "sortable": true + } + }, + "documentId": { + "edit": {}, + "list": { + "label": "documentId", + "searchable": true, + "sortable": true + } + } + }, + "layouts": { + "list": [ + "id", + "action", + "role", + "createdAt" + ], + "edit": [ + [ + { + "name": "action", + "size": 6 + }, + { + "name": "role", + "size": 6 + } + ] + ] + }, + "uid": "plugin::users-permissions.permission" + }, + "type": "object", + "environment": null, + "tag": null +} \ No newline at end of file diff --git a/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##plugin##users-permissions.role.json b/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##plugin##users-permissions.role.json new file mode 100644 index 00000000..a65b545c --- /dev/null +++ b/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##plugin##users-permissions.role.json @@ -0,0 +1,202 @@ +{ + "key": "plugin_content_manager_configuration_content_types::plugin::users-permissions.role", + "value": { + "settings": { + "bulkable": true, + "filterable": true, + "searchable": true, + "pageSize": 10, + "mainField": "name", + "defaultSortBy": "name", + "defaultSortOrder": "ASC" + }, + "metadatas": { + "id": { + "edit": {}, + "list": { + "label": "id", + "searchable": true, + "sortable": true + } + }, + "name": { + "edit": { + "label": "name", + "description": "", + "placeholder": "", + "visible": true, + "editable": true + }, + "list": { + "label": "name", + "searchable": true, + "sortable": true + } + }, + "description": { + "edit": { + "label": "description", + "description": "", + "placeholder": "", + "visible": true, + "editable": true + }, + "list": { + "label": "description", + "searchable": true, + "sortable": true + } + }, + "type": { + "edit": { + "label": "type", + "description": "", + "placeholder": "", + "visible": true, + "editable": true + }, + "list": { + "label": "type", + "searchable": true, + "sortable": true + } + }, + "permissions": { + "edit": { + "label": "permissions", + "description": "", + "placeholder": "", + "visible": true, + "editable": true, + "mainField": "action" + }, + "list": { + "label": "permissions", + "searchable": false, + "sortable": false + } + }, + "users": { + "edit": { + "label": "users", + "description": "", + "placeholder": "", + "visible": true, + "editable": true, + "mainField": "username" + }, + "list": { + "label": "users", + "searchable": false, + "sortable": false + } + }, + "createdAt": { + "edit": { + "label": "createdAt", + "description": "", + "placeholder": "", + "visible": false, + "editable": true + }, + "list": { + "label": "createdAt", + "searchable": true, + "sortable": true + } + }, + "updatedAt": { + "edit": { + "label": "updatedAt", + "description": "", + "placeholder": "", + "visible": false, + "editable": true + }, + "list": { + "label": "updatedAt", + "searchable": true, + "sortable": true + } + }, + "createdBy": { + "edit": { + "label": "createdBy", + "description": "", + "placeholder": "", + "visible": false, + "editable": true, + "mainField": "firstname" + }, + "list": { + "label": "createdBy", + "searchable": true, + "sortable": true + } + }, + "updatedBy": { + "edit": { + "label": "updatedBy", + "description": "", + "placeholder": "", + "visible": false, + "editable": true, + "mainField": "firstname" + }, + "list": { + "label": "updatedBy", + "searchable": true, + "sortable": true + } + }, + "documentId": { + "edit": {}, + "list": { + "label": "documentId", + "searchable": true, + "sortable": true + } + } + }, + "layouts": { + "list": [ + "id", + "name", + "description", + "type" + ], + "edit": [ + [ + { + "name": "name", + "size": 6 + }, + { + "name": "description", + "size": 6 + } + ], + [ + { + "name": "type", + "size": 6 + }, + { + "name": "permissions", + "size": 6 + } + ], + [ + { + "name": "users", + "size": 6 + } + ] + ] + }, + "uid": "plugin::users-permissions.role" + }, + "type": "object", + "environment": null, + "tag": null +} \ No newline at end of file diff --git a/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##plugin##users-permissions.user.json b/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##plugin##users-permissions.user.json new file mode 100644 index 00000000..40229670 --- /dev/null +++ b/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##plugin##users-permissions.user.json @@ -0,0 +1,916 @@ +{ + "key": "plugin_content_manager_configuration_content_types::plugin::users-permissions.user", + "value": { + "settings": { + "bulkable": true, + "filterable": true, + "searchable": true, + "pageSize": 10, + "mainField": "username", + "defaultSortBy": "username", + "defaultSortOrder": "ASC" + }, + "metadatas": { + "id": { + "edit": {}, + "list": { + "label": "id", + "searchable": true, + "sortable": true + } + }, + "username": { + "edit": { + "label": "username", + "description": "", + "placeholder": "", + "visible": true, + "editable": true + }, + "list": { + "label": "username", + "searchable": true, + "sortable": true + } + }, + "email": { + "edit": { + "label": "email", + "description": "", + "placeholder": "", + "visible": true, + "editable": true + }, + "list": { + "label": "email", + "searchable": true, + "sortable": true + } + }, + "provider": { + "edit": { + "label": "provider", + "description": "", + "placeholder": "", + "visible": false, + "editable": true + }, + "list": { + "label": "provider", + "searchable": true, + "sortable": true + } + }, + "password": { + "edit": { + "label": "password", + "description": "", + "placeholder": "", + "visible": true, + "editable": true + }, + "list": { + "label": "password", + "searchable": true, + "sortable": true + } + }, + "resetPasswordToken": { + "edit": { + "label": "resetPasswordToken", + "description": "", + "placeholder": "", + "visible": false, + "editable": true + }, + "list": { + "label": "resetPasswordToken", + "searchable": true, + "sortable": true + } + }, + "confirmationToken": { + "edit": { + "label": "confirmationToken", + "description": "", + "placeholder": "", + "visible": false, + "editable": true + }, + "list": { + "label": "confirmationToken", + "searchable": true, + "sortable": true + } + }, + "registrationToken": { + "edit": { + "label": "registrationToken", + "description": "", + "placeholder": "", + "visible": true, + "editable": true + }, + "list": { + "label": "registrationToken", + "searchable": true, + "sortable": true + } + }, + "confirmed": { + "edit": { + "label": "confirmed", + "description": "", + "placeholder": "", + "visible": true, + "editable": true + }, + "list": { + "label": "confirmed", + "searchable": true, + "sortable": true + } + }, + "blocked": { + "edit": { + "label": "blocked", + "description": "", + "placeholder": "", + "visible": true, + "editable": true + }, + "list": { + "label": "blocked", + "searchable": true, + "sortable": true + } + }, + "role": { + "edit": { + "label": "role", + "description": "", + "placeholder": "", + "visible": true, + "editable": true, + "mainField": "name" + }, + "list": { + "label": "role", + "searchable": true, + "sortable": true + } + }, + "avatar": { + "edit": { + "label": "avatar", + "description": "", + "placeholder": "", + "visible": true, + "editable": true + }, + "list": { + "label": "avatar", + "searchable": false, + "sortable": false + } + }, + "ongName": { + "edit": { + "label": "ongName", + "description": "", + "placeholder": "", + "visible": true, + "editable": true + }, + "list": { + "label": "ongName", + "searchable": true, + "sortable": true + } + }, + "ongIdentificationNumber": { + "edit": { + "label": "ongIdentificationNumber", + "description": "", + "placeholder": "", + "visible": true, + "editable": true + }, + "list": { + "label": "ongIdentificationNumber", + "searchable": true, + "sortable": true + } + }, + "county": { + "edit": { + "label": "county", + "description": "", + "placeholder": "", + "visible": true, + "editable": true + }, + "list": { + "label": "county", + "searchable": true, + "sortable": true + } + }, + "city": { + "edit": { + "label": "city", + "description": "", + "placeholder": "", + "visible": true, + "editable": true + }, + "list": { + "label": "city", + "searchable": true, + "sortable": true + } + }, + "phone": { + "edit": { + "label": "phone", + "description": "", + "placeholder": "", + "visible": true, + "editable": true + }, + "list": { + "label": "phone", + "searchable": true, + "sortable": true + } + }, + "website": { + "edit": { + "label": "website", + "description": "", + "placeholder": "", + "visible": true, + "editable": true + }, + "list": { + "label": "website", + "searchable": true, + "sortable": true + } + }, + "keywords": { + "edit": { + "label": "keywords", + "description": "", + "placeholder": "", + "visible": true, + "editable": true + }, + "list": { + "label": "keywords", + "searchable": true, + "sortable": true + } + }, + "logo": { + "edit": { + "label": "logo", + "description": "", + "placeholder": "", + "visible": true, + "editable": true + }, + "list": { + "label": "logo", + "searchable": false, + "sortable": false + } + }, + "description": { + "edit": { + "label": "description", + "description": "", + "placeholder": "", + "visible": true, + "editable": true + }, + "list": { + "label": "description", + "searchable": true, + "sortable": true + } + }, + "reports": { + "edit": { + "label": "reports", + "description": "", + "placeholder": "", + "visible": true, + "editable": true, + "mainField": "documentId" + }, + "list": { + "label": "reports", + "searchable": false, + "sortable": false + } + }, + "contactFirstName": { + "edit": { + "label": "contactFirstName", + "description": "", + "placeholder": "", + "visible": true, + "editable": true + }, + "list": { + "label": "contactFirstName", + "searchable": true, + "sortable": true + } + }, + "contactLastName": { + "edit": { + "label": "contactLastName", + "description": "", + "placeholder": "", + "visible": true, + "editable": true + }, + "list": { + "label": "contactLastName", + "searchable": true, + "sortable": true + } + }, + "contactEmail": { + "edit": { + "label": "contactEmail", + "description": "", + "placeholder": "", + "visible": true, + "editable": true + }, + "list": { + "label": "contactEmail", + "searchable": true, + "sortable": true + } + }, + "contactPhone": { + "edit": { + "label": "contactPhone", + "description": "", + "placeholder": "", + "visible": true, + "editable": true + }, + "list": { + "label": "contactPhone", + "searchable": true, + "sortable": true + } + }, + "accountFacebook": { + "edit": { + "label": "accountFacebook", + "description": "", + "placeholder": "", + "visible": true, + "editable": true + }, + "list": { + "label": "accountFacebook", + "searchable": true, + "sortable": true + } + }, + "accountTwitter": { + "edit": { + "label": "accountTwitter", + "description": "", + "placeholder": "", + "visible": true, + "editable": true + }, + "list": { + "label": "accountTwitter", + "searchable": true, + "sortable": true + } + }, + "accountTiktok": { + "edit": { + "label": "accountTiktok", + "description": "", + "placeholder": "", + "visible": true, + "editable": true + }, + "list": { + "label": "accountTiktok", + "searchable": true, + "sortable": true + } + }, + "accountInstagram": { + "edit": { + "label": "accountInstagram", + "description": "", + "placeholder": "", + "visible": true, + "editable": true + }, + "list": { + "label": "accountInstagram", + "searchable": true, + "sortable": true + } + }, + "accountLinkedin": { + "edit": { + "label": "accountLinkedin", + "description": "", + "placeholder": "", + "visible": true, + "editable": true + }, + "list": { + "label": "accountLinkedin", + "searchable": true, + "sortable": true + } + }, + "domains": { + "edit": { + "label": "domains", + "description": "", + "placeholder": "", + "visible": true, + "editable": true, + "mainField": "name" + }, + "list": { + "label": "domains", + "searchable": false, + "sortable": false + } + }, + "programs": { + "edit": { + "label": "programs", + "description": "", + "placeholder": "", + "visible": true, + "editable": true, + "mainField": "name" + }, + "list": { + "label": "programs", + "searchable": false, + "sortable": false + } + }, + "dimensions": { + "edit": { + "label": "dimensions", + "description": "", + "placeholder": "", + "visible": true, + "editable": true, + "mainField": "name" + }, + "list": { + "label": "dimensions", + "searchable": false, + "sortable": false + } + }, + "bio": { + "edit": { + "label": "bio", + "description": "", + "placeholder": "", + "visible": true, + "editable": true + }, + "list": { + "label": "bio", + "searchable": true, + "sortable": true + } + }, + "expertise": { + "edit": { + "label": "expertise", + "description": "", + "placeholder": "", + "visible": true, + "editable": true + }, + "list": { + "label": "expertise", + "searchable": true, + "sortable": true + } + }, + "firstName": { + "edit": { + "label": "firstName", + "description": "", + "placeholder": "", + "visible": true, + "editable": true + }, + "list": { + "label": "firstName", + "searchable": true, + "sortable": true + } + }, + "lastName": { + "edit": { + "label": "lastName", + "description": "", + "placeholder": "", + "visible": true, + "editable": true + }, + "list": { + "label": "lastName", + "searchable": true, + "sortable": true + } + }, + "program": { + "edit": { + "label": "program", + "description": "", + "placeholder": "", + "visible": true, + "editable": true, + "mainField": "name" + }, + "list": { + "label": "program", + "searchable": true, + "sortable": true + } + }, + "available": { + "edit": { + "label": "available", + "description": "", + "placeholder": "", + "visible": true, + "editable": true + }, + "list": { + "label": "available", + "searchable": true, + "sortable": true + } + }, + "mentorActivities": { + "edit": { + "label": "mentorActivities", + "description": "", + "placeholder": "", + "visible": true, + "editable": true, + "mainField": "documentId" + }, + "list": { + "label": "mentorActivities", + "searchable": false, + "sortable": false + } + }, + "userActivities": { + "edit": { + "label": "userActivities", + "description": "", + "placeholder": "", + "visible": true, + "editable": true, + "mainField": "documentId" + }, + "list": { + "label": "userActivities", + "searchable": false, + "sortable": false + } + }, + "mentorSessions": { + "edit": { + "label": "mentorSessions", + "description": "", + "placeholder": "", + "visible": true, + "editable": true, + "mainField": "documentId" + }, + "list": { + "label": "mentorSessions", + "searchable": false, + "sortable": false + } + }, + "userSessions": { + "edit": { + "label": "userSessions", + "description": "", + "placeholder": "", + "visible": true, + "editable": true, + "mainField": "documentId" + }, + "list": { + "label": "userSessions", + "searchable": false, + "sortable": false + } + }, + "createdAt": { + "edit": { + "label": "createdAt", + "description": "", + "placeholder": "", + "visible": false, + "editable": true + }, + "list": { + "label": "createdAt", + "searchable": true, + "sortable": true + } + }, + "updatedAt": { + "edit": { + "label": "updatedAt", + "description": "", + "placeholder": "", + "visible": false, + "editable": true + }, + "list": { + "label": "updatedAt", + "searchable": true, + "sortable": true + } + }, + "createdBy": { + "edit": { + "label": "createdBy", + "description": "", + "placeholder": "", + "visible": false, + "editable": true, + "mainField": "firstname" + }, + "list": { + "label": "createdBy", + "searchable": true, + "sortable": true + } + }, + "updatedBy": { + "edit": { + "label": "updatedBy", + "description": "", + "placeholder": "", + "visible": false, + "editable": true, + "mainField": "firstname" + }, + "list": { + "label": "updatedBy", + "searchable": true, + "sortable": true + } + }, + "documentId": { + "edit": {}, + "list": { + "label": "documentId", + "searchable": true, + "sortable": true + } + } + }, + "layouts": { + "list": [ + "id", + "username", + "email", + "registrationToken" + ], + "edit": [ + [ + { + "name": "username", + "size": 6 + }, + { + "name": "email", + "size": 6 + } + ], + [ + { + "name": "password", + "size": 6 + }, + { + "name": "registrationToken", + "size": 6 + } + ], + [ + { + "name": "confirmed", + "size": 4 + }, + { + "name": "blocked", + "size": 4 + } + ], + [ + { + "name": "role", + "size": 6 + }, + { + "name": "avatar", + "size": 6 + } + ], + [ + { + "name": "ongName", + "size": 6 + }, + { + "name": "ongIdentificationNumber", + "size": 6 + } + ], + [ + { + "name": "county", + "size": 6 + }, + { + "name": "city", + "size": 6 + } + ], + [ + { + "name": "phone", + "size": 6 + }, + { + "name": "website", + "size": 6 + } + ], + [ + { + "name": "keywords", + "size": 6 + }, + { + "name": "logo", + "size": 6 + } + ], + [ + { + "name": "description", + "size": 6 + }, + { + "name": "reports", + "size": 6 + } + ], + [ + { + "name": "contactFirstName", + "size": 6 + }, + { + "name": "contactLastName", + "size": 6 + } + ], + [ + { + "name": "contactEmail", + "size": 6 + }, + { + "name": "contactPhone", + "size": 6 + } + ], + [ + { + "name": "accountFacebook", + "size": 6 + }, + { + "name": "accountTwitter", + "size": 6 + } + ], + [ + { + "name": "accountTiktok", + "size": 6 + }, + { + "name": "accountInstagram", + "size": 6 + } + ], + [ + { + "name": "accountLinkedin", + "size": 6 + }, + { + "name": "domains", + "size": 6 + } + ], + [ + { + "name": "programs", + "size": 6 + }, + { + "name": "dimensions", + "size": 6 + } + ], + [ + { + "name": "bio", + "size": 6 + }, + { + "name": "expertise", + "size": 6 + } + ], + [ + { + "name": "firstName", + "size": 6 + }, + { + "name": "lastName", + "size": 6 + } + ], + [ + { + "name": "program", + "size": 6 + }, + { + "name": "available", + "size": 4 + } + ], + [ + { + "name": "mentorActivities", + "size": 6 + }, + { + "name": "userActivities", + "size": 6 + } + ], + [ + { + "name": "mentorSessions", + "size": 6 + }, + { + "name": "userSessions", + "size": 6 + } + ] + ] + }, + "uid": "plugin::users-permissions.user" + }, + "type": "object", + "environment": null, + "tag": null +} \ No newline at end of file diff --git a/server2/config/sync/core-store.plugin_i18n_default_locale.json b/server2/config/sync/core-store.plugin_i18n_default_locale.json new file mode 100644 index 00000000..51c490e5 --- /dev/null +++ b/server2/config/sync/core-store.plugin_i18n_default_locale.json @@ -0,0 +1,7 @@ +{ + "key": "plugin_i18n_default_locale", + "value": "ro", + "type": "string", + "environment": null, + "tag": null +} \ No newline at end of file diff --git a/server2/config/sync/core-store.plugin_upload_settings.json b/server2/config/sync/core-store.plugin_upload_settings.json new file mode 100644 index 00000000..3285174d --- /dev/null +++ b/server2/config/sync/core-store.plugin_upload_settings.json @@ -0,0 +1,11 @@ +{ + "key": "plugin_upload_settings", + "value": { + "sizeOptimization": true, + "responsiveDimensions": true, + "autoOrientation": false + }, + "type": "object", + "environment": null, + "tag": null +} \ No newline at end of file diff --git a/server2/config/sync/core-store.plugin_upload_view_configuration.json b/server2/config/sync/core-store.plugin_upload_view_configuration.json new file mode 100644 index 00000000..9637f39c --- /dev/null +++ b/server2/config/sync/core-store.plugin_upload_view_configuration.json @@ -0,0 +1,10 @@ +{ + "key": "plugin_upload_view_configuration", + "value": { + "pageSize": 10, + "sort": "createdAt:DESC" + }, + "type": "object", + "environment": null, + "tag": null +} \ No newline at end of file diff --git a/server2/config/sync/core-store.plugin_users-permissions_advanced.json b/server2/config/sync/core-store.plugin_users-permissions_advanced.json new file mode 100644 index 00000000..74368cd1 --- /dev/null +++ b/server2/config/sync/core-store.plugin_users-permissions_advanced.json @@ -0,0 +1,14 @@ +{ + "key": "plugin_users-permissions_advanced", + "value": { + "unique_email": true, + "allow_register": true, + "email_confirmation": false, + "email_reset_password": null, + "email_confirmation_redirection": null, + "default_role": "authenticated" + }, + "type": "object", + "environment": null, + "tag": null +} \ No newline at end of file diff --git a/server2/config/sync/core-store.plugin_users-permissions_email.json b/server2/config/sync/core-store.plugin_users-permissions_email.json new file mode 100644 index 00000000..a8ebbe2d --- /dev/null +++ b/server2/config/sync/core-store.plugin_users-permissions_email.json @@ -0,0 +1,34 @@ +{ + "key": "plugin_users-permissions_email", + "value": { + "reset_password": { + "display": "Email.template.reset_password", + "icon": "sync", + "options": { + "from": { + "name": "Administration Panel", + "email": "no-reply@strapi.io" + }, + "response_email": "", + "object": "Reset password", + "message": "

We heard that you lost your password. Sorry about that!

\n\n

But don’t worry! You can use the following link to reset your password:

\n

<%= URL %>?code=<%= TOKEN %>

\n\n

Thanks.

" + } + }, + "email_confirmation": { + "display": "Email.template.email_confirmation", + "icon": "check-square", + "options": { + "from": { + "name": "Administration Panel", + "email": "no-reply@strapi.io" + }, + "response_email": "", + "object": "Account confirmation", + "message": "

Thank you for registering!

\n\n

You have to confirm your email address. Please click on the link below.

\n\n

<%= URL %>?confirmation=<%= CODE %>

\n\n

Thanks.

" + } + } + }, + "type": "object", + "environment": null, + "tag": null +} \ No newline at end of file diff --git a/server2/config/sync/i18n-locale.en.json b/server2/config/sync/i18n-locale.en.json new file mode 100644 index 00000000..45c8c2bf --- /dev/null +++ b/server2/config/sync/i18n-locale.en.json @@ -0,0 +1,6 @@ +{ + "documentId": "v1wbse2c9oocx3k424xbhpta", + "name": "English (en)", + "code": "en", + "locale": null +} \ No newline at end of file diff --git a/server2/config/sync/i18n-locale.ro.json b/server2/config/sync/i18n-locale.ro.json new file mode 100644 index 00000000..25b845f0 --- /dev/null +++ b/server2/config/sync/i18n-locale.ro.json @@ -0,0 +1,6 @@ +{ + "documentId": "z1679nkb0vir5g7egl3rmflr", + "name": "Romanian (ro)", + "code": "ro", + "locale": null +} \ No newline at end of file diff --git a/server2/config/sync/user-role.authenticated.json b/server2/config/sync/user-role.authenticated.json index 53a0e1b2..e1362948 100644 --- a/server2/config/sync/user-role.authenticated.json +++ b/server2/config/sync/user-role.authenticated.json @@ -1,61 +1,19 @@ { + "documentId": "bjkg5hlm71yh9o7g21nbtly2", "name": "Authenticated", "description": "Default role given to authenticated user.", "type": "authenticated", + "locale": null, "permissions": [ { - "action": "api::dimension.dimension.find" + "documentId": "dbzy771juljvgqe2u2cnqa2z", + "action": "plugin::users-permissions.auth.changePassword", + "locale": null }, { - "action": "api::evaluation.evaluation.create" - }, - { - "action": "api::evaluation.evaluation.find" - }, - { - "action": "api::evaluation.evaluation.findOne" - }, - { - "action": "api::evaluation.evaluation.update" - }, - { - "action": "api::matrix.matrix.find" - }, - { - "action": "api::mentorship-request.mentorship-request.create" - }, - { - "action": "api::program.program.find" - }, - { - "action": "api::report.report.create" - }, - { - "action": "api::report.report.find" - }, - { - "action": "api::report.report.findOne" - }, - { - "action": "api::report.report.update" - }, - { - "action": "plugin::upload.content-api.upload" - }, - { - "action": "plugin::users-permissions.auth.changePassword" - }, - { - "action": "plugin::users-permissions.role.find" - }, - { - "action": "plugin::users-permissions.user.find" - }, - { - "action": "plugin::users-permissions.user.findOne" - }, - { - "action": "plugin::users-permissions.user.me" + "documentId": "juov72di8bo23lembyjhh4oz", + "action": "plugin::users-permissions.user.me", + "locale": null } ] } \ No newline at end of file diff --git a/server2/config/sync/user-role.fdsc.json b/server2/config/sync/user-role.fdsc.json deleted file mode 100644 index 1e3a56e5..00000000 --- a/server2/config/sync/user-role.fdsc.json +++ /dev/null @@ -1,70 +0,0 @@ -{ - "name": "FDSC", - "description": "FDSC", - "type": "fdsc", - "permissions": [ - { - "action": "api::activity-type.activity-type.find" - }, - { - "action": "api::activity.activity.find" - }, - { - "action": "api::dimension.dimension.find" - }, - { - "action": "api::dimension.dimension.findOne" - }, - { - "action": "api::domain.domain.find" - }, - { - "action": "api::evaluation.evaluation.find" - }, - { - "action": "api::evaluation.evaluation.findOne" - }, - { - "action": "api::evaluation.evaluation.update" - }, - { - "action": "api::matrix.matrix.find" - }, - { - "action": "api::program.program.create" - }, - { - "action": "api::program.program.find" - }, - { - "action": "api::program.program.findOne" - }, - { - "action": "api::program.program.update" - }, - { - "action": "api::report.report.find" - }, - { - "action": "api::report.report.findOne" - }, - { - "action": "api::report.report.update" - }, - { - "action": "plugin::users-permissions.role.find" - }, - { - "action": "plugin::users-permissions.user.create" - }, - { - "action": "plugin::users-permissions.user.find" - }, - { - "action": "plugin::users-permissions.user.findOne" - }, - { - "action": "plugin::users-permissions.user.me" - } - ] -} \ No newline at end of file diff --git a/server2/config/sync/user-role.mentor.json b/server2/config/sync/user-role.mentor.json deleted file mode 100644 index befb3d9c..00000000 --- a/server2/config/sync/user-role.mentor.json +++ /dev/null @@ -1,46 +0,0 @@ -{ - "name": "Mentor", - "description": "Persoana program", - "type": "mentor", - "permissions": [ - { - "action": "api::activity-type.activity-type.find" - }, - { - "action": "api::activity.activity.create" - }, - { - "action": "api::activity.activity.find" - }, - { - "action": "api::dimension.dimension.find" - }, - { - "action": "api::domain.domain.find" - }, - { - "action": "api::evaluation.evaluation.find" - }, - { - "action": "api::matrix.matrix.find" - }, - { - "action": "api::program.program.find" - }, - { - "action": "api::report.report.find" - }, - { - "action": "plugin::users-permissions.role.find" - }, - { - "action": "plugin::users-permissions.user.find" - }, - { - "action": "plugin::users-permissions.user.me" - }, - { - "action": "plugin::users-permissions.user.update" - } - ] -} \ No newline at end of file diff --git a/server2/config/sync/user-role.public.json b/server2/config/sync/user-role.public.json index be26d3af..46907720 100644 --- a/server2/config/sync/user-role.public.json +++ b/server2/config/sync/user-role.public.json @@ -1,55 +1,44 @@ { + "documentId": "sklh7vsft5th7qsy2f72f9u2", "name": "Public", "description": "Default role given to unauthenticated user.", "type": "public", + "locale": null, "permissions": [ { - "action": "api::dimension.dimension.find" + "documentId": "lf4423150nh4ws7az0vb76oh", + "action": "plugin::users-permissions.auth.callback", + "locale": null }, { - "action": "api::domain.domain.find" + "documentId": "wu67gp1lrk8dy5fidwbu0wp8", + "action": "plugin::users-permissions.auth.connect", + "locale": null }, { - "action": "api::evaluation.evaluation.find" + "documentId": "n1ljfa0qisk69de3grfxuzdr", + "action": "plugin::users-permissions.auth.emailConfirmation", + "locale": null }, { - "action": "api::evaluation.evaluation.findOne" + "documentId": "ky7qzuf2bwox3mzyfc11fnn5", + "action": "plugin::users-permissions.auth.forgotPassword", + "locale": null }, { - "action": "api::evaluation.evaluation.update" + "documentId": "t3uv0d0ddtwbyeivx9q720is", + "action": "plugin::users-permissions.auth.register", + "locale": null }, { - "action": "api::matrix.matrix.find" + "documentId": "jdaetgq4t1e5s86ipfd2xrhm", + "action": "plugin::users-permissions.auth.resetPassword", + "locale": null }, { - "action": "plugin::users-permissions.auth.callback" - }, - { - "action": "plugin::users-permissions.auth.changePassword" - }, - { - "action": "plugin::users-permissions.auth.connect" - }, - { - "action": "plugin::users-permissions.auth.emailConfirmation" - }, - { - "action": "plugin::users-permissions.auth.findRegistrationInfo" - }, - { - "action": "plugin::users-permissions.auth.forgotPassword" - }, - { - "action": "plugin::users-permissions.auth.register" - }, - { - "action": "plugin::users-permissions.auth.registerWithConfirmation" - }, - { - "action": "plugin::users-permissions.auth.resetPassword" - }, - { - "action": "plugin::users-permissions.auth.sendEmailConfirmation" + "documentId": "aqgvp7pxvy7yqp0vzlna5psn", + "action": "plugin::users-permissions.auth.sendEmailConfirmation", + "locale": null } ] } \ No newline at end of file From 6380f14453f0c4c167c3d745b4e4417a546287b1 Mon Sep 17 00:00:00 2001 From: Ion Dormenco Date: Thu, 11 Sep 2025 11:30:54 +0300 Subject: [PATCH 05/61] Update admin-role.strapi-author.json --- .../config/sync/admin-role.strapi-author.json | 453 +----------------- 1 file changed, 21 insertions(+), 432 deletions(-) diff --git a/server2/config/sync/admin-role.strapi-author.json b/server2/config/sync/admin-role.strapi-author.json index a7351439..f0eceafc 100644 --- a/server2/config/sync/admin-role.strapi-author.json +++ b/server2/config/sync/admin-role.strapi-author.json @@ -6,282 +6,7 @@ "locale": null, "permissions": [ { - "documentId": "m69euldc7ovsxtbfzdlgsgn9", - "action": "plugin::content-manager.explorer.create", - "actionParameters": {}, - "subject": "api::activity-type.activity-type", - "properties": { - "fields": [ - "name" - ] - }, - "conditions": [ - "admin::is-creator" - ], - "locale": null - }, - { - "documentId": "dwcqjwd0cwywwt6nil8p1ack", - "action": "plugin::content-manager.explorer.delete", - "actionParameters": {}, - "subject": "api::activity-type.activity-type", - "properties": {}, - "conditions": [ - "admin::is-creator" - ], - "locale": null - }, - { - "documentId": "zo55rublmimubr6v1x0r7qng", - "action": "plugin::content-manager.explorer.read", - "actionParameters": {}, - "subject": "api::activity-type.activity-type", - "properties": { - "fields": [ - "name" - ] - }, - "conditions": [ - "admin::is-creator" - ], - "locale": null - }, - { - "documentId": "vjhvl834yr2s48gzjnci9wyc", - "action": "plugin::content-manager.explorer.update", - "actionParameters": {}, - "subject": "api::activity-type.activity-type", - "properties": { - "fields": [ - "name" - ] - }, - "conditions": [ - "admin::is-creator" - ], - "locale": null - }, - { - "documentId": "sdfl2cr5zfi7tbui0rwdozjd", - "action": "plugin::content-manager.explorer.create", - "actionParameters": {}, - "subject": "api::activity.activity", - "properties": { - "fields": [ - "type", - "dimension", - "startDate", - "notes", - "duration", - "mentor", - "user" - ] - }, - "conditions": [ - "admin::is-creator" - ], - "locale": null - }, - { - "documentId": "i7qc31dvytyutfcrfh814o8h", - "action": "plugin::content-manager.explorer.delete", - "actionParameters": {}, - "subject": "api::activity.activity", - "properties": {}, - "conditions": [ - "admin::is-creator" - ], - "locale": null - }, - { - "documentId": "ueqh863d2jofoq32vhd8s4fb", - "action": "plugin::content-manager.explorer.read", - "actionParameters": {}, - "subject": "api::activity.activity", - "properties": { - "fields": [ - "type", - "dimension", - "startDate", - "notes", - "duration", - "mentor", - "user" - ] - }, - "conditions": [ - "admin::is-creator" - ], - "locale": null - }, - { - "documentId": "eioq5fqddee6pskg86u29q3v", - "action": "plugin::content-manager.explorer.update", - "actionParameters": {}, - "subject": "api::activity.activity", - "properties": { - "fields": [ - "type", - "dimension", - "startDate", - "notes", - "duration", - "mentor", - "user" - ] - }, - "conditions": [ - "admin::is-creator" - ], - "locale": null - }, - { - "documentId": "i7s51nm9kxevtmtkzddsb1lv", - "action": "plugin::content-manager.explorer.create", - "actionParameters": {}, - "subject": "api::dimension.dimension", - "properties": { - "fields": [ - "name", - "link", - "quiz.question", - "quiz.option_1", - "quiz.option_2", - "quiz.option_3", - "quiz.option_4", - "quiz.option_5", - "quiz.tag", - "mentors", - "activities" - ] - }, - "conditions": [ - "admin::is-creator" - ], - "locale": null - }, - { - "documentId": "zjy6pcml2f00fyoanc5rt657", - "action": "plugin::content-manager.explorer.delete", - "actionParameters": {}, - "subject": "api::dimension.dimension", - "properties": {}, - "conditions": [ - "admin::is-creator" - ], - "locale": null - }, - { - "documentId": "y241rc3zr4jbfcubk4bspxco", - "action": "plugin::content-manager.explorer.read", - "actionParameters": {}, - "subject": "api::dimension.dimension", - "properties": { - "fields": [ - "name", - "link", - "quiz.question", - "quiz.option_1", - "quiz.option_2", - "quiz.option_3", - "quiz.option_4", - "quiz.option_5", - "quiz.tag", - "mentors", - "activities" - ] - }, - "conditions": [ - "admin::is-creator" - ], - "locale": null - }, - { - "documentId": "g9c8dg910uhpbobx8v3yg5t9", - "action": "plugin::content-manager.explorer.update", - "actionParameters": {}, - "subject": "api::dimension.dimension", - "properties": { - "fields": [ - "name", - "link", - "quiz.question", - "quiz.option_1", - "quiz.option_2", - "quiz.option_3", - "quiz.option_4", - "quiz.option_5", - "quiz.tag", - "mentors", - "activities" - ] - }, - "conditions": [ - "admin::is-creator" - ], - "locale": null - }, - { - "documentId": "zi78bn3lpv3kdk0c1fbbm62h", - "action": "plugin::content-manager.explorer.create", - "actionParameters": {}, - "subject": "api::domain.domain", - "properties": { - "fields": [ - "name", - "mentors" - ] - }, - "conditions": [ - "admin::is-creator" - ], - "locale": null - }, - { - "documentId": "buq0rltxkuoybn4t72athfc0", - "action": "plugin::content-manager.explorer.delete", - "actionParameters": {}, - "subject": "api::domain.domain", - "properties": {}, - "conditions": [ - "admin::is-creator" - ], - "locale": null - }, - { - "documentId": "x22eibu4b7e3dysd8ll7qrdm", - "action": "plugin::content-manager.explorer.read", - "actionParameters": {}, - "subject": "api::domain.domain", - "properties": { - "fields": [ - "name", - "mentors" - ] - }, - "conditions": [ - "admin::is-creator" - ], - "locale": null - }, - { - "documentId": "s38xyb9sqqr2c4fawjibx29t", - "action": "plugin::content-manager.explorer.update", - "actionParameters": {}, - "subject": "api::domain.domain", - "properties": { - "fields": [ - "name", - "mentors" - ] - }, - "conditions": [ - "admin::is-creator" - ], - "locale": null - }, - { - "documentId": "tbl4q185jug3rfqt7luq84s0", + "documentId": "f4erl1iqzzabcca8mcppl5il", "action": "plugin::content-manager.explorer.create", "actionParameters": {}, "subject": "api::evaluation.evaluation", @@ -299,7 +24,7 @@ "locale": null }, { - "documentId": "l7191r71a46yhtzqlvkiri5l", + "documentId": "jw25z5cwbkfrxwwo35r32jrc", "action": "plugin::content-manager.explorer.delete", "actionParameters": {}, "subject": "api::evaluation.evaluation", @@ -310,7 +35,7 @@ "locale": null }, { - "documentId": "vzwrow5d6hq5pxrbv0rebkbg", + "documentId": "p1s7wt2w2pnc0zg92ztmtjel", "action": "plugin::content-manager.explorer.read", "actionParameters": {}, "subject": "api::evaluation.evaluation", @@ -328,7 +53,7 @@ "locale": null }, { - "documentId": "b0vjdvxm8cqn9bb1x4gxy77r", + "documentId": "s6754sg1ryqsa0iav8n5ri6f", "action": "plugin::content-manager.explorer.update", "actionParameters": {}, "subject": "api::evaluation.evaluation", @@ -346,14 +71,12 @@ "locale": null }, { - "documentId": "ktxbxw8lywfhz8gjdusdm5xv", + "documentId": "rb19b6den87z5u63mi7paplf", "action": "plugin::content-manager.explorer.create", "actionParameters": {}, "subject": "api::matrix.matrix", "properties": { - "fields": [ - "dimensions" - ] + "fields": [] }, "conditions": [ "admin::is-creator" @@ -361,7 +84,7 @@ "locale": null }, { - "documentId": "n8oh42pxc6vpmlvrgej3ta3e", + "documentId": "xnipnpqmnq4sv3a6liphahiw", "action": "plugin::content-manager.explorer.delete", "actionParameters": {}, "subject": "api::matrix.matrix", @@ -372,14 +95,12 @@ "locale": null }, { - "documentId": "n9wmj9wz9fthefgdwyevoz2d", + "documentId": "eultknn1ft3tfsyj6dwnv4g0", "action": "plugin::content-manager.explorer.read", "actionParameters": {}, "subject": "api::matrix.matrix", "properties": { - "fields": [ - "dimensions" - ] + "fields": [] }, "conditions": [ "admin::is-creator" @@ -387,57 +108,12 @@ "locale": null }, { - "documentId": "g56nkfn3g8z95c0z9nc10pq4", + "documentId": "b4vbdvn8sqvi7lrvir733fpr", "action": "plugin::content-manager.explorer.update", "actionParameters": {}, "subject": "api::matrix.matrix", "properties": { - "fields": [ - "dimensions" - ] - }, - "conditions": [ - "admin::is-creator" - ], - "locale": null - }, - { - "documentId": "a5n6rpqejp9tbajvbpdss615", - "action": "plugin::content-manager.explorer.create", - "actionParameters": {}, - "subject": "api::mentorship-request.mentorship-request", - "properties": { - "fields": [ - "mentor", - "user" - ] - }, - "conditions": [ - "admin::is-creator" - ], - "locale": null - }, - { - "documentId": "v4nlbjpax4e1tosi4gilhwcw", - "action": "plugin::content-manager.explorer.delete", - "actionParameters": {}, - "subject": "api::mentorship-request.mentorship-request", - "properties": {}, - "conditions": [ - "admin::is-creator" - ], - "locale": null - }, - { - "documentId": "ur5ev918cttzot2cofd37i2j", - "action": "plugin::content-manager.explorer.read", - "actionParameters": {}, - "subject": "api::mentorship-request.mentorship-request", - "properties": { - "fields": [ - "mentor", - "user" - ] + "fields": [] }, "conditions": [ "admin::is-creator" @@ -445,94 +121,7 @@ "locale": null }, { - "documentId": "vxekqhpkl6r63ko1qi0ebz1s", - "action": "plugin::content-manager.explorer.update", - "actionParameters": {}, - "subject": "api::mentorship-request.mentorship-request", - "properties": { - "fields": [ - "mentor", - "user" - ] - }, - "conditions": [ - "admin::is-creator" - ], - "locale": null - }, - { - "documentId": "tooigu4jq167emzz8em7hwzx", - "action": "plugin::content-manager.explorer.create", - "actionParameters": {}, - "subject": "api::program.program", - "properties": { - "fields": [ - "name", - "startDate", - "endDate", - "sponsorName", - "mentors", - "users" - ] - }, - "conditions": [ - "admin::is-creator" - ], - "locale": null - }, - { - "documentId": "zrjjar6m6ewovp47de0syv5m", - "action": "plugin::content-manager.explorer.delete", - "actionParameters": {}, - "subject": "api::program.program", - "properties": {}, - "conditions": [ - "admin::is-creator" - ], - "locale": null - }, - { - "documentId": "fs5s1sfq9n8o2445tfhs82ij", - "action": "plugin::content-manager.explorer.read", - "actionParameters": {}, - "subject": "api::program.program", - "properties": { - "fields": [ - "name", - "startDate", - "endDate", - "sponsorName", - "mentors", - "users" - ] - }, - "conditions": [ - "admin::is-creator" - ], - "locale": null - }, - { - "documentId": "ctvdqlaptqozr9u9sgw6xo9z", - "action": "plugin::content-manager.explorer.update", - "actionParameters": {}, - "subject": "api::program.program", - "properties": { - "fields": [ - "name", - "startDate", - "endDate", - "sponsorName", - "mentors", - "users" - ] - }, - "conditions": [ - "admin::is-creator" - ], - "locale": null - }, - { - "documentId": "qdai3t0618e3eoykd07inrfy", + "documentId": "q4gd73u9bssn5722s67prvcx", "action": "plugin::content-manager.explorer.create", "actionParameters": {}, "subject": "api::report.report", @@ -550,7 +139,7 @@ "locale": null }, { - "documentId": "q4gd73u9bssn5722s67prvcx", + "documentId": "qdai3t0618e3eoykd07inrfy", "action": "plugin::content-manager.explorer.delete", "actionParameters": {}, "subject": "api::report.report", @@ -561,7 +150,7 @@ "locale": null }, { - "documentId": "b4vbdvn8sqvi7lrvir733fpr", + "documentId": "ctvdqlaptqozr9u9sgw6xo9z", "action": "plugin::content-manager.explorer.read", "actionParameters": {}, "subject": "api::report.report", @@ -579,7 +168,7 @@ "locale": null }, { - "documentId": "eultknn1ft3tfsyj6dwnv4g0", + "documentId": "fs5s1sfq9n8o2445tfhs82ij", "action": "plugin::content-manager.explorer.update", "actionParameters": {}, "subject": "api::report.report", @@ -597,7 +186,7 @@ "locale": null }, { - "documentId": "xnipnpqmnq4sv3a6liphahiw", + "documentId": "zrjjar6m6ewovp47de0syv5m", "action": "plugin::upload.assets.copy-link", "actionParameters": {}, "subject": null, @@ -606,7 +195,7 @@ "locale": null }, { - "documentId": "rb19b6den87z5u63mi7paplf", + "documentId": "tooigu4jq167emzz8em7hwzx", "action": "plugin::upload.assets.create", "actionParameters": {}, "subject": null, @@ -615,7 +204,7 @@ "locale": null }, { - "documentId": "s6754sg1ryqsa0iav8n5ri6f", + "documentId": "vxekqhpkl6r63ko1qi0ebz1s", "action": "plugin::upload.assets.download", "actionParameters": {}, "subject": null, @@ -624,7 +213,7 @@ "locale": null }, { - "documentId": "p1s7wt2w2pnc0zg92ztmtjel", + "documentId": "ur5ev918cttzot2cofd37i2j", "action": "plugin::upload.assets.update", "actionParameters": {}, "subject": null, @@ -635,7 +224,7 @@ "locale": null }, { - "documentId": "jw25z5cwbkfrxwwo35r32jrc", + "documentId": "a5n6rpqejp9tbajvbpdss615", "action": "plugin::upload.configure-view", "actionParameters": {}, "subject": null, @@ -644,7 +233,7 @@ "locale": null }, { - "documentId": "f4erl1iqzzabcca8mcppl5il", + "documentId": "n9wmj9wz9fthefgdwyevoz2d", "action": "plugin::upload.read", "actionParameters": {}, "subject": null, From 4412d6eb24561c82c360754228bc749d51af74f8 Mon Sep 17 00:00:00 2001 From: Ion Dormenco Date: Thu, 11 Sep 2025 11:42:52 +0300 Subject: [PATCH 06/61] Update admin-role.strapi-editor.json --- .../config/sync/admin-role.strapi-editor.json | 450 +----------------- 1 file changed, 3 insertions(+), 447 deletions(-) diff --git a/server2/config/sync/admin-role.strapi-editor.json b/server2/config/sync/admin-role.strapi-editor.json index 13f1e071..d4c4e089 100644 --- a/server2/config/sync/admin-role.strapi-editor.json +++ b/server2/config/sync/admin-role.strapi-editor.json @@ -5,285 +5,6 @@ "description": "Editors can manage and publish contents including those of other users.", "locale": null, "permissions": [ - { - "documentId": "li3swh5esyzg1q80m86zjexk", - "action": "plugin::content-manager.explorer.create", - "actionParameters": {}, - "subject": "api::activity-type.activity-type", - "properties": { - "fields": [ - "name" - ] - }, - "conditions": [], - "locale": null - }, - { - "documentId": "crjivln4kibofuq2f4zu4ve0", - "action": "plugin::content-manager.explorer.delete", - "actionParameters": {}, - "subject": "api::activity-type.activity-type", - "properties": {}, - "conditions": [], - "locale": null - }, - { - "documentId": "xc65mcbwwal8fh5vdb8djdze", - "action": "plugin::content-manager.explorer.publish", - "actionParameters": {}, - "subject": "api::activity-type.activity-type", - "properties": {}, - "conditions": [], - "locale": null - }, - { - "documentId": "qh8iczih05ap6j7kadnebra7", - "action": "plugin::content-manager.explorer.read", - "actionParameters": {}, - "subject": "api::activity-type.activity-type", - "properties": { - "fields": [ - "name" - ] - }, - "conditions": [], - "locale": null - }, - { - "documentId": "ljt9x2x0oqifb4vn0e7qxn1h", - "action": "plugin::content-manager.explorer.update", - "actionParameters": {}, - "subject": "api::activity-type.activity-type", - "properties": { - "fields": [ - "name" - ] - }, - "conditions": [], - "locale": null - }, - { - "documentId": "zfxjxzyu61uz26j4ukl8wpmu", - "action": "plugin::content-manager.explorer.create", - "actionParameters": {}, - "subject": "api::activity.activity", - "properties": { - "fields": [ - "type", - "dimension", - "startDate", - "notes", - "duration", - "mentor", - "user" - ] - }, - "conditions": [], - "locale": null - }, - { - "documentId": "keb2eugvxcs8h6f2cfxx9p93", - "action": "plugin::content-manager.explorer.delete", - "actionParameters": {}, - "subject": "api::activity.activity", - "properties": {}, - "conditions": [], - "locale": null - }, - { - "documentId": "m9tzge0ftp311akdh6m66jp6", - "action": "plugin::content-manager.explorer.publish", - "actionParameters": {}, - "subject": "api::activity.activity", - "properties": {}, - "conditions": [], - "locale": null - }, - { - "documentId": "p8nx9i1xo3ywrz6k1kob06nj", - "action": "plugin::content-manager.explorer.read", - "actionParameters": {}, - "subject": "api::activity.activity", - "properties": { - "fields": [ - "type", - "dimension", - "startDate", - "notes", - "duration", - "mentor", - "user" - ] - }, - "conditions": [], - "locale": null - }, - { - "documentId": "fylncft9taylyfp3gzuz2got", - "action": "plugin::content-manager.explorer.update", - "actionParameters": {}, - "subject": "api::activity.activity", - "properties": { - "fields": [ - "type", - "dimension", - "startDate", - "notes", - "duration", - "mentor", - "user" - ] - }, - "conditions": [], - "locale": null - }, - { - "documentId": "k599zyolkpbo3ja2krdslxqv", - "action": "plugin::content-manager.explorer.create", - "actionParameters": {}, - "subject": "api::dimension.dimension", - "properties": { - "fields": [ - "name", - "link", - "quiz.question", - "quiz.option_1", - "quiz.option_2", - "quiz.option_3", - "quiz.option_4", - "quiz.option_5", - "quiz.tag", - "mentors", - "activities" - ] - }, - "conditions": [], - "locale": null - }, - { - "documentId": "p5b3hdhlh93uocnrzxks7l7q", - "action": "plugin::content-manager.explorer.delete", - "actionParameters": {}, - "subject": "api::dimension.dimension", - "properties": {}, - "conditions": [], - "locale": null - }, - { - "documentId": "lgwjeyidb5n62wcszlyl14wv", - "action": "plugin::content-manager.explorer.publish", - "actionParameters": {}, - "subject": "api::dimension.dimension", - "properties": {}, - "conditions": [], - "locale": null - }, - { - "documentId": "tpp8btgtnpd1poshzn1ioifm", - "action": "plugin::content-manager.explorer.read", - "actionParameters": {}, - "subject": "api::dimension.dimension", - "properties": { - "fields": [ - "name", - "link", - "quiz.question", - "quiz.option_1", - "quiz.option_2", - "quiz.option_3", - "quiz.option_4", - "quiz.option_5", - "quiz.tag", - "mentors", - "activities" - ] - }, - "conditions": [], - "locale": null - }, - { - "documentId": "sexh894fpwiv4yqjsfo0sode", - "action": "plugin::content-manager.explorer.update", - "actionParameters": {}, - "subject": "api::dimension.dimension", - "properties": { - "fields": [ - "name", - "link", - "quiz.question", - "quiz.option_1", - "quiz.option_2", - "quiz.option_3", - "quiz.option_4", - "quiz.option_5", - "quiz.tag", - "mentors", - "activities" - ] - }, - "conditions": [], - "locale": null - }, - { - "documentId": "ur78z8y7n35c47obziwqnemt", - "action": "plugin::content-manager.explorer.create", - "actionParameters": {}, - "subject": "api::domain.domain", - "properties": { - "fields": [ - "name", - "mentors" - ] - }, - "conditions": [], - "locale": null - }, - { - "documentId": "jgluhcz3t3pr0emsagqdqpao", - "action": "plugin::content-manager.explorer.delete", - "actionParameters": {}, - "subject": "api::domain.domain", - "properties": {}, - "conditions": [], - "locale": null - }, - { - "documentId": "y3tq9e9c28bx9dl3efl0rxui", - "action": "plugin::content-manager.explorer.publish", - "actionParameters": {}, - "subject": "api::domain.domain", - "properties": {}, - "conditions": [], - "locale": null - }, - { - "documentId": "qgnseqqcp45n5zijfakc7jpy", - "action": "plugin::content-manager.explorer.read", - "actionParameters": {}, - "subject": "api::domain.domain", - "properties": { - "fields": [ - "name", - "mentors" - ] - }, - "conditions": [], - "locale": null - }, - { - "documentId": "ia7uhuvb6kkdwk51wnpt5yh5", - "action": "plugin::content-manager.explorer.update", - "actionParameters": {}, - "subject": "api::domain.domain", - "properties": { - "fields": [ - "name", - "mentors" - ] - }, - "conditions": [], - "locale": null - }, { "documentId": "dru3ztr00j2tij0w2qfhz2va", "action": "plugin::content-manager.explorer.create", @@ -309,15 +30,6 @@ "conditions": [], "locale": null }, - { - "documentId": "mlcx6hcb7bc88sq8cwxh48zz", - "action": "plugin::content-manager.explorer.publish", - "actionParameters": {}, - "subject": "api::evaluation.evaluation", - "properties": {}, - "conditions": [], - "locale": null - }, { "documentId": "aoqohsbo6hiu2vs69bvei884", "action": "plugin::content-manager.explorer.read", @@ -356,9 +68,7 @@ "actionParameters": {}, "subject": "api::matrix.matrix", "properties": { - "fields": [ - "dimensions" - ] + "fields": [] }, "conditions": [], "locale": null @@ -372,24 +82,13 @@ "conditions": [], "locale": null }, - { - "documentId": "yp1i57d6qxc72o4u1b8h1tg6", - "action": "plugin::content-manager.explorer.publish", - "actionParameters": {}, - "subject": "api::matrix.matrix", - "properties": {}, - "conditions": [], - "locale": null - }, { "documentId": "ifeh15xsssx0fvoak33w675p", "action": "plugin::content-manager.explorer.read", "actionParameters": {}, "subject": "api::matrix.matrix", "properties": { - "fields": [ - "dimensions" - ] + "fields": [] }, "conditions": [], "locale": null @@ -400,141 +99,7 @@ "actionParameters": {}, "subject": "api::matrix.matrix", "properties": { - "fields": [ - "dimensions" - ] - }, - "conditions": [], - "locale": null - }, - { - "documentId": "f9654x0stzjngpiqpoh89zxe", - "action": "plugin::content-manager.explorer.create", - "actionParameters": {}, - "subject": "api::mentorship-request.mentorship-request", - "properties": { - "fields": [ - "mentor", - "user" - ] - }, - "conditions": [], - "locale": null - }, - { - "documentId": "wnqji7ajt9134qlqjt1bhmf8", - "action": "plugin::content-manager.explorer.delete", - "actionParameters": {}, - "subject": "api::mentorship-request.mentorship-request", - "properties": {}, - "conditions": [], - "locale": null - }, - { - "documentId": "ehd9nu0atpp50si2nxr4j8wv", - "action": "plugin::content-manager.explorer.publish", - "actionParameters": {}, - "subject": "api::mentorship-request.mentorship-request", - "properties": {}, - "conditions": [], - "locale": null - }, - { - "documentId": "slsvg6pkpnqr81yunq11tw2k", - "action": "plugin::content-manager.explorer.read", - "actionParameters": {}, - "subject": "api::mentorship-request.mentorship-request", - "properties": { - "fields": [ - "mentor", - "user" - ] - }, - "conditions": [], - "locale": null - }, - { - "documentId": "avk2tz9z5mkuk5gbnffl1pio", - "action": "plugin::content-manager.explorer.update", - "actionParameters": {}, - "subject": "api::mentorship-request.mentorship-request", - "properties": { - "fields": [ - "mentor", - "user" - ] - }, - "conditions": [], - "locale": null - }, - { - "documentId": "zegh5is4qima3m7unr0pa29v", - "action": "plugin::content-manager.explorer.create", - "actionParameters": {}, - "subject": "api::program.program", - "properties": { - "fields": [ - "name", - "startDate", - "endDate", - "sponsorName", - "mentors", - "users" - ] - }, - "conditions": [], - "locale": null - }, - { - "documentId": "ud9mefh06xlbu7ny0yzwg29p", - "action": "plugin::content-manager.explorer.delete", - "actionParameters": {}, - "subject": "api::program.program", - "properties": {}, - "conditions": [], - "locale": null - }, - { - "documentId": "bo4nx8p1wlq9d3xt0e5niwxx", - "action": "plugin::content-manager.explorer.publish", - "actionParameters": {}, - "subject": "api::program.program", - "properties": {}, - "conditions": [], - "locale": null - }, - { - "documentId": "n7n2vrf94hjm7fy0jy1lljd9", - "action": "plugin::content-manager.explorer.read", - "actionParameters": {}, - "subject": "api::program.program", - "properties": { - "fields": [ - "name", - "startDate", - "endDate", - "sponsorName", - "mentors", - "users" - ] - }, - "conditions": [], - "locale": null - }, - { - "documentId": "nwdt8iv6b9txablux3jw2mf5", - "action": "plugin::content-manager.explorer.update", - "actionParameters": {}, - "subject": "api::program.program", - "properties": { - "fields": [ - "name", - "startDate", - "endDate", - "sponsorName", - "mentors", - "users" - ] + "fields": [] }, "conditions": [], "locale": null @@ -564,15 +129,6 @@ "conditions": [], "locale": null }, - { - "documentId": "sbe6zhf9q4idqvn04usbx76m", - "action": "plugin::content-manager.explorer.publish", - "actionParameters": {}, - "subject": "api::report.report", - "properties": {}, - "conditions": [], - "locale": null - }, { "documentId": "r2culwma73bpwq6jdtkwsc1o", "action": "plugin::content-manager.explorer.read", From d2852331f4ae5d530394813e37256d70ec87cd30 Mon Sep 17 00:00:00 2001 From: Ion Dormenco Date: Thu, 11 Sep 2025 11:45:44 +0300 Subject: [PATCH 07/61] Update admin-role.strapi-super-admin.json --- .../sync/admin-role.strapi-super-admin.json | 108 +++--------------- 1 file changed, 18 insertions(+), 90 deletions(-) diff --git a/server2/config/sync/admin-role.strapi-super-admin.json b/server2/config/sync/admin-role.strapi-super-admin.json index 0eef1b1b..84a451e0 100644 --- a/server2/config/sync/admin-role.strapi-super-admin.json +++ b/server2/config/sync/admin-role.strapi-super-admin.json @@ -27,15 +27,6 @@ "conditions": [], "locale": null }, - { - "documentId": "dxsg94k59axqh1pqkvaoify2", - "action": "plugin::content-manager.explorer.publish", - "actionParameters": {}, - "subject": "api::activity-type.activity-type", - "properties": {}, - "conditions": [], - "locale": null - }, { "documentId": "xfgapan0eb01rw6wc16dxmi8", "action": "plugin::content-manager.explorer.read", @@ -90,15 +81,6 @@ "conditions": [], "locale": null }, - { - "documentId": "gdbwvpcbv964zparyhziongs", - "action": "plugin::content-manager.explorer.publish", - "actionParameters": {}, - "subject": "api::activity.activity", - "properties": {}, - "conditions": [], - "locale": null - }, { "documentId": "a9ch1j2wyubj4jh01kqz4fpa", "action": "plugin::content-manager.explorer.read", @@ -169,15 +151,6 @@ "conditions": [], "locale": null }, - { - "documentId": "rubydqg2ygpvs4z509ghguir", - "action": "plugin::content-manager.explorer.publish", - "actionParameters": {}, - "subject": "api::dimension.dimension", - "properties": {}, - "conditions": [], - "locale": null - }, { "documentId": "dfm4y35uf0ixr23ue5grnpzk", "action": "plugin::content-manager.explorer.read", @@ -247,15 +220,6 @@ "conditions": [], "locale": null }, - { - "documentId": "u99puhdlemrq97wgev473edg", - "action": "plugin::content-manager.explorer.publish", - "actionParameters": {}, - "subject": "api::domain.domain", - "properties": {}, - "conditions": [], - "locale": null - }, { "documentId": "xv8c8cxrc83076u4bvolh1v2", "action": "plugin::content-manager.explorer.read", @@ -309,15 +273,6 @@ "conditions": [], "locale": null }, - { - "documentId": "s4b880efq59dfhnd29efn2ng", - "action": "plugin::content-manager.explorer.publish", - "actionParameters": {}, - "subject": "api::evaluation.evaluation", - "properties": {}, - "conditions": [], - "locale": null - }, { "documentId": "yaxolp8q5fl20d7vfl0rv0te", "action": "plugin::content-manager.explorer.read", @@ -372,15 +327,6 @@ "conditions": [], "locale": null }, - { - "documentId": "tpotecxkdgpnddf3lonbwuhr", - "action": "plugin::content-manager.explorer.publish", - "actionParameters": {}, - "subject": "api::matrix.matrix", - "properties": {}, - "conditions": [], - "locale": null - }, { "documentId": "b1ok0ej43zpw0amhop2vqq5q", "action": "plugin::content-manager.explorer.read", @@ -430,15 +376,6 @@ "conditions": [], "locale": null }, - { - "documentId": "ro00k1ipyxk0tpb2tvgany7h", - "action": "plugin::content-manager.explorer.publish", - "actionParameters": {}, - "subject": "api::mentorship-request.mentorship-request", - "properties": {}, - "conditions": [], - "locale": null - }, { "documentId": "agfpsrsmjxwuwjsp3sivymlj", "action": "plugin::content-manager.explorer.read", @@ -564,15 +501,6 @@ "conditions": [], "locale": null }, - { - "documentId": "nhfb971d41k9x1gbgnxgg6ls", - "action": "plugin::content-manager.explorer.publish", - "actionParameters": {}, - "subject": "api::report.report", - "properties": {}, - "conditions": [], - "locale": null - }, { "documentId": "eyk47ea6fe2m4oys6eqlnjn8", "action": "plugin::content-manager.explorer.read", @@ -948,15 +876,6 @@ "conditions": [], "locale": null }, - { - "documentId": "lq3aigks2twl9yuecoir04dz", - "action": "plugin::content-manager.explorer.publish", - "actionParameters": {}, - "subject": "plugin::users-permissions.user", - "properties": {}, - "conditions": [], - "locale": null - }, { "documentId": "x8d7qzwys4l05onir681pymg", "action": "plugin::content-manager.explorer.read", @@ -1085,15 +1004,6 @@ "conditions": [], "locale": null }, - { - "documentId": "hzghwgl1ol6zcymdoxco9n3q", - "action": "plugin::email-designer-5.menu-link", - "actionParameters": {}, - "subject": null, - "properties": {}, - "conditions": [], - "locale": null - }, { "documentId": "swnh642z3xfid2si6bsaywek", "action": "plugin::email.settings.read", @@ -1139,6 +1049,24 @@ "conditions": [], "locale": null }, + { + "documentId": "di2nt0gw4sok36786j6sjhia", + "action": "plugin::import-export-entries.export", + "actionParameters": {}, + "subject": null, + "properties": {}, + "conditions": [], + "locale": null + }, + { + "documentId": "i9ec08vf83450n8qz0yqu0q4", + "action": "plugin::import-export-entries.import", + "actionParameters": {}, + "subject": null, + "properties": {}, + "conditions": [], + "locale": null + }, { "documentId": "ifty0rxaz4l6aonylzxvor5r", "action": "plugin::upload.assets.copy-link", From 6980e6fe5b28f4498fb91c7b578165116851194b Mon Sep 17 00:00:00 2001 From: Ion Dormenco Date: Thu, 11 Sep 2025 11:59:58 +0300 Subject: [PATCH 08/61] Update core-store.core_admin_auth.json --- server2/config/sync/core-store.core_admin_auth.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server2/config/sync/core-store.core_admin_auth.json b/server2/config/sync/core-store.core_admin_auth.json index 1e1a1cc8..b86bca89 100644 --- a/server2/config/sync/core-store.core_admin_auth.json +++ b/server2/config/sync/core-store.core_admin_auth.json @@ -10,4 +10,4 @@ "type": "object", "environment": null, "tag": null -} \ No newline at end of file +} From 5348cb23b09ca2d37b57a4dbab196347cd30bc82 Mon Sep 17 00:00:00 2001 From: Ion Dormenco Date: Thu, 11 Sep 2025 12:00:14 +0300 Subject: [PATCH 09/61] Update core-store.plugin_content_manager_configuration_components##evaluation.dimension.json --- ...tion_components##evaluation.dimension.json | 30 ++++--------------- 1 file changed, 5 insertions(+), 25 deletions(-) diff --git a/server2/config/sync/core-store.plugin_content_manager_configuration_components##evaluation.dimension.json b/server2/config/sync/core-store.plugin_content_manager_configuration_components##evaluation.dimension.json index ed013539..83a6fefa 100644 --- a/server2/config/sync/core-store.plugin_content_manager_configuration_components##evaluation.dimension.json +++ b/server2/config/sync/core-store.plugin_content_manager_configuration_components##evaluation.dimension.json @@ -1,24 +1,17 @@ { "key": "plugin_content_manager_configuration_components::evaluation.dimension", "value": { + "uid": "evaluation.dimension", "settings": { "bulkable": true, "filterable": true, "searchable": true, "pageSize": 10, - "mainField": "documentId", - "defaultSortBy": "documentId", + "mainField": "id", + "defaultSortBy": "id", "defaultSortOrder": "ASC" }, "metadatas": { - "id": { - "edit": {}, - "list": { - "label": "id", - "searchable": false, - "sortable": false - } - }, "quiz": { "edit": { "label": "quiz", @@ -46,22 +39,10 @@ "searchable": true, "sortable": true } - }, - "documentId": { - "edit": {}, - "list": { - "label": "documentId", - "searchable": true, - "sortable": true - } } }, "layouts": { - "list": [ - "id", - "quiz", - "comment" - ], + "list": ["id", "quiz", "comment"], "edit": [ [ { @@ -77,10 +58,9 @@ ] ] }, - "uid": "evaluation.dimension", "isComponent": true }, "type": "object", "environment": null, "tag": null -} \ No newline at end of file +} From 7ac0cdbb162c761a7c7a58fbc319e6931a905704 Mon Sep 17 00:00:00 2001 From: Ion Dormenco Date: Thu, 11 Sep 2025 12:02:44 +0300 Subject: [PATCH 10/61] Update core-store.plugin_content_manager_configuration_components##evaluation.dimension.json --- ...tion_components##evaluation.dimension.json | 26 ++++++++++++++++--- 1 file changed, 23 insertions(+), 3 deletions(-) diff --git a/server2/config/sync/core-store.plugin_content_manager_configuration_components##evaluation.dimension.json b/server2/config/sync/core-store.plugin_content_manager_configuration_components##evaluation.dimension.json index 83a6fefa..5f7f9149 100644 --- a/server2/config/sync/core-store.plugin_content_manager_configuration_components##evaluation.dimension.json +++ b/server2/config/sync/core-store.plugin_content_manager_configuration_components##evaluation.dimension.json @@ -7,11 +7,19 @@ "filterable": true, "searchable": true, "pageSize": 10, - "mainField": "id", + "mainField": "documentId", "defaultSortBy": "id", "defaultSortOrder": "ASC" }, "metadatas": { + "id": { + "edit": {}, + "list": { + "label": "id", + "searchable": false, + "sortable": false + } + }, "quiz": { "edit": { "label": "quiz", @@ -39,10 +47,22 @@ "searchable": true, "sortable": true } + }, + "documentId": { + "edit": {}, + "list": { + "label": "documentId", + "searchable": true, + "sortable": true + } } }, "layouts": { - "list": ["id", "quiz", "comment"], + "list": [ + "id", + "quiz", + "comment" + ], "edit": [ [ { @@ -63,4 +83,4 @@ "type": "object", "environment": null, "tag": null -} +} \ No newline at end of file From fd97e8abb1f7e6306c00f7091a535ca8bba2c92c Mon Sep 17 00:00:00 2001 From: Ion Dormenco Date: Thu, 11 Sep 2025 12:30:53 +0300 Subject: [PATCH 11/61] Update core-store.plugin_content_manager_configuration_content_types##admin##permission.json --- ...tion_content_types##admin##permission.json | 131 +++++++----------- 1 file changed, 53 insertions(+), 78 deletions(-) diff --git a/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##admin##permission.json b/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##admin##permission.json index 28bb766a..dab53f42 100644 --- a/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##admin##permission.json +++ b/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##admin##permission.json @@ -1,6 +1,7 @@ { "key": "plugin_content_manager_configuration_content_types::admin::permission", "value": { + "uid": "admin::permission", "settings": { "bulkable": true, "filterable": true, @@ -11,52 +12,45 @@ "defaultSortOrder": "ASC" }, "metadatas": { - "id": { - "edit": {}, - "list": { - "label": "id", - "searchable": true, - "sortable": true - } - }, - "action": { + "subject": { "edit": { - "label": "action", + "label": "subject", "description": "", "placeholder": "", "visible": true, "editable": true }, "list": { - "label": "action", + "label": "subject", "searchable": true, "sortable": true } }, - "actionParameters": { + "updatedAt": { "edit": { - "label": "actionParameters", + "label": "updatedAt", "description": "", "placeholder": "", - "visible": true, + "visible": false, "editable": true }, "list": { - "label": "actionParameters", - "searchable": false, - "sortable": false + "label": "updatedAt", + "searchable": true, + "sortable": true } }, - "subject": { + "updatedBy": { "edit": { - "label": "subject", + "label": "updatedBy", "description": "", "placeholder": "", - "visible": true, - "editable": true + "visible": false, + "editable": true, + "mainField": "firstname" }, "list": { - "label": "subject", + "label": "updatedBy", "searchable": true, "sortable": true } @@ -75,20 +69,6 @@ "sortable": false } }, - "conditions": { - "edit": { - "label": "conditions", - "description": "", - "placeholder": "", - "visible": true, - "editable": true - }, - "list": { - "label": "conditions", - "searchable": false, - "sortable": false - } - }, "role": { "edit": { "label": "role", @@ -104,52 +84,69 @@ "sortable": true } }, - "createdAt": { + "action": { "edit": { - "label": "createdAt", + "label": "action", "description": "", "placeholder": "", - "visible": false, + "visible": true, "editable": true }, "list": { - "label": "createdAt", + "label": "action", "searchable": true, "sortable": true } }, - "updatedAt": { + "documentId": { + "edit": {}, + "list": { + "label": "documentId", + + "searchable": true, + + "sortable": true + } + }, + "conditions": { "edit": { - "label": "updatedAt", + "label": "conditions", "description": "", "placeholder": "", - "visible": false, + "visible": true, "editable": true }, "list": { - "label": "updatedAt", + "label": "conditions", + "searchable": false, + "sortable": false + } + }, + "id": { + "edit": {}, + "list": { + "label": "id", "searchable": true, "sortable": true } }, - "createdBy": { + "createdAt": { "edit": { - "label": "createdBy", + "label": "createdAt", "description": "", "placeholder": "", "visible": false, - "editable": true, - "mainField": "firstname" + "editable": true }, "list": { - "label": "createdBy", + "label": "createdAt", "searchable": true, "sortable": true } }, - "updatedBy": { + "createdBy": { "edit": { - "label": "updatedBy", + "label": "createdBy", "description": "", "placeholder": "", "visible": false, @@ -157,41 +154,20 @@ "mainField": "firstname" }, "list": { - "label": "updatedBy", - "searchable": true, - "sortable": true - } - }, - "documentId": { - "edit": {}, - "list": { - "label": "documentId", + "label": "createdBy", "searchable": true, "sortable": true } } }, "layouts": { - "list": [ - "id", - "action", - "subject", - "role" - ], + "list": ["id", "action", "subject", "role"], "edit": [ [ { "name": "action", "size": 6 - } - ], - [ - { - "name": "actionParameters", - "size": 12 - } - ], - [ + }, { "name": "subject", "size": 6 @@ -216,10 +192,9 @@ } ] ] - }, - "uid": "admin::permission" + } }, "type": "object", "environment": null, "tag": null -} \ No newline at end of file +} From 561b9cccf7f24bf758a01d61057f4ee32f2fc1ae Mon Sep 17 00:00:00 2001 From: Ion Dormenco Date: Thu, 11 Sep 2025 12:37:09 +0300 Subject: [PATCH 12/61] Update core-store.plugin_content_manager_configuration_content_types##admin##permission.json --- ...tion_content_types##admin##permission.json | 123 +++++++++++------- 1 file changed, 73 insertions(+), 50 deletions(-) diff --git a/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##admin##permission.json b/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##admin##permission.json index dab53f42..e536a0ad 100644 --- a/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##admin##permission.json +++ b/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##admin##permission.json @@ -12,45 +12,52 @@ "defaultSortOrder": "ASC" }, "metadatas": { - "subject": { + "id": { + "edit": {}, + "list": { + "label": "id", + "searchable": true, + "sortable": true + } + }, + "action": { "edit": { - "label": "subject", + "label": "action", "description": "", "placeholder": "", "visible": true, "editable": true }, "list": { - "label": "subject", + "label": "action", "searchable": true, "sortable": true } }, - "updatedAt": { + "actionParameters": { "edit": { - "label": "updatedAt", + "label": "actionParameters", "description": "", "placeholder": "", - "visible": false, + "visible": true, "editable": true }, "list": { - "label": "updatedAt", - "searchable": true, - "sortable": true + "label": "actionParameters", + "searchable": false, + "sortable": false } }, - "updatedBy": { + "subject": { "edit": { - "label": "updatedBy", + "label": "subject", "description": "", "placeholder": "", - "visible": false, - "editable": true, - "mainField": "firstname" + "visible": true, + "editable": true }, "list": { - "label": "updatedBy", + "label": "subject", "searchable": true, "sortable": true } @@ -69,6 +76,20 @@ "sortable": false } }, + "conditions": { + "edit": { + "label": "conditions", + "description": "", + "placeholder": "", + "visible": true, + "editable": true + }, + "list": { + "label": "conditions", + "searchable": false, + "sortable": false + } + }, "role": { "edit": { "label": "role", @@ -84,69 +105,52 @@ "sortable": true } }, - "action": { + "createdAt": { "edit": { - "label": "action", + "label": "createdAt", "description": "", "placeholder": "", - "visible": true, + "visible": false, "editable": true }, "list": { - "label": "action", - "searchable": true, - "sortable": true - } - }, - "documentId": { - "edit": {}, - "list": { - "label": "documentId", - + "label": "createdAt", "searchable": true, - "sortable": true } }, - "conditions": { + "updatedAt": { "edit": { - "label": "conditions", + "label": "updatedAt", "description": "", "placeholder": "", - "visible": true, + "visible": false, "editable": true }, "list": { - "label": "conditions", - "searchable": false, - "sortable": false - } - }, - "id": { - "edit": {}, - "list": { - "label": "id", + "label": "updatedAt", "searchable": true, "sortable": true } }, - "createdAt": { + "createdBy": { "edit": { - "label": "createdAt", + "label": "createdBy", "description": "", "placeholder": "", "visible": false, - "editable": true + "editable": true, + "mainField": "firstname" }, "list": { - "label": "createdAt", + "label": "createdBy", "searchable": true, "sortable": true } }, - "createdBy": { + "updatedBy": { "edit": { - "label": "createdBy", + "label": "updatedBy", "description": "", "placeholder": "", "visible": false, @@ -154,14 +158,27 @@ "mainField": "firstname" }, "list": { - "label": "createdBy", + "label": "updatedBy", + "searchable": true, + "sortable": true + } + }, + "documentId": { + "edit": {}, + "list": { + "label": "documentId", "searchable": true, "sortable": true } } }, "layouts": { - "list": ["id", "action", "subject", "role"], + "list": [ + "id", + "action", + "subject", + "role" + ], "edit": [ [ { @@ -190,6 +207,12 @@ "name": "role", "size": 6 } + ], + [ + { + "name": "actionParameters", + "size": 12 + } ] ] } @@ -197,4 +220,4 @@ "type": "object", "environment": null, "tag": null -} +} \ No newline at end of file From ba2204c426c37e09021e01b17c0265be41d3f6ad Mon Sep 17 00:00:00 2001 From: Ion Dormenco Date: Thu, 11 Sep 2025 12:38:14 +0300 Subject: [PATCH 13/61] Update core-store.plugin_content_manager_configuration_content_types##admin##role.json --- ...figuration_content_types##admin##role.json | 113 ++++++++---------- 1 file changed, 50 insertions(+), 63 deletions(-) diff --git a/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##admin##role.json b/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##admin##role.json index fa407857..272f7155 100644 --- a/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##admin##role.json +++ b/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##admin##role.json @@ -1,6 +1,7 @@ { "key": "plugin_content_manager_configuration_content_types::admin::role", "value": { + "uid": "admin::role", "settings": { "bulkable": true, "filterable": true, @@ -11,12 +12,34 @@ "defaultSortOrder": "ASC" }, "metadatas": { - "id": { - "edit": {}, + "permissions": { + "edit": { + "label": "permissions", + "description": "", + "placeholder": "", + "visible": true, + "editable": true, + "mainField": "action" + }, "list": { - "label": "id", - "searchable": true, - "sortable": true + "label": "permissions", + "searchable": false, + "sortable": false + } + }, + "users": { + "edit": { + "label": "users", + "description": "", + "placeholder": "", + "visible": true, + "editable": true, + "mainField": "firstname" + }, + "list": { + "label": "users", + "searchable": false, + "sortable": false } }, "name": { @@ -47,48 +70,41 @@ "sortable": true } }, - "description": { + "updatedAt": { "edit": { - "label": "description", + "label": "updatedAt", "description": "", "placeholder": "", - "visible": true, + "visible": false, "editable": true }, "list": { - "label": "description", + "label": "updatedAt", "searchable": true, "sortable": true } }, - "users": { + "updatedBy": { "edit": { - "label": "users", + "label": "updatedBy", "description": "", "placeholder": "", - "visible": true, + "visible": false, "editable": true, "mainField": "firstname" }, "list": { - "label": "users", - "searchable": false, - "sortable": false + "label": "updatedBy", + "searchable": true, + "sortable": true } }, - "permissions": { - "edit": { - "label": "permissions", - "description": "", - "placeholder": "", - "visible": true, - "editable": true, - "mainField": "action" - }, + "id": { + "edit": {}, "list": { - "label": "permissions", - "searchable": false, - "sortable": false + "label": "id", + "searchable": true, + "sortable": true } }, "createdAt": { @@ -105,16 +121,16 @@ "sortable": true } }, - "updatedAt": { + "description": { "edit": { - "label": "updatedAt", + "label": "description", "description": "", "placeholder": "", - "visible": false, + "visible": true, "editable": true }, "list": { - "label": "updatedAt", + "label": "description", "searchable": true, "sortable": true } @@ -133,38 +149,10 @@ "searchable": true, "sortable": true } - }, - "updatedBy": { - "edit": { - "label": "updatedBy", - "description": "", - "placeholder": "", - "visible": false, - "editable": true, - "mainField": "firstname" - }, - "list": { - "label": "updatedBy", - "searchable": true, - "sortable": true - } - }, - "documentId": { - "edit": {}, - "list": { - "label": "documentId", - "searchable": true, - "sortable": true - } } }, "layouts": { - "list": [ - "id", - "name", - "code", - "description" - ], + "list": ["id", "name", "code", "description"], "edit": [ [ { @@ -193,10 +181,9 @@ } ] ] - }, - "uid": "admin::role" + } }, "type": "object", "environment": null, "tag": null -} \ No newline at end of file +} From c25a2c91e3cbca534d76950476c4795fac35bc48 Mon Sep 17 00:00:00 2001 From: Ion Dormenco Date: Thu, 11 Sep 2025 12:39:50 +0300 Subject: [PATCH 14/61] Update core-store.plugin_content_manager_configuration_content_types##admin##role.json --- ...figuration_content_types##admin##role.json | 113 ++++++++++-------- 1 file changed, 63 insertions(+), 50 deletions(-) diff --git a/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##admin##role.json b/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##admin##role.json index 272f7155..fa407857 100644 --- a/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##admin##role.json +++ b/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##admin##role.json @@ -1,7 +1,6 @@ { "key": "plugin_content_manager_configuration_content_types::admin::role", "value": { - "uid": "admin::role", "settings": { "bulkable": true, "filterable": true, @@ -12,34 +11,12 @@ "defaultSortOrder": "ASC" }, "metadatas": { - "permissions": { - "edit": { - "label": "permissions", - "description": "", - "placeholder": "", - "visible": true, - "editable": true, - "mainField": "action" - }, - "list": { - "label": "permissions", - "searchable": false, - "sortable": false - } - }, - "users": { - "edit": { - "label": "users", - "description": "", - "placeholder": "", - "visible": true, - "editable": true, - "mainField": "firstname" - }, + "id": { + "edit": {}, "list": { - "label": "users", - "searchable": false, - "sortable": false + "label": "id", + "searchable": true, + "sortable": true } }, "name": { @@ -70,41 +47,48 @@ "sortable": true } }, - "updatedAt": { + "description": { "edit": { - "label": "updatedAt", + "label": "description", "description": "", "placeholder": "", - "visible": false, + "visible": true, "editable": true }, "list": { - "label": "updatedAt", + "label": "description", "searchable": true, "sortable": true } }, - "updatedBy": { + "users": { "edit": { - "label": "updatedBy", + "label": "users", "description": "", "placeholder": "", - "visible": false, + "visible": true, "editable": true, "mainField": "firstname" }, "list": { - "label": "updatedBy", - "searchable": true, - "sortable": true + "label": "users", + "searchable": false, + "sortable": false } }, - "id": { - "edit": {}, + "permissions": { + "edit": { + "label": "permissions", + "description": "", + "placeholder": "", + "visible": true, + "editable": true, + "mainField": "action" + }, "list": { - "label": "id", - "searchable": true, - "sortable": true + "label": "permissions", + "searchable": false, + "sortable": false } }, "createdAt": { @@ -121,16 +105,16 @@ "sortable": true } }, - "description": { + "updatedAt": { "edit": { - "label": "description", + "label": "updatedAt", "description": "", "placeholder": "", - "visible": true, + "visible": false, "editable": true }, "list": { - "label": "description", + "label": "updatedAt", "searchable": true, "sortable": true } @@ -149,10 +133,38 @@ "searchable": true, "sortable": true } + }, + "updatedBy": { + "edit": { + "label": "updatedBy", + "description": "", + "placeholder": "", + "visible": false, + "editable": true, + "mainField": "firstname" + }, + "list": { + "label": "updatedBy", + "searchable": true, + "sortable": true + } + }, + "documentId": { + "edit": {}, + "list": { + "label": "documentId", + "searchable": true, + "sortable": true + } } }, "layouts": { - "list": ["id", "name", "code", "description"], + "list": [ + "id", + "name", + "code", + "description" + ], "edit": [ [ { @@ -181,9 +193,10 @@ } ] ] - } + }, + "uid": "admin::role" }, "type": "object", "environment": null, "tag": null -} +} \ No newline at end of file From 05b5d3251c2a423d6eff36154675d0e31edcf2e3 Mon Sep 17 00:00:00 2001 From: Ion Dormenco Date: Thu, 11 Sep 2025 12:41:02 +0300 Subject: [PATCH 15/61] Update core-store.plugin_content_manager_configuration_content_types##admin##transfer-token-permission.json --- ...pes##admin##transfer-token-permission.json | 21 ++++--------------- 1 file changed, 4 insertions(+), 17 deletions(-) diff --git a/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##admin##transfer-token-permission.json b/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##admin##transfer-token-permission.json index 5e9d4d7f..56b0bbfe 100644 --- a/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##admin##transfer-token-permission.json +++ b/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##admin##transfer-token-permission.json @@ -1,6 +1,7 @@ { "key": "plugin_content_manager_configuration_content_types::admin::transfer-token-permission", "value": { + "uid": "admin::transfer-token-permission", "settings": { "bulkable": true, "filterable": true, @@ -105,23 +106,10 @@ "searchable": true, "sortable": true } - }, - "documentId": { - "edit": {}, - "list": { - "label": "documentId", - "searchable": true, - "sortable": true - } } }, "layouts": { - "list": [ - "id", - "action", - "token", - "createdAt" - ], + "list": ["id", "action", "token", "createdAt"], "edit": [ [ { @@ -134,10 +122,9 @@ } ] ] - }, - "uid": "admin::transfer-token-permission" + } }, "type": "object", "environment": null, "tag": null -} \ No newline at end of file +} From 919bf648446eba6b92d2e8268fa293b4ab794a67 Mon Sep 17 00:00:00 2001 From: Ion Dormenco Date: Thu, 11 Sep 2025 12:41:22 +0300 Subject: [PATCH 16/61] Update core-store.plugin_content_manager_configuration_content_types##admin##transfer-token-permission.json --- ...pes##admin##transfer-token-permission.json | 21 +++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##admin##transfer-token-permission.json b/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##admin##transfer-token-permission.json index 56b0bbfe..5e9d4d7f 100644 --- a/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##admin##transfer-token-permission.json +++ b/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##admin##transfer-token-permission.json @@ -1,7 +1,6 @@ { "key": "plugin_content_manager_configuration_content_types::admin::transfer-token-permission", "value": { - "uid": "admin::transfer-token-permission", "settings": { "bulkable": true, "filterable": true, @@ -106,10 +105,23 @@ "searchable": true, "sortable": true } + }, + "documentId": { + "edit": {}, + "list": { + "label": "documentId", + "searchable": true, + "sortable": true + } } }, "layouts": { - "list": ["id", "action", "token", "createdAt"], + "list": [ + "id", + "action", + "token", + "createdAt" + ], "edit": [ [ { @@ -122,9 +134,10 @@ } ] ] - } + }, + "uid": "admin::transfer-token-permission" }, "type": "object", "environment": null, "tag": null -} +} \ No newline at end of file From 2dc841005a5ec43c34111f74b6f539a6c2c5c9e4 Mon Sep 17 00:00:00 2001 From: Ion Dormenco Date: Thu, 11 Sep 2025 12:42:04 +0300 Subject: [PATCH 17/61] Update core-store.plugin_content_manager_configuration_content_types##admin##transfer-token.json --- ..._content_types##admin##transfer-token.json | 125 ++++++++---------- 1 file changed, 56 insertions(+), 69 deletions(-) diff --git a/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##admin##transfer-token.json b/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##admin##transfer-token.json index 7f593d3a..b2a25259 100644 --- a/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##admin##transfer-token.json +++ b/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##admin##transfer-token.json @@ -1,6 +1,7 @@ { "key": "plugin_content_manager_configuration_content_types::admin::transfer-token", "value": { + "uid": "admin::transfer-token", "settings": { "bulkable": true, "filterable": true, @@ -11,109 +12,110 @@ "defaultSortOrder": "ASC" }, "metadatas": { - "id": { - "edit": {}, - "list": { - "label": "id", - "searchable": true, - "sortable": true - } - }, - "name": { + "permissions": { "edit": { - "label": "name", + "label": "permissions", "description": "", "placeholder": "", "visible": true, - "editable": true + "editable": true, + "mainField": "action" }, "list": { - "label": "name", - "searchable": true, - "sortable": true + "label": "permissions", + "searchable": false, + "sortable": false } }, - "description": { + "lifespan": { "edit": { - "label": "description", + "label": "lifespan", "description": "", "placeholder": "", "visible": true, "editable": true }, "list": { - "label": "description", + "label": "lifespan", "searchable": true, "sortable": true } }, - "accessKey": { + "lastUsedAt": { "edit": { - "label": "accessKey", + "label": "lastUsedAt", "description": "", "placeholder": "", "visible": true, "editable": true }, "list": { - "label": "accessKey", + "label": "lastUsedAt", "searchable": true, "sortable": true } }, - "lastUsedAt": { + "expiresAt": { "edit": { - "label": "lastUsedAt", + "label": "expiresAt", "description": "", "placeholder": "", "visible": true, "editable": true }, "list": { - "label": "lastUsedAt", + "label": "expiresAt", "searchable": true, "sortable": true } }, - "permissions": { + "name": { "edit": { - "label": "permissions", + "label": "name", "description": "", "placeholder": "", "visible": true, - "editable": true, - "mainField": "action" + "editable": true }, "list": { - "label": "permissions", - "searchable": false, - "sortable": false + "label": "name", + "searchable": true, + "sortable": true } }, - "expiresAt": { + "updatedAt": { "edit": { - "label": "expiresAt", + "label": "updatedAt", "description": "", "placeholder": "", - "visible": true, + "visible": false, "editable": true }, "list": { - "label": "expiresAt", + "label": "updatedAt", "searchable": true, "sortable": true } }, - "lifespan": { + "updatedBy": { "edit": { - "label": "lifespan", + "label": "updatedBy", "description": "", "placeholder": "", - "visible": true, - "editable": true + "visible": false, + "editable": true, + "mainField": "firstname" }, "list": { - "label": "lifespan", + "label": "updatedBy", + "searchable": true, + "sortable": true + } + }, + "id": { + "edit": {}, + "list": { + "label": "id", "searchable": true, "sortable": true } @@ -132,38 +134,37 @@ "sortable": true } }, - "updatedAt": { + "accessKey": { "edit": { - "label": "updatedAt", + "label": "accessKey", "description": "", "placeholder": "", - "visible": false, + "visible": true, "editable": true }, "list": { - "label": "updatedAt", + "label": "accessKey", "searchable": true, "sortable": true } }, - "createdBy": { + "description": { "edit": { - "label": "createdBy", + "label": "description", "description": "", "placeholder": "", - "visible": false, - "editable": true, - "mainField": "firstname" + "visible": true, + "editable": true }, "list": { - "label": "createdBy", + "label": "description", "searchable": true, "sortable": true } }, - "updatedBy": { + "createdBy": { "edit": { - "label": "updatedBy", + "label": "createdBy", "description": "", "placeholder": "", "visible": false, @@ -171,27 +172,14 @@ "mainField": "firstname" }, "list": { - "label": "updatedBy", - "searchable": true, - "sortable": true - } - }, - "documentId": { - "edit": {}, - "list": { - "label": "documentId", + "label": "createdBy", "searchable": true, "sortable": true } } }, "layouts": { - "list": [ - "id", - "name", - "description", - "accessKey" - ], + "list": ["id", "name", "description", "accessKey"], "edit": [ [ { @@ -230,10 +218,9 @@ } ] ] - }, - "uid": "admin::transfer-token" + } }, "type": "object", "environment": null, "tag": null -} \ No newline at end of file +} From b928411c76a2f45db2776d4d593264998a95e0f5 Mon Sep 17 00:00:00 2001 From: Ion Dormenco Date: Thu, 11 Sep 2025 12:47:04 +0300 Subject: [PATCH 18/61] Update core-store.plugin_content_manager_configuration_content_types##admin##user.json --- ...figuration_content_types##admin##user.json | 151 ++++++++---------- 1 file changed, 70 insertions(+), 81 deletions(-) diff --git a/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##admin##user.json b/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##admin##user.json index 25cea72b..c272054e 100644 --- a/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##admin##user.json +++ b/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##admin##user.json @@ -1,6 +1,7 @@ { "key": "plugin_content_manager_configuration_content_types::admin::user", "value": { + "uid": "admin::user", "settings": { "bulkable": true, "filterable": true, @@ -11,24 +12,16 @@ "defaultSortOrder": "ASC" }, "metadatas": { - "id": { - "edit": {}, - "list": { - "label": "id", - "searchable": true, - "sortable": true - } - }, - "firstname": { + "registrationToken": { "edit": { - "label": "firstname", + "label": "registrationToken", "description": "", "placeholder": "", "visible": true, "editable": true }, "list": { - "label": "firstname", + "label": "registrationToken", "searchable": true, "sortable": true } @@ -47,44 +40,44 @@ "sortable": true } }, - "username": { + "preferedLanguage": { "edit": { - "label": "username", + "label": "preferedLanguage", "description": "", "placeholder": "", "visible": true, "editable": true }, "list": { - "label": "username", + "label": "preferedLanguage", "searchable": true, "sortable": true } }, - "email": { + "blocked": { "edit": { - "label": "email", + "label": "blocked", "description": "", "placeholder": "", "visible": true, "editable": true }, "list": { - "label": "email", + "label": "blocked", "searchable": true, "sortable": true } }, - "password": { + "updatedAt": { "edit": { - "label": "password", + "label": "updatedAt", "description": "", "placeholder": "", - "visible": true, + "visible": false, "editable": true }, "list": { - "label": "password", + "label": "updatedAt", "searchable": true, "sortable": true } @@ -94,7 +87,7 @@ "label": "resetPasswordToken", "description": "", "placeholder": "", - "visible": false, + "visible": true, "editable": true }, "list": { @@ -103,123 +96,131 @@ "sortable": true } }, - "registrationToken": { + "isActive": { "edit": { - "label": "registrationToken", + "label": "isActive", "description": "", "placeholder": "", - "visible": false, + "visible": true, "editable": true }, "list": { - "label": "registrationToken", + "label": "isActive", "searchable": true, "sortable": true } }, - "isActive": { + "updatedBy": { "edit": { - "label": "isActive", + "label": "updatedBy", "description": "", "placeholder": "", - "visible": true, - "editable": true + "visible": false, + "editable": true, + "mainField": "firstname" }, "list": { - "label": "isActive", + "label": "updatedBy", "searchable": true, "sortable": true } }, - "roles": { + "username": { "edit": { - "label": "roles", + "label": "username", "description": "", "placeholder": "", "visible": true, - "editable": true, - "mainField": "name" + "editable": true }, "list": { - "label": "roles", - "searchable": false, - "sortable": false + "label": "username", + "searchable": true, + "sortable": true } }, - "blocked": { + "id": { + "edit": {}, + "list": { + "label": "id", + "searchable": true, + "sortable": true + } + }, + "createdAt": { "edit": { - "label": "blocked", + "label": "createdAt", "description": "", "placeholder": "", - "visible": true, + "visible": false, "editable": true }, "list": { - "label": "blocked", + "label": "createdAt", "searchable": true, "sortable": true } }, - "preferedLanguage": { + "firstname": { "edit": { - "label": "preferedLanguage", + "label": "firstname", "description": "", "placeholder": "", "visible": true, "editable": true }, "list": { - "label": "preferedLanguage", + "label": "firstname", "searchable": true, "sortable": true } }, - "createdAt": { + "password": { "edit": { - "label": "createdAt", + "label": "password", "description": "", "placeholder": "", - "visible": false, + "visible": true, "editable": true }, "list": { - "label": "createdAt", + "label": "password", "searchable": true, "sortable": true } }, - "updatedAt": { + "email": { "edit": { - "label": "updatedAt", + "label": "email", "description": "", "placeholder": "", - "visible": false, + "visible": true, "editable": true }, "list": { - "label": "updatedAt", + "label": "email", "searchable": true, "sortable": true } }, - "createdBy": { + "roles": { "edit": { - "label": "createdBy", + "label": "roles", "description": "", "placeholder": "", - "visible": false, + "visible": true, "editable": true, - "mainField": "firstname" + "mainField": "name" }, "list": { - "label": "createdBy", - "searchable": true, - "sortable": true + "label": "roles", + "searchable": false, + "sortable": false } }, - "updatedBy": { + "createdBy": { "edit": { - "label": "updatedBy", + "label": "createdBy", "description": "", "placeholder": "", "visible": false, @@ -227,27 +228,14 @@ "mainField": "firstname" }, "list": { - "label": "updatedBy", - "searchable": true, - "sortable": true - } - }, - "documentId": { - "edit": {}, - "list": { - "label": "documentId", + "label": "createdBy", "searchable": true, "sortable": true } } }, "layouts": { - "list": [ - "id", - "firstname", - "lastname", - "username" - ], + "list": ["id", "firstname", "lastname", "username"], "edit": [ [ { @@ -273,7 +261,9 @@ { "name": "password", "size": 6 - }, + } + ], + [ { "name": "isActive", "size": 4 @@ -296,10 +286,9 @@ } ] ] - }, - "uid": "admin::user" + } }, "type": "object", "environment": null, "tag": null -} \ No newline at end of file +} From dd963ceaa9d7ede219913f9961f407c072168004 Mon Sep 17 00:00:00 2001 From: Ion Dormenco Date: Thu, 11 Sep 2025 12:47:07 +0300 Subject: [PATCH 19/61] Update core-store.plugin_content_manager_configuration_content_types##admin##transfer-token.json --- ..._content_types##admin##transfer-token.json | 125 ++++++++++-------- 1 file changed, 69 insertions(+), 56 deletions(-) diff --git a/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##admin##transfer-token.json b/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##admin##transfer-token.json index b2a25259..7f593d3a 100644 --- a/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##admin##transfer-token.json +++ b/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##admin##transfer-token.json @@ -1,7 +1,6 @@ { "key": "plugin_content_manager_configuration_content_types::admin::transfer-token", "value": { - "uid": "admin::transfer-token", "settings": { "bulkable": true, "filterable": true, @@ -12,110 +11,109 @@ "defaultSortOrder": "ASC" }, "metadatas": { - "permissions": { - "edit": { - "label": "permissions", - "description": "", - "placeholder": "", - "visible": true, - "editable": true, - "mainField": "action" - }, + "id": { + "edit": {}, "list": { - "label": "permissions", - "searchable": false, - "sortable": false + "label": "id", + "searchable": true, + "sortable": true } }, - "lifespan": { + "name": { "edit": { - "label": "lifespan", + "label": "name", "description": "", "placeholder": "", "visible": true, "editable": true }, "list": { - "label": "lifespan", + "label": "name", "searchable": true, "sortable": true } }, - "lastUsedAt": { + "description": { "edit": { - "label": "lastUsedAt", + "label": "description", "description": "", "placeholder": "", "visible": true, "editable": true }, "list": { - "label": "lastUsedAt", + "label": "description", "searchable": true, "sortable": true } }, - "expiresAt": { + "accessKey": { "edit": { - "label": "expiresAt", + "label": "accessKey", "description": "", "placeholder": "", "visible": true, "editable": true }, "list": { - "label": "expiresAt", + "label": "accessKey", "searchable": true, "sortable": true } }, - "name": { + "lastUsedAt": { "edit": { - "label": "name", + "label": "lastUsedAt", "description": "", "placeholder": "", "visible": true, "editable": true }, "list": { - "label": "name", + "label": "lastUsedAt", "searchable": true, "sortable": true } }, - "updatedAt": { + "permissions": { "edit": { - "label": "updatedAt", + "label": "permissions", "description": "", "placeholder": "", - "visible": false, - "editable": true + "visible": true, + "editable": true, + "mainField": "action" }, "list": { - "label": "updatedAt", - "searchable": true, - "sortable": true + "label": "permissions", + "searchable": false, + "sortable": false } }, - "updatedBy": { + "expiresAt": { "edit": { - "label": "updatedBy", + "label": "expiresAt", "description": "", "placeholder": "", - "visible": false, - "editable": true, - "mainField": "firstname" + "visible": true, + "editable": true }, "list": { - "label": "updatedBy", + "label": "expiresAt", "searchable": true, "sortable": true } }, - "id": { - "edit": {}, + "lifespan": { + "edit": { + "label": "lifespan", + "description": "", + "placeholder": "", + "visible": true, + "editable": true + }, "list": { - "label": "id", + "label": "lifespan", "searchable": true, "sortable": true } @@ -134,37 +132,38 @@ "sortable": true } }, - "accessKey": { + "updatedAt": { "edit": { - "label": "accessKey", + "label": "updatedAt", "description": "", "placeholder": "", - "visible": true, + "visible": false, "editable": true }, "list": { - "label": "accessKey", + "label": "updatedAt", "searchable": true, "sortable": true } }, - "description": { + "createdBy": { "edit": { - "label": "description", + "label": "createdBy", "description": "", "placeholder": "", - "visible": true, - "editable": true + "visible": false, + "editable": true, + "mainField": "firstname" }, "list": { - "label": "description", + "label": "createdBy", "searchable": true, "sortable": true } }, - "createdBy": { + "updatedBy": { "edit": { - "label": "createdBy", + "label": "updatedBy", "description": "", "placeholder": "", "visible": false, @@ -172,14 +171,27 @@ "mainField": "firstname" }, "list": { - "label": "createdBy", + "label": "updatedBy", + "searchable": true, + "sortable": true + } + }, + "documentId": { + "edit": {}, + "list": { + "label": "documentId", "searchable": true, "sortable": true } } }, "layouts": { - "list": ["id", "name", "description", "accessKey"], + "list": [ + "id", + "name", + "description", + "accessKey" + ], "edit": [ [ { @@ -218,9 +230,10 @@ } ] ] - } + }, + "uid": "admin::transfer-token" }, "type": "object", "environment": null, "tag": null -} +} \ No newline at end of file From 4c98731c1f2edebd02abffd31373e596c3723bfc Mon Sep 17 00:00:00 2001 From: Ion Dormenco Date: Thu, 11 Sep 2025 13:08:24 +0300 Subject: [PATCH 20/61] add sync config --- .../sync/admin-role.strapi-super-admin.json | 4 +- ...tion_components##evaluation.dimension.json | 18 +- ...ation_components##evaluation.question.json | 21 +- ...guration_components##matrix.dimension.json | 18 +- ...iguration_components##matrix.question.json | 19 +- ...nt_types##admin##api-token-permission.json | 21 +- ...ation_content_types##admin##api-token.json | 47 +--- ...tion_content_types##admin##permission.json | 37 +-- ...figuration_content_types##admin##role.json | 21 +- ...pes##admin##transfer-token-permission.json | 21 +- ..._content_types##admin##transfer-token.json | 21 +- ...figuration_content_types##admin##user.json | 122 +++++----- ...pes##api##activity-type.activity-type.json | 27 +-- ...content_types##api##activity.activity.json | 65 +++--- ...ntent_types##api##dimension.dimension.json | 23 +- ...ion_content_types##api##domain.domain.json | 23 +- ...ent_types##api##evaluation.evaluation.json | 33 +-- ...ion_content_types##api##matrix.matrix.json | 25 +- ...mentorship-request.mentorship-request.json | 41 ++-- ...n_content_types##api##program.program.json | 49 ++-- ...ion_content_types##api##report.report.json | 45 ++-- ...ugin##content-releases.release-action.json | 201 ---------------- ...pes##plugin##content-releases.release.json | 219 ------------------ ...lugin##email-designer.email-template.json} | 43 ++-- ...on_content_types##plugin##i18n.locale.json | 21 +- ...ugin##review-workflows.workflow-stage.json | 182 --------------- ...es##plugin##review-workflows.workflow.json | 184 --------------- ...on_content_types##plugin##upload.file.json | 21 +- ..._content_types##plugin##upload.folder.json | 21 +- ...#plugin##users-permissions.permission.json | 21 +- ...types##plugin##users-permissions.role.json | 21 +- ...types##plugin##users-permissions.user.json | 179 +++++++------- ...core-store.plugin_i18n_default_locale.json | 2 +- .../core-store.plugin_upload_api-folder.json | 9 + .../core-store.plugin_upload_settings.json | 2 +- ...tore.plugin_upload_view_configuration.json | 2 +- ...ore.plugin_users-permissions_advanced.json | 2 +- ...-store.plugin_users-permissions_email.json | 189 ++++++++++++++- .../config/sync/user-role.authenticated.json | 97 +++++++- server2/config/sync/user-role.fdsc.json | 114 +++++++++ server2/config/sync/user-role.mentor.json | 84 +++++++ server2/config/sync/user-role.public.json | 40 ++++ 42 files changed, 880 insertions(+), 1475 deletions(-) delete mode 100644 server2/config/sync/core-store.plugin_content_manager_configuration_content_types##plugin##content-releases.release-action.json delete mode 100644 server2/config/sync/core-store.plugin_content_manager_configuration_content_types##plugin##content-releases.release.json rename server2/config/sync/{core-store.plugin_content_manager_configuration_content_types##plugin##email-designer-5.email-designer-template.json => core-store.plugin_content_manager_configuration_content_types##plugin##email-designer.email-template.json} (91%) delete mode 100644 server2/config/sync/core-store.plugin_content_manager_configuration_content_types##plugin##review-workflows.workflow-stage.json delete mode 100644 server2/config/sync/core-store.plugin_content_manager_configuration_content_types##plugin##review-workflows.workflow.json create mode 100644 server2/config/sync/core-store.plugin_upload_api-folder.json create mode 100644 server2/config/sync/user-role.fdsc.json create mode 100644 server2/config/sync/user-role.mentor.json diff --git a/server2/config/sync/admin-role.strapi-super-admin.json b/server2/config/sync/admin-role.strapi-super-admin.json index 84a451e0..d5ec8f5e 100644 --- a/server2/config/sync/admin-role.strapi-super-admin.json +++ b/server2/config/sync/admin-role.strapi-super-admin.json @@ -1050,7 +1050,7 @@ "locale": null }, { - "documentId": "di2nt0gw4sok36786j6sjhia", + "documentId": "yaix2zah5de33306i8lefm9e", "action": "plugin::import-export-entries.export", "actionParameters": {}, "subject": null, @@ -1059,7 +1059,7 @@ "locale": null }, { - "documentId": "i9ec08vf83450n8qz0yqu0q4", + "documentId": "m82y2s8f1staxkrqnamrabd7", "action": "plugin::import-export-entries.import", "actionParameters": {}, "subject": null, diff --git a/server2/config/sync/core-store.plugin_content_manager_configuration_components##evaluation.dimension.json b/server2/config/sync/core-store.plugin_content_manager_configuration_components##evaluation.dimension.json index 5f7f9149..6c33447f 100644 --- a/server2/config/sync/core-store.plugin_content_manager_configuration_components##evaluation.dimension.json +++ b/server2/config/sync/core-store.plugin_content_manager_configuration_components##evaluation.dimension.json @@ -7,7 +7,7 @@ "filterable": true, "searchable": true, "pageSize": 10, - "mainField": "documentId", + "mainField": "id", "defaultSortBy": "id", "defaultSortOrder": "ASC" }, @@ -47,22 +47,10 @@ "searchable": true, "sortable": true } - }, - "documentId": { - "edit": {}, - "list": { - "label": "documentId", - "searchable": true, - "sortable": true - } } }, "layouts": { - "list": [ - "id", - "quiz", - "comment" - ], + "list": ["id", "quiz", "comment"], "edit": [ [ { @@ -83,4 +71,4 @@ "type": "object", "environment": null, "tag": null -} \ No newline at end of file +} diff --git a/server2/config/sync/core-store.plugin_content_manager_configuration_components##evaluation.question.json b/server2/config/sync/core-store.plugin_content_manager_configuration_components##evaluation.question.json index 6a167660..cd7adaa0 100644 --- a/server2/config/sync/core-store.plugin_content_manager_configuration_components##evaluation.question.json +++ b/server2/config/sync/core-store.plugin_content_manager_configuration_components##evaluation.question.json @@ -1,13 +1,14 @@ { "key": "plugin_content_manager_configuration_components::evaluation.question", "value": { + "uid": "evaluation.question", "settings": { "bulkable": true, "filterable": true, "searchable": true, "pageSize": 10, - "mainField": "documentId", - "defaultSortBy": "documentId", + "mainField": "id", + "defaultSortBy": "id", "defaultSortOrder": "ASC" }, "metadatas": { @@ -32,21 +33,10 @@ "searchable": true, "sortable": true } - }, - "documentId": { - "edit": {}, - "list": { - "label": "documentId", - "searchable": true, - "sortable": true - } } }, "layouts": { - "list": [ - "id", - "answer" - ], + "list": ["id", "answer"], "edit": [ [ { @@ -56,10 +46,9 @@ ] ] }, - "uid": "evaluation.question", "isComponent": true }, "type": "object", "environment": null, "tag": null -} \ No newline at end of file +} diff --git a/server2/config/sync/core-store.plugin_content_manager_configuration_components##matrix.dimension.json b/server2/config/sync/core-store.plugin_content_manager_configuration_components##matrix.dimension.json index 29c40804..6c400daf 100644 --- a/server2/config/sync/core-store.plugin_content_manager_configuration_components##matrix.dimension.json +++ b/server2/config/sync/core-store.plugin_content_manager_configuration_components##matrix.dimension.json @@ -1,6 +1,7 @@ { "key": "plugin_content_manager_configuration_components::matrix.dimension", "value": { + "uid": "matrix.dimension", "settings": { "bulkable": true, "filterable": true, @@ -46,22 +47,10 @@ "searchable": true, "sortable": true } - }, - "documentId": { - "edit": {}, - "list": { - "label": "documentId", - "searchable": true, - "sortable": true - } } }, "layouts": { - "list": [ - "id", - "name", - "link" - ], + "list": ["id", "name", "link"], "edit": [ [ { @@ -75,10 +64,9 @@ ] ] }, - "uid": "matrix.dimension", "isComponent": true }, "type": "object", "environment": null, "tag": null -} \ No newline at end of file +} diff --git a/server2/config/sync/core-store.plugin_content_manager_configuration_components##matrix.question.json b/server2/config/sync/core-store.plugin_content_manager_configuration_components##matrix.question.json index 4d5cf38c..e71ea89b 100644 --- a/server2/config/sync/core-store.plugin_content_manager_configuration_components##matrix.question.json +++ b/server2/config/sync/core-store.plugin_content_manager_configuration_components##matrix.question.json @@ -1,6 +1,7 @@ { "key": "plugin_content_manager_configuration_components::matrix.question", "value": { + "uid": "matrix.question", "settings": { "bulkable": true, "filterable": true, @@ -116,23 +117,10 @@ "searchable": true, "sortable": true } - }, - "documentId": { - "edit": {}, - "list": { - "label": "documentId", - "searchable": true, - "sortable": true - } } }, "layouts": { - "list": [ - "id", - "question", - "option_1", - "option_2" - ], + "list": ["id", "question", "option_1", "option_2"], "edit": [ [ { @@ -172,10 +160,9 @@ ] ] }, - "uid": "matrix.question", "isComponent": true }, "type": "object", "environment": null, "tag": null -} \ No newline at end of file +} diff --git a/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##admin##api-token-permission.json b/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##admin##api-token-permission.json index aa80d150..4d40209f 100644 --- a/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##admin##api-token-permission.json +++ b/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##admin##api-token-permission.json @@ -1,6 +1,7 @@ { "key": "plugin_content_manager_configuration_content_types::admin::api-token-permission", "value": { + "uid": "admin::api-token-permission", "settings": { "bulkable": true, "filterable": true, @@ -105,23 +106,10 @@ "searchable": true, "sortable": true } - }, - "documentId": { - "edit": {}, - "list": { - "label": "documentId", - "searchable": true, - "sortable": true - } } }, "layouts": { - "list": [ - "id", - "action", - "token", - "createdAt" - ], + "list": ["id", "action", "token", "createdAt"], "edit": [ [ { @@ -134,10 +122,9 @@ } ] ] - }, - "uid": "admin::api-token-permission" + } }, "type": "object", "environment": null, "tag": null -} \ No newline at end of file +} diff --git a/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##admin##api-token.json b/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##admin##api-token.json index 287cfadf..1444a41f 100644 --- a/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##admin##api-token.json +++ b/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##admin##api-token.json @@ -1,6 +1,7 @@ { "key": "plugin_content_manager_configuration_content_types::admin::api-token", "value": { + "uid": "admin::api-token", "settings": { "bulkable": true, "filterable": true, @@ -75,20 +76,6 @@ "sortable": true } }, - "encryptedKey": { - "edit": { - "label": "encryptedKey", - "description": "", - "placeholder": "", - "visible": true, - "editable": true - }, - "list": { - "label": "encryptedKey", - "searchable": true, - "sortable": true - } - }, "lastUsedAt": { "edit": { "label": "lastUsedAt", @@ -203,23 +190,10 @@ "searchable": true, "sortable": true } - }, - "documentId": { - "edit": {}, - "list": { - "label": "documentId", - "searchable": true, - "sortable": true - } } }, "layouts": { - "list": [ - "id", - "name", - "description", - "type" - ], + "list": ["id", "name", "description", "type"], "edit": [ [ { @@ -243,35 +217,28 @@ ], [ { - "name": "encryptedKey", + "name": "lastUsedAt", "size": 6 }, { - "name": "lastUsedAt", + "name": "permissions", "size": 6 } ], [ - { - "name": "permissions", - "size": 6 - }, { "name": "expiresAt", "size": 6 - } - ], - [ + }, { "name": "lifespan", "size": 4 } ] ] - }, - "uid": "admin::api-token" + } }, "type": "object", "environment": null, "tag": null -} \ No newline at end of file +} diff --git a/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##admin##permission.json b/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##admin##permission.json index e536a0ad..2043fd4d 100644 --- a/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##admin##permission.json +++ b/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##admin##permission.json @@ -34,20 +34,6 @@ "sortable": true } }, - "actionParameters": { - "edit": { - "label": "actionParameters", - "description": "", - "placeholder": "", - "visible": true, - "editable": true - }, - "list": { - "label": "actionParameters", - "searchable": false, - "sortable": false - } - }, "subject": { "edit": { "label": "subject", @@ -162,23 +148,10 @@ "searchable": true, "sortable": true } - }, - "documentId": { - "edit": {}, - "list": { - "label": "documentId", - "searchable": true, - "sortable": true - } } }, "layouts": { - "list": [ - "id", - "action", - "subject", - "role" - ], + "list": ["id", "action", "subject", "role"], "edit": [ [ { @@ -207,12 +180,6 @@ "name": "role", "size": 6 } - ], - [ - { - "name": "actionParameters", - "size": 12 - } ] ] } @@ -220,4 +187,4 @@ "type": "object", "environment": null, "tag": null -} \ No newline at end of file +} diff --git a/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##admin##role.json b/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##admin##role.json index fa407857..20143cfd 100644 --- a/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##admin##role.json +++ b/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##admin##role.json @@ -1,6 +1,7 @@ { "key": "plugin_content_manager_configuration_content_types::admin::role", "value": { + "uid": "admin::role", "settings": { "bulkable": true, "filterable": true, @@ -148,23 +149,10 @@ "searchable": true, "sortable": true } - }, - "documentId": { - "edit": {}, - "list": { - "label": "documentId", - "searchable": true, - "sortable": true - } } }, "layouts": { - "list": [ - "id", - "name", - "code", - "description" - ], + "list": ["id", "name", "code", "description"], "edit": [ [ { @@ -193,10 +181,9 @@ } ] ] - }, - "uid": "admin::role" + } }, "type": "object", "environment": null, "tag": null -} \ No newline at end of file +} diff --git a/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##admin##transfer-token-permission.json b/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##admin##transfer-token-permission.json index 5e9d4d7f..56b0bbfe 100644 --- a/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##admin##transfer-token-permission.json +++ b/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##admin##transfer-token-permission.json @@ -1,6 +1,7 @@ { "key": "plugin_content_manager_configuration_content_types::admin::transfer-token-permission", "value": { + "uid": "admin::transfer-token-permission", "settings": { "bulkable": true, "filterable": true, @@ -105,23 +106,10 @@ "searchable": true, "sortable": true } - }, - "documentId": { - "edit": {}, - "list": { - "label": "documentId", - "searchable": true, - "sortable": true - } } }, "layouts": { - "list": [ - "id", - "action", - "token", - "createdAt" - ], + "list": ["id", "action", "token", "createdAt"], "edit": [ [ { @@ -134,10 +122,9 @@ } ] ] - }, - "uid": "admin::transfer-token-permission" + } }, "type": "object", "environment": null, "tag": null -} \ No newline at end of file +} diff --git a/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##admin##transfer-token.json b/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##admin##transfer-token.json index 7f593d3a..6a700c88 100644 --- a/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##admin##transfer-token.json +++ b/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##admin##transfer-token.json @@ -1,6 +1,7 @@ { "key": "plugin_content_manager_configuration_content_types::admin::transfer-token", "value": { + "uid": "admin::transfer-token", "settings": { "bulkable": true, "filterable": true, @@ -175,23 +176,10 @@ "searchable": true, "sortable": true } - }, - "documentId": { - "edit": {}, - "list": { - "label": "documentId", - "searchable": true, - "sortable": true - } } }, "layouts": { - "list": [ - "id", - "name", - "description", - "accessKey" - ], + "list": ["id", "name", "description", "accessKey"], "edit": [ [ { @@ -230,10 +218,9 @@ } ] ] - }, - "uid": "admin::transfer-token" + } }, "type": "object", "environment": null, "tag": null -} \ No newline at end of file +} diff --git a/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##admin##user.json b/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##admin##user.json index c272054e..aaab3201 100644 --- a/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##admin##user.json +++ b/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##admin##user.json @@ -12,16 +12,24 @@ "defaultSortOrder": "ASC" }, "metadatas": { - "registrationToken": { + "id": { + "edit": {}, + "list": { + "label": "id", + "searchable": true, + "sortable": true + } + }, + "firstname": { "edit": { - "label": "registrationToken", + "label": "firstname", "description": "", "placeholder": "", "visible": true, "editable": true }, "list": { - "label": "registrationToken", + "label": "firstname", "searchable": true, "sortable": true } @@ -40,44 +48,44 @@ "sortable": true } }, - "preferedLanguage": { + "username": { "edit": { - "label": "preferedLanguage", + "label": "username", "description": "", "placeholder": "", "visible": true, "editable": true }, "list": { - "label": "preferedLanguage", + "label": "username", "searchable": true, "sortable": true } }, - "blocked": { + "email": { "edit": { - "label": "blocked", + "label": "email", "description": "", "placeholder": "", "visible": true, "editable": true }, "list": { - "label": "blocked", + "label": "email", "searchable": true, "sortable": true } }, - "updatedAt": { + "password": { "edit": { - "label": "updatedAt", + "label": "password", "description": "", "placeholder": "", - "visible": false, + "visible": true, "editable": true }, "list": { - "label": "updatedAt", + "label": "password", "searchable": true, "sortable": true } @@ -96,131 +104,123 @@ "sortable": true } }, - "isActive": { + "registrationToken": { "edit": { - "label": "isActive", + "label": "registrationToken", "description": "", "placeholder": "", "visible": true, "editable": true }, "list": { - "label": "isActive", + "label": "registrationToken", "searchable": true, "sortable": true } }, - "updatedBy": { + "isActive": { "edit": { - "label": "updatedBy", + "label": "isActive", "description": "", "placeholder": "", - "visible": false, - "editable": true, - "mainField": "firstname" + "visible": true, + "editable": true }, "list": { - "label": "updatedBy", + "label": "isActive", "searchable": true, "sortable": true } }, - "username": { + "roles": { "edit": { - "label": "username", + "label": "roles", "description": "", "placeholder": "", "visible": true, - "editable": true + "editable": true, + "mainField": "name" }, "list": { - "label": "username", - "searchable": true, - "sortable": true - } - }, - "id": { - "edit": {}, - "list": { - "label": "id", - "searchable": true, - "sortable": true + "label": "roles", + "searchable": false, + "sortable": false } }, - "createdAt": { + "blocked": { "edit": { - "label": "createdAt", + "label": "blocked", "description": "", "placeholder": "", - "visible": false, + "visible": true, "editable": true }, "list": { - "label": "createdAt", + "label": "blocked", "searchable": true, "sortable": true } }, - "firstname": { + "preferedLanguage": { "edit": { - "label": "firstname", + "label": "preferedLanguage", "description": "", "placeholder": "", "visible": true, "editable": true }, "list": { - "label": "firstname", + "label": "preferedLanguage", "searchable": true, "sortable": true } }, - "password": { + "createdAt": { "edit": { - "label": "password", + "label": "createdAt", "description": "", "placeholder": "", - "visible": true, + "visible": false, "editable": true }, "list": { - "label": "password", + "label": "createdAt", "searchable": true, "sortable": true } }, - "email": { + "updatedAt": { "edit": { - "label": "email", + "label": "updatedAt", "description": "", "placeholder": "", - "visible": true, + "visible": false, "editable": true }, "list": { - "label": "email", + "label": "updatedAt", "searchable": true, "sortable": true } }, - "roles": { + "createdBy": { "edit": { - "label": "roles", + "label": "createdBy", "description": "", "placeholder": "", - "visible": true, + "visible": false, "editable": true, - "mainField": "name" + "mainField": "firstname" }, "list": { - "label": "roles", - "searchable": false, - "sortable": false + "label": "createdBy", + "searchable": true, + "sortable": true } }, - "createdBy": { + "updatedBy": { "edit": { - "label": "createdBy", + "label": "updatedBy", "description": "", "placeholder": "", "visible": false, @@ -228,7 +228,7 @@ "mainField": "firstname" }, "list": { - "label": "createdBy", + "label": "updatedBy", "searchable": true, "sortable": true } diff --git a/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##api##activity-type.activity-type.json b/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##api##activity-type.activity-type.json index 9f23fbf8..043504f8 100644 --- a/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##api##activity-type.activity-type.json +++ b/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##api##activity-type.activity-type.json @@ -1,13 +1,14 @@ { "key": "plugin_content_manager_configuration_content_types::api::activity-type.activity-type", "value": { + "uid": "api::activity-type.activity-type", "settings": { "bulkable": true, "filterable": true, "searchable": true, "pageSize": 10, - "mainField": "documentId", - "defaultSortBy": "documentId", + "mainField": "name", + "defaultSortBy": "name", "defaultSortOrder": "ASC" }, "metadatas": { @@ -90,23 +91,9 @@ "searchable": true, "sortable": true } - }, - "documentId": { - "edit": {}, - "list": { - "label": "documentId", - "searchable": true, - "sortable": true - } } }, "layouts": { - "list": [ - "id", - "name", - "createdAt", - "updatedAt" - ], "edit": [ [ { @@ -114,11 +101,11 @@ "size": 6 } ] - ] - }, - "uid": "api::activity-type.activity-type" + ], + "list": ["name"] + } }, "type": "object", "environment": null, "tag": null -} \ No newline at end of file +} diff --git a/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##api##activity.activity.json b/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##api##activity.activity.json index 1e936e50..a68b4807 100644 --- a/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##api##activity.activity.json +++ b/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##api##activity.activity.json @@ -1,13 +1,14 @@ { "key": "plugin_content_manager_configuration_content_types::api::activity.activity", "value": { + "uid": "api::activity.activity", "settings": { "bulkable": true, "filterable": true, "searchable": true, "pageSize": 10, "mainField": "id", - "defaultSortBy": "documentId", + "defaultSortBy": "id", "defaultSortOrder": "ASC" }, "metadatas": { @@ -21,22 +22,22 @@ }, "type": { "edit": { - "label": "type", + "label": "Tip activitate", "description": "", "placeholder": "", "visible": true, "editable": true, - "mainField": "documentId" + "mainField": "name" }, "list": { - "label": "type", + "label": "Tip activitate", "searchable": true, "sortable": true } }, "dimension": { "edit": { - "label": "dimension", + "label": "Dimensiune", "description": "", "placeholder": "", "visible": true, @@ -44,14 +45,14 @@ "mainField": "name" }, "list": { - "label": "dimension", + "label": "Dimensiune", "searchable": true, "sortable": true } }, "startDate": { "edit": { - "label": "startDate", + "label": "Data inceput", "description": "", "placeholder": "", "visible": true, @@ -65,7 +66,7 @@ }, "notes": { "edit": { - "label": "notes", + "label": "Notițe", "description": "", "placeholder": "", "visible": true, @@ -79,7 +80,7 @@ }, "duration": { "edit": { - "label": "duration", + "label": "Durată activitate (ore)", "description": "", "placeholder": "", "visible": true, @@ -93,30 +94,30 @@ }, "mentor": { "edit": { - "label": "mentor", + "label": "Persoană resursă", "description": "", "placeholder": "", "visible": true, "editable": true, - "mainField": "username" + "mainField": "firstName" }, "list": { - "label": "mentor", + "label": "Persoană resursă", "searchable": true, "sortable": true } }, "user": { "edit": { - "label": "user", + "label": "Organizație", "description": "", "placeholder": "", "visible": true, "editable": true, - "mainField": "username" + "mainField": "ongName" }, "list": { - "label": "user", + "label": "Organizație", "searchable": true, "sortable": true } @@ -178,14 +179,6 @@ "searchable": true, "sortable": true } - }, - "documentId": { - "edit": {}, - "list": { - "label": "documentId", - "searchable": true, - "sortable": true - } } }, "layouts": { @@ -194,16 +187,18 @@ { "name": "type", "size": 6 - }, + } + ], + [ { - "name": "dimension", - "size": 6 + "name": "duration", + "size": 4 } ], [ { "name": "startDate", - "size": 4 + "size": 6 } ], [ @@ -214,8 +209,8 @@ ], [ { - "name": "duration", - "size": 4 + "name": "dimension", + "size": 6 }, { "name": "mentor", @@ -229,16 +224,10 @@ } ] ], - "list": [ - "id", - "type", - "dimension", - "startDate" - ] - }, - "uid": "api::activity.activity" + "list": ["id", "type", "dimension", "mentor", "user"] + } }, "type": "object", "environment": null, "tag": null -} \ No newline at end of file +} diff --git a/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##api##dimension.dimension.json b/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##api##dimension.dimension.json index 17df3aa6..0dc4aff5 100644 --- a/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##api##dimension.dimension.json +++ b/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##api##dimension.dimension.json @@ -1,6 +1,7 @@ { "key": "plugin_content_manager_configuration_content_types::api::dimension.dimension", "value": { + "uid": "api::dimension.dimension", "settings": { "bulkable": true, "filterable": true, @@ -83,7 +84,7 @@ "placeholder": "", "visible": true, "editable": true, - "mainField": "documentId" + "mainField": "id" }, "list": { "label": "activities", @@ -148,23 +149,10 @@ "searchable": true, "sortable": true } - }, - "documentId": { - "edit": {}, - "list": { - "label": "documentId", - "searchable": true, - "sortable": true - } } }, "layouts": { - "list": [ - "id", - "name", - "link", - "quiz" - ], + "list": ["id", "name", "link", "quiz"], "edit": [ [ { @@ -193,10 +181,9 @@ } ] ] - }, - "uid": "api::dimension.dimension" + } }, "type": "object", "environment": null, "tag": null -} \ No newline at end of file +} diff --git a/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##api##domain.domain.json b/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##api##domain.domain.json index 1deb3ae0..dbea7ac2 100644 --- a/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##api##domain.domain.json +++ b/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##api##domain.domain.json @@ -1,6 +1,7 @@ { "key": "plugin_content_manager_configuration_content_types::api::domain.domain", "value": { + "uid": "api::domain.domain", "settings": { "bulkable": true, "filterable": true, @@ -105,23 +106,9 @@ "searchable": true, "sortable": true } - }, - "documentId": { - "edit": {}, - "list": { - "label": "documentId", - "searchable": true, - "sortable": true - } } }, "layouts": { - "list": [ - "id", - "name", - "mentors", - "createdAt" - ], "edit": [ [ { @@ -133,11 +120,11 @@ "size": 6 } ] - ] - }, - "uid": "api::domain.domain" + ], + "list": ["id", "name", "mentors"] + } }, "type": "object", "environment": null, "tag": null -} \ No newline at end of file +} diff --git a/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##api##evaluation.evaluation.json b/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##api##evaluation.evaluation.json index 584d7832..05ce0815 100644 --- a/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##api##evaluation.evaluation.json +++ b/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##api##evaluation.evaluation.json @@ -1,14 +1,15 @@ { "key": "plugin_content_manager_configuration_content_types::api::evaluation.evaluation", "value": { + "uid": "api::evaluation.evaluation", "settings": { "bulkable": true, "filterable": true, "searchable": true, - "pageSize": 10, - "mainField": "documentId", - "defaultSortBy": "documentId", - "defaultSortOrder": "ASC" + "pageSize": 100, + "mainField": "id", + "defaultSortBy": "createdAt", + "defaultSortOrder": "DESC" }, "metadatas": { "id": { @@ -54,7 +55,7 @@ "placeholder": "", "visible": true, "editable": true, - "mainField": "documentId" + "mainField": "id" }, "list": { "label": "report", @@ -119,23 +120,9 @@ "searchable": true, "sortable": true } - }, - "documentId": { - "edit": {}, - "list": { - "label": "documentId", - "searchable": true, - "sortable": true - } } }, "layouts": { - "list": [ - "id", - "dimensions", - "email", - "report" - ], "edit": [ [ { @@ -153,11 +140,11 @@ "size": 6 } ] - ] - }, - "uid": "api::evaluation.evaluation" + ], + "list": ["id", "dimensions", "email", "report", "createdAt"] + } }, "type": "object", "environment": null, "tag": null -} \ No newline at end of file +} diff --git a/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##api##matrix.matrix.json b/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##api##matrix.matrix.json index 3c434c4b..0e0f2fe2 100644 --- a/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##api##matrix.matrix.json +++ b/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##api##matrix.matrix.json @@ -1,13 +1,14 @@ { "key": "plugin_content_manager_configuration_content_types::api::matrix.matrix", "value": { + "uid": "api::matrix.matrix", "settings": { "bulkable": true, "filterable": true, "searchable": true, "pageSize": 10, - "mainField": "documentId", - "defaultSortBy": "documentId", + "mainField": "id", + "defaultSortBy": "id", "defaultSortOrder": "ASC" }, "metadatas": { @@ -91,23 +92,10 @@ "searchable": true, "sortable": true } - }, - "documentId": { - "edit": {}, - "list": { - "label": "documentId", - "searchable": true, - "sortable": true - } } }, "layouts": { - "list": [ - "id", - "dimensions", - "createdAt", - "updatedAt" - ], + "list": ["id", "dimensions", "createdAt", "updatedAt"], "edit": [ [ { @@ -116,10 +104,9 @@ } ] ] - }, - "uid": "api::matrix.matrix" + } }, "type": "object", "environment": null, "tag": null -} \ No newline at end of file +} diff --git a/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##api##mentorship-request.mentorship-request.json b/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##api##mentorship-request.mentorship-request.json index afa62134..fba8f93c 100644 --- a/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##api##mentorship-request.mentorship-request.json +++ b/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##api##mentorship-request.mentorship-request.json @@ -1,13 +1,14 @@ { "key": "plugin_content_manager_configuration_content_types::api::mentorship-request.mentorship-request", "value": { + "uid": "api::mentorship-request.mentorship-request", "settings": { "bulkable": true, "filterable": true, "searchable": true, "pageSize": 10, - "mainField": "documentId", - "defaultSortBy": "documentId", + "mainField": "id", + "defaultSortBy": "id", "defaultSortOrder": "ASC" }, "metadatas": { @@ -21,30 +22,30 @@ }, "mentor": { "edit": { - "label": "mentor", + "label": "Persoană resursă", "description": "", "placeholder": "", "visible": true, "editable": true, - "mainField": "username" + "mainField": "lastName" }, "list": { - "label": "mentor", + "label": "Persoană resursă", "searchable": true, "sortable": true } }, "user": { "edit": { - "label": "user", + "label": "ONG", "description": "", "placeholder": "", "visible": true, "editable": true, - "mainField": "username" + "mainField": "ongName" }, "list": { - "label": "user", + "label": "Organizație", "searchable": true, "sortable": true } @@ -58,7 +59,7 @@ "editable": true }, "list": { - "label": "createdAt", + "label": "Data creării", "searchable": true, "sortable": true } @@ -106,23 +107,9 @@ "searchable": true, "sortable": true } - }, - "documentId": { - "edit": {}, - "list": { - "label": "documentId", - "searchable": true, - "sortable": true - } } }, "layouts": { - "list": [ - "id", - "mentor", - "user", - "createdAt" - ], "edit": [ [ { @@ -134,11 +121,11 @@ "size": 6 } ] - ] - }, - "uid": "api::mentorship-request.mentorship-request" + ], + "list": ["id", "mentor", "user", "createdAt"] + } }, "type": "object", "environment": null, "tag": null -} \ No newline at end of file +} diff --git a/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##api##program.program.json b/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##api##program.program.json index b51cff6b..5c8147cf 100644 --- a/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##api##program.program.json +++ b/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##api##program.program.json @@ -1,6 +1,7 @@ { "key": "plugin_content_manager_configuration_content_types::api::program.program", "value": { + "uid": "api::program.program", "settings": { "bulkable": true, "filterable": true, @@ -21,49 +22,49 @@ }, "name": { "edit": { - "label": "name", + "label": "Denumire program", "description": "", "placeholder": "", "visible": true, "editable": true }, "list": { - "label": "name", + "label": "Denumire program", "searchable": true, "sortable": true } }, "startDate": { "edit": { - "label": "startDate", + "label": "Data de început", "description": "", "placeholder": "", "visible": true, "editable": true }, "list": { - "label": "startDate", + "label": "Data de început", "searchable": true, "sortable": true } }, "endDate": { "edit": { - "label": "endDate", + "label": "Dată de final", "description": "", "placeholder": "", "visible": true, "editable": true }, "list": { - "label": "endDate", + "label": "Data de final", "searchable": true, "sortable": true } }, "sponsorName": { "edit": { - "label": "sponsorName", + "label": "Denumire sponsor", "description": "", "placeholder": "", "visible": true, @@ -77,12 +78,12 @@ }, "mentors": { "edit": { - "label": "mentors", + "label": "Persoane resursă", "description": "", "placeholder": "", "visible": true, "editable": true, - "mainField": "username" + "mainField": "lastName" }, "list": { "label": "mentors", @@ -92,12 +93,12 @@ }, "users": { "edit": { - "label": "users", + "label": "Organizații", "description": "", "placeholder": "", "visible": true, "editable": true, - "mainField": "username" + "mainField": "ongName" }, "list": { "label": "users", @@ -162,23 +163,9 @@ "searchable": true, "sortable": true } - }, - "documentId": { - "edit": {}, - "list": { - "label": "documentId", - "searchable": true, - "sortable": true - } } }, "layouts": { - "list": [ - "id", - "name", - "startDate", - "endDate" - ], "edit": [ [ { @@ -194,7 +181,9 @@ { "name": "endDate", "size": 4 - }, + } + ], + [ { "name": "sponsorName", "size": 6 @@ -210,11 +199,11 @@ "size": 6 } ] - ] - }, - "uid": "api::program.program" + ], + "list": ["id", "name", "startDate", "endDate"] + } }, "type": "object", "environment": null, "tag": null -} \ No newline at end of file +} diff --git a/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##api##report.report.json b/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##api##report.report.json index afe88a94..3652b75d 100644 --- a/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##api##report.report.json +++ b/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##api##report.report.json @@ -1,14 +1,15 @@ { "key": "plugin_content_manager_configuration_content_types::api::report.report", "value": { + "uid": "api::report.report", "settings": { "bulkable": true, "filterable": true, "searchable": true, "pageSize": 10, - "mainField": "documentId", - "defaultSortBy": "documentId", - "defaultSortOrder": "ASC" + "mainField": "id", + "defaultSortBy": "id", + "defaultSortOrder": "DESC" }, "metadatas": { "id": { @@ -26,10 +27,10 @@ "placeholder": "", "visible": true, "editable": true, - "mainField": "documentId" + "mainField": "id" }, "list": { - "label": "evaluations", + "label": "EVALUARE", "searchable": false, "sortable": false } @@ -43,7 +44,7 @@ "editable": true }, "list": { - "label": "deadline", + "label": "DEADLINE", "searchable": true, "sortable": true } @@ -57,22 +58,22 @@ "editable": true }, "list": { - "label": "finished", + "label": "FINALIZATĂ", "searchable": true, "sortable": true } }, "user": { "edit": { - "label": "user", + "label": "ORGANIZAȚIE", "description": "", "placeholder": "", "visible": true, "editable": true, - "mainField": "username" + "mainField": "ongName" }, "list": { - "label": "user", + "label": "ORGANIZAȚIE", "searchable": true, "sortable": true } @@ -86,7 +87,7 @@ "editable": true }, "list": { - "label": "createdAt", + "label": "CREATĂ LA DATA", "searchable": true, "sortable": true } @@ -134,23 +135,9 @@ "searchable": true, "sortable": true } - }, - "documentId": { - "edit": {}, - "list": { - "label": "documentId", - "searchable": true, - "sortable": true - } } }, "layouts": { - "list": [ - "id", - "evaluations", - "deadline", - "finished" - ], "edit": [ [ { @@ -172,11 +159,11 @@ "size": 6 } ] - ] - }, - "uid": "api::report.report" + ], + "list": ["id", "evaluations", "createdAt", "user", "deadline", "finished"] + } }, "type": "object", "environment": null, "tag": null -} \ No newline at end of file +} diff --git a/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##plugin##content-releases.release-action.json b/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##plugin##content-releases.release-action.json deleted file mode 100644 index ef448553..00000000 --- a/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##plugin##content-releases.release-action.json +++ /dev/null @@ -1,201 +0,0 @@ -{ - "key": "plugin_content_manager_configuration_content_types::plugin::content-releases.release-action", - "value": { - "settings": { - "bulkable": true, - "filterable": true, - "searchable": true, - "pageSize": 10, - "mainField": "contentType", - "defaultSortBy": "contentType", - "defaultSortOrder": "ASC" - }, - "metadatas": { - "id": { - "edit": {}, - "list": { - "label": "id", - "searchable": true, - "sortable": true - } - }, - "type": { - "edit": { - "label": "type", - "description": "", - "placeholder": "", - "visible": true, - "editable": true - }, - "list": { - "label": "type", - "searchable": true, - "sortable": true - } - }, - "contentType": { - "edit": { - "label": "contentType", - "description": "", - "placeholder": "", - "visible": true, - "editable": true - }, - "list": { - "label": "contentType", - "searchable": true, - "sortable": true - } - }, - "entryDocumentId": { - "edit": { - "label": "entryDocumentId", - "description": "", - "placeholder": "", - "visible": true, - "editable": true - }, - "list": { - "label": "entryDocumentId", - "searchable": true, - "sortable": true - } - }, - "release": { - "edit": { - "label": "release", - "description": "", - "placeholder": "", - "visible": true, - "editable": true, - "mainField": "name" - }, - "list": { - "label": "release", - "searchable": true, - "sortable": true - } - }, - "isEntryValid": { - "edit": { - "label": "isEntryValid", - "description": "", - "placeholder": "", - "visible": true, - "editable": true - }, - "list": { - "label": "isEntryValid", - "searchable": true, - "sortable": true - } - }, - "createdAt": { - "edit": { - "label": "createdAt", - "description": "", - "placeholder": "", - "visible": false, - "editable": true - }, - "list": { - "label": "createdAt", - "searchable": true, - "sortable": true - } - }, - "updatedAt": { - "edit": { - "label": "updatedAt", - "description": "", - "placeholder": "", - "visible": false, - "editable": true - }, - "list": { - "label": "updatedAt", - "searchable": true, - "sortable": true - } - }, - "createdBy": { - "edit": { - "label": "createdBy", - "description": "", - "placeholder": "", - "visible": false, - "editable": true, - "mainField": "firstname" - }, - "list": { - "label": "createdBy", - "searchable": true, - "sortable": true - } - }, - "updatedBy": { - "edit": { - "label": "updatedBy", - "description": "", - "placeholder": "", - "visible": false, - "editable": true, - "mainField": "firstname" - }, - "list": { - "label": "updatedBy", - "searchable": true, - "sortable": true - } - }, - "documentId": { - "edit": {}, - "list": { - "label": "documentId", - "searchable": true, - "sortable": true - } - } - }, - "layouts": { - "list": [ - "id", - "type", - "contentType", - "entryDocumentId" - ], - "edit": [ - [ - { - "name": "type", - "size": 6 - }, - { - "name": "contentType", - "size": 6 - } - ], - [ - { - "name": "entryDocumentId", - "size": 6 - }, - { - "name": "release", - "size": 6 - } - ], - [ - { - "name": "isEntryValid", - "size": 4 - } - ] - ] - }, - "uid": "plugin::content-releases.release-action" - }, - "type": "object", - "environment": null, - "tag": null -} \ No newline at end of file diff --git a/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##plugin##content-releases.release.json b/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##plugin##content-releases.release.json deleted file mode 100644 index d8e76e7a..00000000 --- a/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##plugin##content-releases.release.json +++ /dev/null @@ -1,219 +0,0 @@ -{ - "key": "plugin_content_manager_configuration_content_types::plugin::content-releases.release", - "value": { - "settings": { - "bulkable": true, - "filterable": true, - "searchable": true, - "pageSize": 10, - "mainField": "name", - "defaultSortBy": "name", - "defaultSortOrder": "ASC" - }, - "metadatas": { - "id": { - "edit": {}, - "list": { - "label": "id", - "searchable": true, - "sortable": true - } - }, - "name": { - "edit": { - "label": "name", - "description": "", - "placeholder": "", - "visible": true, - "editable": true - }, - "list": { - "label": "name", - "searchable": true, - "sortable": true - } - }, - "releasedAt": { - "edit": { - "label": "releasedAt", - "description": "", - "placeholder": "", - "visible": true, - "editable": true - }, - "list": { - "label": "releasedAt", - "searchable": true, - "sortable": true - } - }, - "scheduledAt": { - "edit": { - "label": "scheduledAt", - "description": "", - "placeholder": "", - "visible": true, - "editable": true - }, - "list": { - "label": "scheduledAt", - "searchable": true, - "sortable": true - } - }, - "timezone": { - "edit": { - "label": "timezone", - "description": "", - "placeholder": "", - "visible": true, - "editable": true - }, - "list": { - "label": "timezone", - "searchable": true, - "sortable": true - } - }, - "status": { - "edit": { - "label": "status", - "description": "", - "placeholder": "", - "visible": true, - "editable": true - }, - "list": { - "label": "status", - "searchable": true, - "sortable": true - } - }, - "actions": { - "edit": { - "label": "actions", - "description": "", - "placeholder": "", - "visible": true, - "editable": true, - "mainField": "contentType" - }, - "list": { - "label": "actions", - "searchable": false, - "sortable": false - } - }, - "createdAt": { - "edit": { - "label": "createdAt", - "description": "", - "placeholder": "", - "visible": false, - "editable": true - }, - "list": { - "label": "createdAt", - "searchable": true, - "sortable": true - } - }, - "updatedAt": { - "edit": { - "label": "updatedAt", - "description": "", - "placeholder": "", - "visible": false, - "editable": true - }, - "list": { - "label": "updatedAt", - "searchable": true, - "sortable": true - } - }, - "createdBy": { - "edit": { - "label": "createdBy", - "description": "", - "placeholder": "", - "visible": false, - "editable": true, - "mainField": "firstname" - }, - "list": { - "label": "createdBy", - "searchable": true, - "sortable": true - } - }, - "updatedBy": { - "edit": { - "label": "updatedBy", - "description": "", - "placeholder": "", - "visible": false, - "editable": true, - "mainField": "firstname" - }, - "list": { - "label": "updatedBy", - "searchable": true, - "sortable": true - } - }, - "documentId": { - "edit": {}, - "list": { - "label": "documentId", - "searchable": true, - "sortable": true - } - } - }, - "layouts": { - "list": [ - "id", - "name", - "releasedAt", - "scheduledAt" - ], - "edit": [ - [ - { - "name": "name", - "size": 6 - }, - { - "name": "releasedAt", - "size": 6 - } - ], - [ - { - "name": "scheduledAt", - "size": 6 - }, - { - "name": "timezone", - "size": 6 - } - ], - [ - { - "name": "status", - "size": 6 - }, - { - "name": "actions", - "size": 6 - } - ] - ] - }, - "uid": "plugin::content-releases.release" - }, - "type": "object", - "environment": null, - "tag": null -} \ No newline at end of file diff --git a/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##plugin##email-designer-5.email-designer-template.json b/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##plugin##email-designer.email-template.json similarity index 91% rename from server2/config/sync/core-store.plugin_content_manager_configuration_content_types##plugin##email-designer-5.email-designer-template.json rename to server2/config/sync/core-store.plugin_content_manager_configuration_content_types##plugin##email-designer.email-template.json index 46e23e96..5225436e 100644 --- a/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##plugin##email-designer-5.email-designer-template.json +++ b/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##plugin##email-designer.email-template.json @@ -1,6 +1,7 @@ { - "key": "plugin_content_manager_configuration_content_types::plugin::email-designer-5.email-designer-template", + "key": "plugin_content_manager_configuration_content_types::plugin::email-designer.email-template", "value": { + "uid": "plugin::email-designer.email-template", "settings": { "bulkable": true, "filterable": true, @@ -103,6 +104,20 @@ "sortable": true } }, + "enabled": { + "edit": { + "label": "enabled", + "description": "", + "placeholder": "", + "visible": true, + "editable": true + }, + "list": { + "label": "enabled", + "searchable": true, + "sortable": true + } + }, "tags": { "edit": { "label": "tags", @@ -174,23 +189,10 @@ "searchable": true, "sortable": true } - }, - "documentId": { - "edit": {}, - "list": { - "label": "documentId", - "searchable": true, - "sortable": true - } } }, "layouts": { - "list": [ - "id", - "templateReferenceId", - "name", - "subject" - ], + "list": ["id", "templateReferenceId", "name", "subject"], "edit": [ [ { @@ -224,6 +226,12 @@ "size": 6 } ], + [ + { + "name": "enabled", + "size": 4 + } + ], [ { "name": "tags", @@ -231,10 +239,9 @@ } ] ] - }, - "uid": "plugin::email-designer-5.email-designer-template" + } }, "type": "object", "environment": null, "tag": null -} \ No newline at end of file +} diff --git a/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##plugin##i18n.locale.json b/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##plugin##i18n.locale.json index 2ebf323e..617fa5b5 100644 --- a/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##plugin##i18n.locale.json +++ b/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##plugin##i18n.locale.json @@ -1,6 +1,7 @@ { "key": "plugin_content_manager_configuration_content_types::plugin::i18n.locale", "value": { + "uid": "plugin::i18n.locale", "settings": { "bulkable": true, "filterable": true, @@ -104,23 +105,10 @@ "searchable": true, "sortable": true } - }, - "documentId": { - "edit": {}, - "list": { - "label": "documentId", - "searchable": true, - "sortable": true - } } }, "layouts": { - "list": [ - "id", - "name", - "code", - "createdAt" - ], + "list": ["id", "name", "code", "createdAt"], "edit": [ [ { @@ -133,10 +121,9 @@ } ] ] - }, - "uid": "plugin::i18n.locale" + } }, "type": "object", "environment": null, "tag": null -} \ No newline at end of file +} diff --git a/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##plugin##review-workflows.workflow-stage.json b/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##plugin##review-workflows.workflow-stage.json deleted file mode 100644 index 2d0b6c28..00000000 --- a/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##plugin##review-workflows.workflow-stage.json +++ /dev/null @@ -1,182 +0,0 @@ -{ - "key": "plugin_content_manager_configuration_content_types::plugin::review-workflows.workflow-stage", - "value": { - "settings": { - "bulkable": true, - "filterable": true, - "searchable": true, - "pageSize": 10, - "mainField": "name", - "defaultSortBy": "name", - "defaultSortOrder": "ASC" - }, - "metadatas": { - "id": { - "edit": {}, - "list": { - "label": "id", - "searchable": true, - "sortable": true - } - }, - "name": { - "edit": { - "label": "name", - "description": "", - "placeholder": "", - "visible": true, - "editable": true - }, - "list": { - "label": "name", - "searchable": true, - "sortable": true - } - }, - "color": { - "edit": { - "label": "color", - "description": "", - "placeholder": "", - "visible": true, - "editable": true - }, - "list": { - "label": "color", - "searchable": true, - "sortable": true - } - }, - "workflow": { - "edit": { - "label": "workflow", - "description": "", - "placeholder": "", - "visible": true, - "editable": true, - "mainField": "name" - }, - "list": { - "label": "workflow", - "searchable": true, - "sortable": true - } - }, - "permissions": { - "edit": { - "label": "permissions", - "description": "", - "placeholder": "", - "visible": true, - "editable": true, - "mainField": "action" - }, - "list": { - "label": "permissions", - "searchable": false, - "sortable": false - } - }, - "createdAt": { - "edit": { - "label": "createdAt", - "description": "", - "placeholder": "", - "visible": false, - "editable": true - }, - "list": { - "label": "createdAt", - "searchable": true, - "sortable": true - } - }, - "updatedAt": { - "edit": { - "label": "updatedAt", - "description": "", - "placeholder": "", - "visible": false, - "editable": true - }, - "list": { - "label": "updatedAt", - "searchable": true, - "sortable": true - } - }, - "createdBy": { - "edit": { - "label": "createdBy", - "description": "", - "placeholder": "", - "visible": false, - "editable": true, - "mainField": "firstname" - }, - "list": { - "label": "createdBy", - "searchable": true, - "sortable": true - } - }, - "updatedBy": { - "edit": { - "label": "updatedBy", - "description": "", - "placeholder": "", - "visible": false, - "editable": true, - "mainField": "firstname" - }, - "list": { - "label": "updatedBy", - "searchable": true, - "sortable": true - } - }, - "documentId": { - "edit": {}, - "list": { - "label": "documentId", - "searchable": true, - "sortable": true - } - } - }, - "layouts": { - "list": [ - "id", - "name", - "color", - "workflow" - ], - "edit": [ - [ - { - "name": "name", - "size": 6 - }, - { - "name": "color", - "size": 6 - } - ], - [ - { - "name": "workflow", - "size": 6 - }, - { - "name": "permissions", - "size": 6 - } - ] - ] - }, - "uid": "plugin::review-workflows.workflow-stage" - }, - "type": "object", - "environment": null, - "tag": null -} \ No newline at end of file diff --git a/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##plugin##review-workflows.workflow.json b/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##plugin##review-workflows.workflow.json deleted file mode 100644 index ea19020b..00000000 --- a/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##plugin##review-workflows.workflow.json +++ /dev/null @@ -1,184 +0,0 @@ -{ - "key": "plugin_content_manager_configuration_content_types::plugin::review-workflows.workflow", - "value": { - "settings": { - "bulkable": true, - "filterable": true, - "searchable": true, - "pageSize": 10, - "mainField": "name", - "defaultSortBy": "name", - "defaultSortOrder": "ASC" - }, - "metadatas": { - "id": { - "edit": {}, - "list": { - "label": "id", - "searchable": true, - "sortable": true - } - }, - "name": { - "edit": { - "label": "name", - "description": "", - "placeholder": "", - "visible": true, - "editable": true - }, - "list": { - "label": "name", - "searchable": true, - "sortable": true - } - }, - "stages": { - "edit": { - "label": "stages", - "description": "", - "placeholder": "", - "visible": true, - "editable": true, - "mainField": "name" - }, - "list": { - "label": "stages", - "searchable": false, - "sortable": false - } - }, - "stageRequiredToPublish": { - "edit": { - "label": "stageRequiredToPublish", - "description": "", - "placeholder": "", - "visible": true, - "editable": true, - "mainField": "name" - }, - "list": { - "label": "stageRequiredToPublish", - "searchable": true, - "sortable": true - } - }, - "contentTypes": { - "edit": { - "label": "contentTypes", - "description": "", - "placeholder": "", - "visible": true, - "editable": true - }, - "list": { - "label": "contentTypes", - "searchable": false, - "sortable": false - } - }, - "createdAt": { - "edit": { - "label": "createdAt", - "description": "", - "placeholder": "", - "visible": false, - "editable": true - }, - "list": { - "label": "createdAt", - "searchable": true, - "sortable": true - } - }, - "updatedAt": { - "edit": { - "label": "updatedAt", - "description": "", - "placeholder": "", - "visible": false, - "editable": true - }, - "list": { - "label": "updatedAt", - "searchable": true, - "sortable": true - } - }, - "createdBy": { - "edit": { - "label": "createdBy", - "description": "", - "placeholder": "", - "visible": false, - "editable": true, - "mainField": "firstname" - }, - "list": { - "label": "createdBy", - "searchable": true, - "sortable": true - } - }, - "updatedBy": { - "edit": { - "label": "updatedBy", - "description": "", - "placeholder": "", - "visible": false, - "editable": true, - "mainField": "firstname" - }, - "list": { - "label": "updatedBy", - "searchable": true, - "sortable": true - } - }, - "documentId": { - "edit": {}, - "list": { - "label": "documentId", - "searchable": true, - "sortable": true - } - } - }, - "layouts": { - "list": [ - "id", - "name", - "stages", - "stageRequiredToPublish" - ], - "edit": [ - [ - { - "name": "name", - "size": 6 - }, - { - "name": "stages", - "size": 6 - } - ], - [ - { - "name": "stageRequiredToPublish", - "size": 6 - } - ], - [ - { - "name": "contentTypes", - "size": 12 - } - ] - ] - }, - "uid": "plugin::review-workflows.workflow" - }, - "type": "object", - "environment": null, - "tag": null -} \ No newline at end of file diff --git a/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##plugin##upload.file.json b/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##plugin##upload.file.json index f425a816..168c8f03 100644 --- a/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##plugin##upload.file.json +++ b/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##plugin##upload.file.json @@ -1,6 +1,7 @@ { "key": "plugin_content_manager_configuration_content_types::plugin::upload.file", "value": { + "uid": "plugin::upload.file", "settings": { "bulkable": true, "filterable": true, @@ -301,23 +302,10 @@ "searchable": true, "sortable": true } - }, - "documentId": { - "edit": {}, - "list": { - "label": "documentId", - "searchable": true, - "sortable": true - } } }, "layouts": { - "list": [ - "id", - "name", - "alternativeText", - "caption" - ], + "list": ["id", "name", "alternativeText", "caption"], "edit": [ [ { @@ -404,10 +392,9 @@ } ] ] - }, - "uid": "plugin::upload.file" + } }, "type": "object", "environment": null, "tag": null -} \ No newline at end of file +} diff --git a/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##plugin##upload.folder.json b/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##plugin##upload.folder.json index ab3b3cab..7a0d1d83 100644 --- a/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##plugin##upload.folder.json +++ b/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##plugin##upload.folder.json @@ -1,6 +1,7 @@ { "key": "plugin_content_manager_configuration_content_types::plugin::upload.folder", "value": { + "uid": "plugin::upload.folder", "settings": { "bulkable": true, "filterable": true, @@ -163,23 +164,10 @@ "searchable": true, "sortable": true } - }, - "documentId": { - "edit": {}, - "list": { - "label": "documentId", - "searchable": true, - "sortable": true - } } }, "layouts": { - "list": [ - "id", - "name", - "pathId", - "parent" - ], + "list": ["id", "name", "pathId", "parent"], "edit": [ [ { @@ -212,10 +200,9 @@ } ] ] - }, - "uid": "plugin::upload.folder" + } }, "type": "object", "environment": null, "tag": null -} \ No newline at end of file +} diff --git a/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##plugin##users-permissions.permission.json b/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##plugin##users-permissions.permission.json index 860c4190..abb849e9 100644 --- a/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##plugin##users-permissions.permission.json +++ b/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##plugin##users-permissions.permission.json @@ -1,6 +1,7 @@ { "key": "plugin_content_manager_configuration_content_types::plugin::users-permissions.permission", "value": { + "uid": "plugin::users-permissions.permission", "settings": { "bulkable": true, "filterable": true, @@ -105,23 +106,10 @@ "searchable": true, "sortable": true } - }, - "documentId": { - "edit": {}, - "list": { - "label": "documentId", - "searchable": true, - "sortable": true - } } }, "layouts": { - "list": [ - "id", - "action", - "role", - "createdAt" - ], + "list": ["id", "action", "role", "createdAt"], "edit": [ [ { @@ -134,10 +122,9 @@ } ] ] - }, - "uid": "plugin::users-permissions.permission" + } }, "type": "object", "environment": null, "tag": null -} \ No newline at end of file +} diff --git a/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##plugin##users-permissions.role.json b/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##plugin##users-permissions.role.json index a65b545c..b06d50c9 100644 --- a/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##plugin##users-permissions.role.json +++ b/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##plugin##users-permissions.role.json @@ -1,6 +1,7 @@ { "key": "plugin_content_manager_configuration_content_types::plugin::users-permissions.role", "value": { + "uid": "plugin::users-permissions.role", "settings": { "bulkable": true, "filterable": true, @@ -148,23 +149,10 @@ "searchable": true, "sortable": true } - }, - "documentId": { - "edit": {}, - "list": { - "label": "documentId", - "searchable": true, - "sortable": true - } } }, "layouts": { - "list": [ - "id", - "name", - "description", - "type" - ], + "list": ["id", "name", "description", "type"], "edit": [ [ { @@ -193,10 +181,9 @@ } ] ] - }, - "uid": "plugin::users-permissions.role" + } }, "type": "object", "environment": null, "tag": null -} \ No newline at end of file +} diff --git a/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##plugin##users-permissions.user.json b/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##plugin##users-permissions.user.json index 40229670..d61eafbc 100644 --- a/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##plugin##users-permissions.user.json +++ b/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##plugin##users-permissions.user.json @@ -1,14 +1,15 @@ { "key": "plugin_content_manager_configuration_content_types::plugin::users-permissions.user", "value": { + "uid": "plugin::users-permissions.user", "settings": { "bulkable": true, "filterable": true, "searchable": true, - "pageSize": 10, + "pageSize": 100, "mainField": "username", - "defaultSortBy": "username", - "defaultSortOrder": "ASC" + "defaultSortBy": "createdAt", + "defaultSortOrder": "DESC" }, "metadatas": { "id": { @@ -21,7 +22,7 @@ }, "username": { "edit": { - "label": "username", + "label": "Username", "description": "", "placeholder": "", "visible": true, @@ -35,14 +36,14 @@ }, "email": { "edit": { - "label": "email", + "label": "Adresa de email", "description": "", "placeholder": "", "visible": true, "editable": true }, "list": { - "label": "email", + "label": "Adresa de email", "searchable": true, "sortable": true } @@ -52,7 +53,7 @@ "label": "provider", "description": "", "placeholder": "", - "visible": false, + "visible": true, "editable": true }, "list": { @@ -80,7 +81,7 @@ "label": "resetPasswordToken", "description": "", "placeholder": "", - "visible": false, + "visible": true, "editable": true }, "list": { @@ -94,7 +95,7 @@ "label": "confirmationToken", "description": "", "placeholder": "", - "visible": false, + "visible": true, "editable": true }, "list": { @@ -147,7 +148,7 @@ }, "role": { "edit": { - "label": "role", + "label": "Rol", "description": "", "placeholder": "", "visible": true, @@ -155,7 +156,7 @@ "mainField": "name" }, "list": { - "label": "role", + "label": "Rol", "searchable": true, "sortable": true } @@ -176,21 +177,21 @@ }, "ongName": { "edit": { - "label": "ongName", + "label": "Denumire organizație", "description": "", "placeholder": "", "visible": true, "editable": true }, "list": { - "label": "ongName", + "label": "Organizatie", "searchable": true, "sortable": true } }, "ongIdentificationNumber": { "edit": { - "label": "ongIdentificationNumber", + "label": "CUI Organizație", "description": "", "placeholder": "", "visible": true, @@ -204,7 +205,7 @@ }, "county": { "edit": { - "label": "county", + "label": "Județ", "description": "", "placeholder": "", "visible": true, @@ -218,7 +219,7 @@ }, "city": { "edit": { - "label": "city", + "label": "Oraș", "description": "", "placeholder": "", "visible": true, @@ -232,7 +233,7 @@ }, "phone": { "edit": { - "label": "phone", + "label": "Telefon", "description": "", "placeholder": "", "visible": true, @@ -246,7 +247,7 @@ }, "website": { "edit": { - "label": "website", + "label": "Website", "description": "", "placeholder": "", "visible": true, @@ -274,7 +275,7 @@ }, "logo": { "edit": { - "label": "logo", + "label": "Logo", "description": "", "placeholder": "", "visible": true, @@ -288,7 +289,7 @@ }, "description": { "edit": { - "label": "description", + "label": "Descriere", "description": "", "placeholder": "", "visible": true, @@ -307,7 +308,7 @@ "placeholder": "", "visible": true, "editable": true, - "mainField": "documentId" + "mainField": "id" }, "list": { "label": "reports", @@ -317,7 +318,7 @@ }, "contactFirstName": { "edit": { - "label": "contactFirstName", + "label": "Prenume persoană de contact", "description": "", "placeholder": "", "visible": true, @@ -331,7 +332,7 @@ }, "contactLastName": { "edit": { - "label": "contactLastName", + "label": "Nume persoană de contact", "description": "", "placeholder": "", "visible": true, @@ -345,7 +346,7 @@ }, "contactEmail": { "edit": { - "label": "contactEmail", + "label": "Email persoană de contact", "description": "", "placeholder": "", "visible": true, @@ -359,7 +360,7 @@ }, "contactPhone": { "edit": { - "label": "contactPhone", + "label": "Telefon persoană de contact", "description": "", "placeholder": "", "visible": true, @@ -373,7 +374,7 @@ }, "accountFacebook": { "edit": { - "label": "accountFacebook", + "label": "Pagină Facebook", "description": "", "placeholder": "", "visible": true, @@ -387,7 +388,7 @@ }, "accountTwitter": { "edit": { - "label": "accountTwitter", + "label": "Pagină Twitter", "description": "", "placeholder": "", "visible": true, @@ -401,7 +402,7 @@ }, "accountTiktok": { "edit": { - "label": "accountTiktok", + "label": "Pagină Tiktok", "description": "", "placeholder": "", "visible": true, @@ -415,7 +416,7 @@ }, "accountInstagram": { "edit": { - "label": "accountInstagram", + "label": "Pagină Instagram", "description": "", "placeholder": "", "visible": true, @@ -429,7 +430,7 @@ }, "accountLinkedin": { "edit": { - "label": "accountLinkedin", + "label": "Pagină Linkedin", "description": "", "placeholder": "", "visible": true, @@ -443,7 +444,7 @@ }, "domains": { "edit": { - "label": "domains", + "label": "Domenii de activitate", "description": "", "placeholder": "", "visible": true, @@ -473,7 +474,7 @@ }, "dimensions": { "edit": { - "label": "dimensions", + "label": "Dimensiuni", "description": "", "placeholder": "", "visible": true, @@ -578,7 +579,7 @@ "placeholder": "", "visible": true, "editable": true, - "mainField": "documentId" + "mainField": "id" }, "list": { "label": "mentorActivities", @@ -593,7 +594,7 @@ "placeholder": "", "visible": true, "editable": true, - "mainField": "documentId" + "mainField": "id" }, "list": { "label": "userActivities", @@ -608,7 +609,7 @@ "placeholder": "", "visible": true, "editable": true, - "mainField": "documentId" + "mainField": "id" }, "list": { "label": "mentorSessions", @@ -623,7 +624,7 @@ "placeholder": "", "visible": true, "editable": true, - "mainField": "documentId" + "mainField": "id" }, "list": { "label": "userSessions", @@ -688,121 +689,117 @@ "searchable": true, "sortable": true } - }, - "documentId": { - "edit": {}, - "list": { - "label": "documentId", - "searchable": true, - "sortable": true - } } }, "layouts": { - "list": [ - "id", - "username", - "email", - "registrationToken" - ], "edit": [ [ { - "name": "username", + "name": "role", "size": 6 }, { - "name": "email", + "name": "domains", "size": 6 } ], [ { - "name": "password", + "name": "ongName", "size": 6 }, { - "name": "registrationToken", + "name": "ongIdentificationNumber", "size": 6 } ], [ { - "name": "confirmed", - "size": 4 + "name": "email", + "size": 6 }, { - "name": "blocked", - "size": 4 + "name": "username", + "size": 6 } ], [ { - "name": "role", + "name": "county", "size": 6 }, { - "name": "avatar", + "name": "city", "size": 6 } ], [ { - "name": "ongName", + "name": "phone", "size": 6 }, { - "name": "ongIdentificationNumber", + "name": "website", "size": 6 } ], [ { - "name": "county", + "name": "avatar", "size": 6 - }, + } + ], + [ { - "name": "city", + "name": "provider", "size": 6 } ], [ { - "name": "phone", + "name": "password", "size": 6 - }, + } + ], + [ { - "name": "website", + "name": "confirmationToken", "size": 6 } ], [ { - "name": "keywords", - "size": 6 + "name": "confirmed", + "size": 4 }, { - "name": "logo", + "name": "blocked", + "size": 4 + } + ], + [ + { + "name": "keywords", "size": 6 } ], [ { - "name": "description", + "name": "logo", "size": 6 }, { - "name": "reports", + "name": "description", "size": 6 } ], [ { - "name": "contactFirstName", + "name": "contactLastName", "size": 6 }, { - "name": "contactLastName", + "name": "contactFirstName", "size": 6 } ], @@ -818,39 +815,47 @@ ], [ { - "name": "accountFacebook", + "name": "reports", "size": 6 - }, + } + ], + [ { - "name": "accountTwitter", + "name": "accountFacebook", "size": 6 } ], [ { - "name": "accountTiktok", + "name": "accountTwitter", "size": 6 }, { - "name": "accountInstagram", + "name": "accountTiktok", "size": 6 } ], [ { - "name": "accountLinkedin", + "name": "accountInstagram", "size": 6 }, { - "name": "domains", + "name": "accountLinkedin", "size": 6 } ], [ { - "name": "programs", + "name": "registrationToken", "size": 6 }, + { + "name": "programs", + "size": 6 + } + ], + [ { "name": "dimensions", "size": 6 @@ -906,11 +911,11 @@ "size": 6 } ] - ] - }, - "uid": "plugin::users-permissions.user" + ], + "list": ["id", "ongName", "avatar", "username", "email", "role"] + } }, "type": "object", "environment": null, "tag": null -} \ No newline at end of file +} diff --git a/server2/config/sync/core-store.plugin_i18n_default_locale.json b/server2/config/sync/core-store.plugin_i18n_default_locale.json index 51c490e5..ec7d82d9 100644 --- a/server2/config/sync/core-store.plugin_i18n_default_locale.json +++ b/server2/config/sync/core-store.plugin_i18n_default_locale.json @@ -4,4 +4,4 @@ "type": "string", "environment": null, "tag": null -} \ No newline at end of file +} diff --git a/server2/config/sync/core-store.plugin_upload_api-folder.json b/server2/config/sync/core-store.plugin_upload_api-folder.json new file mode 100644 index 00000000..7358d138 --- /dev/null +++ b/server2/config/sync/core-store.plugin_upload_api-folder.json @@ -0,0 +1,9 @@ +{ + "key": "plugin_upload_api-folder", + "value": { + "id": 1 + }, + "type": "object", + "environment": null, + "tag": null +} diff --git a/server2/config/sync/core-store.plugin_upload_settings.json b/server2/config/sync/core-store.plugin_upload_settings.json index 3285174d..617c140a 100644 --- a/server2/config/sync/core-store.plugin_upload_settings.json +++ b/server2/config/sync/core-store.plugin_upload_settings.json @@ -8,4 +8,4 @@ "type": "object", "environment": null, "tag": null -} \ No newline at end of file +} diff --git a/server2/config/sync/core-store.plugin_upload_view_configuration.json b/server2/config/sync/core-store.plugin_upload_view_configuration.json index 9637f39c..c084e5be 100644 --- a/server2/config/sync/core-store.plugin_upload_view_configuration.json +++ b/server2/config/sync/core-store.plugin_upload_view_configuration.json @@ -7,4 +7,4 @@ "type": "object", "environment": null, "tag": null -} \ No newline at end of file +} diff --git a/server2/config/sync/core-store.plugin_users-permissions_advanced.json b/server2/config/sync/core-store.plugin_users-permissions_advanced.json index 74368cd1..c49e625a 100644 --- a/server2/config/sync/core-store.plugin_users-permissions_advanced.json +++ b/server2/config/sync/core-store.plugin_users-permissions_advanced.json @@ -11,4 +11,4 @@ "type": "object", "environment": null, "tag": null -} \ No newline at end of file +} diff --git a/server2/config/sync/core-store.plugin_users-permissions_email.json b/server2/config/sync/core-store.plugin_users-permissions_email.json index a8ebbe2d..f1759792 100644 --- a/server2/config/sync/core-store.plugin_users-permissions_email.json +++ b/server2/config/sync/core-store.plugin_users-permissions_email.json @@ -7,11 +7,192 @@ "options": { "from": { "name": "Administration Panel", - "email": "no-reply@strapi.io" + "email": "no-reply@crestem.ong" }, "response_email": "", - "object": "Reset password", - "message": "

We heard that you lost your password. Sorry about that!

\n\n

But don’t worry! You can use the following link to reset your password:

\n

<%= URL %>?code=<%= TOKEN %>

\n\n

Thanks.

" + "object": "Resetare parolă - Acțiune necesară pentru contul tău", + "message": "\n\n\n\n \n \n \n \n \n \n \n \n \n\n\n\n\n \n \n \n \n \n \n \n \n
\n \n \n\n
\n
\n
\n \n \n\n
\n
\n
\n \n\n \n \n \n \n \n
\n \n\n \n \n \n
\n \n \"\"\n \n
\n\n
\n\n\n \n \n \n \n \n
\n \n
\n

Bună,

\n

 

\n

Sperăm că acest mesaj te găsește în cea mai bună stare. Am primit o solicitare de esetare a parolei pentru contul tău și suntem aici pentru a te ajuta să-ți recuperezi accesul.

\n

Pentru a-ți reseta parola, te rugăm să urmezi pașii de mai jos:

\n

 

\n
    \n
  1. Accesează pagina noastră de resetare a parolei: https://app.crestem.ong/reset-password?code=<%= TOKEN %>
  2. \n
  3. Vei fi direcționat către pagina de resetare a parolei.
  4. \n
  5. Completează câmpurile obligatorii cu informațiile tale personale pentru a verifica identitatea ta în siguranță.
  6. \n
  7. După ce ai furnizat informațiile cerute, vei primi un email de confirmare cu instrucțiuni suplimentare.
  8. \n
  9. Verifică adresa ta de email și urmează instrucțiunile pentru a-ți alege o nouă parolă.
  10. \n
  11. Te rugăm să alegi o parolă sigură, care să includă caractere alfanumerice și să fie diferită de cele utilizate anterior.
  12. \n
  13. După ce ai introdus parola nouă, vei putea accesa contul tău utilizând aceasta.
  14. \n
\n

Dacă nu ai solicitat resetarea parolei, te rugăm să ignori acest mesaj. Asigură-te că parola ta rămâne confidențială și nu o dezvălui nimănui.

\n

Dacă întâmpini orice dificultăți în procesul de resetare a parolei sau ai întrebări suplimentare, nu ezita să ne contactezi. Echipa noastră de suport va fi bucuroasă să te ajute.

\n

 

\n

Îți mulțumim pentru înțelegere și pentru răbdarea ta în această situație nefericită. Ne străduim mereu să-ți oferim cea mai bună experiență și să asigurăm siguranța contului tău.

\n

 

\n

O zi frumoasă!

\n

Echipa Creștem.ONG

\n
\n\n
\n\n
\n
\n
\n\n \n
\n
\n
\n\n\n \n
\n \n \n\n\n\n" + }, + "design": { + "counters": { + "u_row": 3, + "u_content_text": 1, + "u_content_image": 2, + "u_column": 3 + }, + "body": { + "rows": [ + { + "cells": [ + 1 + ], + "columns": [ + { + "contents": [ + { + "type": "image", + "values": { + "containerPadding": "10px", + "anchor": "", + "src": { + "url": "https://app.crestem.ong/assets/logo-1954d003.png", + "width": 1394, + "height": 638 + }, + "textAlign": "center", + "altText": "", + "action": { + "name": "web", + "values": { + "href": "", + "target": "_blank" + } + }, + "displayCondition": null, + "_meta": { + "htmlID": "u_content_image_2", + "htmlClassNames": "u_content_image" + }, + "selectable": true, + "draggable": true, + "duplicatable": true, + "deletable": true, + "hideable": true + } + }, + { + "type": "text", + "values": { + "containerPadding": "10px", + "anchor": "", + "fontSize": "14px", + "textAlign": "left", + "lineHeight": "140%", + "linkStyle": { + "inherit": true, + "linkColor": "#0000ee", + "linkHoverColor": "#0000ee", + "linkUnderline": true, + "linkHoverUnderline": true + }, + "hideDesktop": false, + "displayCondition": null, + "_meta": { + "htmlID": "u_content_text_1", + "htmlClassNames": "u_content_text" + }, + "selectable": true, + "draggable": true, + "duplicatable": true, + "deletable": true, + "hideable": true, + "text": "

Bună,

\n

 

\n

Sperăm că acest mesaj te găsește în cea mai bună stare. Am primit o solicitare de esetare a parolei pentru contul tău și suntem aici pentru a te ajuta să-ți recuperezi accesul.

\n

Pentru a-ți reseta parola, te rugăm să urmezi pașii de mai jos:

\n

 

\n
    \n
  1. Accesează pagina noastră de resetare a parolei: https://app.crestem.ong/reset-password?code={{= TOKEN }}
  2. \n
  3. Vei fi direcționat către pagina de resetare a parolei.
  4. \n
  5. Completează câmpurile obligatorii cu informațiile tale personale pentru a verifica identitatea ta în siguranță.
  6. \n
  7. După ce ai furnizat informațiile cerute, vei primi un email de confirmare cu instrucțiuni suplimentare.
  8. \n
  9. Verifică adresa ta de email și urmează instrucțiunile pentru a-ți alege o nouă parolă.
  10. \n
  11. Te rugăm să alegi o parolă sigură, care să includă caractere alfanumerice și să fie diferită de cele utilizate anterior.
  12. \n
  13. După ce ai introdus parola nouă, vei putea accesa contul tău utilizând aceasta.
  14. \n
\n

Dacă nu ai solicitat resetarea parolei, te rugăm să ignori acest mesaj. Asigură-te că parola ta rămâne confidențială și nu o dezvălui nimănui.

\n

Dacă întâmpini orice dificultăți în procesul de resetare a parolei sau ai întrebări suplimentare, nu ezita să ne contactezi. Echipa noastră de suport va fi bucuroasă să te ajute.

\n

 

\n

Îți mulțumim pentru înțelegere și pentru răbdarea ta în această situație nefericită. Ne străduim mereu să-ți oferim cea mai bună experiență și să asigurăm siguranța contului tău.

\n

 

\n

O zi frumoasă!

\n

Echipa Creștem.ONG

" + }, + "hasDeprecatedFontControls": true + } + ], + "values": { + "border": {}, + "_meta": { + "htmlClassNames": "u_column", + "htmlID": "u_column_2" + }, + "backgroundColor": "", + "padding": "0px" + } + } + ], + "values": { + "displayCondition": null, + "columns": false, + "backgroundColor": "", + "columnsBackgroundColor": "", + "backgroundImage": { + "url": "", + "fullWidth": true, + "repeat": "no-repeat", + "size": "custom", + "position": "top-center", + "customPosition": [ + "50%", + "0%" + ] + }, + "padding": "0px", + "anchor": "", + "hideDesktop": false, + "_meta": { + "htmlID": "u_row_2", + "htmlClassNames": "u_row" + }, + "selectable": true, + "draggable": true, + "duplicatable": true, + "deletable": true, + "hideable": true + } + } + ], + "values": { + "popupPosition": "center", + "popupWidth": "600px", + "popupHeight": "auto", + "borderRadius": "10px", + "contentAlign": "center", + "contentVerticalAlign": "center", + "contentWidth": "500px", + "fontFamily": { + "label": "Arial", + "value": "arial,helvetica,sans-serif" + }, + "textColor": "#000000", + "popupBackgroundColor": "#FFFFFF", + "popupBackgroundImage": { + "url": "", + "fullWidth": true, + "repeat": "no-repeat", + "size": "cover", + "position": "center" + }, + "popupOverlay_backgroundColor": "rgba(0, 0, 0, 0.1)", + "popupCloseButton_position": "top-right", + "popupCloseButton_backgroundColor": "#DDDDDD", + "popupCloseButton_iconColor": "#000000", + "popupCloseButton_borderRadius": "0px", + "popupCloseButton_margin": "0px", + "popupCloseButton_action": { + "name": "close_popup", + "attrs": { + "onClick": "document.querySelector('.u-popup-container').style.display = 'none';" + } + }, + "backgroundColor": "#ffffff", + "backgroundImage": { + "url": "", + "fullWidth": true, + "repeat": "no-repeat", + "size": "custom", + "position": "top-center", + "customPosition": [ + "50%", + "0%" + ] + }, + "preheaderText": "", + "linkStyle": { + "body": true, + "linkColor": "#0000ee", + "linkHoverColor": "#0000ee", + "linkUnderline": true, + "linkHoverUnderline": true + }, + "_meta": { + "htmlID": "u_body", + "htmlClassNames": "u_body" + } + } + }, + "schemaVersion": 15 } }, "email_confirmation": { @@ -20,7 +201,7 @@ "options": { "from": { "name": "Administration Panel", - "email": "no-reply@strapi.io" + "email": "no-reply@crestem.ong" }, "response_email": "", "object": "Account confirmation", diff --git a/server2/config/sync/user-role.authenticated.json b/server2/config/sync/user-role.authenticated.json index e1362948..5049abc0 100644 --- a/server2/config/sync/user-role.authenticated.json +++ b/server2/config/sync/user-role.authenticated.json @@ -1,19 +1,114 @@ { "documentId": "bjkg5hlm71yh9o7g21nbtly2", - "name": "Authenticated", + "name": "Admin ONG", "description": "Default role given to authenticated user.", "type": "authenticated", "locale": null, "permissions": [ + { + "documentId": "y94t4ge67ssn6z8avbgdfqpk", + "action": "api::dimension.dimension.find", + "locale": null + }, + { + "documentId": "v1f6qpsvg1qazd8ympvzbivu", + "action": "api::domain.domain.find", + "locale": null + }, + { + "documentId": "u9izmttz5nrg84pathx2aicq", + "action": "api::evaluation.evaluation.create", + "locale": null + }, + { + "documentId": "dqme1mvnuzubodnfsnpulbvz", + "action": "api::evaluation.evaluation.delete", + "locale": null + }, + { + "documentId": "byhs8rgkykdejvonoj7ftg9c", + "action": "api::evaluation.evaluation.find", + "locale": null + }, + { + "documentId": "cvyu97a21exd2u4tqln4uhoa", + "action": "api::evaluation.evaluation.findOne", + "locale": null + }, + { + "documentId": "bbfm7mnqc3rkphkg2adrusq9", + "action": "api::evaluation.evaluation.update", + "locale": null + }, + { + "documentId": "oeh774v3pav9qz98dvbdsmn0", + "action": "api::matrix.matrix.find", + "locale": null + }, + { + "documentId": "ubwpvcqbuqa2fe0ky82prx6m", + "action": "api::mentorship-request.mentorship-request.create", + "locale": null + }, + { + "documentId": "kp19i5f82ebybab2de5txafk", + "action": "api::program.program.find", + "locale": null + }, + { + "documentId": "df1spu0vboic48mwyz2z26qj", + "action": "api::report.report.create", + "locale": null + }, + { + "documentId": "les53sp20s9yw611gki6d2gp", + "action": "api::report.report.find", + "locale": null + }, + { + "documentId": "m6jw20jnrb931bonvs13f8in", + "action": "api::report.report.findOne", + "locale": null + }, + { + "documentId": "x8d91l75yk32k10kayhkt09n", + "action": "api::report.report.update", + "locale": null + }, + { + "documentId": "psjnrh711vr4n5je1fix6vn8", + "action": "plugin::upload.content-api.upload", + "locale": null + }, { "documentId": "dbzy771juljvgqe2u2cnqa2z", "action": "plugin::users-permissions.auth.changePassword", "locale": null }, + { + "documentId": "kja6gf7yvuhix8e7z6x5xkyb", + "action": "plugin::users-permissions.role.find", + "locale": null + }, + { + "documentId": "c09b7taqphy402z1wnhujajt", + "action": "plugin::users-permissions.user.find", + "locale": null + }, + { + "documentId": "q2hxjuaqitoikiw88i3r3zy8", + "action": "plugin::users-permissions.user.findOne", + "locale": null + }, { "documentId": "juov72di8bo23lembyjhh4oz", "action": "plugin::users-permissions.user.me", "locale": null + }, + { + "documentId": "s2aqbe64am0pkov13i0vcs4p", + "action": "plugin::users-permissions.user.update", + "locale": null } ] } \ No newline at end of file diff --git a/server2/config/sync/user-role.fdsc.json b/server2/config/sync/user-role.fdsc.json new file mode 100644 index 00000000..b0aed7b3 --- /dev/null +++ b/server2/config/sync/user-role.fdsc.json @@ -0,0 +1,114 @@ +{ + "documentId": "qiwfgljixjvtkb6f2tbbli1u", + "name": "Admin FDSC", + "description": "Utilizator de tipul Admin FDSC", + "type": "fdsc", + "locale": null, + "permissions": [ + { + "documentId": "m36ekeb41xvmg2nmwdts0wor", + "action": "api::activity.activity.find", + "locale": null + }, + { + "documentId": "pva1m5454s7bbunuzi5hamnd", + "action": "api::dimension.dimension.find", + "locale": null + }, + { + "documentId": "zxbovtgbyczd2qfaisaehrgx", + "action": "api::domain.domain.find", + "locale": null + }, + { + "documentId": "smk9juvsnjuh8aoqwfzakbmc", + "action": "api::evaluation.evaluation.find", + "locale": null + }, + { + "documentId": "xy52xbv89vg41r52k3ot5hpw", + "action": "api::evaluation.evaluation.findOne", + "locale": null + }, + { + "documentId": "ilmc77niqfhlvh0dhepmb1vw", + "action": "api::evaluation.evaluation.update", + "locale": null + }, + { + "documentId": "y88g6fiok3aobp68t9gse3x7", + "action": "api::matrix.matrix.find", + "locale": null + }, + { + "documentId": "zjvv6czodc2zcpfopioyladc", + "action": "api::program.program.create", + "locale": null + }, + { + "documentId": "pm5vw91zo6blkmzz5pwszyff", + "action": "api::program.program.find", + "locale": null + }, + { + "documentId": "q7gtlklluj9i49ezwppvbtx6", + "action": "api::program.program.findOne", + "locale": null + }, + { + "documentId": "bqtefavfsidjc3axpjx2997d", + "action": "api::program.program.update", + "locale": null + }, + { + "documentId": "cxnsmnw6yhb6pxnrzgg9z7zt", + "action": "api::report.report.find", + "locale": null + }, + { + "documentId": "ywndnhjfix9ka9bj9bvxobp2", + "action": "api::report.report.findOne", + "locale": null + }, + { + "documentId": "lntc9hs6r2et5ny75l1j3cos", + "action": "api::report.report.update", + "locale": null + }, + { + "documentId": "vumgf4f4npglyw28g46gogpl", + "action": "plugin::upload.content-api.upload", + "locale": null + }, + { + "documentId": "ugncgbjfxqa93ucclksd65o4", + "action": "plugin::users-permissions.role.find", + "locale": null + }, + { + "documentId": "f7akqqjkzxyix2ruy7f11taj", + "action": "plugin::users-permissions.user.create", + "locale": null + }, + { + "documentId": "harbmk986nqixd07mjcvsyme", + "action": "plugin::users-permissions.user.find", + "locale": null + }, + { + "documentId": "dtao5bep5nbi1m8l12wk2obq", + "action": "plugin::users-permissions.user.findOne", + "locale": null + }, + { + "documentId": "xkgrjt5xyk62kh6kg5u11fo0", + "action": "plugin::users-permissions.user.me", + "locale": null + }, + { + "documentId": "ticqihywafpodrxgkb8llk5i", + "action": "plugin::users-permissions.user.update", + "locale": null + } + ] +} \ No newline at end of file diff --git a/server2/config/sync/user-role.mentor.json b/server2/config/sync/user-role.mentor.json new file mode 100644 index 00000000..33e027ca --- /dev/null +++ b/server2/config/sync/user-role.mentor.json @@ -0,0 +1,84 @@ +{ + "documentId": "vsxoycu64l3leyrq9tluwe14", + "name": "Persoană resursă", + "description": "Mentor", + "type": "mentor", + "locale": null, + "permissions": [ + { + "documentId": "yjk6b1w3uha0elac41l8cxwg", + "action": "api::activity-type.activity-type.find", + "locale": null + }, + { + "documentId": "jrzrlt5bsjhk6szg7jymwfqt", + "action": "api::activity.activity.create", + "locale": null + }, + { + "documentId": "a3lcxp8kl3qr685riov71k94", + "action": "api::activity.activity.find", + "locale": null + }, + { + "documentId": "j4d9fiaitshiji5hw9cnqdnq", + "action": "api::dimension.dimension.find", + "locale": null + }, + { + "documentId": "l300vfwovzhmx6usdg2de7kc", + "action": "api::domain.domain.find", + "locale": null + }, + { + "documentId": "egzvqkz7a4079zl1wgyko5pp", + "action": "api::evaluation.evaluation.find", + "locale": null + }, + { + "documentId": "tbe8t786ehprg3owvqk7o1he", + "action": "api::matrix.matrix.find", + "locale": null + }, + { + "documentId": "yelmvstr4jdz8e3rctcfu0nk", + "action": "api::program.program.find", + "locale": null + }, + { + "documentId": "u78luqjojxqi2j7r6y2nrpc4", + "action": "api::report.report.find", + "locale": null + }, + { + "documentId": "jdao7danosjm4qhnfws5g7oh", + "action": "api::report.report.findOne", + "locale": null + }, + { + "documentId": "r4tqn089bvbidvxom6joxk81", + "action": "plugin::upload.content-api.upload", + "locale": null + }, + { + "documentId": "ylkxqrs1o4lj77op9vgoet32", + "action": "plugin::users-permissions.role.find", + "locale": null + }, + { + "documentId": "ziwzwg9wvqnqlpdo8zqejmok", + "action": "plugin::users-permissions.user.find", + "locale": null + }, + { + "documentId": "n237pvcbkiugnuvk3mnnyykw", + "action": "plugin::users-permissions.user.me", + "locale": null + }, + { + "documentId": "j39v9jp5mlj2c5mtd85lk0il", + "action": "plugin::users-permissions.user.update", + "locale": null + } + ] +} \ No newline at end of file diff --git a/server2/config/sync/user-role.public.json b/server2/config/sync/user-role.public.json index 46907720..80971929 100644 --- a/server2/config/sync/user-role.public.json +++ b/server2/config/sync/user-role.public.json @@ -5,6 +5,36 @@ "type": "public", "locale": null, "permissions": [ + { + "documentId": "wrzvltpf3amm90zt3vlhcdny", + "action": "api::dimension.dimension.find", + "locale": null + }, + { + "documentId": "t3htxiy90iq6xrblzh0778qg", + "action": "api::domain.domain.find", + "locale": null + }, + { + "documentId": "e24lhnybbh9037hwx598pnc5", + "action": "api::evaluation.evaluation.find", + "locale": null + }, + { + "documentId": "wscruu7rz4joo1r2ejbllu4i", + "action": "api::evaluation.evaluation.findOne", + "locale": null + }, + { + "documentId": "alj0ive1q69wh8oyq3knixxj", + "action": "api::evaluation.evaluation.update", + "locale": null + }, + { + "documentId": "uo32ypxnbte1ms2n7cx3j819", + "action": "api::matrix.matrix.find", + "locale": null + }, { "documentId": "lf4423150nh4ws7az0vb76oh", "action": "plugin::users-permissions.auth.callback", @@ -20,6 +50,11 @@ "action": "plugin::users-permissions.auth.emailConfirmation", "locale": null }, + { + "documentId": "i2cvgcrq6lvhpfnc569ckuza", + "action": "plugin::users-permissions.auth.findRegistrationInfo", + "locale": null + }, { "documentId": "ky7qzuf2bwox3mzyfc11fnn5", "action": "plugin::users-permissions.auth.forgotPassword", @@ -30,6 +65,11 @@ "action": "plugin::users-permissions.auth.register", "locale": null }, + { + "documentId": "hqk98prol9sqq33b9lnxdtdt", + "action": "plugin::users-permissions.auth.registerWithConfirmation", + "locale": null + }, { "documentId": "jdaetgq4t1e5s86ipfd2xrhm", "action": "plugin::users-permissions.auth.resetPassword", From 12ddcbf464a705278b3fa1b5296e371b5b699c73 Mon Sep 17 00:00:00 2001 From: Ion Dormenco Date: Thu, 11 Sep 2025 14:01:13 +0300 Subject: [PATCH 21/61] update cfgs --- .../config/sync/admin-role.strapi-author.json | 117 +++----- .../config/sync/admin-role.strapi-editor.json | 61 ++-- .../sync/admin-role.strapi-super-admin.json | 275 ++++++++---------- ...-store.plugin_users-permissions_email.json | 16 +- server2/config/sync/i18n-locale.en.json | 4 +- server2/config/sync/i18n-locale.ro.json | 4 +- .../config/sync/user-role.authenticated.json | 46 +-- server2/config/sync/user-role.fdsc.json | 46 +-- server2/config/sync/user-role.mentor.json | 34 +-- server2/config/sync/user-role.public.json | 34 +-- 10 files changed, 263 insertions(+), 374 deletions(-) diff --git a/server2/config/sync/admin-role.strapi-author.json b/server2/config/sync/admin-role.strapi-author.json index f0eceafc..6468d790 100644 --- a/server2/config/sync/admin-role.strapi-author.json +++ b/server2/config/sync/admin-role.strapi-author.json @@ -1,12 +1,12 @@ { - "documentId": "dwdjd0fb9x5pn286lj2n0j9b", + "documentId": "pb0ur98qbvgttrujkg7io61r", "name": "Author", "code": "strapi-author", "description": "Authors can manage the content they have created.", "locale": null, "permissions": [ { - "documentId": "f4erl1iqzzabcca8mcppl5il", + "documentId": "rd3fnpf813kb5gbp0i72nuqq", "action": "plugin::content-manager.explorer.create", "actionParameters": {}, "subject": "api::evaluation.evaluation", @@ -18,24 +18,20 @@ "report" ] }, - "conditions": [ - "admin::is-creator" - ], + "conditions": ["admin::is-creator"], "locale": null }, { - "documentId": "jw25z5cwbkfrxwwo35r32jrc", + "documentId": "iwfzbm6cucgdn9lv5ezv44hb", "action": "plugin::content-manager.explorer.delete", "actionParameters": {}, "subject": "api::evaluation.evaluation", "properties": {}, - "conditions": [ - "admin::is-creator" - ], + "conditions": ["admin::is-creator"], "locale": null }, { - "documentId": "p1s7wt2w2pnc0zg92ztmtjel", + "documentId": "mi45v2typxk0nkj3a5nl9a7j", "action": "plugin::content-manager.explorer.read", "actionParameters": {}, "subject": "api::evaluation.evaluation", @@ -47,13 +43,11 @@ "report" ] }, - "conditions": [ - "admin::is-creator" - ], + "conditions": ["admin::is-creator"], "locale": null }, { - "documentId": "s6754sg1ryqsa0iav8n5ri6f", + "documentId": "r6vk31n0k8datsdkozvxcigz", "action": "plugin::content-manager.explorer.update", "actionParameters": {}, "subject": "api::evaluation.evaluation", @@ -65,128 +59,95 @@ "report" ] }, - "conditions": [ - "admin::is-creator" - ], + "conditions": ["admin::is-creator"], "locale": null }, { - "documentId": "rb19b6den87z5u63mi7paplf", + "documentId": "beshdlsqogj0vp7c4cxxyj3s", "action": "plugin::content-manager.explorer.create", "actionParameters": {}, "subject": "api::matrix.matrix", "properties": { "fields": [] }, - "conditions": [ - "admin::is-creator" - ], + "conditions": ["admin::is-creator"], "locale": null }, { - "documentId": "xnipnpqmnq4sv3a6liphahiw", + "documentId": "vnrdnsk2v0nwxqxb5evl3u28", "action": "plugin::content-manager.explorer.delete", "actionParameters": {}, "subject": "api::matrix.matrix", "properties": {}, - "conditions": [ - "admin::is-creator" - ], + "conditions": ["admin::is-creator"], "locale": null }, { - "documentId": "eultknn1ft3tfsyj6dwnv4g0", + "documentId": "rxaofytc5iw78vp0odsem984", "action": "plugin::content-manager.explorer.read", "actionParameters": {}, "subject": "api::matrix.matrix", "properties": { "fields": [] }, - "conditions": [ - "admin::is-creator" - ], + "conditions": ["admin::is-creator"], "locale": null }, { - "documentId": "b4vbdvn8sqvi7lrvir733fpr", + "documentId": "wey2a9gpb254xwvqoptbkfk7", "action": "plugin::content-manager.explorer.update", "actionParameters": {}, "subject": "api::matrix.matrix", "properties": { "fields": [] }, - "conditions": [ - "admin::is-creator" - ], + "conditions": ["admin::is-creator"], "locale": null }, { - "documentId": "q4gd73u9bssn5722s67prvcx", + "documentId": "xbimte4dfztjj5jiv5cum463", "action": "plugin::content-manager.explorer.create", "actionParameters": {}, "subject": "api::report.report", "properties": { - "fields": [ - "evaluations", - "deadline", - "finished", - "user" - ] + "fields": ["evaluations", "deadline", "finished", "user"] }, - "conditions": [ - "admin::is-creator" - ], + "conditions": ["admin::is-creator"], "locale": null }, { - "documentId": "qdai3t0618e3eoykd07inrfy", + "documentId": "ag22o70h3xxhyl5gypuje04g", "action": "plugin::content-manager.explorer.delete", "actionParameters": {}, "subject": "api::report.report", "properties": {}, - "conditions": [ - "admin::is-creator" - ], + "conditions": ["admin::is-creator"], "locale": null }, { - "documentId": "ctvdqlaptqozr9u9sgw6xo9z", + "documentId": "f5i83v06296awmxfu5xe65a9", "action": "plugin::content-manager.explorer.read", "actionParameters": {}, "subject": "api::report.report", "properties": { - "fields": [ - "evaluations", - "deadline", - "finished", - "user" - ] + "fields": ["evaluations", "deadline", "finished", "user"] }, - "conditions": [ - "admin::is-creator" - ], + "conditions": ["admin::is-creator"], "locale": null }, { - "documentId": "fs5s1sfq9n8o2445tfhs82ij", + "documentId": "s8uf46bbfviqk8ppwe6s2pnr", "action": "plugin::content-manager.explorer.update", "actionParameters": {}, "subject": "api::report.report", "properties": { - "fields": [ - "evaluations", - "deadline", - "finished", - "user" - ] + "fields": ["evaluations", "deadline", "finished", "user"] }, - "conditions": [ - "admin::is-creator" - ], + "conditions": ["admin::is-creator"], "locale": null }, { - "documentId": "zrjjar6m6ewovp47de0syv5m", + "documentId": "i98ci45bzx5d3uydtggu35w9", "action": "plugin::upload.assets.copy-link", "actionParameters": {}, "subject": null, @@ -195,7 +156,7 @@ "locale": null }, { - "documentId": "tooigu4jq167emzz8em7hwzx", + "documentId": "urcz8c6wcax9galyisn1neqm", "action": "plugin::upload.assets.create", "actionParameters": {}, "subject": null, @@ -204,7 +165,7 @@ "locale": null }, { - "documentId": "vxekqhpkl6r63ko1qi0ebz1s", + "documentId": "oiodt17t90ubxcyd0oa4jcpy", "action": "plugin::upload.assets.download", "actionParameters": {}, "subject": null, @@ -213,18 +174,16 @@ "locale": null }, { - "documentId": "ur5ev918cttzot2cofd37i2j", + "documentId": "sxicjxdn4nj1ps3r7kc8gmzm", "action": "plugin::upload.assets.update", "actionParameters": {}, "subject": null, "properties": {}, - "conditions": [ - "admin::is-creator" - ], + "conditions": ["admin::is-creator"], "locale": null }, { - "documentId": "a5n6rpqejp9tbajvbpdss615", + "documentId": "ye2qd0pbkv7ad660ea4onkfj", "action": "plugin::upload.configure-view", "actionParameters": {}, "subject": null, @@ -233,15 +192,13 @@ "locale": null }, { - "documentId": "n9wmj9wz9fthefgdwyevoz2d", + "documentId": "pjtwt9i60wrybz2tz9wauy3u", "action": "plugin::upload.read", "actionParameters": {}, "subject": null, "properties": {}, - "conditions": [ - "admin::is-creator" - ], + "conditions": ["admin::is-creator"], "locale": null } ] -} \ No newline at end of file +} diff --git a/server2/config/sync/admin-role.strapi-editor.json b/server2/config/sync/admin-role.strapi-editor.json index d4c4e089..1e3c82ce 100644 --- a/server2/config/sync/admin-role.strapi-editor.json +++ b/server2/config/sync/admin-role.strapi-editor.json @@ -1,12 +1,12 @@ { - "documentId": "fe17g19yq1osozjzqesp2ic3", + "documentId": "elk23ij3j2mhzi3mlr5emccc", "name": "Editor", "code": "strapi-editor", "description": "Editors can manage and publish contents including those of other users.", "locale": null, "permissions": [ { - "documentId": "dru3ztr00j2tij0w2qfhz2va", + "documentId": "x2gtfhc92zbakawrjpi7egnp", "action": "plugin::content-manager.explorer.create", "actionParameters": {}, "subject": "api::evaluation.evaluation", @@ -22,7 +22,7 @@ "locale": null }, { - "documentId": "v04dxre0zq23butxzmr2gi4j", + "documentId": "iqtivgmxcaay08w6g2eha9wb", "action": "plugin::content-manager.explorer.delete", "actionParameters": {}, "subject": "api::evaluation.evaluation", @@ -31,7 +31,7 @@ "locale": null }, { - "documentId": "aoqohsbo6hiu2vs69bvei884", + "documentId": "lpfz5flrlt0ubw5z3msgyxe6", "action": "plugin::content-manager.explorer.read", "actionParameters": {}, "subject": "api::evaluation.evaluation", @@ -47,7 +47,7 @@ "locale": null }, { - "documentId": "jjo48oqn30sdxu53mgxphktb", + "documentId": "vweau6g5c628h2otb4fd8yn0", "action": "plugin::content-manager.explorer.update", "actionParameters": {}, "subject": "api::evaluation.evaluation", @@ -63,7 +63,7 @@ "locale": null }, { - "documentId": "xpf5hiuw7pwapcsnuqkrjikb", + "documentId": "jmuek80auf8vbd66w11p6k7x", "action": "plugin::content-manager.explorer.create", "actionParameters": {}, "subject": "api::matrix.matrix", @@ -74,7 +74,7 @@ "locale": null }, { - "documentId": "m209rskwrlmrr48lqgh874uf", + "documentId": "ywnvcezn4fikcutox9twydmq", "action": "plugin::content-manager.explorer.delete", "actionParameters": {}, "subject": "api::matrix.matrix", @@ -83,7 +83,7 @@ "locale": null }, { - "documentId": "ifeh15xsssx0fvoak33w675p", + "documentId": "n715skfhrlodg5awqp2nkl7b", "action": "plugin::content-manager.explorer.read", "actionParameters": {}, "subject": "api::matrix.matrix", @@ -94,7 +94,7 @@ "locale": null }, { - "documentId": "xl7l98lw55z8ljnv7y4lp9em", + "documentId": "e05m2rpywfh3nr8ha4sqk8xk", "action": "plugin::content-manager.explorer.update", "actionParameters": {}, "subject": "api::matrix.matrix", @@ -105,23 +105,18 @@ "locale": null }, { - "documentId": "skjc4arjw5ophwc63orye7qg", + "documentId": "s66xrbhkh3m9yy6f0dhz4f1n", "action": "plugin::content-manager.explorer.create", "actionParameters": {}, "subject": "api::report.report", "properties": { - "fields": [ - "evaluations", - "deadline", - "finished", - "user" - ] + "fields": ["evaluations", "deadline", "finished", "user"] }, "conditions": [], "locale": null }, { - "documentId": "gvggsa0258c6ylra9jlmbg6z", + "documentId": "ff3bq71gskg83aroqheq1ux2", "action": "plugin::content-manager.explorer.delete", "actionParameters": {}, "subject": "api::report.report", @@ -130,39 +125,29 @@ "locale": null }, { - "documentId": "r2culwma73bpwq6jdtkwsc1o", + "documentId": "qrwo6nrcsm8uet6fqgxb48yd", "action": "plugin::content-manager.explorer.read", "actionParameters": {}, "subject": "api::report.report", "properties": { - "fields": [ - "evaluations", - "deadline", - "finished", - "user" - ] + "fields": ["evaluations", "deadline", "finished", "user"] }, "conditions": [], "locale": null }, { - "documentId": "slzcu309458shnhscccfi11j", + "documentId": "e855dlvj3sgfw0jzcvvqtptd", "action": "plugin::content-manager.explorer.update", "actionParameters": {}, "subject": "api::report.report", "properties": { - "fields": [ - "evaluations", - "deadline", - "finished", - "user" - ] + "fields": ["evaluations", "deadline", "finished", "user"] }, "conditions": [], "locale": null }, { - "documentId": "y83ggixvpu582vcsbmpsgm4c", + "documentId": "axkq0och3rc83q9jbml94fww", "action": "plugin::upload.assets.copy-link", "actionParameters": {}, "subject": null, @@ -171,7 +156,7 @@ "locale": null }, { - "documentId": "oa7ccsak4k0b2yiy8vtu3zd4", + "documentId": "vi5vmxvl8juao5nrdm2adtdi", "action": "plugin::upload.assets.create", "actionParameters": {}, "subject": null, @@ -180,7 +165,7 @@ "locale": null }, { - "documentId": "rxr39j5x54v0xlrp6436oz2i", + "documentId": "t5rreqwwuh2urzwe5yet2bnk", "action": "plugin::upload.assets.download", "actionParameters": {}, "subject": null, @@ -189,7 +174,7 @@ "locale": null }, { - "documentId": "ur4wq6k0ii4gwxne6gxf0q1j", + "documentId": "uotyml9kvpbb98vdjy1wzlvo", "action": "plugin::upload.assets.update", "actionParameters": {}, "subject": null, @@ -198,7 +183,7 @@ "locale": null }, { - "documentId": "v328731zz4vfe4onsn57i65d", + "documentId": "owcjijutw01rbvfmq5ix9djl", "action": "plugin::upload.configure-view", "actionParameters": {}, "subject": null, @@ -207,7 +192,7 @@ "locale": null }, { - "documentId": "auw0skdyi6spff5u0c75llab", + "documentId": "slwpmc0uwztqryx4wtjttkf7", "action": "plugin::upload.read", "actionParameters": {}, "subject": null, @@ -216,4 +201,4 @@ "locale": null } ] -} \ No newline at end of file +} diff --git a/server2/config/sync/admin-role.strapi-super-admin.json b/server2/config/sync/admin-role.strapi-super-admin.json index d5ec8f5e..8798c793 100644 --- a/server2/config/sync/admin-role.strapi-super-admin.json +++ b/server2/config/sync/admin-role.strapi-super-admin.json @@ -1,25 +1,23 @@ { - "documentId": "tq6f4mcaoutoiovnlqdjhiod", + "documentId": "qzvl9yizffnifqnb2z4ksn9k", "name": "Super Admin", "code": "strapi-super-admin", "description": "Super Admins can access and manage all features and settings.", "locale": null, "permissions": [ { - "documentId": "jcb2qmmaaczwm1hfl6l0kd1d", + "documentId": "fzmxixx7gfw4pyrebu8r7vdq", "action": "plugin::content-manager.explorer.create", "actionParameters": {}, "subject": "api::activity-type.activity-type", "properties": { - "fields": [ - "name" - ] + "fields": ["name"] }, "conditions": [], "locale": null }, { - "documentId": "zecjpc9vqagvcf9xvqmpm8co", + "documentId": "wkzn0ieu63dfic8lm9es45xh", "action": "plugin::content-manager.explorer.delete", "actionParameters": {}, "subject": "api::activity-type.activity-type", @@ -28,33 +26,29 @@ "locale": null }, { - "documentId": "xfgapan0eb01rw6wc16dxmi8", + "documentId": "pg85khgggpbjeifrxffg00s8", "action": "plugin::content-manager.explorer.read", "actionParameters": {}, "subject": "api::activity-type.activity-type", "properties": { - "fields": [ - "name" - ] + "fields": ["name"] }, "conditions": [], "locale": null }, { - "documentId": "tmlr6kpo1lwhtf3kqf4il698", + "documentId": "a1ojbq5sj49csryfwydkg40w", "action": "plugin::content-manager.explorer.update", "actionParameters": {}, "subject": "api::activity-type.activity-type", "properties": { - "fields": [ - "name" - ] + "fields": ["name"] }, "conditions": [], "locale": null }, { - "documentId": "w6nk8prfl37wdt6qlvlb6fwy", + "documentId": "bqowvooeavlzdkjsi625k6xb", "action": "plugin::content-manager.explorer.create", "actionParameters": {}, "subject": "api::activity.activity", @@ -73,7 +67,7 @@ "locale": null }, { - "documentId": "n6uiquvnwj73zcedz412rqc4", + "documentId": "pgy9dk5lm3my7ugg82612e42", "action": "plugin::content-manager.explorer.delete", "actionParameters": {}, "subject": "api::activity.activity", @@ -82,7 +76,7 @@ "locale": null }, { - "documentId": "a9ch1j2wyubj4jh01kqz4fpa", + "documentId": "ccmnjpfwsqh07ce58rj6isrm", "action": "plugin::content-manager.explorer.read", "actionParameters": {}, "subject": "api::activity.activity", @@ -101,7 +95,7 @@ "locale": null }, { - "documentId": "jg6zangf9n0i7io4465gc9dm", + "documentId": "zyaxxifki8pe3ghkhnnafvn9", "action": "plugin::content-manager.explorer.update", "actionParameters": {}, "subject": "api::activity.activity", @@ -120,7 +114,7 @@ "locale": null }, { - "documentId": "it8ofmilm0ajwnxmggmalsct", + "documentId": "z1dbdtiklmmawg5tcoodyu79", "action": "plugin::content-manager.explorer.create", "actionParameters": {}, "subject": "api::dimension.dimension", @@ -143,7 +137,7 @@ "locale": null }, { - "documentId": "f92n4jrs9kf0qo4n6b5xtiv1", + "documentId": "phrv4wn71av39unnff6il907", "action": "plugin::content-manager.explorer.delete", "actionParameters": {}, "subject": "api::dimension.dimension", @@ -152,7 +146,7 @@ "locale": null }, { - "documentId": "dfm4y35uf0ixr23ue5grnpzk", + "documentId": "efgadiyq7s1elb8nl2iryiwz", "action": "plugin::content-manager.explorer.read", "actionParameters": {}, "subject": "api::dimension.dimension", @@ -175,7 +169,7 @@ "locale": null }, { - "documentId": "mfqibyhwod7ih3eoouafshe0", + "documentId": "i9kjl7x1k1aid1xm1m2uww1z", "action": "plugin::content-manager.explorer.update", "actionParameters": {}, "subject": "api::dimension.dimension", @@ -198,21 +192,18 @@ "locale": null }, { - "documentId": "s9fxa8bnnj2urzf2e36fr7f1", + "documentId": "c69qa60o3zxvubt0j7wgdl92", "action": "plugin::content-manager.explorer.create", "actionParameters": {}, "subject": "api::domain.domain", "properties": { - "fields": [ - "name", - "mentors" - ] + "fields": ["name", "mentors"] }, "conditions": [], "locale": null }, { - "documentId": "ofju0hxssx9zeo9w9umemk3y", + "documentId": "ty5oykznj1lomyeqe29ru0sk", "action": "plugin::content-manager.explorer.delete", "actionParameters": {}, "subject": "api::domain.domain", @@ -221,35 +212,29 @@ "locale": null }, { - "documentId": "xv8c8cxrc83076u4bvolh1v2", + "documentId": "ipxydqudnk48zr84uh8fw94r", "action": "plugin::content-manager.explorer.read", "actionParameters": {}, "subject": "api::domain.domain", "properties": { - "fields": [ - "name", - "mentors" - ] + "fields": ["name", "mentors"] }, "conditions": [], "locale": null }, { - "documentId": "akahtbirzjeuhjqlluyyrzml", + "documentId": "b9eu2ev6nx6mqsqqor1xedff", "action": "plugin::content-manager.explorer.update", "actionParameters": {}, "subject": "api::domain.domain", "properties": { - "fields": [ - "name", - "mentors" - ] + "fields": ["name", "mentors"] }, "conditions": [], "locale": null }, { - "documentId": "gzv7tcvwbbymwrzj2wf8yfc3", + "documentId": "l8miwgbmv0pbekvajtj9dhta", "action": "plugin::content-manager.explorer.create", "actionParameters": {}, "subject": "api::evaluation.evaluation", @@ -265,7 +250,7 @@ "locale": null }, { - "documentId": "ki3ncrk1g0g5ssa5sgfay66w", + "documentId": "vlosmpmrgizp9as6eptn8vsc", "action": "plugin::content-manager.explorer.delete", "actionParameters": {}, "subject": "api::evaluation.evaluation", @@ -274,7 +259,7 @@ "locale": null }, { - "documentId": "yaxolp8q5fl20d7vfl0rv0te", + "documentId": "dni40bysbdy9s2s7nkfbm1q0", "action": "plugin::content-manager.explorer.read", "actionParameters": {}, "subject": "api::evaluation.evaluation", @@ -290,7 +275,7 @@ "locale": null }, { - "documentId": "o6v2b8aef64y9jnh7kbbked5", + "documentId": "vx2zinrs21rm4cfqr0zzamti", "action": "plugin::content-manager.explorer.update", "actionParameters": {}, "subject": "api::evaluation.evaluation", @@ -306,20 +291,18 @@ "locale": null }, { - "documentId": "sssg1xp0utgwbxuvfkftj29u", + "documentId": "syspcyrwo30c2wofay8077e3", "action": "plugin::content-manager.explorer.create", "actionParameters": {}, "subject": "api::matrix.matrix", "properties": { - "fields": [ - "dimensions" - ] + "fields": ["dimensions"] }, "conditions": [], "locale": null }, { - "documentId": "g400tjpivt8v7jz8qneiac5s", + "documentId": "jg7f8dl1bk640d0rj0solwj8", "action": "plugin::content-manager.explorer.delete", "actionParameters": {}, "subject": "api::matrix.matrix", @@ -328,47 +311,40 @@ "locale": null }, { - "documentId": "b1ok0ej43zpw0amhop2vqq5q", + "documentId": "up9373ojq7nlldsgseafzlxw", "action": "plugin::content-manager.explorer.read", "actionParameters": {}, "subject": "api::matrix.matrix", "properties": { - "fields": [ - "dimensions" - ] + "fields": ["dimensions"] }, "conditions": [], "locale": null }, { - "documentId": "zoaqc94xrgc78j45o6gnpxxd", + "documentId": "zmxh49lucvo5e8pb8fkp7ecf", "action": "plugin::content-manager.explorer.update", "actionParameters": {}, "subject": "api::matrix.matrix", "properties": { - "fields": [ - "dimensions" - ] + "fields": ["dimensions"] }, "conditions": [], "locale": null }, { - "documentId": "m4sluwes331w8ygijnxqu62z", + "documentId": "q0vyo21ocsgx617enfpsfkl1", "action": "plugin::content-manager.explorer.create", "actionParameters": {}, "subject": "api::mentorship-request.mentorship-request", "properties": { - "fields": [ - "mentor", - "user" - ] + "fields": ["mentor", "user"] }, "conditions": [], "locale": null }, { - "documentId": "ytn3urvttrfdgvbs8bfmlhts", + "documentId": "npdlp6m52lul1tl7rh1fwgpy", "action": "plugin::content-manager.explorer.delete", "actionParameters": {}, "subject": "api::mentorship-request.mentorship-request", @@ -377,35 +353,29 @@ "locale": null }, { - "documentId": "agfpsrsmjxwuwjsp3sivymlj", + "documentId": "ecsvp8dgpip97m35jya5qirl", "action": "plugin::content-manager.explorer.read", "actionParameters": {}, "subject": "api::mentorship-request.mentorship-request", "properties": { - "fields": [ - "mentor", - "user" - ] + "fields": ["mentor", "user"] }, "conditions": [], "locale": null }, { - "documentId": "cp0sqekxbcniz83g0kx3u6x9", + "documentId": "zt4nid199sqnqggg57qfxkk2", "action": "plugin::content-manager.explorer.update", "actionParameters": {}, "subject": "api::mentorship-request.mentorship-request", "properties": { - "fields": [ - "mentor", - "user" - ] + "fields": ["mentor", "user"] }, "conditions": [], "locale": null }, { - "documentId": "k48bvkgck3w9np619qweodpw", + "documentId": "p130zypbrgktrjfw1bjhndev", "action": "plugin::content-manager.explorer.create", "actionParameters": {}, "subject": "api::program.program", @@ -423,7 +393,7 @@ "locale": null }, { - "documentId": "vxxzewulohot5tl62lgo8hqs", + "documentId": "wgu29sjfjm1umd1nc53wvol7", "action": "plugin::content-manager.explorer.delete", "actionParameters": {}, "subject": "api::program.program", @@ -432,7 +402,7 @@ "locale": null }, { - "documentId": "ilhk3ufbhy9xxzgoyigqqz8k", + "documentId": "wt5rx1pfxis4hwp53b86a9zj", "action": "plugin::content-manager.explorer.publish", "actionParameters": {}, "subject": "api::program.program", @@ -441,7 +411,7 @@ "locale": null }, { - "documentId": "puvlglhexxcm8ygkhqj5fsxy", + "documentId": "en3wneb1sc0kcbpata0bruh5", "action": "plugin::content-manager.explorer.read", "actionParameters": {}, "subject": "api::program.program", @@ -459,7 +429,7 @@ "locale": null }, { - "documentId": "td14r7llhhfpsxinuqtbsb6y", + "documentId": "civf4att99yvjnuijfzvyqw5", "action": "plugin::content-manager.explorer.update", "actionParameters": {}, "subject": "api::program.program", @@ -477,23 +447,18 @@ "locale": null }, { - "documentId": "llfs966zkqakrb4bulf8nfhq", + "documentId": "zjv6qvymb9qicjgzfoy12zqr", "action": "plugin::content-manager.explorer.create", "actionParameters": {}, "subject": "api::report.report", "properties": { - "fields": [ - "evaluations", - "deadline", - "finished", - "user" - ] + "fields": ["evaluations", "deadline", "finished", "user"] }, "conditions": [], "locale": null }, { - "documentId": "v2hjx7jzx0h9zmxc2n8otupd", + "documentId": "ruq1opjxfkztyr6m4es8ofiq", "action": "plugin::content-manager.explorer.delete", "actionParameters": {}, "subject": "api::report.report", @@ -502,39 +467,29 @@ "locale": null }, { - "documentId": "eyk47ea6fe2m4oys6eqlnjn8", + "documentId": "has8rv0xydfqdn17zn1zfzhl", "action": "plugin::content-manager.explorer.read", "actionParameters": {}, "subject": "api::report.report", "properties": { - "fields": [ - "evaluations", - "deadline", - "finished", - "user" - ] + "fields": ["evaluations", "deadline", "finished", "user"] }, "conditions": [], "locale": null }, { - "documentId": "qnsq0ehfaqcu7ie9m0tbq27l", + "documentId": "xeazhpii2mz9yizntncloscn", "action": "plugin::content-manager.explorer.update", "actionParameters": {}, "subject": "api::report.report", "properties": { - "fields": [ - "evaluations", - "deadline", - "finished", - "user" - ] + "fields": ["evaluations", "deadline", "finished", "user"] }, "conditions": [], "locale": null }, { - "documentId": "nxj714wit6df93lhzczvcces", + "documentId": "nc1nl5vi95p6hqi2bybfc961", "action": "admin::api-tokens.access", "actionParameters": {}, "subject": null, @@ -543,7 +498,7 @@ "locale": null }, { - "documentId": "i9e63t3s5ikla5szql0doqg4", + "documentId": "wd75oh4xj45ivvb7gfdbw336", "action": "admin::api-tokens.create", "actionParameters": {}, "subject": null, @@ -552,7 +507,7 @@ "locale": null }, { - "documentId": "uqgpw6zpgjca51pnc4ur3wpz", + "documentId": "wmzi71tapfqqzj76fvl2g3af", "action": "admin::api-tokens.delete", "actionParameters": {}, "subject": null, @@ -561,7 +516,7 @@ "locale": null }, { - "documentId": "qy2i9d7lv84wwf6qjzd2idxg", + "documentId": "avk2ak5715rw0omp894qf6bm", "action": "admin::api-tokens.read", "actionParameters": {}, "subject": null, @@ -570,7 +525,7 @@ "locale": null }, { - "documentId": "e2cksr76zk9hgbh0s5b0ju6x", + "documentId": "r5t0lyyzw5t2ze6i9pxvp289", "action": "admin::api-tokens.regenerate", "actionParameters": {}, "subject": null, @@ -579,7 +534,7 @@ "locale": null }, { - "documentId": "la7wrsqoli07602n4sk053l2", + "documentId": "qydcszvkakt0dzib6f8xnub0", "action": "admin::api-tokens.update", "actionParameters": {}, "subject": null, @@ -588,7 +543,7 @@ "locale": null }, { - "documentId": "p43t7sw0iculvi8bwvo9ti4b", + "documentId": "llfol4127u4jrkk7dgs8zj9f", "action": "admin::marketplace.read", "actionParameters": {}, "subject": null, @@ -597,7 +552,7 @@ "locale": null }, { - "documentId": "g86bjtrp8x3r8s8hicsp00gs", + "documentId": "zn5kpyjmkkwiyiizel0i9c4j", "action": "admin::project-settings.read", "actionParameters": {}, "subject": null, @@ -606,7 +561,7 @@ "locale": null }, { - "documentId": "hb1qysiwn5vdiiyb0l2cc4ax", + "documentId": "l8z9f841maew3ddfmjrvzv5c", "action": "admin::project-settings.update", "actionParameters": {}, "subject": null, @@ -615,7 +570,7 @@ "locale": null }, { - "documentId": "ol0k4yes7cjddeucyxrej9go", + "documentId": "tjne5w2czt65keupinu1j63a", "action": "admin::roles.create", "actionParameters": {}, "subject": null, @@ -624,7 +579,7 @@ "locale": null }, { - "documentId": "humhbih4nnub2s304zseapcz", + "documentId": "av65kbwog6nx1qa7dbqnz9wn", "action": "admin::roles.delete", "actionParameters": {}, "subject": null, @@ -633,7 +588,7 @@ "locale": null }, { - "documentId": "tcvu36z9ol7tngk8mo95i1q7", + "documentId": "hnyo5o8un7vssevpd7j27qpa", "action": "admin::roles.read", "actionParameters": {}, "subject": null, @@ -642,7 +597,7 @@ "locale": null }, { - "documentId": "zfxpfgvhaf4jj71xy7l5phja", + "documentId": "t6f82ef0hkj9bxxshalhch13", "action": "admin::roles.update", "actionParameters": {}, "subject": null, @@ -651,7 +606,7 @@ "locale": null }, { - "documentId": "lkmkm1v46yovbzhq0bozuoul", + "documentId": "hpscect4x89vru9ojarp6z9d", "action": "admin::transfer.tokens.access", "actionParameters": {}, "subject": null, @@ -660,7 +615,7 @@ "locale": null }, { - "documentId": "yoxv8qa3r00mya1mwvl8gi1s", + "documentId": "e5ewui6wcn7ojsty6r6w9n2z", "action": "admin::transfer.tokens.create", "actionParameters": {}, "subject": null, @@ -669,7 +624,7 @@ "locale": null }, { - "documentId": "wknhcbgxcys3oz8g5e8aj0ry", + "documentId": "tzyqqsw4h001txza127lqkvp", "action": "admin::transfer.tokens.delete", "actionParameters": {}, "subject": null, @@ -678,7 +633,7 @@ "locale": null }, { - "documentId": "efyighfo4b65voywdigsgpeu", + "documentId": "upzrjrxcyyvj9emm7frne3u4", "action": "admin::transfer.tokens.read", "actionParameters": {}, "subject": null, @@ -687,7 +642,7 @@ "locale": null }, { - "documentId": "mnor29r816281d7hlg79h71k", + "documentId": "yzhq4chfezbgq0l0w2iwx7kt", "action": "admin::transfer.tokens.regenerate", "actionParameters": {}, "subject": null, @@ -696,7 +651,7 @@ "locale": null }, { - "documentId": "li1vp8l66m6v41bd5thdpoi7", + "documentId": "l166qads0n8k5aj34rx69vsg", "action": "admin::transfer.tokens.update", "actionParameters": {}, "subject": null, @@ -705,7 +660,7 @@ "locale": null }, { - "documentId": "h31eiga3rno12u8xw1zl6rgd", + "documentId": "snocmjr8cls6gyhu9rholv5f", "action": "admin::users.create", "actionParameters": {}, "subject": null, @@ -714,7 +669,7 @@ "locale": null }, { - "documentId": "i8if5771mr142wdvj49oizwp", + "documentId": "o1vcfntl3l8vqlh8zoahi1fa", "action": "admin::users.delete", "actionParameters": {}, "subject": null, @@ -723,7 +678,7 @@ "locale": null }, { - "documentId": "ymqkexkb2bjn94g3b6s963sl", + "documentId": "ls1kjozytbfmq2k7gbde8vug", "action": "admin::users.read", "actionParameters": {}, "subject": null, @@ -732,7 +687,7 @@ "locale": null }, { - "documentId": "wnvhvv0vf9ikenmchmwqhds3", + "documentId": "z9ezwe8p735d2bqut2j5gb8b", "action": "admin::users.update", "actionParameters": {}, "subject": null, @@ -741,7 +696,7 @@ "locale": null }, { - "documentId": "lwxewdf1uu6uk7x8fc4h23f4", + "documentId": "strofomb2kvopof7efpouvdk", "action": "admin::webhooks.create", "actionParameters": {}, "subject": null, @@ -750,7 +705,7 @@ "locale": null }, { - "documentId": "eu30yh7l0tw060ed4vagt578", + "documentId": "yl9t60jtdqvi04jersfchx9b", "action": "admin::webhooks.delete", "actionParameters": {}, "subject": null, @@ -759,7 +714,7 @@ "locale": null }, { - "documentId": "btn8g185u32fjrqwk8xnagel", + "documentId": "dljs48n82larbf1s8eyw0y46", "action": "admin::webhooks.read", "actionParameters": {}, "subject": null, @@ -768,7 +723,7 @@ "locale": null }, { - "documentId": "xchdm3m5jwskrj6zppwwjiad", + "documentId": "jdbiu25thq1t4vl7ddtxj6ah", "action": "admin::webhooks.update", "actionParameters": {}, "subject": null, @@ -777,7 +732,7 @@ "locale": null }, { - "documentId": "a5hyxugewhcgfmhz390qvsgc", + "documentId": "uxh53vvbjuxa86ywet40joy6", "action": "plugin::config-sync.menu-link", "actionParameters": {}, "subject": null, @@ -786,7 +741,7 @@ "locale": null }, { - "documentId": "mbw4z5v5hpslcoypuctl8ac4", + "documentId": "cv8dv4tijm0gze6nxmwuubib", "action": "plugin::config-sync.settings.read", "actionParameters": {}, "subject": null, @@ -795,7 +750,7 @@ "locale": null }, { - "documentId": "neb86ofl3mvp4l74yksvxgbx", + "documentId": "ynmr7s8wljlxe7jmv7wqhkue", "action": "plugin::content-manager.collection-types.configure-view", "actionParameters": {}, "subject": null, @@ -804,7 +759,7 @@ "locale": null }, { - "documentId": "an73zsuan3zuwr6slpmlelai", + "documentId": "bh8z5emqd7vk3703k1nf1el6", "action": "plugin::content-manager.components.configure-layout", "actionParameters": {}, "subject": null, @@ -813,7 +768,7 @@ "locale": null }, { - "documentId": "qwadje68a0hkoe3nv76s8k0e", + "documentId": "vye6eubif7xrpaoujp30tj3x", "action": "plugin::content-manager.explorer.create", "actionParameters": {}, "subject": "plugin::users-permissions.user", @@ -868,7 +823,7 @@ "locale": null }, { - "documentId": "ic4slg8o070tsp7eh9zjlgy5", + "documentId": "smbm3r9fnn3u87y45mr7tfd2", "action": "plugin::content-manager.explorer.delete", "actionParameters": {}, "subject": "plugin::users-permissions.user", @@ -877,7 +832,7 @@ "locale": null }, { - "documentId": "x8d7qzwys4l05onir681pymg", + "documentId": "big696xbpg57olaim84sgasu", "action": "plugin::content-manager.explorer.read", "actionParameters": {}, "subject": "plugin::users-permissions.user", @@ -932,7 +887,7 @@ "locale": null }, { - "documentId": "ummxikwlk4k1zvw6kbl4soxv", + "documentId": "tiufkkk4om92hekbp7vcckej", "action": "plugin::content-manager.explorer.update", "actionParameters": {}, "subject": "plugin::users-permissions.user", @@ -987,7 +942,7 @@ "locale": null }, { - "documentId": "h3mdrnnd3rfyb2lvkdvi5yja", + "documentId": "u0aie6cty0xt59gaz9c52ji9", "action": "plugin::content-manager.single-types.configure-view", "actionParameters": {}, "subject": null, @@ -996,7 +951,7 @@ "locale": null }, { - "documentId": "e4pw0j50389zv0bsxh15g3un", + "documentId": "kduj8veq0vy6qjcw6tkwh1mp", "action": "plugin::content-type-builder.read", "actionParameters": {}, "subject": null, @@ -1005,7 +960,7 @@ "locale": null }, { - "documentId": "swnh642z3xfid2si6bsaywek", + "documentId": "oi0r05vxprlahvng82njbenq", "action": "plugin::email.settings.read", "actionParameters": {}, "subject": null, @@ -1014,7 +969,7 @@ "locale": null }, { - "documentId": "wn3ksrdaow64efrdg9lvavea", + "documentId": "krvoxe0tcxxsz13dnz4yctx9", "action": "plugin::i18n.locale.create", "actionParameters": {}, "subject": null, @@ -1023,7 +978,7 @@ "locale": null }, { - "documentId": "l2rf9kovvb02hl54j9866ovq", + "documentId": "ikud9l3dk1sbgz4awf4sorh0", "action": "plugin::i18n.locale.delete", "actionParameters": {}, "subject": null, @@ -1032,7 +987,7 @@ "locale": null }, { - "documentId": "d05z0oxyt2f3qku5h74u29ez", + "documentId": "c677gj1it1z9h58978453iko", "action": "plugin::i18n.locale.read", "actionParameters": {}, "subject": null, @@ -1041,7 +996,7 @@ "locale": null }, { - "documentId": "b3wjez1r4g1qe6m1vv9jao53", + "documentId": "mjfbqvnd1dbf3abfou5ubujd", "action": "plugin::i18n.locale.update", "actionParameters": {}, "subject": null, @@ -1050,7 +1005,7 @@ "locale": null }, { - "documentId": "yaix2zah5de33306i8lefm9e", + "documentId": "yf32nkfbxqhny2yjluigvsgs", "action": "plugin::import-export-entries.export", "actionParameters": {}, "subject": null, @@ -1059,7 +1014,7 @@ "locale": null }, { - "documentId": "m82y2s8f1staxkrqnamrabd7", + "documentId": "qp2047xo6e49kebfmfho6wcd", "action": "plugin::import-export-entries.import", "actionParameters": {}, "subject": null, @@ -1068,7 +1023,7 @@ "locale": null }, { - "documentId": "ifty0rxaz4l6aonylzxvor5r", + "documentId": "pe8ebui7h1l52n0eujyncoqh", "action": "plugin::upload.assets.copy-link", "actionParameters": {}, "subject": null, @@ -1077,7 +1032,7 @@ "locale": null }, { - "documentId": "n818if6azii50wu695cjy27u", + "documentId": "kapvic1ne9qs80zlo6wsrnuf", "action": "plugin::upload.assets.create", "actionParameters": {}, "subject": null, @@ -1086,7 +1041,7 @@ "locale": null }, { - "documentId": "fkvtynfpxaqg8ybn6tcw1t5f", + "documentId": "u188i3vdomgfqmsc4gqiarux", "action": "plugin::upload.assets.download", "actionParameters": {}, "subject": null, @@ -1095,7 +1050,7 @@ "locale": null }, { - "documentId": "n9cuafnbkl5aljn6q55v49gr", + "documentId": "ldzype7v2ubmsuajlng08opd", "action": "plugin::upload.assets.update", "actionParameters": {}, "subject": null, @@ -1104,7 +1059,7 @@ "locale": null }, { - "documentId": "h27tpdh229ujo5r19vldyc5y", + "documentId": "g8vkygb6aiq6560abxm1oxti", "action": "plugin::upload.configure-view", "actionParameters": {}, "subject": null, @@ -1113,7 +1068,7 @@ "locale": null }, { - "documentId": "x6ko1kh956j31co8pcx437e3", + "documentId": "kmgwwmdvajjw2ascpc95nuys", "action": "plugin::upload.read", "actionParameters": {}, "subject": null, @@ -1122,7 +1077,7 @@ "locale": null }, { - "documentId": "s68jh213sah4fx2oly7ex3r7", + "documentId": "v9ts55e1rmd0nty11zp7rhf5", "action": "plugin::upload.settings.read", "actionParameters": {}, "subject": null, @@ -1131,7 +1086,7 @@ "locale": null }, { - "documentId": "rgln15m5y7t3d74caetlgull", + "documentId": "oxribat495kmj4lhkttbe5o1", "action": "plugin::users-permissions.advanced-settings.read", "actionParameters": {}, "subject": null, @@ -1140,7 +1095,7 @@ "locale": null }, { - "documentId": "mrjgd07a7pztrp57mlp3ruhc", + "documentId": "rjp37u6omp5szylp4ycwhlzd", "action": "plugin::users-permissions.advanced-settings.update", "actionParameters": {}, "subject": null, @@ -1149,7 +1104,7 @@ "locale": null }, { - "documentId": "nyijan7iz0ehp7mnjnt020zf", + "documentId": "gmm1h7o3bqkmioxzlwo2pe1c", "action": "plugin::users-permissions.email-templates.read", "actionParameters": {}, "subject": null, @@ -1158,7 +1113,7 @@ "locale": null }, { - "documentId": "pfuwilmcqydhbnwzh8qr32hb", + "documentId": "c3pkj0qql5l9tl6qo6ubnzbz", "action": "plugin::users-permissions.email-templates.update", "actionParameters": {}, "subject": null, @@ -1167,7 +1122,7 @@ "locale": null }, { - "documentId": "x2hngjeggwhmb8qtz00k3oa4", + "documentId": "fz80lxpyle6b02pyqmr3u6f8", "action": "plugin::users-permissions.providers.read", "actionParameters": {}, "subject": null, @@ -1176,7 +1131,7 @@ "locale": null }, { - "documentId": "vb55maizrgp5h5rrkp7xaz9p", + "documentId": "wtxdwfxim74hsruaw1imur8z", "action": "plugin::users-permissions.providers.update", "actionParameters": {}, "subject": null, @@ -1185,7 +1140,7 @@ "locale": null }, { - "documentId": "vjds78vds754ktx2btmvpwym", + "documentId": "gjtawa62cwwt08hx887zbev6", "action": "plugin::users-permissions.roles.create", "actionParameters": {}, "subject": null, @@ -1194,7 +1149,7 @@ "locale": null }, { - "documentId": "q4boqtd22xocjlwfvnyzkmo0", + "documentId": "snjhcff2dcrtt9qjcicz1wu2", "action": "plugin::users-permissions.roles.delete", "actionParameters": {}, "subject": null, @@ -1203,7 +1158,7 @@ "locale": null }, { - "documentId": "il92obp8wjkxy09ten31n5eb", + "documentId": "vpq4n8c6ynufy82x249zizfb", "action": "plugin::users-permissions.roles.read", "actionParameters": {}, "subject": null, @@ -1212,7 +1167,7 @@ "locale": null }, { - "documentId": "zvqg3v1d4jkqls1pd0itf7jg", + "documentId": "r4nuwkg077i7cbyv5i0p6yrn", "action": "plugin::users-permissions.roles.update", "actionParameters": {}, "subject": null, @@ -1221,4 +1176,4 @@ "locale": null } ] -} \ No newline at end of file +} diff --git a/server2/config/sync/core-store.plugin_users-permissions_email.json b/server2/config/sync/core-store.plugin_users-permissions_email.json index f1759792..36c6ac99 100644 --- a/server2/config/sync/core-store.plugin_users-permissions_email.json +++ b/server2/config/sync/core-store.plugin_users-permissions_email.json @@ -23,9 +23,7 @@ "body": { "rows": [ { - "cells": [ - 1 - ], + "cells": [1], "columns": [ { "contents": [ @@ -113,10 +111,7 @@ "repeat": "no-repeat", "size": "custom", "position": "top-center", - "customPosition": [ - "50%", - "0%" - ] + "customPosition": ["50%", "0%"] }, "padding": "0px", "anchor": "", @@ -173,10 +168,7 @@ "repeat": "no-repeat", "size": "custom", "position": "top-center", - "customPosition": [ - "50%", - "0%" - ] + "customPosition": ["50%", "0%"] }, "preheaderText": "", "linkStyle": { @@ -212,4 +204,4 @@ "type": "object", "environment": null, "tag": null -} \ No newline at end of file +} diff --git a/server2/config/sync/i18n-locale.en.json b/server2/config/sync/i18n-locale.en.json index 45c8c2bf..617546e6 100644 --- a/server2/config/sync/i18n-locale.en.json +++ b/server2/config/sync/i18n-locale.en.json @@ -1,6 +1,6 @@ { - "documentId": "v1wbse2c9oocx3k424xbhpta", + "documentId": "jbjf4079ui24sn920zmwegwb", "name": "English (en)", "code": "en", "locale": null -} \ No newline at end of file +} diff --git a/server2/config/sync/i18n-locale.ro.json b/server2/config/sync/i18n-locale.ro.json index 25b845f0..941960d0 100644 --- a/server2/config/sync/i18n-locale.ro.json +++ b/server2/config/sync/i18n-locale.ro.json @@ -1,6 +1,6 @@ { - "documentId": "z1679nkb0vir5g7egl3rmflr", + "documentId": "xvhvrjno6hfdmlf43oz98nvp", "name": "Romanian (ro)", "code": "ro", "locale": null -} \ No newline at end of file +} diff --git a/server2/config/sync/user-role.authenticated.json b/server2/config/sync/user-role.authenticated.json index 5049abc0..a56e0620 100644 --- a/server2/config/sync/user-role.authenticated.json +++ b/server2/config/sync/user-role.authenticated.json @@ -1,114 +1,114 @@ { - "documentId": "bjkg5hlm71yh9o7g21nbtly2", + "documentId": "aie5pr1e57iffmtm6n78c3ae", "name": "Admin ONG", "description": "Default role given to authenticated user.", "type": "authenticated", "locale": null, "permissions": [ { - "documentId": "y94t4ge67ssn6z8avbgdfqpk", + "documentId": "p3za5ox5sdqq5674mshnxcpi", "action": "api::dimension.dimension.find", "locale": null }, { - "documentId": "v1f6qpsvg1qazd8ympvzbivu", + "documentId": "vo1wm1hhg9vc9if5gsypirp4", "action": "api::domain.domain.find", "locale": null }, { - "documentId": "u9izmttz5nrg84pathx2aicq", + "documentId": "xihurpwkqsi2p8gin3ghqffm", "action": "api::evaluation.evaluation.create", "locale": null }, { - "documentId": "dqme1mvnuzubodnfsnpulbvz", + "documentId": "rfxbwu5w8wv3dac6eyeyrz64", "action": "api::evaluation.evaluation.delete", "locale": null }, { - "documentId": "byhs8rgkykdejvonoj7ftg9c", + "documentId": "dld84a8h3mxx0a0g34pft4j6", "action": "api::evaluation.evaluation.find", "locale": null }, { - "documentId": "cvyu97a21exd2u4tqln4uhoa", + "documentId": "ysrukaz2cje8upjulsuoy11w", "action": "api::evaluation.evaluation.findOne", "locale": null }, { - "documentId": "bbfm7mnqc3rkphkg2adrusq9", + "documentId": "xfche4t44u1azjxy8aq5oy0s", "action": "api::evaluation.evaluation.update", "locale": null }, { - "documentId": "oeh774v3pav9qz98dvbdsmn0", + "documentId": "hxkxe29ailnqgawe2vv146it", "action": "api::matrix.matrix.find", "locale": null }, { - "documentId": "ubwpvcqbuqa2fe0ky82prx6m", + "documentId": "vvnl9g7fngaqvzs1r9gjljzh", "action": "api::mentorship-request.mentorship-request.create", "locale": null }, { - "documentId": "kp19i5f82ebybab2de5txafk", + "documentId": "biewjc8rw7bywa86a4ureh0n", "action": "api::program.program.find", "locale": null }, { - "documentId": "df1spu0vboic48mwyz2z26qj", + "documentId": "xhre65l71wqd5qctzp08l8mk", "action": "api::report.report.create", "locale": null }, { - "documentId": "les53sp20s9yw611gki6d2gp", + "documentId": "ha14qulv3kz4n2e0qxb9r4r3", "action": "api::report.report.find", "locale": null }, { - "documentId": "m6jw20jnrb931bonvs13f8in", + "documentId": "elfaxq6bikrmjf66oh5v5bq0", "action": "api::report.report.findOne", "locale": null }, { - "documentId": "x8d91l75yk32k10kayhkt09n", + "documentId": "ihc7q1royzvq11vp8adqrw1w", "action": "api::report.report.update", "locale": null }, { - "documentId": "psjnrh711vr4n5je1fix6vn8", + "documentId": "zfjtr3sdcu6qviukdsnpjfxu", "action": "plugin::upload.content-api.upload", "locale": null }, { - "documentId": "dbzy771juljvgqe2u2cnqa2z", + "documentId": "wfsw2cpwa4ghhy95hj8175az", "action": "plugin::users-permissions.auth.changePassword", "locale": null }, { - "documentId": "kja6gf7yvuhix8e7z6x5xkyb", + "documentId": "f4iithpgnkzznjla7h7w7ju5", "action": "plugin::users-permissions.role.find", "locale": null }, { - "documentId": "c09b7taqphy402z1wnhujajt", + "documentId": "wbnem3yz4u5as2pi0kcsmu3x", "action": "plugin::users-permissions.user.find", "locale": null }, { - "documentId": "q2hxjuaqitoikiw88i3r3zy8", + "documentId": "r3xs3d3v0tdefczimrcfadzz", "action": "plugin::users-permissions.user.findOne", "locale": null }, { - "documentId": "juov72di8bo23lembyjhh4oz", + "documentId": "zwghd3rwrssjd8jrk78v2135", "action": "plugin::users-permissions.user.me", "locale": null }, { - "documentId": "s2aqbe64am0pkov13i0vcs4p", + "documentId": "d8qhmdydrooivs57thdctmpz", "action": "plugin::users-permissions.user.update", "locale": null } ] -} \ No newline at end of file +} diff --git a/server2/config/sync/user-role.fdsc.json b/server2/config/sync/user-role.fdsc.json index b0aed7b3..f45ebcd2 100644 --- a/server2/config/sync/user-role.fdsc.json +++ b/server2/config/sync/user-role.fdsc.json @@ -1,114 +1,114 @@ { - "documentId": "qiwfgljixjvtkb6f2tbbli1u", + "documentId": "c9mcgr3uw47i06jeis6qd2ce", "name": "Admin FDSC", "description": "Utilizator de tipul Admin FDSC", "type": "fdsc", "locale": null, "permissions": [ { - "documentId": "m36ekeb41xvmg2nmwdts0wor", + "documentId": "xo49gfcvni83l59h7d924hqv", "action": "api::activity.activity.find", "locale": null }, { - "documentId": "pva1m5454s7bbunuzi5hamnd", + "documentId": "a17lczxux7viu7wqls5sc94w", "action": "api::dimension.dimension.find", "locale": null }, { - "documentId": "zxbovtgbyczd2qfaisaehrgx", + "documentId": "o8ufcr3le8shp2b0z6ogtc65", "action": "api::domain.domain.find", "locale": null }, { - "documentId": "smk9juvsnjuh8aoqwfzakbmc", + "documentId": "uj0t0322a4y5mtlzjnof7j7m", "action": "api::evaluation.evaluation.find", "locale": null }, { - "documentId": "xy52xbv89vg41r52k3ot5hpw", + "documentId": "ewh4xdu1vjz5ddg53ypx08ou", "action": "api::evaluation.evaluation.findOne", "locale": null }, { - "documentId": "ilmc77niqfhlvh0dhepmb1vw", + "documentId": "zbnmkipwzxv43ezaz2rq1p06", "action": "api::evaluation.evaluation.update", "locale": null }, { - "documentId": "y88g6fiok3aobp68t9gse3x7", + "documentId": "h83mbzyrqs7ldg2p8iqktu5u", "action": "api::matrix.matrix.find", "locale": null }, { - "documentId": "zjvv6czodc2zcpfopioyladc", + "documentId": "hkhr04sgykutrv5wo3hcja0p", "action": "api::program.program.create", "locale": null }, { - "documentId": "pm5vw91zo6blkmzz5pwszyff", + "documentId": "czml2b6s7znyttgbrh6yo3u2", "action": "api::program.program.find", "locale": null }, { - "documentId": "q7gtlklluj9i49ezwppvbtx6", + "documentId": "oaxmvigq949ejwfe8emf0cce", "action": "api::program.program.findOne", "locale": null }, { - "documentId": "bqtefavfsidjc3axpjx2997d", + "documentId": "a170w3el9ejb8xkp8k5a3fm7", "action": "api::program.program.update", "locale": null }, { - "documentId": "cxnsmnw6yhb6pxnrzgg9z7zt", + "documentId": "uykht05frzf8xshdhjhxqxcf", "action": "api::report.report.find", "locale": null }, { - "documentId": "ywndnhjfix9ka9bj9bvxobp2", + "documentId": "u7hh5rnagvyzu25tib0afnkb", "action": "api::report.report.findOne", "locale": null }, { - "documentId": "lntc9hs6r2et5ny75l1j3cos", + "documentId": "ga6vnztk8nxstm29m8kyd823", "action": "api::report.report.update", "locale": null }, { - "documentId": "vumgf4f4npglyw28g46gogpl", + "documentId": "r5d3ohrwni910ippunxgkv0g", "action": "plugin::upload.content-api.upload", "locale": null }, { - "documentId": "ugncgbjfxqa93ucclksd65o4", + "documentId": "hf7ry3zy256h5p000w5bnw31", "action": "plugin::users-permissions.role.find", "locale": null }, { - "documentId": "f7akqqjkzxyix2ruy7f11taj", + "documentId": "pninxi0btmcuzezya9h1t2rr", "action": "plugin::users-permissions.user.create", "locale": null }, { - "documentId": "harbmk986nqixd07mjcvsyme", + "documentId": "cjgba650il00a2u8z69zol23", "action": "plugin::users-permissions.user.find", "locale": null }, { - "documentId": "dtao5bep5nbi1m8l12wk2obq", + "documentId": "r4h7vg5t9wc42dvthyy7epvj", "action": "plugin::users-permissions.user.findOne", "locale": null }, { - "documentId": "xkgrjt5xyk62kh6kg5u11fo0", + "documentId": "cw3b3gfe0dfvaae8a0w7pox3", "action": "plugin::users-permissions.user.me", "locale": null }, { - "documentId": "ticqihywafpodrxgkb8llk5i", + "documentId": "gtgpgqkn5v7fhm26yf2mqi7f", "action": "plugin::users-permissions.user.update", "locale": null } ] -} \ No newline at end of file +} diff --git a/server2/config/sync/user-role.mentor.json b/server2/config/sync/user-role.mentor.json index 33e027ca..def79d6f 100644 --- a/server2/config/sync/user-role.mentor.json +++ b/server2/config/sync/user-role.mentor.json @@ -1,84 +1,84 @@ { - "documentId": "vsxoycu64l3leyrq9tluwe14", + "documentId": "h547bqf4fztkenxfc4n6dwd4", "name": "Persoană resursă", "description": "Mentor", "type": "mentor", "locale": null, "permissions": [ { - "documentId": "yjk6b1w3uha0elac41l8cxwg", + "documentId": "kvitjeaw5vkmldz2ckbfv464", "action": "api::activity-type.activity-type.find", "locale": null }, { - "documentId": "jrzrlt5bsjhk6szg7jymwfqt", + "documentId": "s5rxr71ut5pzwzq9t1klewm0", "action": "api::activity.activity.create", "locale": null }, { - "documentId": "a3lcxp8kl3qr685riov71k94", + "documentId": "vmw3bvkqucgbzktqyzb00zyi", "action": "api::activity.activity.find", "locale": null }, { - "documentId": "j4d9fiaitshiji5hw9cnqdnq", + "documentId": "r7015924ec8hws2w6f5syfxg", "action": "api::dimension.dimension.find", "locale": null }, { - "documentId": "l300vfwovzhmx6usdg2de7kc", + "documentId": "gmq2ngi8w9cwlnwto8sfnlyt", "action": "api::domain.domain.find", "locale": null }, { - "documentId": "egzvqkz7a4079zl1wgyko5pp", + "documentId": "ccdrteejgjggaas683rook76", "action": "api::evaluation.evaluation.find", "locale": null }, { - "documentId": "tbe8t786ehprg3owvqk7o1he", + "documentId": "g2s4xup4lioimcdnlppui833", "action": "api::matrix.matrix.find", "locale": null }, { - "documentId": "yelmvstr4jdz8e3rctcfu0nk", + "documentId": "mq9u3086yrl16bcsj2k5tiun", "action": "api::program.program.find", "locale": null }, { - "documentId": "u78luqjojxqi2j7r6y2nrpc4", + "documentId": "umvtbcycoh2qe3ewoldujlnh", "action": "api::report.report.find", "locale": null }, { - "documentId": "jdao7danosjm4qhnfws5g7oh", + "documentId": "wj2jpsqsgp1c0mz7pyh7tyz3", "action": "api::report.report.findOne", "locale": null }, { - "documentId": "r4tqn089bvbidvxom6joxk81", + "documentId": "nydhwk6a0h3q3zb6jdmy7pkv", "action": "plugin::upload.content-api.upload", "locale": null }, { - "documentId": "ylkxqrs1o4lj77op9vgoet32", + "documentId": "pdbut67ni2f3rmb9qbwg4t7n", "action": "plugin::users-permissions.role.find", "locale": null }, { - "documentId": "ziwzwg9wvqnqlpdo8zqejmok", + "documentId": "lqv1ke4ejs8kjpi3grbmvjbm", "action": "plugin::users-permissions.user.find", "locale": null }, { - "documentId": "n237pvcbkiugnuvk3mnnyykw", + "documentId": "znlp0lagtzvbhh0tavcoyji1", "action": "plugin::users-permissions.user.me", "locale": null }, { - "documentId": "j39v9jp5mlj2c5mtd85lk0il", + "documentId": "wzaae0kw1fckw4a5zmzhp0tw", "action": "plugin::users-permissions.user.update", "locale": null } ] -} \ No newline at end of file +} diff --git a/server2/config/sync/user-role.public.json b/server2/config/sync/user-role.public.json index 80971929..a55e27dd 100644 --- a/server2/config/sync/user-role.public.json +++ b/server2/config/sync/user-role.public.json @@ -1,84 +1,84 @@ { - "documentId": "sklh7vsft5th7qsy2f72f9u2", + "documentId": "opfoqzugn7703y5nebp3b13e", "name": "Public", "description": "Default role given to unauthenticated user.", "type": "public", "locale": null, "permissions": [ { - "documentId": "wrzvltpf3amm90zt3vlhcdny", + "documentId": "enimg8jl5a73ovzbzf4d7uhl", "action": "api::dimension.dimension.find", "locale": null }, { - "documentId": "t3htxiy90iq6xrblzh0778qg", + "documentId": "b2b59wesax335h27o2t8awa8", "action": "api::domain.domain.find", "locale": null }, { - "documentId": "e24lhnybbh9037hwx598pnc5", + "documentId": "pobiaoi2z2f4tl0c1wvkjwcg", "action": "api::evaluation.evaluation.find", "locale": null }, { - "documentId": "wscruu7rz4joo1r2ejbllu4i", + "documentId": "pwoe696eyhxwe4m8eymdiugx", "action": "api::evaluation.evaluation.findOne", "locale": null }, { - "documentId": "alj0ive1q69wh8oyq3knixxj", + "documentId": "t497qyj4v8zgniyb7eds6u1n", "action": "api::evaluation.evaluation.update", "locale": null }, { - "documentId": "uo32ypxnbte1ms2n7cx3j819", + "documentId": "h26qqt7iewmzu0u2feofbrow", "action": "api::matrix.matrix.find", "locale": null }, { - "documentId": "lf4423150nh4ws7az0vb76oh", + "documentId": "caj9dxie0zmgm7fd889lr2et", "action": "plugin::users-permissions.auth.callback", "locale": null }, { - "documentId": "wu67gp1lrk8dy5fidwbu0wp8", + "documentId": "agordi69lejs07xx33jpag9n", "action": "plugin::users-permissions.auth.connect", "locale": null }, { - "documentId": "n1ljfa0qisk69de3grfxuzdr", + "documentId": "v2iv9gcc8biaq7sgq0vnibby", "action": "plugin::users-permissions.auth.emailConfirmation", "locale": null }, { - "documentId": "i2cvgcrq6lvhpfnc569ckuza", + "documentId": "ik6opbippbm898vr0g9tslxy", "action": "plugin::users-permissions.auth.findRegistrationInfo", "locale": null }, { - "documentId": "ky7qzuf2bwox3mzyfc11fnn5", + "documentId": "ckm04iclzo448kndygg30xcq", "action": "plugin::users-permissions.auth.forgotPassword", "locale": null }, { - "documentId": "t3uv0d0ddtwbyeivx9q720is", + "documentId": "oacxxpgkb091i5jm1e8ieti4", "action": "plugin::users-permissions.auth.register", "locale": null }, { - "documentId": "hqk98prol9sqq33b9lnxdtdt", + "documentId": "gr15rcs0iwbarajpwu1upno0", "action": "plugin::users-permissions.auth.registerWithConfirmation", "locale": null }, { - "documentId": "jdaetgq4t1e5s86ipfd2xrhm", + "documentId": "ruk20f6t4pr9wluaf2rff3dd", "action": "plugin::users-permissions.auth.resetPassword", "locale": null }, { - "documentId": "aqgvp7pxvy7yqp0vzlna5psn", + "documentId": "hemor8lm12jm1xugxvqtc9ea", "action": "plugin::users-permissions.auth.sendEmailConfirmation", "locale": null } ] -} \ No newline at end of file +} From 6bf384355b6bc36d4fe1115e77c75d860fada858 Mon Sep 17 00:00:00 2001 From: Ion Dormenco Date: Thu, 11 Sep 2025 14:13:29 +0300 Subject: [PATCH 22/61] clean --- .../config/sync/admin-role.strapi-author.json | 92 +--- .../config/sync/admin-role.strapi-editor.json | 92 +--- .../sync/admin-role.strapi-super-admin.json | 492 ++++-------------- ...-store.plugin_users-permissions_email.json | 5 + server2/config/sync/i18n-locale.en.json | 4 +- server2/config/sync/i18n-locale.ro.json | 4 +- .../config/sync/user-role.authenticated.json | 86 +-- server2/config/sync/user-role.fdsc.json | 86 +-- server2/config/sync/user-role.mentor.json | 62 +-- server2/config/sync/user-role.public.json | 62 +-- 10 files changed, 213 insertions(+), 772 deletions(-) diff --git a/server2/config/sync/admin-role.strapi-author.json b/server2/config/sync/admin-role.strapi-author.json index 6468d790..9d705f2c 100644 --- a/server2/config/sync/admin-role.strapi-author.json +++ b/server2/config/sync/admin-role.strapi-author.json @@ -1,14 +1,10 @@ { - "documentId": "pb0ur98qbvgttrujkg7io61r", "name": "Author", "code": "strapi-author", "description": "Authors can manage the content they have created.", - "locale": null, "permissions": [ { - "documentId": "rd3fnpf813kb5gbp0i72nuqq", "action": "plugin::content-manager.explorer.create", - "actionParameters": {}, "subject": "api::evaluation.evaluation", "properties": { "fields": [ @@ -18,22 +14,16 @@ "report" ] }, - "conditions": ["admin::is-creator"], - "locale": null + "conditions": ["admin::is-creator"] }, { - "documentId": "iwfzbm6cucgdn9lv5ezv44hb", "action": "plugin::content-manager.explorer.delete", - "actionParameters": {}, "subject": "api::evaluation.evaluation", "properties": {}, - "conditions": ["admin::is-creator"], - "locale": null + "conditions": ["admin::is-creator"] }, { - "documentId": "mi45v2typxk0nkj3a5nl9a7j", "action": "plugin::content-manager.explorer.read", - "actionParameters": {}, "subject": "api::evaluation.evaluation", "properties": { "fields": [ @@ -43,13 +33,10 @@ "report" ] }, - "conditions": ["admin::is-creator"], - "locale": null + "conditions": ["admin::is-creator"] }, { - "documentId": "r6vk31n0k8datsdkozvxcigz", "action": "plugin::content-manager.explorer.update", - "actionParameters": {}, "subject": "api::evaluation.evaluation", "properties": { "fields": [ @@ -59,146 +46,103 @@ "report" ] }, - "conditions": ["admin::is-creator"], - "locale": null + "conditions": ["admin::is-creator"] }, { - "documentId": "beshdlsqogj0vp7c4cxxyj3s", "action": "plugin::content-manager.explorer.create", - "actionParameters": {}, "subject": "api::matrix.matrix", "properties": { "fields": [] }, - "conditions": ["admin::is-creator"], - "locale": null + "conditions": ["admin::is-creator"] }, { - "documentId": "vnrdnsk2v0nwxqxb5evl3u28", "action": "plugin::content-manager.explorer.delete", - "actionParameters": {}, "subject": "api::matrix.matrix", "properties": {}, - "conditions": ["admin::is-creator"], - "locale": null + "conditions": ["admin::is-creator"] }, { - "documentId": "rxaofytc5iw78vp0odsem984", "action": "plugin::content-manager.explorer.read", - "actionParameters": {}, "subject": "api::matrix.matrix", "properties": { "fields": [] }, - "conditions": ["admin::is-creator"], - "locale": null + "conditions": ["admin::is-creator"] }, { - "documentId": "wey2a9gpb254xwvqoptbkfk7", "action": "plugin::content-manager.explorer.update", - "actionParameters": {}, "subject": "api::matrix.matrix", "properties": { "fields": [] }, - "conditions": ["admin::is-creator"], - "locale": null + "conditions": ["admin::is-creator"] }, { - "documentId": "xbimte4dfztjj5jiv5cum463", "action": "plugin::content-manager.explorer.create", - "actionParameters": {}, "subject": "api::report.report", "properties": { "fields": ["evaluations", "deadline", "finished", "user"] }, - "conditions": ["admin::is-creator"], - "locale": null + "conditions": ["admin::is-creator"] }, { - "documentId": "ag22o70h3xxhyl5gypuje04g", "action": "plugin::content-manager.explorer.delete", - "actionParameters": {}, "subject": "api::report.report", "properties": {}, - "conditions": ["admin::is-creator"], - "locale": null + "conditions": ["admin::is-creator"] }, { - "documentId": "f5i83v06296awmxfu5xe65a9", "action": "plugin::content-manager.explorer.read", - "actionParameters": {}, "subject": "api::report.report", "properties": { "fields": ["evaluations", "deadline", "finished", "user"] }, - "conditions": ["admin::is-creator"], - "locale": null + "conditions": ["admin::is-creator"] }, { - "documentId": "s8uf46bbfviqk8ppwe6s2pnr", "action": "plugin::content-manager.explorer.update", - "actionParameters": {}, "subject": "api::report.report", "properties": { "fields": ["evaluations", "deadline", "finished", "user"] }, - "conditions": ["admin::is-creator"], - "locale": null + "conditions": ["admin::is-creator"] }, { - "documentId": "i98ci45bzx5d3uydtggu35w9", "action": "plugin::upload.assets.copy-link", - "actionParameters": {}, "subject": null, "properties": {}, - "conditions": [], - "locale": null + "conditions": [] }, { - "documentId": "urcz8c6wcax9galyisn1neqm", "action": "plugin::upload.assets.create", - "actionParameters": {}, "subject": null, "properties": {}, - "conditions": [], - "locale": null + "conditions": [] }, { - "documentId": "oiodt17t90ubxcyd0oa4jcpy", "action": "plugin::upload.assets.download", - "actionParameters": {}, "subject": null, "properties": {}, - "conditions": [], - "locale": null + "conditions": [] }, { - "documentId": "sxicjxdn4nj1ps3r7kc8gmzm", "action": "plugin::upload.assets.update", - "actionParameters": {}, "subject": null, "properties": {}, - "conditions": ["admin::is-creator"], - "locale": null + "conditions": ["admin::is-creator"] }, { - "documentId": "ye2qd0pbkv7ad660ea4onkfj", "action": "plugin::upload.configure-view", - "actionParameters": {}, "subject": null, "properties": {}, - "conditions": [], - "locale": null + "conditions": [] }, { - "documentId": "pjtwt9i60wrybz2tz9wauy3u", "action": "plugin::upload.read", - "actionParameters": {}, "subject": null, "properties": {}, - "conditions": ["admin::is-creator"], - "locale": null + "conditions": ["admin::is-creator"] } ] } diff --git a/server2/config/sync/admin-role.strapi-editor.json b/server2/config/sync/admin-role.strapi-editor.json index 1e3c82ce..b50d0064 100644 --- a/server2/config/sync/admin-role.strapi-editor.json +++ b/server2/config/sync/admin-role.strapi-editor.json @@ -1,14 +1,10 @@ { - "documentId": "elk23ij3j2mhzi3mlr5emccc", "name": "Editor", "code": "strapi-editor", "description": "Editors can manage and publish contents including those of other users.", - "locale": null, "permissions": [ { - "documentId": "x2gtfhc92zbakawrjpi7egnp", "action": "plugin::content-manager.explorer.create", - "actionParameters": {}, "subject": "api::evaluation.evaluation", "properties": { "fields": [ @@ -18,22 +14,16 @@ "report" ] }, - "conditions": [], - "locale": null + "conditions": [] }, { - "documentId": "iqtivgmxcaay08w6g2eha9wb", "action": "plugin::content-manager.explorer.delete", - "actionParameters": {}, "subject": "api::evaluation.evaluation", "properties": {}, - "conditions": [], - "locale": null + "conditions": [] }, { - "documentId": "lpfz5flrlt0ubw5z3msgyxe6", "action": "plugin::content-manager.explorer.read", - "actionParameters": {}, "subject": "api::evaluation.evaluation", "properties": { "fields": [ @@ -43,13 +33,10 @@ "report" ] }, - "conditions": [], - "locale": null + "conditions": [] }, { - "documentId": "vweau6g5c628h2otb4fd8yn0", "action": "plugin::content-manager.explorer.update", - "actionParameters": {}, "subject": "api::evaluation.evaluation", "properties": { "fields": [ @@ -59,146 +46,103 @@ "report" ] }, - "conditions": [], - "locale": null + "conditions": [] }, { - "documentId": "jmuek80auf8vbd66w11p6k7x", "action": "plugin::content-manager.explorer.create", - "actionParameters": {}, "subject": "api::matrix.matrix", "properties": { "fields": [] }, - "conditions": [], - "locale": null + "conditions": [] }, { - "documentId": "ywnvcezn4fikcutox9twydmq", "action": "plugin::content-manager.explorer.delete", - "actionParameters": {}, "subject": "api::matrix.matrix", "properties": {}, - "conditions": [], - "locale": null + "conditions": [] }, { - "documentId": "n715skfhrlodg5awqp2nkl7b", "action": "plugin::content-manager.explorer.read", - "actionParameters": {}, "subject": "api::matrix.matrix", "properties": { "fields": [] }, - "conditions": [], - "locale": null + "conditions": [] }, { - "documentId": "e05m2rpywfh3nr8ha4sqk8xk", "action": "plugin::content-manager.explorer.update", - "actionParameters": {}, "subject": "api::matrix.matrix", "properties": { "fields": [] }, - "conditions": [], - "locale": null + "conditions": [] }, { - "documentId": "s66xrbhkh3m9yy6f0dhz4f1n", "action": "plugin::content-manager.explorer.create", - "actionParameters": {}, "subject": "api::report.report", "properties": { "fields": ["evaluations", "deadline", "finished", "user"] }, - "conditions": [], - "locale": null + "conditions": [] }, { - "documentId": "ff3bq71gskg83aroqheq1ux2", "action": "plugin::content-manager.explorer.delete", - "actionParameters": {}, "subject": "api::report.report", "properties": {}, - "conditions": [], - "locale": null + "conditions": [] }, { - "documentId": "qrwo6nrcsm8uet6fqgxb48yd", "action": "plugin::content-manager.explorer.read", - "actionParameters": {}, "subject": "api::report.report", "properties": { "fields": ["evaluations", "deadline", "finished", "user"] }, - "conditions": [], - "locale": null + "conditions": [] }, { - "documentId": "e855dlvj3sgfw0jzcvvqtptd", "action": "plugin::content-manager.explorer.update", - "actionParameters": {}, "subject": "api::report.report", "properties": { "fields": ["evaluations", "deadline", "finished", "user"] }, - "conditions": [], - "locale": null + "conditions": [] }, { - "documentId": "axkq0och3rc83q9jbml94fww", "action": "plugin::upload.assets.copy-link", - "actionParameters": {}, "subject": null, "properties": {}, - "conditions": [], - "locale": null + "conditions": [] }, { - "documentId": "vi5vmxvl8juao5nrdm2adtdi", "action": "plugin::upload.assets.create", - "actionParameters": {}, "subject": null, "properties": {}, - "conditions": [], - "locale": null + "conditions": [] }, { - "documentId": "t5rreqwwuh2urzwe5yet2bnk", "action": "plugin::upload.assets.download", - "actionParameters": {}, "subject": null, "properties": {}, - "conditions": [], - "locale": null + "conditions": [] }, { - "documentId": "uotyml9kvpbb98vdjy1wzlvo", "action": "plugin::upload.assets.update", - "actionParameters": {}, "subject": null, "properties": {}, - "conditions": [], - "locale": null + "conditions": [] }, { - "documentId": "owcjijutw01rbvfmq5ix9djl", "action": "plugin::upload.configure-view", - "actionParameters": {}, "subject": null, "properties": {}, - "conditions": [], - "locale": null + "conditions": [] }, { - "documentId": "slwpmc0uwztqryx4wtjttkf7", "action": "plugin::upload.read", - "actionParameters": {}, "subject": null, "properties": {}, - "conditions": [], - "locale": null + "conditions": [] } ] } diff --git a/server2/config/sync/admin-role.strapi-super-admin.json b/server2/config/sync/admin-role.strapi-super-admin.json index 8798c793..359a7760 100644 --- a/server2/config/sync/admin-role.strapi-super-admin.json +++ b/server2/config/sync/admin-role.strapi-super-admin.json @@ -1,56 +1,40 @@ { - "documentId": "qzvl9yizffnifqnb2z4ksn9k", "name": "Super Admin", "code": "strapi-super-admin", "description": "Super Admins can access and manage all features and settings.", - "locale": null, "permissions": [ { - "documentId": "fzmxixx7gfw4pyrebu8r7vdq", "action": "plugin::content-manager.explorer.create", - "actionParameters": {}, "subject": "api::activity-type.activity-type", "properties": { "fields": ["name"] }, - "conditions": [], - "locale": null + "conditions": [] }, { - "documentId": "wkzn0ieu63dfic8lm9es45xh", "action": "plugin::content-manager.explorer.delete", - "actionParameters": {}, "subject": "api::activity-type.activity-type", "properties": {}, - "conditions": [], - "locale": null + "conditions": [] }, { - "documentId": "pg85khgggpbjeifrxffg00s8", "action": "plugin::content-manager.explorer.read", - "actionParameters": {}, "subject": "api::activity-type.activity-type", "properties": { "fields": ["name"] }, - "conditions": [], - "locale": null + "conditions": [] }, { - "documentId": "a1ojbq5sj49csryfwydkg40w", "action": "plugin::content-manager.explorer.update", - "actionParameters": {}, "subject": "api::activity-type.activity-type", "properties": { "fields": ["name"] }, - "conditions": [], - "locale": null + "conditions": [] }, { - "documentId": "bqowvooeavlzdkjsi625k6xb", "action": "plugin::content-manager.explorer.create", - "actionParameters": {}, "subject": "api::activity.activity", "properties": { "fields": [ @@ -63,22 +47,16 @@ "user" ] }, - "conditions": [], - "locale": null + "conditions": [] }, { - "documentId": "pgy9dk5lm3my7ugg82612e42", "action": "plugin::content-manager.explorer.delete", - "actionParameters": {}, "subject": "api::activity.activity", "properties": {}, - "conditions": [], - "locale": null + "conditions": [] }, { - "documentId": "ccmnjpfwsqh07ce58rj6isrm", "action": "plugin::content-manager.explorer.read", - "actionParameters": {}, "subject": "api::activity.activity", "properties": { "fields": [ @@ -91,13 +69,10 @@ "user" ] }, - "conditions": [], - "locale": null + "conditions": [] }, { - "documentId": "zyaxxifki8pe3ghkhnnafvn9", "action": "plugin::content-manager.explorer.update", - "actionParameters": {}, "subject": "api::activity.activity", "properties": { "fields": [ @@ -110,13 +85,10 @@ "user" ] }, - "conditions": [], - "locale": null + "conditions": [] }, { - "documentId": "z1dbdtiklmmawg5tcoodyu79", "action": "plugin::content-manager.explorer.create", - "actionParameters": {}, "subject": "api::dimension.dimension", "properties": { "fields": [ @@ -133,22 +105,16 @@ "activities" ] }, - "conditions": [], - "locale": null + "conditions": [] }, { - "documentId": "phrv4wn71av39unnff6il907", "action": "plugin::content-manager.explorer.delete", - "actionParameters": {}, "subject": "api::dimension.dimension", "properties": {}, - "conditions": [], - "locale": null + "conditions": [] }, { - "documentId": "efgadiyq7s1elb8nl2iryiwz", "action": "plugin::content-manager.explorer.read", - "actionParameters": {}, "subject": "api::dimension.dimension", "properties": { "fields": [ @@ -165,13 +131,10 @@ "activities" ] }, - "conditions": [], - "locale": null + "conditions": [] }, { - "documentId": "i9kjl7x1k1aid1xm1m2uww1z", "action": "plugin::content-manager.explorer.update", - "actionParameters": {}, "subject": "api::dimension.dimension", "properties": { "fields": [ @@ -188,55 +151,40 @@ "activities" ] }, - "conditions": [], - "locale": null + "conditions": [] }, { - "documentId": "c69qa60o3zxvubt0j7wgdl92", "action": "plugin::content-manager.explorer.create", - "actionParameters": {}, "subject": "api::domain.domain", "properties": { "fields": ["name", "mentors"] }, - "conditions": [], - "locale": null + "conditions": [] }, { - "documentId": "ty5oykznj1lomyeqe29ru0sk", "action": "plugin::content-manager.explorer.delete", - "actionParameters": {}, "subject": "api::domain.domain", "properties": {}, - "conditions": [], - "locale": null + "conditions": [] }, { - "documentId": "ipxydqudnk48zr84uh8fw94r", "action": "plugin::content-manager.explorer.read", - "actionParameters": {}, "subject": "api::domain.domain", "properties": { "fields": ["name", "mentors"] }, - "conditions": [], - "locale": null + "conditions": [] }, { - "documentId": "b9eu2ev6nx6mqsqqor1xedff", "action": "plugin::content-manager.explorer.update", - "actionParameters": {}, "subject": "api::domain.domain", "properties": { "fields": ["name", "mentors"] }, - "conditions": [], - "locale": null + "conditions": [] }, { - "documentId": "l8miwgbmv0pbekvajtj9dhta", "action": "plugin::content-manager.explorer.create", - "actionParameters": {}, "subject": "api::evaluation.evaluation", "properties": { "fields": [ @@ -246,22 +194,16 @@ "report" ] }, - "conditions": [], - "locale": null + "conditions": [] }, { - "documentId": "vlosmpmrgizp9as6eptn8vsc", "action": "plugin::content-manager.explorer.delete", - "actionParameters": {}, "subject": "api::evaluation.evaluation", "properties": {}, - "conditions": [], - "locale": null + "conditions": [] }, { - "documentId": "dni40bysbdy9s2s7nkfbm1q0", "action": "plugin::content-manager.explorer.read", - "actionParameters": {}, "subject": "api::evaluation.evaluation", "properties": { "fields": [ @@ -271,13 +213,10 @@ "report" ] }, - "conditions": [], - "locale": null + "conditions": [] }, { - "documentId": "vx2zinrs21rm4cfqr0zzamti", "action": "plugin::content-manager.explorer.update", - "actionParameters": {}, "subject": "api::evaluation.evaluation", "properties": { "fields": [ @@ -287,97 +226,70 @@ "report" ] }, - "conditions": [], - "locale": null + "conditions": [] }, { - "documentId": "syspcyrwo30c2wofay8077e3", "action": "plugin::content-manager.explorer.create", - "actionParameters": {}, "subject": "api::matrix.matrix", "properties": { "fields": ["dimensions"] }, - "conditions": [], - "locale": null + "conditions": [] }, { - "documentId": "jg7f8dl1bk640d0rj0solwj8", "action": "plugin::content-manager.explorer.delete", - "actionParameters": {}, "subject": "api::matrix.matrix", "properties": {}, - "conditions": [], - "locale": null + "conditions": [] }, { - "documentId": "up9373ojq7nlldsgseafzlxw", "action": "plugin::content-manager.explorer.read", - "actionParameters": {}, "subject": "api::matrix.matrix", "properties": { "fields": ["dimensions"] }, - "conditions": [], - "locale": null + "conditions": [] }, { - "documentId": "zmxh49lucvo5e8pb8fkp7ecf", "action": "plugin::content-manager.explorer.update", - "actionParameters": {}, "subject": "api::matrix.matrix", "properties": { "fields": ["dimensions"] }, - "conditions": [], - "locale": null + "conditions": [] }, { - "documentId": "q0vyo21ocsgx617enfpsfkl1", "action": "plugin::content-manager.explorer.create", - "actionParameters": {}, "subject": "api::mentorship-request.mentorship-request", "properties": { "fields": ["mentor", "user"] }, - "conditions": [], - "locale": null + "conditions": [] }, { - "documentId": "npdlp6m52lul1tl7rh1fwgpy", "action": "plugin::content-manager.explorer.delete", - "actionParameters": {}, "subject": "api::mentorship-request.mentorship-request", "properties": {}, - "conditions": [], - "locale": null + "conditions": [] }, { - "documentId": "ecsvp8dgpip97m35jya5qirl", "action": "plugin::content-manager.explorer.read", - "actionParameters": {}, "subject": "api::mentorship-request.mentorship-request", "properties": { "fields": ["mentor", "user"] }, - "conditions": [], - "locale": null + "conditions": [] }, { - "documentId": "zt4nid199sqnqggg57qfxkk2", "action": "plugin::content-manager.explorer.update", - "actionParameters": {}, "subject": "api::mentorship-request.mentorship-request", "properties": { "fields": ["mentor", "user"] }, - "conditions": [], - "locale": null + "conditions": [] }, { - "documentId": "p130zypbrgktrjfw1bjhndev", "action": "plugin::content-manager.explorer.create", - "actionParameters": {}, "subject": "api::program.program", "properties": { "fields": [ @@ -389,31 +301,22 @@ "users" ] }, - "conditions": [], - "locale": null + "conditions": [] }, { - "documentId": "wgu29sjfjm1umd1nc53wvol7", "action": "plugin::content-manager.explorer.delete", - "actionParameters": {}, "subject": "api::program.program", "properties": {}, - "conditions": [], - "locale": null + "conditions": [] }, { - "documentId": "wt5rx1pfxis4hwp53b86a9zj", "action": "plugin::content-manager.explorer.publish", - "actionParameters": {}, "subject": "api::program.program", "properties": {}, - "conditions": [], - "locale": null + "conditions": [] }, { - "documentId": "en3wneb1sc0kcbpata0bruh5", "action": "plugin::content-manager.explorer.read", - "actionParameters": {}, "subject": "api::program.program", "properties": { "fields": [ @@ -425,13 +328,10 @@ "users" ] }, - "conditions": [], - "locale": null + "conditions": [] }, { - "documentId": "civf4att99yvjnuijfzvyqw5", "action": "plugin::content-manager.explorer.update", - "actionParameters": {}, "subject": "api::program.program", "properties": { "fields": [ @@ -443,334 +343,226 @@ "users" ] }, - "conditions": [], - "locale": null + "conditions": [] }, { - "documentId": "zjv6qvymb9qicjgzfoy12zqr", "action": "plugin::content-manager.explorer.create", - "actionParameters": {}, "subject": "api::report.report", "properties": { "fields": ["evaluations", "deadline", "finished", "user"] }, - "conditions": [], - "locale": null + "conditions": [] }, { - "documentId": "ruq1opjxfkztyr6m4es8ofiq", "action": "plugin::content-manager.explorer.delete", - "actionParameters": {}, "subject": "api::report.report", "properties": {}, - "conditions": [], - "locale": null + "conditions": [] }, { - "documentId": "has8rv0xydfqdn17zn1zfzhl", "action": "plugin::content-manager.explorer.read", - "actionParameters": {}, "subject": "api::report.report", "properties": { "fields": ["evaluations", "deadline", "finished", "user"] }, - "conditions": [], - "locale": null + "conditions": [] }, { - "documentId": "xeazhpii2mz9yizntncloscn", "action": "plugin::content-manager.explorer.update", - "actionParameters": {}, "subject": "api::report.report", "properties": { "fields": ["evaluations", "deadline", "finished", "user"] }, - "conditions": [], - "locale": null + "conditions": [] }, { - "documentId": "nc1nl5vi95p6hqi2bybfc961", "action": "admin::api-tokens.access", - "actionParameters": {}, "subject": null, "properties": {}, - "conditions": [], - "locale": null + "conditions": [] }, { - "documentId": "wd75oh4xj45ivvb7gfdbw336", "action": "admin::api-tokens.create", - "actionParameters": {}, "subject": null, "properties": {}, - "conditions": [], - "locale": null + "conditions": [] }, { - "documentId": "wmzi71tapfqqzj76fvl2g3af", "action": "admin::api-tokens.delete", - "actionParameters": {}, "subject": null, "properties": {}, - "conditions": [], - "locale": null + "conditions": [] }, { - "documentId": "avk2ak5715rw0omp894qf6bm", "action": "admin::api-tokens.read", - "actionParameters": {}, "subject": null, "properties": {}, - "conditions": [], - "locale": null + "conditions": [] }, { - "documentId": "r5t0lyyzw5t2ze6i9pxvp289", "action": "admin::api-tokens.regenerate", - "actionParameters": {}, "subject": null, "properties": {}, - "conditions": [], - "locale": null + "conditions": [] }, { - "documentId": "qydcszvkakt0dzib6f8xnub0", "action": "admin::api-tokens.update", - "actionParameters": {}, "subject": null, "properties": {}, - "conditions": [], - "locale": null + "conditions": [] }, { - "documentId": "llfol4127u4jrkk7dgs8zj9f", "action": "admin::marketplace.read", - "actionParameters": {}, "subject": null, "properties": {}, - "conditions": [], - "locale": null + "conditions": [] }, { - "documentId": "zn5kpyjmkkwiyiizel0i9c4j", "action": "admin::project-settings.read", - "actionParameters": {}, "subject": null, "properties": {}, - "conditions": [], - "locale": null + "conditions": [] }, { - "documentId": "l8z9f841maew3ddfmjrvzv5c", "action": "admin::project-settings.update", - "actionParameters": {}, "subject": null, "properties": {}, - "conditions": [], - "locale": null + "conditions": [] }, { - "documentId": "tjne5w2czt65keupinu1j63a", "action": "admin::roles.create", - "actionParameters": {}, "subject": null, "properties": {}, - "conditions": [], - "locale": null + "conditions": [] }, { - "documentId": "av65kbwog6nx1qa7dbqnz9wn", "action": "admin::roles.delete", - "actionParameters": {}, "subject": null, "properties": {}, - "conditions": [], - "locale": null + "conditions": [] }, { - "documentId": "hnyo5o8un7vssevpd7j27qpa", "action": "admin::roles.read", - "actionParameters": {}, "subject": null, "properties": {}, - "conditions": [], - "locale": null + "conditions": [] }, { - "documentId": "t6f82ef0hkj9bxxshalhch13", "action": "admin::roles.update", - "actionParameters": {}, "subject": null, "properties": {}, - "conditions": [], - "locale": null + "conditions": [] }, { - "documentId": "hpscect4x89vru9ojarp6z9d", "action": "admin::transfer.tokens.access", - "actionParameters": {}, "subject": null, "properties": {}, - "conditions": [], - "locale": null + "conditions": [] }, { - "documentId": "e5ewui6wcn7ojsty6r6w9n2z", "action": "admin::transfer.tokens.create", - "actionParameters": {}, "subject": null, "properties": {}, - "conditions": [], - "locale": null + "conditions": [] }, { - "documentId": "tzyqqsw4h001txza127lqkvp", "action": "admin::transfer.tokens.delete", - "actionParameters": {}, "subject": null, "properties": {}, - "conditions": [], - "locale": null + "conditions": [] }, { - "documentId": "upzrjrxcyyvj9emm7frne3u4", "action": "admin::transfer.tokens.read", - "actionParameters": {}, "subject": null, "properties": {}, - "conditions": [], - "locale": null + "conditions": [] }, { - "documentId": "yzhq4chfezbgq0l0w2iwx7kt", "action": "admin::transfer.tokens.regenerate", - "actionParameters": {}, "subject": null, "properties": {}, - "conditions": [], - "locale": null + "conditions": [] }, { - "documentId": "l166qads0n8k5aj34rx69vsg", "action": "admin::transfer.tokens.update", - "actionParameters": {}, "subject": null, "properties": {}, - "conditions": [], - "locale": null + "conditions": [] }, { - "documentId": "snocmjr8cls6gyhu9rholv5f", "action": "admin::users.create", - "actionParameters": {}, "subject": null, "properties": {}, - "conditions": [], - "locale": null + "conditions": [] }, { - "documentId": "o1vcfntl3l8vqlh8zoahi1fa", "action": "admin::users.delete", - "actionParameters": {}, "subject": null, "properties": {}, - "conditions": [], - "locale": null + "conditions": [] }, { - "documentId": "ls1kjozytbfmq2k7gbde8vug", "action": "admin::users.read", - "actionParameters": {}, "subject": null, "properties": {}, - "conditions": [], - "locale": null + "conditions": [] }, { - "documentId": "z9ezwe8p735d2bqut2j5gb8b", "action": "admin::users.update", - "actionParameters": {}, "subject": null, "properties": {}, - "conditions": [], - "locale": null + "conditions": [] }, { - "documentId": "strofomb2kvopof7efpouvdk", "action": "admin::webhooks.create", - "actionParameters": {}, "subject": null, "properties": {}, - "conditions": [], - "locale": null + "conditions": [] }, { - "documentId": "yl9t60jtdqvi04jersfchx9b", "action": "admin::webhooks.delete", - "actionParameters": {}, "subject": null, "properties": {}, - "conditions": [], - "locale": null + "conditions": [] }, { - "documentId": "dljs48n82larbf1s8eyw0y46", "action": "admin::webhooks.read", - "actionParameters": {}, "subject": null, "properties": {}, - "conditions": [], - "locale": null + "conditions": [] }, { - "documentId": "jdbiu25thq1t4vl7ddtxj6ah", "action": "admin::webhooks.update", - "actionParameters": {}, "subject": null, "properties": {}, - "conditions": [], - "locale": null + "conditions": [] }, { - "documentId": "uxh53vvbjuxa86ywet40joy6", "action": "plugin::config-sync.menu-link", - "actionParameters": {}, "subject": null, "properties": {}, - "conditions": [], - "locale": null + "conditions": [] }, { - "documentId": "cv8dv4tijm0gze6nxmwuubib", "action": "plugin::config-sync.settings.read", - "actionParameters": {}, "subject": null, "properties": {}, - "conditions": [], - "locale": null + "conditions": [] }, { - "documentId": "ynmr7s8wljlxe7jmv7wqhkue", "action": "plugin::content-manager.collection-types.configure-view", - "actionParameters": {}, "subject": null, "properties": {}, - "conditions": [], - "locale": null + "conditions": [] }, { - "documentId": "bh8z5emqd7vk3703k1nf1el6", "action": "plugin::content-manager.components.configure-layout", - "actionParameters": {}, "subject": null, "properties": {}, - "conditions": [], - "locale": null + "conditions": [] }, { - "documentId": "vye6eubif7xrpaoujp30tj3x", "action": "plugin::content-manager.explorer.create", - "actionParameters": {}, "subject": "plugin::users-permissions.user", "properties": { "fields": [ @@ -819,22 +611,16 @@ "userSessions" ] }, - "conditions": [], - "locale": null + "conditions": [] }, { - "documentId": "smbm3r9fnn3u87y45mr7tfd2", "action": "plugin::content-manager.explorer.delete", - "actionParameters": {}, "subject": "plugin::users-permissions.user", "properties": {}, - "conditions": [], - "locale": null + "conditions": [] }, { - "documentId": "big696xbpg57olaim84sgasu", "action": "plugin::content-manager.explorer.read", - "actionParameters": {}, "subject": "plugin::users-permissions.user", "properties": { "fields": [ @@ -883,13 +669,10 @@ "userSessions" ] }, - "conditions": [], - "locale": null + "conditions": [] }, { - "documentId": "tiufkkk4om92hekbp7vcckej", "action": "plugin::content-manager.explorer.update", - "actionParameters": {}, "subject": "plugin::users-permissions.user", "properties": { "fields": [ @@ -938,242 +721,163 @@ "userSessions" ] }, - "conditions": [], - "locale": null + "conditions": [] }, { - "documentId": "u0aie6cty0xt59gaz9c52ji9", "action": "plugin::content-manager.single-types.configure-view", - "actionParameters": {}, "subject": null, "properties": {}, - "conditions": [], - "locale": null + "conditions": [] }, { - "documentId": "kduj8veq0vy6qjcw6tkwh1mp", "action": "plugin::content-type-builder.read", - "actionParameters": {}, "subject": null, "properties": {}, - "conditions": [], - "locale": null + "conditions": [] }, { - "documentId": "oi0r05vxprlahvng82njbenq", "action": "plugin::email.settings.read", - "actionParameters": {}, "subject": null, "properties": {}, - "conditions": [], - "locale": null + "conditions": [] }, { - "documentId": "krvoxe0tcxxsz13dnz4yctx9", "action": "plugin::i18n.locale.create", - "actionParameters": {}, "subject": null, "properties": {}, - "conditions": [], - "locale": null + "conditions": [] }, { - "documentId": "ikud9l3dk1sbgz4awf4sorh0", "action": "plugin::i18n.locale.delete", - "actionParameters": {}, "subject": null, "properties": {}, - "conditions": [], - "locale": null + "conditions": [] }, { - "documentId": "c677gj1it1z9h58978453iko", "action": "plugin::i18n.locale.read", - "actionParameters": {}, "subject": null, "properties": {}, - "conditions": [], - "locale": null + "conditions": [] }, { - "documentId": "mjfbqvnd1dbf3abfou5ubujd", "action": "plugin::i18n.locale.update", - "actionParameters": {}, "subject": null, "properties": {}, - "conditions": [], - "locale": null + "conditions": [] }, { - "documentId": "yf32nkfbxqhny2yjluigvsgs", "action": "plugin::import-export-entries.export", - "actionParameters": {}, "subject": null, "properties": {}, - "conditions": [], - "locale": null + "conditions": [] }, { - "documentId": "qp2047xo6e49kebfmfho6wcd", "action": "plugin::import-export-entries.import", - "actionParameters": {}, "subject": null, "properties": {}, - "conditions": [], - "locale": null + "conditions": [] }, { - "documentId": "pe8ebui7h1l52n0eujyncoqh", "action": "plugin::upload.assets.copy-link", - "actionParameters": {}, "subject": null, "properties": {}, - "conditions": [], - "locale": null + "conditions": [] }, { - "documentId": "kapvic1ne9qs80zlo6wsrnuf", "action": "plugin::upload.assets.create", - "actionParameters": {}, "subject": null, "properties": {}, - "conditions": [], - "locale": null + "conditions": [] }, { - "documentId": "u188i3vdomgfqmsc4gqiarux", "action": "plugin::upload.assets.download", - "actionParameters": {}, "subject": null, "properties": {}, - "conditions": [], - "locale": null + "conditions": [] }, { - "documentId": "ldzype7v2ubmsuajlng08opd", "action": "plugin::upload.assets.update", - "actionParameters": {}, "subject": null, "properties": {}, - "conditions": [], - "locale": null + "conditions": [] }, { - "documentId": "g8vkygb6aiq6560abxm1oxti", "action": "plugin::upload.configure-view", - "actionParameters": {}, "subject": null, "properties": {}, - "conditions": [], - "locale": null + "conditions": [] }, { - "documentId": "kmgwwmdvajjw2ascpc95nuys", "action": "plugin::upload.read", - "actionParameters": {}, "subject": null, "properties": {}, - "conditions": [], - "locale": null + "conditions": [] }, { - "documentId": "v9ts55e1rmd0nty11zp7rhf5", "action": "plugin::upload.settings.read", - "actionParameters": {}, "subject": null, "properties": {}, - "conditions": [], - "locale": null + "conditions": [] }, { - "documentId": "oxribat495kmj4lhkttbe5o1", "action": "plugin::users-permissions.advanced-settings.read", - "actionParameters": {}, "subject": null, "properties": {}, - "conditions": [], - "locale": null + "conditions": [] }, { - "documentId": "rjp37u6omp5szylp4ycwhlzd", "action": "plugin::users-permissions.advanced-settings.update", - "actionParameters": {}, "subject": null, "properties": {}, - "conditions": [], - "locale": null + "conditions": [] }, { - "documentId": "gmm1h7o3bqkmioxzlwo2pe1c", "action": "plugin::users-permissions.email-templates.read", - "actionParameters": {}, "subject": null, "properties": {}, - "conditions": [], - "locale": null + "conditions": [] }, { - "documentId": "c3pkj0qql5l9tl6qo6ubnzbz", "action": "plugin::users-permissions.email-templates.update", - "actionParameters": {}, "subject": null, "properties": {}, - "conditions": [], - "locale": null + "conditions": [] }, { - "documentId": "fz80lxpyle6b02pyqmr3u6f8", "action": "plugin::users-permissions.providers.read", - "actionParameters": {}, "subject": null, "properties": {}, - "conditions": [], - "locale": null + "conditions": [] }, { - "documentId": "wtxdwfxim74hsruaw1imur8z", "action": "plugin::users-permissions.providers.update", - "actionParameters": {}, "subject": null, "properties": {}, - "conditions": [], - "locale": null + "conditions": [] }, { - "documentId": "gjtawa62cwwt08hx887zbev6", "action": "plugin::users-permissions.roles.create", - "actionParameters": {}, "subject": null, "properties": {}, - "conditions": [], - "locale": null + "conditions": [] }, { - "documentId": "snjhcff2dcrtt9qjcicz1wu2", "action": "plugin::users-permissions.roles.delete", - "actionParameters": {}, "subject": null, "properties": {}, - "conditions": [], - "locale": null + "conditions": [] }, { - "documentId": "vpq4n8c6ynufy82x249zizfb", "action": "plugin::users-permissions.roles.read", - "actionParameters": {}, "subject": null, "properties": {}, - "conditions": [], - "locale": null + "conditions": [] }, { - "documentId": "r4nuwkg077i7cbyv5i0p6yrn", "action": "plugin::users-permissions.roles.update", - "actionParameters": {}, "subject": null, "properties": {}, - "conditions": [], - "locale": null + "conditions": [] } ] } diff --git a/server2/config/sync/core-store.plugin_users-permissions_email.json b/server2/config/sync/core-store.plugin_users-permissions_email.json index 36c6ac99..8f15f680 100644 --- a/server2/config/sync/core-store.plugin_users-permissions_email.json +++ b/server2/config/sync/core-store.plugin_users-permissions_email.json @@ -21,13 +21,17 @@ "u_column": 3 }, "body": { + "id": "4RZGD5rLYN", "rows": [ { + "id": "mqnVZHhude", "cells": [1], "columns": [ { + "id": "OgOYivgaau", "contents": [ { + "id": "bGMFPWmaBb", "type": "image", "values": { "containerPadding": "10px", @@ -59,6 +63,7 @@ } }, { + "id": "CLKrlfbQfj", "type": "text", "values": { "containerPadding": "10px", diff --git a/server2/config/sync/i18n-locale.en.json b/server2/config/sync/i18n-locale.en.json index 617546e6..968687a9 100644 --- a/server2/config/sync/i18n-locale.en.json +++ b/server2/config/sync/i18n-locale.en.json @@ -1,6 +1,4 @@ { - "documentId": "jbjf4079ui24sn920zmwegwb", "name": "English (en)", - "code": "en", - "locale": null + "code": "en" } diff --git a/server2/config/sync/i18n-locale.ro.json b/server2/config/sync/i18n-locale.ro.json index 941960d0..ff4b133b 100644 --- a/server2/config/sync/i18n-locale.ro.json +++ b/server2/config/sync/i18n-locale.ro.json @@ -1,6 +1,4 @@ { - "documentId": "xvhvrjno6hfdmlf43oz98nvp", "name": "Romanian (ro)", - "code": "ro", - "locale": null + "code": "ro" } diff --git a/server2/config/sync/user-role.authenticated.json b/server2/config/sync/user-role.authenticated.json index a56e0620..354077e7 100644 --- a/server2/config/sync/user-role.authenticated.json +++ b/server2/config/sync/user-role.authenticated.json @@ -1,114 +1,70 @@ { - "documentId": "aie5pr1e57iffmtm6n78c3ae", "name": "Admin ONG", "description": "Default role given to authenticated user.", "type": "authenticated", - "locale": null, "permissions": [ { - "documentId": "p3za5ox5sdqq5674mshnxcpi", - "action": "api::dimension.dimension.find", - "locale": null + "action": "api::dimension.dimension.find" }, { - "documentId": "vo1wm1hhg9vc9if5gsypirp4", - "action": "api::domain.domain.find", - "locale": null + "action": "api::domain.domain.find" }, { - "documentId": "xihurpwkqsi2p8gin3ghqffm", - "action": "api::evaluation.evaluation.create", - "locale": null + "action": "api::evaluation.evaluation.create" }, { - "documentId": "rfxbwu5w8wv3dac6eyeyrz64", - "action": "api::evaluation.evaluation.delete", - "locale": null + "action": "api::evaluation.evaluation.delete" }, { - "documentId": "dld84a8h3mxx0a0g34pft4j6", - "action": "api::evaluation.evaluation.find", - "locale": null + "action": "api::evaluation.evaluation.find" }, { - "documentId": "ysrukaz2cje8upjulsuoy11w", - "action": "api::evaluation.evaluation.findOne", - "locale": null + "action": "api::evaluation.evaluation.findOne" }, { - "documentId": "xfche4t44u1azjxy8aq5oy0s", - "action": "api::evaluation.evaluation.update", - "locale": null + "action": "api::evaluation.evaluation.update" }, { - "documentId": "hxkxe29ailnqgawe2vv146it", - "action": "api::matrix.matrix.find", - "locale": null + "action": "api::matrix.matrix.find" }, { - "documentId": "vvnl9g7fngaqvzs1r9gjljzh", - "action": "api::mentorship-request.mentorship-request.create", - "locale": null + "action": "api::mentorship-request.mentorship-request.create" }, { - "documentId": "biewjc8rw7bywa86a4ureh0n", - "action": "api::program.program.find", - "locale": null + "action": "api::program.program.find" }, { - "documentId": "xhre65l71wqd5qctzp08l8mk", - "action": "api::report.report.create", - "locale": null + "action": "api::report.report.create" }, { - "documentId": "ha14qulv3kz4n2e0qxb9r4r3", - "action": "api::report.report.find", - "locale": null + "action": "api::report.report.find" }, { - "documentId": "elfaxq6bikrmjf66oh5v5bq0", - "action": "api::report.report.findOne", - "locale": null + "action": "api::report.report.findOne" }, { - "documentId": "ihc7q1royzvq11vp8adqrw1w", - "action": "api::report.report.update", - "locale": null + "action": "api::report.report.update" }, { - "documentId": "zfjtr3sdcu6qviukdsnpjfxu", - "action": "plugin::upload.content-api.upload", - "locale": null + "action": "plugin::upload.content-api.upload" }, { - "documentId": "wfsw2cpwa4ghhy95hj8175az", - "action": "plugin::users-permissions.auth.changePassword", - "locale": null + "action": "plugin::users-permissions.auth.changePassword" }, { - "documentId": "f4iithpgnkzznjla7h7w7ju5", - "action": "plugin::users-permissions.role.find", - "locale": null + "action": "plugin::users-permissions.role.find" }, { - "documentId": "wbnem3yz4u5as2pi0kcsmu3x", - "action": "plugin::users-permissions.user.find", - "locale": null + "action": "plugin::users-permissions.user.find" }, { - "documentId": "r3xs3d3v0tdefczimrcfadzz", - "action": "plugin::users-permissions.user.findOne", - "locale": null + "action": "plugin::users-permissions.user.findOne" }, { - "documentId": "zwghd3rwrssjd8jrk78v2135", - "action": "plugin::users-permissions.user.me", - "locale": null + "action": "plugin::users-permissions.user.me" }, { - "documentId": "d8qhmdydrooivs57thdctmpz", - "action": "plugin::users-permissions.user.update", - "locale": null + "action": "plugin::users-permissions.user.update" } ] } diff --git a/server2/config/sync/user-role.fdsc.json b/server2/config/sync/user-role.fdsc.json index f45ebcd2..184cc97d 100644 --- a/server2/config/sync/user-role.fdsc.json +++ b/server2/config/sync/user-role.fdsc.json @@ -1,114 +1,70 @@ { - "documentId": "c9mcgr3uw47i06jeis6qd2ce", "name": "Admin FDSC", "description": "Utilizator de tipul Admin FDSC", "type": "fdsc", - "locale": null, "permissions": [ { - "documentId": "xo49gfcvni83l59h7d924hqv", - "action": "api::activity.activity.find", - "locale": null + "action": "api::activity.activity.find" }, { - "documentId": "a17lczxux7viu7wqls5sc94w", - "action": "api::dimension.dimension.find", - "locale": null + "action": "api::dimension.dimension.find" }, { - "documentId": "o8ufcr3le8shp2b0z6ogtc65", - "action": "api::domain.domain.find", - "locale": null + "action": "api::domain.domain.find" }, { - "documentId": "uj0t0322a4y5mtlzjnof7j7m", - "action": "api::evaluation.evaluation.find", - "locale": null + "action": "api::evaluation.evaluation.find" }, { - "documentId": "ewh4xdu1vjz5ddg53ypx08ou", - "action": "api::evaluation.evaluation.findOne", - "locale": null + "action": "api::evaluation.evaluation.findOne" }, { - "documentId": "zbnmkipwzxv43ezaz2rq1p06", - "action": "api::evaluation.evaluation.update", - "locale": null + "action": "api::evaluation.evaluation.update" }, { - "documentId": "h83mbzyrqs7ldg2p8iqktu5u", - "action": "api::matrix.matrix.find", - "locale": null + "action": "api::matrix.matrix.find" }, { - "documentId": "hkhr04sgykutrv5wo3hcja0p", - "action": "api::program.program.create", - "locale": null + "action": "api::program.program.create" }, { - "documentId": "czml2b6s7znyttgbrh6yo3u2", - "action": "api::program.program.find", - "locale": null + "action": "api::program.program.find" }, { - "documentId": "oaxmvigq949ejwfe8emf0cce", - "action": "api::program.program.findOne", - "locale": null + "action": "api::program.program.findOne" }, { - "documentId": "a170w3el9ejb8xkp8k5a3fm7", - "action": "api::program.program.update", - "locale": null + "action": "api::program.program.update" }, { - "documentId": "uykht05frzf8xshdhjhxqxcf", - "action": "api::report.report.find", - "locale": null + "action": "api::report.report.find" }, { - "documentId": "u7hh5rnagvyzu25tib0afnkb", - "action": "api::report.report.findOne", - "locale": null + "action": "api::report.report.findOne" }, { - "documentId": "ga6vnztk8nxstm29m8kyd823", - "action": "api::report.report.update", - "locale": null + "action": "api::report.report.update" }, { - "documentId": "r5d3ohrwni910ippunxgkv0g", - "action": "plugin::upload.content-api.upload", - "locale": null + "action": "plugin::upload.content-api.upload" }, { - "documentId": "hf7ry3zy256h5p000w5bnw31", - "action": "plugin::users-permissions.role.find", - "locale": null + "action": "plugin::users-permissions.role.find" }, { - "documentId": "pninxi0btmcuzezya9h1t2rr", - "action": "plugin::users-permissions.user.create", - "locale": null + "action": "plugin::users-permissions.user.create" }, { - "documentId": "cjgba650il00a2u8z69zol23", - "action": "plugin::users-permissions.user.find", - "locale": null + "action": "plugin::users-permissions.user.find" }, { - "documentId": "r4h7vg5t9wc42dvthyy7epvj", - "action": "plugin::users-permissions.user.findOne", - "locale": null + "action": "plugin::users-permissions.user.findOne" }, { - "documentId": "cw3b3gfe0dfvaae8a0w7pox3", - "action": "plugin::users-permissions.user.me", - "locale": null + "action": "plugin::users-permissions.user.me" }, { - "documentId": "gtgpgqkn5v7fhm26yf2mqi7f", - "action": "plugin::users-permissions.user.update", - "locale": null + "action": "plugin::users-permissions.user.update" } ] } diff --git a/server2/config/sync/user-role.mentor.json b/server2/config/sync/user-role.mentor.json index def79d6f..8914676c 100644 --- a/server2/config/sync/user-role.mentor.json +++ b/server2/config/sync/user-role.mentor.json @@ -1,84 +1,52 @@ { - "documentId": "h547bqf4fztkenxfc4n6dwd4", "name": "Persoană resursă", "description": "Mentor", "type": "mentor", - "locale": null, "permissions": [ { - "documentId": "kvitjeaw5vkmldz2ckbfv464", - "action": "api::activity-type.activity-type.find", - "locale": null + "action": "api::activity-type.activity-type.find" }, { - "documentId": "s5rxr71ut5pzwzq9t1klewm0", - "action": "api::activity.activity.create", - "locale": null + "action": "api::activity.activity.create" }, { - "documentId": "vmw3bvkqucgbzktqyzb00zyi", - "action": "api::activity.activity.find", - "locale": null + "action": "api::activity.activity.find" }, { - "documentId": "r7015924ec8hws2w6f5syfxg", - "action": "api::dimension.dimension.find", - "locale": null + "action": "api::dimension.dimension.find" }, { - "documentId": "gmq2ngi8w9cwlnwto8sfnlyt", - "action": "api::domain.domain.find", - "locale": null + "action": "api::domain.domain.find" }, { - "documentId": "ccdrteejgjggaas683rook76", - "action": "api::evaluation.evaluation.find", - "locale": null + "action": "api::evaluation.evaluation.find" }, { - "documentId": "g2s4xup4lioimcdnlppui833", - "action": "api::matrix.matrix.find", - "locale": null + "action": "api::matrix.matrix.find" }, { - "documentId": "mq9u3086yrl16bcsj2k5tiun", - "action": "api::program.program.find", - "locale": null + "action": "api::program.program.find" }, { - "documentId": "umvtbcycoh2qe3ewoldujlnh", - "action": "api::report.report.find", - "locale": null + "action": "api::report.report.find" }, { - "documentId": "wj2jpsqsgp1c0mz7pyh7tyz3", - "action": "api::report.report.findOne", - "locale": null + "action": "api::report.report.findOne" }, { - "documentId": "nydhwk6a0h3q3zb6jdmy7pkv", - "action": "plugin::upload.content-api.upload", - "locale": null + "action": "plugin::upload.content-api.upload" }, { - "documentId": "pdbut67ni2f3rmb9qbwg4t7n", - "action": "plugin::users-permissions.role.find", - "locale": null + "action": "plugin::users-permissions.role.find" }, { - "documentId": "lqv1ke4ejs8kjpi3grbmvjbm", - "action": "plugin::users-permissions.user.find", - "locale": null + "action": "plugin::users-permissions.user.find" }, { - "documentId": "znlp0lagtzvbhh0tavcoyji1", - "action": "plugin::users-permissions.user.me", - "locale": null + "action": "plugin::users-permissions.user.me" }, { - "documentId": "wzaae0kw1fckw4a5zmzhp0tw", - "action": "plugin::users-permissions.user.update", - "locale": null + "action": "plugin::users-permissions.user.update" } ] } diff --git a/server2/config/sync/user-role.public.json b/server2/config/sync/user-role.public.json index a55e27dd..46465f85 100644 --- a/server2/config/sync/user-role.public.json +++ b/server2/config/sync/user-role.public.json @@ -1,84 +1,52 @@ { - "documentId": "opfoqzugn7703y5nebp3b13e", "name": "Public", "description": "Default role given to unauthenticated user.", "type": "public", - "locale": null, "permissions": [ { - "documentId": "enimg8jl5a73ovzbzf4d7uhl", - "action": "api::dimension.dimension.find", - "locale": null + "action": "api::dimension.dimension.find" }, { - "documentId": "b2b59wesax335h27o2t8awa8", - "action": "api::domain.domain.find", - "locale": null + "action": "api::domain.domain.find" }, { - "documentId": "pobiaoi2z2f4tl0c1wvkjwcg", - "action": "api::evaluation.evaluation.find", - "locale": null + "action": "api::evaluation.evaluation.find" }, { - "documentId": "pwoe696eyhxwe4m8eymdiugx", - "action": "api::evaluation.evaluation.findOne", - "locale": null + "action": "api::evaluation.evaluation.findOne" }, { - "documentId": "t497qyj4v8zgniyb7eds6u1n", - "action": "api::evaluation.evaluation.update", - "locale": null + "action": "api::evaluation.evaluation.update" }, { - "documentId": "h26qqt7iewmzu0u2feofbrow", - "action": "api::matrix.matrix.find", - "locale": null + "action": "api::matrix.matrix.find" }, { - "documentId": "caj9dxie0zmgm7fd889lr2et", - "action": "plugin::users-permissions.auth.callback", - "locale": null + "action": "plugin::users-permissions.auth.callback" }, { - "documentId": "agordi69lejs07xx33jpag9n", - "action": "plugin::users-permissions.auth.connect", - "locale": null + "action": "plugin::users-permissions.auth.connect" }, { - "documentId": "v2iv9gcc8biaq7sgq0vnibby", - "action": "plugin::users-permissions.auth.emailConfirmation", - "locale": null + "action": "plugin::users-permissions.auth.emailConfirmation" }, { - "documentId": "ik6opbippbm898vr0g9tslxy", - "action": "plugin::users-permissions.auth.findRegistrationInfo", - "locale": null + "action": "plugin::users-permissions.auth.findRegistrationInfo" }, { - "documentId": "ckm04iclzo448kndygg30xcq", - "action": "plugin::users-permissions.auth.forgotPassword", - "locale": null + "action": "plugin::users-permissions.auth.forgotPassword" }, { - "documentId": "oacxxpgkb091i5jm1e8ieti4", - "action": "plugin::users-permissions.auth.register", - "locale": null + "action": "plugin::users-permissions.auth.register" }, { - "documentId": "gr15rcs0iwbarajpwu1upno0", - "action": "plugin::users-permissions.auth.registerWithConfirmation", - "locale": null + "action": "plugin::users-permissions.auth.registerWithConfirmation" }, { - "documentId": "ruk20f6t4pr9wluaf2rff3dd", - "action": "plugin::users-permissions.auth.resetPassword", - "locale": null + "action": "plugin::users-permissions.auth.resetPassword" }, { - "documentId": "hemor8lm12jm1xugxvqtc9ea", - "action": "plugin::users-permissions.auth.sendEmailConfirmation", - "locale": null + "action": "plugin::users-permissions.auth.sendEmailConfirmation" } ] } From 537330f7076b0d4299ad87bf2da8871ec4f5d379 Mon Sep 17 00:00:00 2001 From: Ion Dormenco Date: Thu, 11 Sep 2025 14:18:04 +0300 Subject: [PATCH 23/61] reexport --- .../config/sync/admin-role.strapi-author.json | 92 +++- .../config/sync/admin-role.strapi-editor.json | 92 +++- .../sync/admin-role.strapi-super-admin.json | 492 ++++++++++++++---- ...-store.plugin_users-permissions_email.json | 5 - server2/config/sync/i18n-locale.en.json | 4 +- server2/config/sync/i18n-locale.ro.json | 4 +- .../config/sync/user-role.authenticated.json | 86 ++- server2/config/sync/user-role.fdsc.json | 86 ++- server2/config/sync/user-role.mentor.json | 62 ++- server2/config/sync/user-role.public.json | 62 ++- 10 files changed, 772 insertions(+), 213 deletions(-) diff --git a/server2/config/sync/admin-role.strapi-author.json b/server2/config/sync/admin-role.strapi-author.json index 9d705f2c..38b19b9e 100644 --- a/server2/config/sync/admin-role.strapi-author.json +++ b/server2/config/sync/admin-role.strapi-author.json @@ -1,10 +1,14 @@ { + "documentId": "iqgp0y1k1qmecseh7ii0sv3l", "name": "Author", "code": "strapi-author", "description": "Authors can manage the content they have created.", + "locale": null, "permissions": [ { + "documentId": "p8nttfh28prnvg4weh4ok8vr", "action": "plugin::content-manager.explorer.create", + "actionParameters": {}, "subject": "api::evaluation.evaluation", "properties": { "fields": [ @@ -14,16 +18,22 @@ "report" ] }, - "conditions": ["admin::is-creator"] + "conditions": ["admin::is-creator"], + "locale": null }, { + "documentId": "b0lri361v6q5n1398uzesc82", "action": "plugin::content-manager.explorer.delete", + "actionParameters": {}, "subject": "api::evaluation.evaluation", "properties": {}, - "conditions": ["admin::is-creator"] + "conditions": ["admin::is-creator"], + "locale": null }, { + "documentId": "avlj8x2zm1o72gh8pbkqcqp0", "action": "plugin::content-manager.explorer.read", + "actionParameters": {}, "subject": "api::evaluation.evaluation", "properties": { "fields": [ @@ -33,10 +43,13 @@ "report" ] }, - "conditions": ["admin::is-creator"] + "conditions": ["admin::is-creator"], + "locale": null }, { + "documentId": "o7f22cqq97akse4q9eqgji3r", "action": "plugin::content-manager.explorer.update", + "actionParameters": {}, "subject": "api::evaluation.evaluation", "properties": { "fields": [ @@ -46,103 +59,146 @@ "report" ] }, - "conditions": ["admin::is-creator"] + "conditions": ["admin::is-creator"], + "locale": null }, { + "documentId": "apob7u7uhop74pldzg88xu6e", "action": "plugin::content-manager.explorer.create", + "actionParameters": {}, "subject": "api::matrix.matrix", "properties": { "fields": [] }, - "conditions": ["admin::is-creator"] + "conditions": ["admin::is-creator"], + "locale": null }, { + "documentId": "fglyccmttw2sdju4e1kp90j0", "action": "plugin::content-manager.explorer.delete", + "actionParameters": {}, "subject": "api::matrix.matrix", "properties": {}, - "conditions": ["admin::is-creator"] + "conditions": ["admin::is-creator"], + "locale": null }, { + "documentId": "djm2z55c10n0u5zjbn5nh8ex", "action": "plugin::content-manager.explorer.read", + "actionParameters": {}, "subject": "api::matrix.matrix", "properties": { "fields": [] }, - "conditions": ["admin::is-creator"] + "conditions": ["admin::is-creator"], + "locale": null }, { + "documentId": "ogs4yqb88t0go71wi96mgqys", "action": "plugin::content-manager.explorer.update", + "actionParameters": {}, "subject": "api::matrix.matrix", "properties": { "fields": [] }, - "conditions": ["admin::is-creator"] + "conditions": ["admin::is-creator"], + "locale": null }, { + "documentId": "imz47ehf6jat1cxmsy90d3e2", "action": "plugin::content-manager.explorer.create", + "actionParameters": {}, "subject": "api::report.report", "properties": { "fields": ["evaluations", "deadline", "finished", "user"] }, - "conditions": ["admin::is-creator"] + "conditions": ["admin::is-creator"], + "locale": null }, { + "documentId": "b58ygvw4el5wst0u5mpk70jh", "action": "plugin::content-manager.explorer.delete", + "actionParameters": {}, "subject": "api::report.report", "properties": {}, - "conditions": ["admin::is-creator"] + "conditions": ["admin::is-creator"], + "locale": null }, { + "documentId": "b68bo7xcnemu406nif2r59rx", "action": "plugin::content-manager.explorer.read", + "actionParameters": {}, "subject": "api::report.report", "properties": { "fields": ["evaluations", "deadline", "finished", "user"] }, - "conditions": ["admin::is-creator"] + "conditions": ["admin::is-creator"], + "locale": null }, { + "documentId": "ds4ud0vi51eikm84rn4h8b2n", "action": "plugin::content-manager.explorer.update", + "actionParameters": {}, "subject": "api::report.report", "properties": { "fields": ["evaluations", "deadline", "finished", "user"] }, - "conditions": ["admin::is-creator"] + "conditions": ["admin::is-creator"], + "locale": null }, { + "documentId": "e4h5j0y6vjvwnif99csmi3b4", "action": "plugin::upload.assets.copy-link", + "actionParameters": {}, "subject": null, "properties": {}, - "conditions": [] + "conditions": [], + "locale": null }, { + "documentId": "b1j6tf1kpppo3thvj53t1qfe", "action": "plugin::upload.assets.create", + "actionParameters": {}, "subject": null, "properties": {}, - "conditions": [] + "conditions": [], + "locale": null }, { + "documentId": "y693sijpda34i8g2rln8w65o", "action": "plugin::upload.assets.download", + "actionParameters": {}, "subject": null, "properties": {}, - "conditions": [] + "conditions": [], + "locale": null }, { + "documentId": "fb7vtak5sqe15ecdr5kqollk", "action": "plugin::upload.assets.update", + "actionParameters": {}, "subject": null, "properties": {}, - "conditions": ["admin::is-creator"] + "conditions": ["admin::is-creator"], + "locale": null }, { + "documentId": "kt2zf3jz57ibqgwno7kwlbp9", "action": "plugin::upload.configure-view", + "actionParameters": {}, "subject": null, "properties": {}, - "conditions": [] + "conditions": [], + "locale": null }, { + "documentId": "ftdqzpthhu7vnnhuy9uzhb6b", "action": "plugin::upload.read", + "actionParameters": {}, "subject": null, "properties": {}, - "conditions": ["admin::is-creator"] + "conditions": ["admin::is-creator"], + "locale": null } ] } diff --git a/server2/config/sync/admin-role.strapi-editor.json b/server2/config/sync/admin-role.strapi-editor.json index b50d0064..5e256860 100644 --- a/server2/config/sync/admin-role.strapi-editor.json +++ b/server2/config/sync/admin-role.strapi-editor.json @@ -1,10 +1,14 @@ { + "documentId": "cxcs4jz0l3cra48mdq7js2am", "name": "Editor", "code": "strapi-editor", "description": "Editors can manage and publish contents including those of other users.", + "locale": null, "permissions": [ { + "documentId": "wlpa7ajua6cr6k34ura6go0j", "action": "plugin::content-manager.explorer.create", + "actionParameters": {}, "subject": "api::evaluation.evaluation", "properties": { "fields": [ @@ -14,16 +18,22 @@ "report" ] }, - "conditions": [] + "conditions": [], + "locale": null }, { + "documentId": "zvappzi5vk85gm3bvdwsqsvk", "action": "plugin::content-manager.explorer.delete", + "actionParameters": {}, "subject": "api::evaluation.evaluation", "properties": {}, - "conditions": [] + "conditions": [], + "locale": null }, { + "documentId": "kq61cld6cjn1qo9zw59zxlbj", "action": "plugin::content-manager.explorer.read", + "actionParameters": {}, "subject": "api::evaluation.evaluation", "properties": { "fields": [ @@ -33,10 +43,13 @@ "report" ] }, - "conditions": [] + "conditions": [], + "locale": null }, { + "documentId": "svbrbxkfyv9e8lecp2p8femp", "action": "plugin::content-manager.explorer.update", + "actionParameters": {}, "subject": "api::evaluation.evaluation", "properties": { "fields": [ @@ -46,103 +59,146 @@ "report" ] }, - "conditions": [] + "conditions": [], + "locale": null }, { + "documentId": "p2o7yaq6x7eudcwq5n5tzibr", "action": "plugin::content-manager.explorer.create", + "actionParameters": {}, "subject": "api::matrix.matrix", "properties": { "fields": [] }, - "conditions": [] + "conditions": [], + "locale": null }, { + "documentId": "grz7oew04y5fjf16h4d4wxqr", "action": "plugin::content-manager.explorer.delete", + "actionParameters": {}, "subject": "api::matrix.matrix", "properties": {}, - "conditions": [] + "conditions": [], + "locale": null }, { + "documentId": "ppwgl8fz154zncthk8wtx03e", "action": "plugin::content-manager.explorer.read", + "actionParameters": {}, "subject": "api::matrix.matrix", "properties": { "fields": [] }, - "conditions": [] + "conditions": [], + "locale": null }, { + "documentId": "e8pbp9allgvo0kpn6laje3o2", "action": "plugin::content-manager.explorer.update", + "actionParameters": {}, "subject": "api::matrix.matrix", "properties": { "fields": [] }, - "conditions": [] + "conditions": [], + "locale": null }, { + "documentId": "rx1108bpgtt9hr656w708dy0", "action": "plugin::content-manager.explorer.create", + "actionParameters": {}, "subject": "api::report.report", "properties": { "fields": ["evaluations", "deadline", "finished", "user"] }, - "conditions": [] + "conditions": [], + "locale": null }, { + "documentId": "d9gbiwjjgtgiff0pj78pzgrt", "action": "plugin::content-manager.explorer.delete", + "actionParameters": {}, "subject": "api::report.report", "properties": {}, - "conditions": [] + "conditions": [], + "locale": null }, { + "documentId": "y2opmfxculd8r2ycea6kvnju", "action": "plugin::content-manager.explorer.read", + "actionParameters": {}, "subject": "api::report.report", "properties": { "fields": ["evaluations", "deadline", "finished", "user"] }, - "conditions": [] + "conditions": [], + "locale": null }, { + "documentId": "b2qeb1jtort06fnxh3rjafne", "action": "plugin::content-manager.explorer.update", + "actionParameters": {}, "subject": "api::report.report", "properties": { "fields": ["evaluations", "deadline", "finished", "user"] }, - "conditions": [] + "conditions": [], + "locale": null }, { + "documentId": "y3havuis2kkyvt489t17mmmc", "action": "plugin::upload.assets.copy-link", + "actionParameters": {}, "subject": null, "properties": {}, - "conditions": [] + "conditions": [], + "locale": null }, { + "documentId": "z8x3oiznfpnw4d7v2j0exi3p", "action": "plugin::upload.assets.create", + "actionParameters": {}, "subject": null, "properties": {}, - "conditions": [] + "conditions": [], + "locale": null }, { + "documentId": "ut3gmsmobj2sq17qfxge9q6f", "action": "plugin::upload.assets.download", + "actionParameters": {}, "subject": null, "properties": {}, - "conditions": [] + "conditions": [], + "locale": null }, { + "documentId": "nvpciz74wgqz9s0jjxjy3ce0", "action": "plugin::upload.assets.update", + "actionParameters": {}, "subject": null, "properties": {}, - "conditions": [] + "conditions": [], + "locale": null }, { + "documentId": "oywhdmepcmhgh4bfkfetwesn", "action": "plugin::upload.configure-view", + "actionParameters": {}, "subject": null, "properties": {}, - "conditions": [] + "conditions": [], + "locale": null }, { + "documentId": "dclkahy03vfp70i2lm6zisxg", "action": "plugin::upload.read", + "actionParameters": {}, "subject": null, "properties": {}, - "conditions": [] + "conditions": [], + "locale": null } ] } diff --git a/server2/config/sync/admin-role.strapi-super-admin.json b/server2/config/sync/admin-role.strapi-super-admin.json index 359a7760..7086f012 100644 --- a/server2/config/sync/admin-role.strapi-super-admin.json +++ b/server2/config/sync/admin-role.strapi-super-admin.json @@ -1,40 +1,56 @@ { + "documentId": "q8x6kwnicxz0jed5109ey5oz", "name": "Super Admin", "code": "strapi-super-admin", "description": "Super Admins can access and manage all features and settings.", + "locale": null, "permissions": [ { + "documentId": "c2aw41avsnjmmlemuasz8v8s", "action": "plugin::content-manager.explorer.create", + "actionParameters": {}, "subject": "api::activity-type.activity-type", "properties": { "fields": ["name"] }, - "conditions": [] + "conditions": [], + "locale": null }, { + "documentId": "ff3aojsj0na2sjloowjlusxm", "action": "plugin::content-manager.explorer.delete", + "actionParameters": {}, "subject": "api::activity-type.activity-type", "properties": {}, - "conditions": [] + "conditions": [], + "locale": null }, { + "documentId": "bovvow8d6br5kk2vn21qnqde", "action": "plugin::content-manager.explorer.read", + "actionParameters": {}, "subject": "api::activity-type.activity-type", "properties": { "fields": ["name"] }, - "conditions": [] + "conditions": [], + "locale": null }, { + "documentId": "fl5hw6b84twq82gqn925kmf8", "action": "plugin::content-manager.explorer.update", + "actionParameters": {}, "subject": "api::activity-type.activity-type", "properties": { "fields": ["name"] }, - "conditions": [] + "conditions": [], + "locale": null }, { + "documentId": "kihv7a8tbxnn9t29zz0ouht7", "action": "plugin::content-manager.explorer.create", + "actionParameters": {}, "subject": "api::activity.activity", "properties": { "fields": [ @@ -47,16 +63,22 @@ "user" ] }, - "conditions": [] + "conditions": [], + "locale": null }, { + "documentId": "o9axz9f344ykha7n9bwniv77", "action": "plugin::content-manager.explorer.delete", + "actionParameters": {}, "subject": "api::activity.activity", "properties": {}, - "conditions": [] + "conditions": [], + "locale": null }, { + "documentId": "yhrvp9rne6n9lzgmxjtyvxr2", "action": "plugin::content-manager.explorer.read", + "actionParameters": {}, "subject": "api::activity.activity", "properties": { "fields": [ @@ -69,10 +91,13 @@ "user" ] }, - "conditions": [] + "conditions": [], + "locale": null }, { + "documentId": "wsvpydjo8mczndt00kha6dhe", "action": "plugin::content-manager.explorer.update", + "actionParameters": {}, "subject": "api::activity.activity", "properties": { "fields": [ @@ -85,10 +110,13 @@ "user" ] }, - "conditions": [] + "conditions": [], + "locale": null }, { + "documentId": "b7701ax18ef5m1zas7kt6oxt", "action": "plugin::content-manager.explorer.create", + "actionParameters": {}, "subject": "api::dimension.dimension", "properties": { "fields": [ @@ -105,16 +133,22 @@ "activities" ] }, - "conditions": [] + "conditions": [], + "locale": null }, { + "documentId": "e6gt4chgc5n8rcg6909cxbqe", "action": "plugin::content-manager.explorer.delete", + "actionParameters": {}, "subject": "api::dimension.dimension", "properties": {}, - "conditions": [] + "conditions": [], + "locale": null }, { + "documentId": "of7zr3hhiefg83rkbt4htmqc", "action": "plugin::content-manager.explorer.read", + "actionParameters": {}, "subject": "api::dimension.dimension", "properties": { "fields": [ @@ -131,10 +165,13 @@ "activities" ] }, - "conditions": [] + "conditions": [], + "locale": null }, { + "documentId": "gngavaxf0a5gphdr8pivmfcz", "action": "plugin::content-manager.explorer.update", + "actionParameters": {}, "subject": "api::dimension.dimension", "properties": { "fields": [ @@ -151,40 +188,55 @@ "activities" ] }, - "conditions": [] + "conditions": [], + "locale": null }, { + "documentId": "w83xcc6sa28sknhm60nnlif8", "action": "plugin::content-manager.explorer.create", + "actionParameters": {}, "subject": "api::domain.domain", "properties": { "fields": ["name", "mentors"] }, - "conditions": [] + "conditions": [], + "locale": null }, { + "documentId": "ruafkopxt92hcjttxiybetmj", "action": "plugin::content-manager.explorer.delete", + "actionParameters": {}, "subject": "api::domain.domain", "properties": {}, - "conditions": [] + "conditions": [], + "locale": null }, { + "documentId": "q4geghmz6u9akkfforaptnd2", "action": "plugin::content-manager.explorer.read", + "actionParameters": {}, "subject": "api::domain.domain", "properties": { "fields": ["name", "mentors"] }, - "conditions": [] + "conditions": [], + "locale": null }, { + "documentId": "xxa9xd8x4yy4fxz9x3r2lg9h", "action": "plugin::content-manager.explorer.update", + "actionParameters": {}, "subject": "api::domain.domain", "properties": { "fields": ["name", "mentors"] }, - "conditions": [] + "conditions": [], + "locale": null }, { + "documentId": "ph9sku5i15j86qu78uqmaiy7", "action": "plugin::content-manager.explorer.create", + "actionParameters": {}, "subject": "api::evaluation.evaluation", "properties": { "fields": [ @@ -194,16 +246,22 @@ "report" ] }, - "conditions": [] + "conditions": [], + "locale": null }, { + "documentId": "stsxou58mhdmfbnzixicunuu", "action": "plugin::content-manager.explorer.delete", + "actionParameters": {}, "subject": "api::evaluation.evaluation", "properties": {}, - "conditions": [] + "conditions": [], + "locale": null }, { + "documentId": "se55xcfqhs1kj7xw8x52zlya", "action": "plugin::content-manager.explorer.read", + "actionParameters": {}, "subject": "api::evaluation.evaluation", "properties": { "fields": [ @@ -213,10 +271,13 @@ "report" ] }, - "conditions": [] + "conditions": [], + "locale": null }, { + "documentId": "upnf38hclggq8a1qu4z6ysm0", "action": "plugin::content-manager.explorer.update", + "actionParameters": {}, "subject": "api::evaluation.evaluation", "properties": { "fields": [ @@ -226,70 +287,97 @@ "report" ] }, - "conditions": [] + "conditions": [], + "locale": null }, { + "documentId": "l6jkzprcsszjemfcgecuxlqm", "action": "plugin::content-manager.explorer.create", + "actionParameters": {}, "subject": "api::matrix.matrix", "properties": { "fields": ["dimensions"] }, - "conditions": [] + "conditions": [], + "locale": null }, { + "documentId": "r4awo8xqpxae1luvu9t2q3uo", "action": "plugin::content-manager.explorer.delete", + "actionParameters": {}, "subject": "api::matrix.matrix", "properties": {}, - "conditions": [] + "conditions": [], + "locale": null }, { + "documentId": "k13vxovhsez9rq8djng46mtn", "action": "plugin::content-manager.explorer.read", + "actionParameters": {}, "subject": "api::matrix.matrix", "properties": { "fields": ["dimensions"] }, - "conditions": [] + "conditions": [], + "locale": null }, { + "documentId": "rihvylnfe0bwivbg0um5qvpg", "action": "plugin::content-manager.explorer.update", + "actionParameters": {}, "subject": "api::matrix.matrix", "properties": { "fields": ["dimensions"] }, - "conditions": [] + "conditions": [], + "locale": null }, { + "documentId": "u8ba154tpovj08u6kelmmd6g", "action": "plugin::content-manager.explorer.create", + "actionParameters": {}, "subject": "api::mentorship-request.mentorship-request", "properties": { "fields": ["mentor", "user"] }, - "conditions": [] + "conditions": [], + "locale": null }, { + "documentId": "q3h2dd60obtr89eoemt3sfn5", "action": "plugin::content-manager.explorer.delete", + "actionParameters": {}, "subject": "api::mentorship-request.mentorship-request", "properties": {}, - "conditions": [] + "conditions": [], + "locale": null }, { + "documentId": "yo3amtsm872moyigqo1wrwow", "action": "plugin::content-manager.explorer.read", + "actionParameters": {}, "subject": "api::mentorship-request.mentorship-request", "properties": { "fields": ["mentor", "user"] }, - "conditions": [] + "conditions": [], + "locale": null }, { + "documentId": "b1uib8j1kz82xg4l34s7xvb9", "action": "plugin::content-manager.explorer.update", + "actionParameters": {}, "subject": "api::mentorship-request.mentorship-request", "properties": { "fields": ["mentor", "user"] }, - "conditions": [] + "conditions": [], + "locale": null }, { + "documentId": "ot2ypaij78l1vp95dkk60vph", "action": "plugin::content-manager.explorer.create", + "actionParameters": {}, "subject": "api::program.program", "properties": { "fields": [ @@ -301,22 +389,31 @@ "users" ] }, - "conditions": [] + "conditions": [], + "locale": null }, { + "documentId": "bz1morqlkpj17p5ofgva0trh", "action": "plugin::content-manager.explorer.delete", + "actionParameters": {}, "subject": "api::program.program", "properties": {}, - "conditions": [] + "conditions": [], + "locale": null }, { + "documentId": "uc08xjn8i39o001pysyt00k3", "action": "plugin::content-manager.explorer.publish", + "actionParameters": {}, "subject": "api::program.program", "properties": {}, - "conditions": [] + "conditions": [], + "locale": null }, { + "documentId": "gr6y690qwma3usipcsdope3c", "action": "plugin::content-manager.explorer.read", + "actionParameters": {}, "subject": "api::program.program", "properties": { "fields": [ @@ -328,10 +425,13 @@ "users" ] }, - "conditions": [] + "conditions": [], + "locale": null }, { + "documentId": "mdzktlp5ouzy0a27zvenloso", "action": "plugin::content-manager.explorer.update", + "actionParameters": {}, "subject": "api::program.program", "properties": { "fields": [ @@ -343,226 +443,334 @@ "users" ] }, - "conditions": [] + "conditions": [], + "locale": null }, { + "documentId": "rj4tuzjmdh1t6creq9vbow08", "action": "plugin::content-manager.explorer.create", + "actionParameters": {}, "subject": "api::report.report", "properties": { "fields": ["evaluations", "deadline", "finished", "user"] }, - "conditions": [] + "conditions": [], + "locale": null }, { + "documentId": "mu1vpgdqr5cf4yuvz2h1wcpk", "action": "plugin::content-manager.explorer.delete", + "actionParameters": {}, "subject": "api::report.report", "properties": {}, - "conditions": [] + "conditions": [], + "locale": null }, { + "documentId": "onze7tuh8onl9rk1ijlt36ea", "action": "plugin::content-manager.explorer.read", + "actionParameters": {}, "subject": "api::report.report", "properties": { "fields": ["evaluations", "deadline", "finished", "user"] }, - "conditions": [] + "conditions": [], + "locale": null }, { + "documentId": "a1cd8jew10v3v2sns3fhyzuv", "action": "plugin::content-manager.explorer.update", + "actionParameters": {}, "subject": "api::report.report", "properties": { "fields": ["evaluations", "deadline", "finished", "user"] }, - "conditions": [] + "conditions": [], + "locale": null }, { + "documentId": "kk8rn5o36fi2kar6lx29yslm", "action": "admin::api-tokens.access", + "actionParameters": {}, "subject": null, "properties": {}, - "conditions": [] + "conditions": [], + "locale": null }, { + "documentId": "rpz298la5gip829aeh9o8ky6", "action": "admin::api-tokens.create", + "actionParameters": {}, "subject": null, "properties": {}, - "conditions": [] + "conditions": [], + "locale": null }, { + "documentId": "p8pn1dlsxpnoi044vj4wo24h", "action": "admin::api-tokens.delete", + "actionParameters": {}, "subject": null, "properties": {}, - "conditions": [] + "conditions": [], + "locale": null }, { + "documentId": "tg148kr7qd5x4ifx4u8xh03m", "action": "admin::api-tokens.read", + "actionParameters": {}, "subject": null, "properties": {}, - "conditions": [] + "conditions": [], + "locale": null }, { + "documentId": "kjj0zscdcz4o76d0hsk2a0kt", "action": "admin::api-tokens.regenerate", + "actionParameters": {}, "subject": null, "properties": {}, - "conditions": [] + "conditions": [], + "locale": null }, { + "documentId": "i2elv0dnbjb8f4rd3a7qnvqp", "action": "admin::api-tokens.update", + "actionParameters": {}, "subject": null, "properties": {}, - "conditions": [] + "conditions": [], + "locale": null }, { + "documentId": "b67zgtvvq9shf35ux9j5wxiw", "action": "admin::marketplace.read", + "actionParameters": {}, "subject": null, "properties": {}, - "conditions": [] + "conditions": [], + "locale": null }, { + "documentId": "mavgf9fd5pn8j0lhkg2dnnpi", "action": "admin::project-settings.read", + "actionParameters": {}, "subject": null, "properties": {}, - "conditions": [] + "conditions": [], + "locale": null }, { + "documentId": "pusyemtxw4umn65gkyt4f5y8", "action": "admin::project-settings.update", + "actionParameters": {}, "subject": null, "properties": {}, - "conditions": [] + "conditions": [], + "locale": null }, { + "documentId": "jlvqmlkcrv0qzko31t35sxi7", "action": "admin::roles.create", + "actionParameters": {}, "subject": null, "properties": {}, - "conditions": [] + "conditions": [], + "locale": null }, { + "documentId": "mlof7izk8fp8h6nd7j0ln1cu", "action": "admin::roles.delete", + "actionParameters": {}, "subject": null, "properties": {}, - "conditions": [] + "conditions": [], + "locale": null }, { + "documentId": "fwawx9th2wgevp2m0yrj9lfa", "action": "admin::roles.read", + "actionParameters": {}, "subject": null, "properties": {}, - "conditions": [] + "conditions": [], + "locale": null }, { + "documentId": "wyg3usdpwo2k4fszpoyp62tg", "action": "admin::roles.update", + "actionParameters": {}, "subject": null, "properties": {}, - "conditions": [] + "conditions": [], + "locale": null }, { + "documentId": "bge8sr2x6xw0q8yjsjtps5ge", "action": "admin::transfer.tokens.access", + "actionParameters": {}, "subject": null, "properties": {}, - "conditions": [] + "conditions": [], + "locale": null }, { + "documentId": "s10hbse0kc05opfgncix9h39", "action": "admin::transfer.tokens.create", + "actionParameters": {}, "subject": null, "properties": {}, - "conditions": [] + "conditions": [], + "locale": null }, { + "documentId": "c23w6z96enceqevr309mq1wx", "action": "admin::transfer.tokens.delete", + "actionParameters": {}, "subject": null, "properties": {}, - "conditions": [] + "conditions": [], + "locale": null }, { + "documentId": "pkjtrxrxz9sol49tiiinh5b4", "action": "admin::transfer.tokens.read", + "actionParameters": {}, "subject": null, "properties": {}, - "conditions": [] + "conditions": [], + "locale": null }, { + "documentId": "sopliyt7ugiz5ehmtgsoz6ol", "action": "admin::transfer.tokens.regenerate", + "actionParameters": {}, "subject": null, "properties": {}, - "conditions": [] + "conditions": [], + "locale": null }, { + "documentId": "etoximjzj0thpv4871xjaz2l", "action": "admin::transfer.tokens.update", + "actionParameters": {}, "subject": null, "properties": {}, - "conditions": [] + "conditions": [], + "locale": null }, { + "documentId": "pa0kkh1qgmhv2g4sj2p0iv6p", "action": "admin::users.create", + "actionParameters": {}, "subject": null, "properties": {}, - "conditions": [] + "conditions": [], + "locale": null }, { + "documentId": "cd05f0610972x4cla7zbn7lj", "action": "admin::users.delete", + "actionParameters": {}, "subject": null, "properties": {}, - "conditions": [] + "conditions": [], + "locale": null }, { + "documentId": "eg6rihol2j5nsolugiyu418y", "action": "admin::users.read", + "actionParameters": {}, "subject": null, "properties": {}, - "conditions": [] + "conditions": [], + "locale": null }, { + "documentId": "c1vjci3yazarozpl656z0386", "action": "admin::users.update", + "actionParameters": {}, "subject": null, "properties": {}, - "conditions": [] + "conditions": [], + "locale": null }, { + "documentId": "vqcmx5rho3z8mc38yyuyk4lb", "action": "admin::webhooks.create", + "actionParameters": {}, "subject": null, "properties": {}, - "conditions": [] + "conditions": [], + "locale": null }, { + "documentId": "lz0wzn6lbbshdeq865uuce8u", "action": "admin::webhooks.delete", + "actionParameters": {}, "subject": null, "properties": {}, - "conditions": [] + "conditions": [], + "locale": null }, { + "documentId": "acjs8k0ful9i0jva510bx57d", "action": "admin::webhooks.read", + "actionParameters": {}, "subject": null, "properties": {}, - "conditions": [] + "conditions": [], + "locale": null }, { + "documentId": "s9lo4parql5zwyh22ssd289x", "action": "admin::webhooks.update", + "actionParameters": {}, "subject": null, "properties": {}, - "conditions": [] + "conditions": [], + "locale": null }, { + "documentId": "un1m95l72xltsqm41l792odr", "action": "plugin::config-sync.menu-link", + "actionParameters": {}, "subject": null, "properties": {}, - "conditions": [] + "conditions": [], + "locale": null }, { + "documentId": "zkfv3v2ycezibaej31kgze7k", "action": "plugin::config-sync.settings.read", + "actionParameters": {}, "subject": null, "properties": {}, - "conditions": [] + "conditions": [], + "locale": null }, { + "documentId": "n4jf0vk1jpfvduvqlj6oyn4m", "action": "plugin::content-manager.collection-types.configure-view", + "actionParameters": {}, "subject": null, "properties": {}, - "conditions": [] + "conditions": [], + "locale": null }, { + "documentId": "gofqx67fs2xt93ht5o5fl9xf", "action": "plugin::content-manager.components.configure-layout", + "actionParameters": {}, "subject": null, "properties": {}, - "conditions": [] + "conditions": [], + "locale": null }, { + "documentId": "v8utui3qs2nwhg1ev72gh269", "action": "plugin::content-manager.explorer.create", + "actionParameters": {}, "subject": "plugin::users-permissions.user", "properties": { "fields": [ @@ -611,16 +819,22 @@ "userSessions" ] }, - "conditions": [] + "conditions": [], + "locale": null }, { + "documentId": "p1fifs61ykfcefphmyroca6p", "action": "plugin::content-manager.explorer.delete", + "actionParameters": {}, "subject": "plugin::users-permissions.user", "properties": {}, - "conditions": [] + "conditions": [], + "locale": null }, { + "documentId": "dm0lmw9t7mqya0eosyv4vro9", "action": "plugin::content-manager.explorer.read", + "actionParameters": {}, "subject": "plugin::users-permissions.user", "properties": { "fields": [ @@ -669,10 +883,13 @@ "userSessions" ] }, - "conditions": [] + "conditions": [], + "locale": null }, { + "documentId": "ky85f9bcn8gnoss1ykqanqli", "action": "plugin::content-manager.explorer.update", + "actionParameters": {}, "subject": "plugin::users-permissions.user", "properties": { "fields": [ @@ -721,163 +938,242 @@ "userSessions" ] }, - "conditions": [] + "conditions": [], + "locale": null }, { + "documentId": "mt1y5zrscn7au0eyj4zpb1nj", "action": "plugin::content-manager.single-types.configure-view", + "actionParameters": {}, "subject": null, "properties": {}, - "conditions": [] + "conditions": [], + "locale": null }, { + "documentId": "ichzbfegnohrhyag7llzr7z0", "action": "plugin::content-type-builder.read", + "actionParameters": {}, "subject": null, "properties": {}, - "conditions": [] + "conditions": [], + "locale": null }, { + "documentId": "xv16zoz6ukdmqkpmm8xjl8za", "action": "plugin::email.settings.read", + "actionParameters": {}, "subject": null, "properties": {}, - "conditions": [] + "conditions": [], + "locale": null }, { + "documentId": "ogazeutl1yhbdzaw0mcjdhei", "action": "plugin::i18n.locale.create", + "actionParameters": {}, "subject": null, "properties": {}, - "conditions": [] + "conditions": [], + "locale": null }, { + "documentId": "uyobhfb17dn09inhtyyjusmg", "action": "plugin::i18n.locale.delete", + "actionParameters": {}, "subject": null, "properties": {}, - "conditions": [] + "conditions": [], + "locale": null }, { + "documentId": "eolsazo9ioeqsgoy0hpfge8b", "action": "plugin::i18n.locale.read", + "actionParameters": {}, "subject": null, "properties": {}, - "conditions": [] + "conditions": [], + "locale": null }, { + "documentId": "u6elearurw2qtuutexvye5oh", "action": "plugin::i18n.locale.update", + "actionParameters": {}, "subject": null, "properties": {}, - "conditions": [] + "conditions": [], + "locale": null }, { + "documentId": "jvy2gyfylv4thgqq9tn6r3c4", "action": "plugin::import-export-entries.export", + "actionParameters": {}, "subject": null, "properties": {}, - "conditions": [] + "conditions": [], + "locale": null }, { + "documentId": "zolgemm0fdd0wshnvmuiuf6v", "action": "plugin::import-export-entries.import", + "actionParameters": {}, "subject": null, "properties": {}, - "conditions": [] + "conditions": [], + "locale": null }, { + "documentId": "cmyuzelrhumjz8wr2wklo1se", "action": "plugin::upload.assets.copy-link", + "actionParameters": {}, "subject": null, "properties": {}, - "conditions": [] + "conditions": [], + "locale": null }, { + "documentId": "pdat5ps58ct1mpia17l0b7uv", "action": "plugin::upload.assets.create", + "actionParameters": {}, "subject": null, "properties": {}, - "conditions": [] + "conditions": [], + "locale": null }, { + "documentId": "rkhckxqxsr0fa2b5c1pa3gfq", "action": "plugin::upload.assets.download", + "actionParameters": {}, "subject": null, "properties": {}, - "conditions": [] + "conditions": [], + "locale": null }, { + "documentId": "bygmtpfjvaoybsquhl1ue7gv", "action": "plugin::upload.assets.update", + "actionParameters": {}, "subject": null, "properties": {}, - "conditions": [] + "conditions": [], + "locale": null }, { + "documentId": "wk2gzrl110pseosggenl2ymp", "action": "plugin::upload.configure-view", + "actionParameters": {}, "subject": null, "properties": {}, - "conditions": [] + "conditions": [], + "locale": null }, { + "documentId": "yasq8eki967jj0qyeq0xdfxq", "action": "plugin::upload.read", + "actionParameters": {}, "subject": null, "properties": {}, - "conditions": [] + "conditions": [], + "locale": null }, { + "documentId": "eqvf0g5f05hg692abdr0d6nt", "action": "plugin::upload.settings.read", + "actionParameters": {}, "subject": null, "properties": {}, - "conditions": [] + "conditions": [], + "locale": null }, { + "documentId": "rgoq76y3nntjocfhrgd79fly", "action": "plugin::users-permissions.advanced-settings.read", + "actionParameters": {}, "subject": null, "properties": {}, - "conditions": [] + "conditions": [], + "locale": null }, { + "documentId": "qfymc4d84bkt7r736r3mavpx", "action": "plugin::users-permissions.advanced-settings.update", + "actionParameters": {}, "subject": null, "properties": {}, - "conditions": [] + "conditions": [], + "locale": null }, { + "documentId": "b27hcrd3wo0bgdxo3zezs6wf", "action": "plugin::users-permissions.email-templates.read", + "actionParameters": {}, "subject": null, "properties": {}, - "conditions": [] + "conditions": [], + "locale": null }, { + "documentId": "n43xxxdyo1c2xeo3f1xcmc6q", "action": "plugin::users-permissions.email-templates.update", + "actionParameters": {}, "subject": null, "properties": {}, - "conditions": [] + "conditions": [], + "locale": null }, { + "documentId": "tytp7m7rtwzodrpe1n7auu2f", "action": "plugin::users-permissions.providers.read", + "actionParameters": {}, "subject": null, "properties": {}, - "conditions": [] + "conditions": [], + "locale": null }, { + "documentId": "zrbo6xzd7qbrpwijlwoob5sk", "action": "plugin::users-permissions.providers.update", + "actionParameters": {}, "subject": null, "properties": {}, - "conditions": [] + "conditions": [], + "locale": null }, { + "documentId": "n88q0ekuv52a1d6lie7gw5j1", "action": "plugin::users-permissions.roles.create", + "actionParameters": {}, "subject": null, "properties": {}, - "conditions": [] + "conditions": [], + "locale": null }, { + "documentId": "k795tjuy8kxdqp68e8wj3pac", "action": "plugin::users-permissions.roles.delete", + "actionParameters": {}, "subject": null, "properties": {}, - "conditions": [] + "conditions": [], + "locale": null }, { + "documentId": "xbc4fd372emawpw2sy4jzaqa", "action": "plugin::users-permissions.roles.read", + "actionParameters": {}, "subject": null, "properties": {}, - "conditions": [] + "conditions": [], + "locale": null }, { + "documentId": "lsb2467yhfwlxp2an365n4mq", "action": "plugin::users-permissions.roles.update", + "actionParameters": {}, "subject": null, "properties": {}, - "conditions": [] + "conditions": [], + "locale": null } ] } diff --git a/server2/config/sync/core-store.plugin_users-permissions_email.json b/server2/config/sync/core-store.plugin_users-permissions_email.json index 8f15f680..36c6ac99 100644 --- a/server2/config/sync/core-store.plugin_users-permissions_email.json +++ b/server2/config/sync/core-store.plugin_users-permissions_email.json @@ -21,17 +21,13 @@ "u_column": 3 }, "body": { - "id": "4RZGD5rLYN", "rows": [ { - "id": "mqnVZHhude", "cells": [1], "columns": [ { - "id": "OgOYivgaau", "contents": [ { - "id": "bGMFPWmaBb", "type": "image", "values": { "containerPadding": "10px", @@ -63,7 +59,6 @@ } }, { - "id": "CLKrlfbQfj", "type": "text", "values": { "containerPadding": "10px", diff --git a/server2/config/sync/i18n-locale.en.json b/server2/config/sync/i18n-locale.en.json index 968687a9..17899a54 100644 --- a/server2/config/sync/i18n-locale.en.json +++ b/server2/config/sync/i18n-locale.en.json @@ -1,4 +1,6 @@ { + "documentId": "pkao1rpn9zqkpn5z9ggolrhc", "name": "English (en)", - "code": "en" + "code": "en", + "locale": null } diff --git a/server2/config/sync/i18n-locale.ro.json b/server2/config/sync/i18n-locale.ro.json index ff4b133b..5643a515 100644 --- a/server2/config/sync/i18n-locale.ro.json +++ b/server2/config/sync/i18n-locale.ro.json @@ -1,4 +1,6 @@ { + "documentId": "czj3z5k61mwrs9628sgh29fj", "name": "Romanian (ro)", - "code": "ro" + "code": "ro", + "locale": null } diff --git a/server2/config/sync/user-role.authenticated.json b/server2/config/sync/user-role.authenticated.json index 354077e7..262b2a99 100644 --- a/server2/config/sync/user-role.authenticated.json +++ b/server2/config/sync/user-role.authenticated.json @@ -1,70 +1,114 @@ { + "documentId": "g190x4tpt81zbl01jrm5djab", "name": "Admin ONG", "description": "Default role given to authenticated user.", "type": "authenticated", + "locale": null, "permissions": [ { - "action": "api::dimension.dimension.find" + "documentId": "v1dgccdwqphwe8qfriybae6z", + "action": "api::dimension.dimension.find", + "locale": null }, { - "action": "api::domain.domain.find" + "documentId": "vecr3cbny0u8hxvs2d9zgiyb", + "action": "api::domain.domain.find", + "locale": null }, { - "action": "api::evaluation.evaluation.create" + "documentId": "v3yxz08lzzvo4ix7jrafwxjc", + "action": "api::evaluation.evaluation.create", + "locale": null }, { - "action": "api::evaluation.evaluation.delete" + "documentId": "mem1kug6ukh6l8ynfltwndjz", + "action": "api::evaluation.evaluation.delete", + "locale": null }, { - "action": "api::evaluation.evaluation.find" + "documentId": "nd2p5y1su2n63z71jxu3ni8v", + "action": "api::evaluation.evaluation.find", + "locale": null }, { - "action": "api::evaluation.evaluation.findOne" + "documentId": "ygfvfmyekxv3qbl4218r6vs6", + "action": "api::evaluation.evaluation.findOne", + "locale": null }, { - "action": "api::evaluation.evaluation.update" + "documentId": "o2f6zuze6rsdqd93aej6l82q", + "action": "api::evaluation.evaluation.update", + "locale": null }, { - "action": "api::matrix.matrix.find" + "documentId": "oixt5045sc3mzosjhtte5aqh", + "action": "api::matrix.matrix.find", + "locale": null }, { - "action": "api::mentorship-request.mentorship-request.create" + "documentId": "n8nw0v1uf97iia7daydz8lk7", + "action": "api::mentorship-request.mentorship-request.create", + "locale": null }, { - "action": "api::program.program.find" + "documentId": "k92st9pw1n52sftsd4yn0jo2", + "action": "api::program.program.find", + "locale": null }, { - "action": "api::report.report.create" + "documentId": "vm9bttqkkdb8taq1p60o2o5h", + "action": "api::report.report.create", + "locale": null }, { - "action": "api::report.report.find" + "documentId": "lrigfx92ag87hf6by8nehu9j", + "action": "api::report.report.find", + "locale": null }, { - "action": "api::report.report.findOne" + "documentId": "hxe234i3uvoniq3cf3edx9y5", + "action": "api::report.report.findOne", + "locale": null }, { - "action": "api::report.report.update" + "documentId": "oh18dujlesca8cbij12cv82e", + "action": "api::report.report.update", + "locale": null }, { - "action": "plugin::upload.content-api.upload" + "documentId": "vu1hfs1vlt5yr19ay8oq1o1i", + "action": "plugin::upload.content-api.upload", + "locale": null }, { - "action": "plugin::users-permissions.auth.changePassword" + "documentId": "brlxnmka8u3k9s3tnr0op2dr", + "action": "plugin::users-permissions.auth.changePassword", + "locale": null }, { - "action": "plugin::users-permissions.role.find" + "documentId": "efrdin4tlr78023lxda935hu", + "action": "plugin::users-permissions.role.find", + "locale": null }, { - "action": "plugin::users-permissions.user.find" + "documentId": "j0qaf7ifed48n67alldikbjo", + "action": "plugin::users-permissions.user.find", + "locale": null }, { - "action": "plugin::users-permissions.user.findOne" + "documentId": "unyxmp32qlfa6cnce9chg7qa", + "action": "plugin::users-permissions.user.findOne", + "locale": null }, { - "action": "plugin::users-permissions.user.me" + "documentId": "rwdbo3pixw7je19mwf7xa2ia", + "action": "plugin::users-permissions.user.me", + "locale": null }, { - "action": "plugin::users-permissions.user.update" + "documentId": "ma0j2lltfn5xum63biq09t0k", + "action": "plugin::users-permissions.user.update", + "locale": null } ] } diff --git a/server2/config/sync/user-role.fdsc.json b/server2/config/sync/user-role.fdsc.json index 184cc97d..7b27feef 100644 --- a/server2/config/sync/user-role.fdsc.json +++ b/server2/config/sync/user-role.fdsc.json @@ -1,70 +1,114 @@ { + "documentId": "klyupt3bafwxrg0e1wn34l5n", "name": "Admin FDSC", "description": "Utilizator de tipul Admin FDSC", "type": "fdsc", + "locale": null, "permissions": [ { - "action": "api::activity.activity.find" + "documentId": "guted8qa4yhvy8bk4mgs0ps0", + "action": "api::activity.activity.find", + "locale": null }, { - "action": "api::dimension.dimension.find" + "documentId": "kd5tbgeyfg6zso9j63temdfr", + "action": "api::dimension.dimension.find", + "locale": null }, { - "action": "api::domain.domain.find" + "documentId": "xvod7stgcdjin9mqm28d0x0q", + "action": "api::domain.domain.find", + "locale": null }, { - "action": "api::evaluation.evaluation.find" + "documentId": "fwt1osqtfdl1w95e59i1gjf5", + "action": "api::evaluation.evaluation.find", + "locale": null }, { - "action": "api::evaluation.evaluation.findOne" + "documentId": "v8c2b9sbnynnfoc96ke3wnqc", + "action": "api::evaluation.evaluation.findOne", + "locale": null }, { - "action": "api::evaluation.evaluation.update" + "documentId": "amg7ok2bjy802gwgd0rwsw23", + "action": "api::evaluation.evaluation.update", + "locale": null }, { - "action": "api::matrix.matrix.find" + "documentId": "kuqthd4w9w0r66ha3qpekhxx", + "action": "api::matrix.matrix.find", + "locale": null }, { - "action": "api::program.program.create" + "documentId": "lpw3rb12mhv2ok4777uqyjle", + "action": "api::program.program.create", + "locale": null }, { - "action": "api::program.program.find" + "documentId": "hkzi7zsxcd1gxi7fdwzvhocp", + "action": "api::program.program.find", + "locale": null }, { - "action": "api::program.program.findOne" + "documentId": "f31lmvbldcphampzkn0sq7c2", + "action": "api::program.program.findOne", + "locale": null }, { - "action": "api::program.program.update" + "documentId": "x0iehljch0suvyeqhdvcyojn", + "action": "api::program.program.update", + "locale": null }, { - "action": "api::report.report.find" + "documentId": "clmtzlccjeakrbwpqed6izxd", + "action": "api::report.report.find", + "locale": null }, { - "action": "api::report.report.findOne" + "documentId": "j24aceg41zqzjelho2qiu8bm", + "action": "api::report.report.findOne", + "locale": null }, { - "action": "api::report.report.update" + "documentId": "ro4510hd4byczjv2xj9oh7lg", + "action": "api::report.report.update", + "locale": null }, { - "action": "plugin::upload.content-api.upload" + "documentId": "dnyzjjxh2roy891qx2higz4x", + "action": "plugin::upload.content-api.upload", + "locale": null }, { - "action": "plugin::users-permissions.role.find" + "documentId": "m4ppkurcxmvqhm5wm85luq75", + "action": "plugin::users-permissions.role.find", + "locale": null }, { - "action": "plugin::users-permissions.user.create" + "documentId": "xo9gtr2wlckiaia9b4xvmchg", + "action": "plugin::users-permissions.user.create", + "locale": null }, { - "action": "plugin::users-permissions.user.find" + "documentId": "v3mtn6djrfn24sovic6qytoa", + "action": "plugin::users-permissions.user.find", + "locale": null }, { - "action": "plugin::users-permissions.user.findOne" + "documentId": "lb1jzos4ybbxy7hplxl0q974", + "action": "plugin::users-permissions.user.findOne", + "locale": null }, { - "action": "plugin::users-permissions.user.me" + "documentId": "sri1z3dwe56yirq40gi3b37e", + "action": "plugin::users-permissions.user.me", + "locale": null }, { - "action": "plugin::users-permissions.user.update" + "documentId": "uttz9yd06xgci74o38x31737", + "action": "plugin::users-permissions.user.update", + "locale": null } ] } diff --git a/server2/config/sync/user-role.mentor.json b/server2/config/sync/user-role.mentor.json index 8914676c..151b9ed9 100644 --- a/server2/config/sync/user-role.mentor.json +++ b/server2/config/sync/user-role.mentor.json @@ -1,52 +1,84 @@ { + "documentId": "to7b7325jizyijxxq0ilidke", "name": "Persoană resursă", "description": "Mentor", "type": "mentor", + "locale": null, "permissions": [ { - "action": "api::activity-type.activity-type.find" + "documentId": "vbrujrb42gw9kil85fmyxvhp", + "action": "api::activity-type.activity-type.find", + "locale": null }, { - "action": "api::activity.activity.create" + "documentId": "gqwvgc1ajyhfdb84s9dg89am", + "action": "api::activity.activity.create", + "locale": null }, { - "action": "api::activity.activity.find" + "documentId": "wyj2tfm39q46cskpzlyyzg3d", + "action": "api::activity.activity.find", + "locale": null }, { - "action": "api::dimension.dimension.find" + "documentId": "slkgr0lz2h0v13vtc9m7s0hv", + "action": "api::dimension.dimension.find", + "locale": null }, { - "action": "api::domain.domain.find" + "documentId": "t7khokgxm4pxqgyr4js21m0w", + "action": "api::domain.domain.find", + "locale": null }, { - "action": "api::evaluation.evaluation.find" + "documentId": "dtlijjm3tyibxlqc93ep3wq6", + "action": "api::evaluation.evaluation.find", + "locale": null }, { - "action": "api::matrix.matrix.find" + "documentId": "k0omwhlz008nbuclzocdga9i", + "action": "api::matrix.matrix.find", + "locale": null }, { - "action": "api::program.program.find" + "documentId": "r12cro3nmiblvi2plvmj011a", + "action": "api::program.program.find", + "locale": null }, { - "action": "api::report.report.find" + "documentId": "is07hama9ilrniqc342f8ekg", + "action": "api::report.report.find", + "locale": null }, { - "action": "api::report.report.findOne" + "documentId": "m6hy5uzm5zfjqdmtmybqcwyz", + "action": "api::report.report.findOne", + "locale": null }, { - "action": "plugin::upload.content-api.upload" + "documentId": "ajfz00adkgurmy4aabp91say", + "action": "plugin::upload.content-api.upload", + "locale": null }, { - "action": "plugin::users-permissions.role.find" + "documentId": "dufi11tpwgzo30tgcyq1r2h5", + "action": "plugin::users-permissions.role.find", + "locale": null }, { - "action": "plugin::users-permissions.user.find" + "documentId": "b6g5bz8igykp6ppjamnz6cvi", + "action": "plugin::users-permissions.user.find", + "locale": null }, { - "action": "plugin::users-permissions.user.me" + "documentId": "kahbbvsq66apfsdhvosacqoc", + "action": "plugin::users-permissions.user.me", + "locale": null }, { - "action": "plugin::users-permissions.user.update" + "documentId": "g8txwqb8xci1bn8r9e6mtbme", + "action": "plugin::users-permissions.user.update", + "locale": null } ] } diff --git a/server2/config/sync/user-role.public.json b/server2/config/sync/user-role.public.json index 46465f85..2cc9cc81 100644 --- a/server2/config/sync/user-role.public.json +++ b/server2/config/sync/user-role.public.json @@ -1,52 +1,84 @@ { + "documentId": "jg21yp3ja3dz2ztizysxlz8m", "name": "Public", "description": "Default role given to unauthenticated user.", "type": "public", + "locale": null, "permissions": [ { - "action": "api::dimension.dimension.find" + "documentId": "rnjm3o5kliyowbja42cjycge", + "action": "api::dimension.dimension.find", + "locale": null }, { - "action": "api::domain.domain.find" + "documentId": "ggmr0xwaci9b0jkdvvebnlxz", + "action": "api::domain.domain.find", + "locale": null }, { - "action": "api::evaluation.evaluation.find" + "documentId": "lbhlzzr6mth6ay93yudbzv7x", + "action": "api::evaluation.evaluation.find", + "locale": null }, { - "action": "api::evaluation.evaluation.findOne" + "documentId": "wwpmcnxepzuvh292j7nu8rtu", + "action": "api::evaluation.evaluation.findOne", + "locale": null }, { - "action": "api::evaluation.evaluation.update" + "documentId": "dovnskakrnmj232rqw6pk46h", + "action": "api::evaluation.evaluation.update", + "locale": null }, { - "action": "api::matrix.matrix.find" + "documentId": "fmwcsbt8uy3vnibeqwue560i", + "action": "api::matrix.matrix.find", + "locale": null }, { - "action": "plugin::users-permissions.auth.callback" + "documentId": "ttu1ddgt8xf708z3qo6le8c0", + "action": "plugin::users-permissions.auth.callback", + "locale": null }, { - "action": "plugin::users-permissions.auth.connect" + "documentId": "srke63qkvcr2hb0lazuwn153", + "action": "plugin::users-permissions.auth.connect", + "locale": null }, { - "action": "plugin::users-permissions.auth.emailConfirmation" + "documentId": "od8lkeks7hp6aggu899cb1qe", + "action": "plugin::users-permissions.auth.emailConfirmation", + "locale": null }, { - "action": "plugin::users-permissions.auth.findRegistrationInfo" + "documentId": "uu9tbklz08pd794caz44e9vg", + "action": "plugin::users-permissions.auth.findRegistrationInfo", + "locale": null }, { - "action": "plugin::users-permissions.auth.forgotPassword" + "documentId": "cp3q181vbbgsigjaqa4a20fo", + "action": "plugin::users-permissions.auth.forgotPassword", + "locale": null }, { - "action": "plugin::users-permissions.auth.register" + "documentId": "e22y4mf08moqo55qs2w5xre0", + "action": "plugin::users-permissions.auth.register", + "locale": null }, { - "action": "plugin::users-permissions.auth.registerWithConfirmation" + "documentId": "x0jb1ucxw85xl8xxwxu4811k", + "action": "plugin::users-permissions.auth.registerWithConfirmation", + "locale": null }, { - "action": "plugin::users-permissions.auth.resetPassword" + "documentId": "kiiiqrjx9odip1uud9ixwr8x", + "action": "plugin::users-permissions.auth.resetPassword", + "locale": null }, { - "action": "plugin::users-permissions.auth.sendEmailConfirmation" + "documentId": "i4zombf721r8r8i9dk9eac24", + "action": "plugin::users-permissions.auth.sendEmailConfirmation", + "locale": null } ] } From ea67bebcd8185c9ca631e7b74d85157913db116c Mon Sep 17 00:00:00 2001 From: Ion Dormenco Date: Thu, 11 Sep 2025 15:28:17 +0300 Subject: [PATCH 24/61] more cleanup --- .../sync/admin-role.strapi-super-admin.json | 108 +++++++-- ...tion_components##evaluation.dimension.json | 12 +- ...ation_components##evaluation.question.json | 12 +- ...guration_components##matrix.dimension.json | 10 +- ...iguration_components##matrix.question.json | 8 + ...nt_types##admin##api-token-permission.json | 8 + ...ation_content_types##admin##api-token.json | 28 +++ ...tion_content_types##admin##permission.json | 28 +++ ...figuration_content_types##admin##role.json | 8 + ...pes##admin##transfer-token-permission.json | 8 + ..._content_types##admin##transfer-token.json | 8 + ...figuration_content_types##admin##user.json | 8 + ...pes##api##activity-type.activity-type.json | 12 +- ...content_types##api##activity.activity.json | 12 +- ...ntent_types##api##dimension.dimension.json | 8 + ...ion_content_types##api##domain.domain.json | 12 +- ...ion_content_types##api##matrix.matrix.json | 8 + ...mentorship-request.mentorship-request.json | 12 +- ...n_content_types##api##program.program.json | 12 +- ...ion_content_types##api##report.report.json | 19 +- ...ugin##content-releases.release-action.json | 196 ++++++++++++++++ ...pes##plugin##content-releases.release.json | 214 ++++++++++++++++++ ...l-designer-5.email-designer-template.json} | 34 +-- ...on_content_types##plugin##i18n.locale.json | 8 + ...ugin##review-workflows.workflow-stage.json | 177 +++++++++++++++ ...es##plugin##review-workflows.workflow.json | 179 +++++++++++++++ ...on_content_types##plugin##upload.file.json | 8 + ..._content_types##plugin##upload.folder.json | 8 + ...#plugin##users-permissions.permission.json | 8 + ...types##plugin##users-permissions.role.json | 8 + .../users-permissions/routes/user.ts | 69 ------ .../users-permissions/services/magic-link.ts | 38 ---- .../users-permissions/strapi-server.ts | 94 ++++---- 33 files changed, 1174 insertions(+), 208 deletions(-) create mode 100644 server2/config/sync/core-store.plugin_content_manager_configuration_content_types##plugin##content-releases.release-action.json create mode 100644 server2/config/sync/core-store.plugin_content_manager_configuration_content_types##plugin##content-releases.release.json rename server2/config/sync/{core-store.plugin_content_manager_configuration_content_types##plugin##email-designer.email-template.json => core-store.plugin_content_manager_configuration_content_types##plugin##email-designer-5.email-designer-template.json} (92%) create mode 100644 server2/config/sync/core-store.plugin_content_manager_configuration_content_types##plugin##review-workflows.workflow-stage.json create mode 100644 server2/config/sync/core-store.plugin_content_manager_configuration_content_types##plugin##review-workflows.workflow.json delete mode 100644 server2/src/extensions/users-permissions/routes/user.ts delete mode 100644 server2/src/extensions/users-permissions/services/magic-link.ts diff --git a/server2/config/sync/admin-role.strapi-super-admin.json b/server2/config/sync/admin-role.strapi-super-admin.json index 7086f012..e0b010ee 100644 --- a/server2/config/sync/admin-role.strapi-super-admin.json +++ b/server2/config/sync/admin-role.strapi-super-admin.json @@ -25,6 +25,15 @@ "conditions": [], "locale": null }, + { + "documentId": "rz2tcxwpor0wctzsmzs2vgpm", + "action": "plugin::content-manager.explorer.publish", + "actionParameters": {}, + "subject": "api::activity-type.activity-type", + "properties": {}, + "conditions": [], + "locale": null + }, { "documentId": "bovvow8d6br5kk2vn21qnqde", "action": "plugin::content-manager.explorer.read", @@ -75,6 +84,15 @@ "conditions": [], "locale": null }, + { + "documentId": "qcgb21fhjymb55z1xu4bggld", + "action": "plugin::content-manager.explorer.publish", + "actionParameters": {}, + "subject": "api::activity.activity", + "properties": {}, + "conditions": [], + "locale": null + }, { "documentId": "yhrvp9rne6n9lzgmxjtyvxr2", "action": "plugin::content-manager.explorer.read", @@ -145,6 +163,15 @@ "conditions": [], "locale": null }, + { + "documentId": "mmcruyxx2pyybz631o1sc07h", + "action": "plugin::content-manager.explorer.publish", + "actionParameters": {}, + "subject": "api::dimension.dimension", + "properties": {}, + "conditions": [], + "locale": null + }, { "documentId": "of7zr3hhiefg83rkbt4htmqc", "action": "plugin::content-manager.explorer.read", @@ -211,6 +238,15 @@ "conditions": [], "locale": null }, + { + "documentId": "dus2z1iohe2s67qmuac96m6a", + "action": "plugin::content-manager.explorer.publish", + "actionParameters": {}, + "subject": "api::domain.domain", + "properties": {}, + "conditions": [], + "locale": null + }, { "documentId": "q4geghmz6u9akkfforaptnd2", "action": "plugin::content-manager.explorer.read", @@ -258,6 +294,15 @@ "conditions": [], "locale": null }, + { + "documentId": "wlrvl3poapibi82b3eahhm5t", + "action": "plugin::content-manager.explorer.publish", + "actionParameters": {}, + "subject": "api::evaluation.evaluation", + "properties": {}, + "conditions": [], + "locale": null + }, { "documentId": "se55xcfqhs1kj7xw8x52zlya", "action": "plugin::content-manager.explorer.read", @@ -310,6 +355,15 @@ "conditions": [], "locale": null }, + { + "documentId": "m9phvw344riwyr9ks80v5yry", + "action": "plugin::content-manager.explorer.publish", + "actionParameters": {}, + "subject": "api::matrix.matrix", + "properties": {}, + "conditions": [], + "locale": null + }, { "documentId": "k13vxovhsez9rq8djng46mtn", "action": "plugin::content-manager.explorer.read", @@ -352,6 +406,15 @@ "conditions": [], "locale": null }, + { + "documentId": "o54acu7rmu6blxobejj017bk", + "action": "plugin::content-manager.explorer.publish", + "actionParameters": {}, + "subject": "api::mentorship-request.mentorship-request", + "properties": {}, + "conditions": [], + "locale": null + }, { "documentId": "yo3amtsm872moyigqo1wrwow", "action": "plugin::content-manager.explorer.read", @@ -466,6 +529,15 @@ "conditions": [], "locale": null }, + { + "documentId": "g0jgi3ursniv591gq2i3c30n", + "action": "plugin::content-manager.explorer.publish", + "actionParameters": {}, + "subject": "api::report.report", + "properties": {}, + "conditions": [], + "locale": null + }, { "documentId": "onze7tuh8onl9rk1ijlt36ea", "action": "plugin::content-manager.explorer.read", @@ -831,6 +903,15 @@ "conditions": [], "locale": null }, + { + "documentId": "cka9hhow5kc8360q1yfd1rzv", + "action": "plugin::content-manager.explorer.publish", + "actionParameters": {}, + "subject": "plugin::users-permissions.user", + "properties": {}, + "conditions": [], + "locale": null + }, { "documentId": "dm0lmw9t7mqya0eosyv4vro9", "action": "plugin::content-manager.explorer.read", @@ -959,6 +1040,15 @@ "conditions": [], "locale": null }, + { + "documentId": "ztqg486eq9fh2yc032795k2z", + "action": "plugin::email-designer-5.menu-link", + "actionParameters": {}, + "subject": null, + "properties": {}, + "conditions": [], + "locale": null + }, { "documentId": "xv16zoz6ukdmqkpmm8xjl8za", "action": "plugin::email.settings.read", @@ -1004,24 +1094,6 @@ "conditions": [], "locale": null }, - { - "documentId": "jvy2gyfylv4thgqq9tn6r3c4", - "action": "plugin::import-export-entries.export", - "actionParameters": {}, - "subject": null, - "properties": {}, - "conditions": [], - "locale": null - }, - { - "documentId": "zolgemm0fdd0wshnvmuiuf6v", - "action": "plugin::import-export-entries.import", - "actionParameters": {}, - "subject": null, - "properties": {}, - "conditions": [], - "locale": null - }, { "documentId": "cmyuzelrhumjz8wr2wklo1se", "action": "plugin::upload.assets.copy-link", diff --git a/server2/config/sync/core-store.plugin_content_manager_configuration_components##evaluation.dimension.json b/server2/config/sync/core-store.plugin_content_manager_configuration_components##evaluation.dimension.json index 6c33447f..a702a0aa 100644 --- a/server2/config/sync/core-store.plugin_content_manager_configuration_components##evaluation.dimension.json +++ b/server2/config/sync/core-store.plugin_content_manager_configuration_components##evaluation.dimension.json @@ -7,7 +7,7 @@ "filterable": true, "searchable": true, "pageSize": 10, - "mainField": "id", + "mainField": "documentId", "defaultSortBy": "id", "defaultSortOrder": "ASC" }, @@ -47,10 +47,18 @@ "searchable": true, "sortable": true } + }, + "documentId": { + "edit": {}, + "list": { + "label": "documentId", + "searchable": true, + "sortable": true + } } }, "layouts": { - "list": ["id", "quiz", "comment"], + "list": ["id", "quiz", "comment", "documentId"], "edit": [ [ { diff --git a/server2/config/sync/core-store.plugin_content_manager_configuration_components##evaluation.question.json b/server2/config/sync/core-store.plugin_content_manager_configuration_components##evaluation.question.json index cd7adaa0..38dfe983 100644 --- a/server2/config/sync/core-store.plugin_content_manager_configuration_components##evaluation.question.json +++ b/server2/config/sync/core-store.plugin_content_manager_configuration_components##evaluation.question.json @@ -7,7 +7,7 @@ "filterable": true, "searchable": true, "pageSize": 10, - "mainField": "id", + "mainField": "documentId", "defaultSortBy": "id", "defaultSortOrder": "ASC" }, @@ -33,10 +33,18 @@ "searchable": true, "sortable": true } + }, + "documentId": { + "edit": {}, + "list": { + "label": "documentId", + "searchable": true, + "sortable": true + } } }, "layouts": { - "list": ["id", "answer"], + "list": ["id", "answer", "documentId"], "edit": [ [ { diff --git a/server2/config/sync/core-store.plugin_content_manager_configuration_components##matrix.dimension.json b/server2/config/sync/core-store.plugin_content_manager_configuration_components##matrix.dimension.json index 6c400daf..3d95f17c 100644 --- a/server2/config/sync/core-store.plugin_content_manager_configuration_components##matrix.dimension.json +++ b/server2/config/sync/core-store.plugin_content_manager_configuration_components##matrix.dimension.json @@ -47,10 +47,18 @@ "searchable": true, "sortable": true } + }, + "documentId": { + "edit": {}, + "list": { + "label": "documentId", + "searchable": true, + "sortable": true + } } }, "layouts": { - "list": ["id", "name", "link"], + "list": ["id", "name", "link", "documentId"], "edit": [ [ { diff --git a/server2/config/sync/core-store.plugin_content_manager_configuration_components##matrix.question.json b/server2/config/sync/core-store.plugin_content_manager_configuration_components##matrix.question.json index e71ea89b..88f20d90 100644 --- a/server2/config/sync/core-store.plugin_content_manager_configuration_components##matrix.question.json +++ b/server2/config/sync/core-store.plugin_content_manager_configuration_components##matrix.question.json @@ -117,6 +117,14 @@ "searchable": true, "sortable": true } + }, + "documentId": { + "edit": {}, + "list": { + "label": "documentId", + "searchable": true, + "sortable": true + } } }, "layouts": { diff --git a/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##admin##api-token-permission.json b/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##admin##api-token-permission.json index 4d40209f..9d20a90c 100644 --- a/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##admin##api-token-permission.json +++ b/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##admin##api-token-permission.json @@ -106,6 +106,14 @@ "searchable": true, "sortable": true } + }, + "documentId": { + "edit": {}, + "list": { + "label": "documentId", + "searchable": true, + "sortable": true + } } }, "layouts": { diff --git a/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##admin##api-token.json b/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##admin##api-token.json index 1444a41f..c074a9b1 100644 --- a/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##admin##api-token.json +++ b/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##admin##api-token.json @@ -76,6 +76,20 @@ "sortable": true } }, + "encryptedKey": { + "edit": { + "label": "encryptedKey", + "description": "", + "placeholder": "", + "visible": true, + "editable": true + }, + "list": { + "label": "encryptedKey", + "searchable": true, + "sortable": true + } + }, "lastUsedAt": { "edit": { "label": "lastUsedAt", @@ -190,6 +204,14 @@ "searchable": true, "sortable": true } + }, + "documentId": { + "edit": {}, + "list": { + "label": "documentId", + "searchable": true, + "sortable": true + } } }, "layouts": { @@ -234,6 +256,12 @@ "name": "lifespan", "size": 4 } + ], + [ + { + "name": "encryptedKey", + "size": 6 + } ] ] } diff --git a/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##admin##permission.json b/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##admin##permission.json index 2043fd4d..cc332ff4 100644 --- a/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##admin##permission.json +++ b/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##admin##permission.json @@ -34,6 +34,20 @@ "sortable": true } }, + "actionParameters": { + "edit": { + "label": "actionParameters", + "description": "", + "placeholder": "", + "visible": true, + "editable": true + }, + "list": { + "label": "actionParameters", + "searchable": false, + "sortable": false + } + }, "subject": { "edit": { "label": "subject", @@ -148,6 +162,14 @@ "searchable": true, "sortable": true } + }, + "documentId": { + "edit": {}, + "list": { + "label": "documentId", + "searchable": true, + "sortable": true + } } }, "layouts": { @@ -180,6 +202,12 @@ "name": "role", "size": 6 } + ], + [ + { + "name": "actionParameters", + "size": 12 + } ] ] } diff --git a/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##admin##role.json b/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##admin##role.json index 20143cfd..5c67d7f4 100644 --- a/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##admin##role.json +++ b/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##admin##role.json @@ -149,6 +149,14 @@ "searchable": true, "sortable": true } + }, + "documentId": { + "edit": {}, + "list": { + "label": "documentId", + "searchable": true, + "sortable": true + } } }, "layouts": { diff --git a/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##admin##transfer-token-permission.json b/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##admin##transfer-token-permission.json index 56b0bbfe..7ae8ed80 100644 --- a/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##admin##transfer-token-permission.json +++ b/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##admin##transfer-token-permission.json @@ -106,6 +106,14 @@ "searchable": true, "sortable": true } + }, + "documentId": { + "edit": {}, + "list": { + "label": "documentId", + "searchable": true, + "sortable": true + } } }, "layouts": { diff --git a/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##admin##transfer-token.json b/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##admin##transfer-token.json index 6a700c88..6eb4dc5b 100644 --- a/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##admin##transfer-token.json +++ b/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##admin##transfer-token.json @@ -176,6 +176,14 @@ "searchable": true, "sortable": true } + }, + "documentId": { + "edit": {}, + "list": { + "label": "documentId", + "searchable": true, + "sortable": true + } } }, "layouts": { diff --git a/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##admin##user.json b/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##admin##user.json index aaab3201..0dd39a4b 100644 --- a/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##admin##user.json +++ b/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##admin##user.json @@ -232,6 +232,14 @@ "searchable": true, "sortable": true } + }, + "documentId": { + "edit": {}, + "list": { + "label": "documentId", + "searchable": true, + "sortable": true + } } }, "layouts": { diff --git a/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##api##activity-type.activity-type.json b/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##api##activity-type.activity-type.json index 043504f8..bb65c7eb 100644 --- a/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##api##activity-type.activity-type.json +++ b/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##api##activity-type.activity-type.json @@ -91,9 +91,18 @@ "searchable": true, "sortable": true } + }, + "documentId": { + "edit": {}, + "list": { + "label": "documentId", + "searchable": true, + "sortable": true + } } }, "layouts": { + "list": ["name", "documentId"], "edit": [ [ { @@ -101,8 +110,7 @@ "size": 6 } ] - ], - "list": ["name"] + ] } }, "type": "object", diff --git a/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##api##activity.activity.json b/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##api##activity.activity.json index a68b4807..97cb72d5 100644 --- a/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##api##activity.activity.json +++ b/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##api##activity.activity.json @@ -179,9 +179,18 @@ "searchable": true, "sortable": true } + }, + "documentId": { + "edit": {}, + "list": { + "label": "documentId", + "searchable": true, + "sortable": true + } } }, "layouts": { + "list": ["id", "type", "dimension", "mentor", "user"], "edit": [ [ { @@ -223,8 +232,7 @@ "size": 6 } ] - ], - "list": ["id", "type", "dimension", "mentor", "user"] + ] } }, "type": "object", diff --git a/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##api##dimension.dimension.json b/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##api##dimension.dimension.json index 0dc4aff5..6be8a71f 100644 --- a/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##api##dimension.dimension.json +++ b/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##api##dimension.dimension.json @@ -149,6 +149,14 @@ "searchable": true, "sortable": true } + }, + "documentId": { + "edit": {}, + "list": { + "label": "documentId", + "searchable": true, + "sortable": true + } } }, "layouts": { diff --git a/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##api##domain.domain.json b/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##api##domain.domain.json index dbea7ac2..c4130f89 100644 --- a/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##api##domain.domain.json +++ b/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##api##domain.domain.json @@ -106,9 +106,18 @@ "searchable": true, "sortable": true } + }, + "documentId": { + "edit": {}, + "list": { + "label": "documentId", + "searchable": true, + "sortable": true + } } }, "layouts": { + "list": ["id", "name", "mentors", "documentId"], "edit": [ [ { @@ -120,8 +129,7 @@ "size": 6 } ] - ], - "list": ["id", "name", "mentors"] + ] } }, "type": "object", diff --git a/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##api##matrix.matrix.json b/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##api##matrix.matrix.json index 0e0f2fe2..654438b1 100644 --- a/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##api##matrix.matrix.json +++ b/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##api##matrix.matrix.json @@ -92,6 +92,14 @@ "searchable": true, "sortable": true } + }, + "documentId": { + "edit": {}, + "list": { + "label": "documentId", + "searchable": true, + "sortable": true + } } }, "layouts": { diff --git a/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##api##mentorship-request.mentorship-request.json b/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##api##mentorship-request.mentorship-request.json index fba8f93c..3668bbca 100644 --- a/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##api##mentorship-request.mentorship-request.json +++ b/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##api##mentorship-request.mentorship-request.json @@ -107,9 +107,18 @@ "searchable": true, "sortable": true } + }, + "documentId": { + "edit": {}, + "list": { + "label": "documentId", + "searchable": true, + "sortable": true + } } }, "layouts": { + "list": ["id", "mentor", "user", "createdAt"], "edit": [ [ { @@ -121,8 +130,7 @@ "size": 6 } ] - ], - "list": ["id", "mentor", "user", "createdAt"] + ] } }, "type": "object", diff --git a/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##api##program.program.json b/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##api##program.program.json index 5c8147cf..773e5bd2 100644 --- a/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##api##program.program.json +++ b/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##api##program.program.json @@ -163,9 +163,18 @@ "searchable": true, "sortable": true } + }, + "documentId": { + "edit": {}, + "list": { + "label": "documentId", + "searchable": true, + "sortable": true + } } }, "layouts": { + "list": ["id", "name", "startDate", "endDate"], "edit": [ [ { @@ -199,8 +208,7 @@ "size": 6 } ] - ], - "list": ["id", "name", "startDate", "endDate"] + ] } }, "type": "object", diff --git a/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##api##report.report.json b/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##api##report.report.json index 3652b75d..503dd4b2 100644 --- a/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##api##report.report.json +++ b/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##api##report.report.json @@ -135,9 +135,25 @@ "searchable": true, "sortable": true } + }, + "documentId": { + "edit": {}, + "list": { + "label": "documentId", + "searchable": true, + "sortable": true + } } }, "layouts": { + "list": [ + "id", + "evaluations", + "createdAt", + "user", + "deadline", + "finished" + ], "edit": [ [ { @@ -159,8 +175,7 @@ "size": 6 } ] - ], - "list": ["id", "evaluations", "createdAt", "user", "deadline", "finished"] + ] } }, "type": "object", diff --git a/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##plugin##content-releases.release-action.json b/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##plugin##content-releases.release-action.json new file mode 100644 index 00000000..3476aaa9 --- /dev/null +++ b/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##plugin##content-releases.release-action.json @@ -0,0 +1,196 @@ +{ + "key": "plugin_content_manager_configuration_content_types::plugin::content-releases.release-action", + "value": { + "settings": { + "bulkable": true, + "filterable": true, + "searchable": true, + "pageSize": 10, + "mainField": "contentType", + "defaultSortBy": "contentType", + "defaultSortOrder": "ASC" + }, + "metadatas": { + "id": { + "edit": {}, + "list": { + "label": "id", + "searchable": true, + "sortable": true + } + }, + "type": { + "edit": { + "label": "type", + "description": "", + "placeholder": "", + "visible": true, + "editable": true + }, + "list": { + "label": "type", + "searchable": true, + "sortable": true + } + }, + "contentType": { + "edit": { + "label": "contentType", + "description": "", + "placeholder": "", + "visible": true, + "editable": true + }, + "list": { + "label": "contentType", + "searchable": true, + "sortable": true + } + }, + "entryDocumentId": { + "edit": { + "label": "entryDocumentId", + "description": "", + "placeholder": "", + "visible": true, + "editable": true + }, + "list": { + "label": "entryDocumentId", + "searchable": true, + "sortable": true + } + }, + "release": { + "edit": { + "label": "release", + "description": "", + "placeholder": "", + "visible": true, + "editable": true, + "mainField": "name" + }, + "list": { + "label": "release", + "searchable": true, + "sortable": true + } + }, + "isEntryValid": { + "edit": { + "label": "isEntryValid", + "description": "", + "placeholder": "", + "visible": true, + "editable": true + }, + "list": { + "label": "isEntryValid", + "searchable": true, + "sortable": true + } + }, + "createdAt": { + "edit": { + "label": "createdAt", + "description": "", + "placeholder": "", + "visible": false, + "editable": true + }, + "list": { + "label": "createdAt", + "searchable": true, + "sortable": true + } + }, + "updatedAt": { + "edit": { + "label": "updatedAt", + "description": "", + "placeholder": "", + "visible": false, + "editable": true + }, + "list": { + "label": "updatedAt", + "searchable": true, + "sortable": true + } + }, + "createdBy": { + "edit": { + "label": "createdBy", + "description": "", + "placeholder": "", + "visible": false, + "editable": true, + "mainField": "firstname" + }, + "list": { + "label": "createdBy", + "searchable": true, + "sortable": true + } + }, + "updatedBy": { + "edit": { + "label": "updatedBy", + "description": "", + "placeholder": "", + "visible": false, + "editable": true, + "mainField": "firstname" + }, + "list": { + "label": "updatedBy", + "searchable": true, + "sortable": true + } + }, + "documentId": { + "edit": {}, + "list": { + "label": "documentId", + "searchable": true, + "sortable": true + } + } + }, + "layouts": { + "list": ["id", "type", "contentType", "entryDocumentId"], + "edit": [ + [ + { + "name": "type", + "size": 6 + }, + { + "name": "contentType", + "size": 6 + } + ], + [ + { + "name": "entryDocumentId", + "size": 6 + }, + { + "name": "release", + "size": 6 + } + ], + [ + { + "name": "isEntryValid", + "size": 4 + } + ] + ] + }, + "uid": "plugin::content-releases.release-action" + }, + "type": "object", + "environment": null, + "tag": null +} diff --git a/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##plugin##content-releases.release.json b/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##plugin##content-releases.release.json new file mode 100644 index 00000000..012ae34c --- /dev/null +++ b/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##plugin##content-releases.release.json @@ -0,0 +1,214 @@ +{ + "key": "plugin_content_manager_configuration_content_types::plugin::content-releases.release", + "value": { + "settings": { + "bulkable": true, + "filterable": true, + "searchable": true, + "pageSize": 10, + "mainField": "name", + "defaultSortBy": "name", + "defaultSortOrder": "ASC" + }, + "metadatas": { + "id": { + "edit": {}, + "list": { + "label": "id", + "searchable": true, + "sortable": true + } + }, + "name": { + "edit": { + "label": "name", + "description": "", + "placeholder": "", + "visible": true, + "editable": true + }, + "list": { + "label": "name", + "searchable": true, + "sortable": true + } + }, + "releasedAt": { + "edit": { + "label": "releasedAt", + "description": "", + "placeholder": "", + "visible": true, + "editable": true + }, + "list": { + "label": "releasedAt", + "searchable": true, + "sortable": true + } + }, + "scheduledAt": { + "edit": { + "label": "scheduledAt", + "description": "", + "placeholder": "", + "visible": true, + "editable": true + }, + "list": { + "label": "scheduledAt", + "searchable": true, + "sortable": true + } + }, + "timezone": { + "edit": { + "label": "timezone", + "description": "", + "placeholder": "", + "visible": true, + "editable": true + }, + "list": { + "label": "timezone", + "searchable": true, + "sortable": true + } + }, + "status": { + "edit": { + "label": "status", + "description": "", + "placeholder": "", + "visible": true, + "editable": true + }, + "list": { + "label": "status", + "searchable": true, + "sortable": true + } + }, + "actions": { + "edit": { + "label": "actions", + "description": "", + "placeholder": "", + "visible": true, + "editable": true, + "mainField": "contentType" + }, + "list": { + "label": "actions", + "searchable": false, + "sortable": false + } + }, + "createdAt": { + "edit": { + "label": "createdAt", + "description": "", + "placeholder": "", + "visible": false, + "editable": true + }, + "list": { + "label": "createdAt", + "searchable": true, + "sortable": true + } + }, + "updatedAt": { + "edit": { + "label": "updatedAt", + "description": "", + "placeholder": "", + "visible": false, + "editable": true + }, + "list": { + "label": "updatedAt", + "searchable": true, + "sortable": true + } + }, + "createdBy": { + "edit": { + "label": "createdBy", + "description": "", + "placeholder": "", + "visible": false, + "editable": true, + "mainField": "firstname" + }, + "list": { + "label": "createdBy", + "searchable": true, + "sortable": true + } + }, + "updatedBy": { + "edit": { + "label": "updatedBy", + "description": "", + "placeholder": "", + "visible": false, + "editable": true, + "mainField": "firstname" + }, + "list": { + "label": "updatedBy", + "searchable": true, + "sortable": true + } + }, + "documentId": { + "edit": {}, + "list": { + "label": "documentId", + "searchable": true, + "sortable": true + } + } + }, + "layouts": { + "list": ["id", "name", "releasedAt", "scheduledAt"], + "edit": [ + [ + { + "name": "name", + "size": 6 + }, + { + "name": "releasedAt", + "size": 6 + } + ], + [ + { + "name": "scheduledAt", + "size": 6 + }, + { + "name": "timezone", + "size": 6 + } + ], + [ + { + "name": "status", + "size": 6 + }, + { + "name": "actions", + "size": 6 + } + ] + ] + }, + "uid": "plugin::content-releases.release" + }, + "type": "object", + "environment": null, + "tag": null +} diff --git a/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##plugin##email-designer.email-template.json b/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##plugin##email-designer-5.email-designer-template.json similarity index 92% rename from server2/config/sync/core-store.plugin_content_manager_configuration_content_types##plugin##email-designer.email-template.json rename to server2/config/sync/core-store.plugin_content_manager_configuration_content_types##plugin##email-designer-5.email-designer-template.json index 5225436e..95290357 100644 --- a/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##plugin##email-designer.email-template.json +++ b/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##plugin##email-designer-5.email-designer-template.json @@ -1,7 +1,6 @@ { - "key": "plugin_content_manager_configuration_content_types::plugin::email-designer.email-template", + "key": "plugin_content_manager_configuration_content_types::plugin::email-designer-5.email-designer-template", "value": { - "uid": "plugin::email-designer.email-template", "settings": { "bulkable": true, "filterable": true, @@ -104,20 +103,6 @@ "sortable": true } }, - "enabled": { - "edit": { - "label": "enabled", - "description": "", - "placeholder": "", - "visible": true, - "editable": true - }, - "list": { - "label": "enabled", - "searchable": true, - "sortable": true - } - }, "tags": { "edit": { "label": "tags", @@ -189,6 +174,14 @@ "searchable": true, "sortable": true } + }, + "documentId": { + "edit": {}, + "list": { + "label": "documentId", + "searchable": true, + "sortable": true + } } }, "layouts": { @@ -226,12 +219,6 @@ "size": 6 } ], - [ - { - "name": "enabled", - "size": 4 - } - ], [ { "name": "tags", @@ -239,7 +226,8 @@ } ] ] - } + }, + "uid": "plugin::email-designer-5.email-designer-template" }, "type": "object", "environment": null, diff --git a/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##plugin##i18n.locale.json b/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##plugin##i18n.locale.json index 617fa5b5..5611113a 100644 --- a/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##plugin##i18n.locale.json +++ b/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##plugin##i18n.locale.json @@ -105,6 +105,14 @@ "searchable": true, "sortable": true } + }, + "documentId": { + "edit": {}, + "list": { + "label": "documentId", + "searchable": true, + "sortable": true + } } }, "layouts": { diff --git a/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##plugin##review-workflows.workflow-stage.json b/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##plugin##review-workflows.workflow-stage.json new file mode 100644 index 00000000..aa6fd997 --- /dev/null +++ b/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##plugin##review-workflows.workflow-stage.json @@ -0,0 +1,177 @@ +{ + "key": "plugin_content_manager_configuration_content_types::plugin::review-workflows.workflow-stage", + "value": { + "settings": { + "bulkable": true, + "filterable": true, + "searchable": true, + "pageSize": 10, + "mainField": "name", + "defaultSortBy": "name", + "defaultSortOrder": "ASC" + }, + "metadatas": { + "id": { + "edit": {}, + "list": { + "label": "id", + "searchable": true, + "sortable": true + } + }, + "name": { + "edit": { + "label": "name", + "description": "", + "placeholder": "", + "visible": true, + "editable": true + }, + "list": { + "label": "name", + "searchable": true, + "sortable": true + } + }, + "color": { + "edit": { + "label": "color", + "description": "", + "placeholder": "", + "visible": true, + "editable": true + }, + "list": { + "label": "color", + "searchable": true, + "sortable": true + } + }, + "workflow": { + "edit": { + "label": "workflow", + "description": "", + "placeholder": "", + "visible": true, + "editable": true, + "mainField": "name" + }, + "list": { + "label": "workflow", + "searchable": true, + "sortable": true + } + }, + "permissions": { + "edit": { + "label": "permissions", + "description": "", + "placeholder": "", + "visible": true, + "editable": true, + "mainField": "action" + }, + "list": { + "label": "permissions", + "searchable": false, + "sortable": false + } + }, + "createdAt": { + "edit": { + "label": "createdAt", + "description": "", + "placeholder": "", + "visible": false, + "editable": true + }, + "list": { + "label": "createdAt", + "searchable": true, + "sortable": true + } + }, + "updatedAt": { + "edit": { + "label": "updatedAt", + "description": "", + "placeholder": "", + "visible": false, + "editable": true + }, + "list": { + "label": "updatedAt", + "searchable": true, + "sortable": true + } + }, + "createdBy": { + "edit": { + "label": "createdBy", + "description": "", + "placeholder": "", + "visible": false, + "editable": true, + "mainField": "firstname" + }, + "list": { + "label": "createdBy", + "searchable": true, + "sortable": true + } + }, + "updatedBy": { + "edit": { + "label": "updatedBy", + "description": "", + "placeholder": "", + "visible": false, + "editable": true, + "mainField": "firstname" + }, + "list": { + "label": "updatedBy", + "searchable": true, + "sortable": true + } + }, + "documentId": { + "edit": {}, + "list": { + "label": "documentId", + "searchable": true, + "sortable": true + } + } + }, + "layouts": { + "list": ["id", "name", "color", "workflow"], + "edit": [ + [ + { + "name": "name", + "size": 6 + }, + { + "name": "color", + "size": 6 + } + ], + [ + { + "name": "workflow", + "size": 6 + }, + { + "name": "permissions", + "size": 6 + } + ] + ] + }, + "uid": "plugin::review-workflows.workflow-stage" + }, + "type": "object", + "environment": null, + "tag": null +} diff --git a/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##plugin##review-workflows.workflow.json b/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##plugin##review-workflows.workflow.json new file mode 100644 index 00000000..20c73407 --- /dev/null +++ b/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##plugin##review-workflows.workflow.json @@ -0,0 +1,179 @@ +{ + "key": "plugin_content_manager_configuration_content_types::plugin::review-workflows.workflow", + "value": { + "settings": { + "bulkable": true, + "filterable": true, + "searchable": true, + "pageSize": 10, + "mainField": "name", + "defaultSortBy": "name", + "defaultSortOrder": "ASC" + }, + "metadatas": { + "id": { + "edit": {}, + "list": { + "label": "id", + "searchable": true, + "sortable": true + } + }, + "name": { + "edit": { + "label": "name", + "description": "", + "placeholder": "", + "visible": true, + "editable": true + }, + "list": { + "label": "name", + "searchable": true, + "sortable": true + } + }, + "stages": { + "edit": { + "label": "stages", + "description": "", + "placeholder": "", + "visible": true, + "editable": true, + "mainField": "name" + }, + "list": { + "label": "stages", + "searchable": false, + "sortable": false + } + }, + "stageRequiredToPublish": { + "edit": { + "label": "stageRequiredToPublish", + "description": "", + "placeholder": "", + "visible": true, + "editable": true, + "mainField": "name" + }, + "list": { + "label": "stageRequiredToPublish", + "searchable": true, + "sortable": true + } + }, + "contentTypes": { + "edit": { + "label": "contentTypes", + "description": "", + "placeholder": "", + "visible": true, + "editable": true + }, + "list": { + "label": "contentTypes", + "searchable": false, + "sortable": false + } + }, + "createdAt": { + "edit": { + "label": "createdAt", + "description": "", + "placeholder": "", + "visible": false, + "editable": true + }, + "list": { + "label": "createdAt", + "searchable": true, + "sortable": true + } + }, + "updatedAt": { + "edit": { + "label": "updatedAt", + "description": "", + "placeholder": "", + "visible": false, + "editable": true + }, + "list": { + "label": "updatedAt", + "searchable": true, + "sortable": true + } + }, + "createdBy": { + "edit": { + "label": "createdBy", + "description": "", + "placeholder": "", + "visible": false, + "editable": true, + "mainField": "firstname" + }, + "list": { + "label": "createdBy", + "searchable": true, + "sortable": true + } + }, + "updatedBy": { + "edit": { + "label": "updatedBy", + "description": "", + "placeholder": "", + "visible": false, + "editable": true, + "mainField": "firstname" + }, + "list": { + "label": "updatedBy", + "searchable": true, + "sortable": true + } + }, + "documentId": { + "edit": {}, + "list": { + "label": "documentId", + "searchable": true, + "sortable": true + } + } + }, + "layouts": { + "list": ["id", "name", "stages", "stageRequiredToPublish"], + "edit": [ + [ + { + "name": "name", + "size": 6 + }, + { + "name": "stages", + "size": 6 + } + ], + [ + { + "name": "stageRequiredToPublish", + "size": 6 + } + ], + [ + { + "name": "contentTypes", + "size": 12 + } + ] + ] + }, + "uid": "plugin::review-workflows.workflow" + }, + "type": "object", + "environment": null, + "tag": null +} diff --git a/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##plugin##upload.file.json b/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##plugin##upload.file.json index 168c8f03..14fae4dc 100644 --- a/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##plugin##upload.file.json +++ b/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##plugin##upload.file.json @@ -302,6 +302,14 @@ "searchable": true, "sortable": true } + }, + "documentId": { + "edit": {}, + "list": { + "label": "documentId", + "searchable": true, + "sortable": true + } } }, "layouts": { diff --git a/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##plugin##upload.folder.json b/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##plugin##upload.folder.json index 7a0d1d83..9eac3f05 100644 --- a/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##plugin##upload.folder.json +++ b/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##plugin##upload.folder.json @@ -164,6 +164,14 @@ "searchable": true, "sortable": true } + }, + "documentId": { + "edit": {}, + "list": { + "label": "documentId", + "searchable": true, + "sortable": true + } } }, "layouts": { diff --git a/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##plugin##users-permissions.permission.json b/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##plugin##users-permissions.permission.json index abb849e9..4e63bdd7 100644 --- a/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##plugin##users-permissions.permission.json +++ b/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##plugin##users-permissions.permission.json @@ -106,6 +106,14 @@ "searchable": true, "sortable": true } + }, + "documentId": { + "edit": {}, + "list": { + "label": "documentId", + "searchable": true, + "sortable": true + } } }, "layouts": { diff --git a/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##plugin##users-permissions.role.json b/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##plugin##users-permissions.role.json index b06d50c9..fc5025e7 100644 --- a/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##plugin##users-permissions.role.json +++ b/server2/config/sync/core-store.plugin_content_manager_configuration_content_types##plugin##users-permissions.role.json @@ -149,6 +149,14 @@ "searchable": true, "sortable": true } + }, + "documentId": { + "edit": {}, + "list": { + "label": "documentId", + "searchable": true, + "sortable": true + } } }, "layouts": { diff --git a/server2/src/extensions/users-permissions/routes/user.ts b/server2/src/extensions/users-permissions/routes/user.ts deleted file mode 100644 index 3aab5cc4..00000000 --- a/server2/src/extensions/users-permissions/routes/user.ts +++ /dev/null @@ -1,69 +0,0 @@ -export default [ - { - method: "POST", - path: "/auth/magic-link", - handler: async (ctx) => { - const { token } = ctx.request.body; - - try { - const payload = await strapi.services[ - "plugin::users-permissions.user" - ].magicLink.verifyMagicToken(token); - const email = payload.email; - if (!email) throw new Error("No email in token"); - const existingUser = await strapi.db - .query("plugin::users-permissions.user") - .findOne({ - where: { email }, - }); - if (existingUser) { - const jwt = strapi - .plugin("users-permissions") - .service("jwt") - .issue({ id: existingUser.id }); - return { - jwt, - user: { - id: existingUser.id, - email: existingUser.email, - firstname: existingUser.firstname, - lang: existingUser.lang, - }, - }; - } - const user = await strapi - .plugin("users-permissions") - .service("user") - .add({ - email, - username: email, - provider: "local", - confirmed: true, - lang: payload.lang, - role: 1, // authenticated - }); - const jwt = strapi - .plugin("users-permissions") - .service("jwt") - .issue({ id: user.id }); - - return { - jwt, - user: { - id: user.id, - email: user.email, - firstname: user.firstname, - lang: user.lang, - }, - }; - } catch (error) { - strapi.log.warn(error); - return ctx.unauthorized("Invalid magic link token"); - } - }, - config: { - prefix: "", - auth: false, - }, - }, -]; diff --git a/server2/src/extensions/users-permissions/services/magic-link.ts b/server2/src/extensions/users-permissions/services/magic-link.ts deleted file mode 100644 index 7b1f4244..00000000 --- a/server2/src/extensions/users-permissions/services/magic-link.ts +++ /dev/null @@ -1,38 +0,0 @@ -import jwt from "jsonwebtoken"; - -const MAGICLINK_SECRET = process.env.MAGICLINK_SECRET; - -interface MagicTokenPayload { - email: string; - lang: string; -} - -export const generateMagicToken = async (email: string, lang: string) => { - const existingUser = await strapi.db - .query("plugin::users-permissions.user") - .findOne({ - where: { email }, - }); - - if (existingUser?.provider === "google") { - strapi.log.warn( - `User ${email} is linked to Google account. Can't login with magic link.` - ); - throw new Error("GoogleAccount"); - } - if (!MAGICLINK_SECRET) throw new Error("No MAGICLINK_SECRET provided"); - - return jwt.sign({ email, lang }, MAGICLINK_SECRET, { expiresIn: "20m" }); -}; - -export const verifyMagicToken = (token: string) => { - try { - const decoded = jwt.verify(token, MAGICLINK_SECRET) as MagicTokenPayload; - - return decoded; - } catch (error) { - const decoded = jwt.decode(token) as MagicTokenPayload; - - throw new Error("Invalid token"); - } -}; diff --git a/server2/src/extensions/users-permissions/strapi-server.ts b/server2/src/extensions/users-permissions/strapi-server.ts index bb58856b..0ee1dca6 100644 --- a/server2/src/extensions/users-permissions/strapi-server.ts +++ b/server2/src/extensions/users-permissions/strapi-server.ts @@ -1,53 +1,61 @@ import { pick } from "remeda"; -import * as magicLink from "./services/magic-link"; -import customRoutes from "./routes/user"; -const findRegistrationInfo = async (ctx) => { - const { registrationToken } = ctx.query; - if (!registrationToken) { - return ctx.badRequest("No registrationToken"); - } - let user = await strapi - .query("plugin::users-permissions.user") - .findOne({ where: { registrationToken } }); +module.exports = (plugin) => { + // Override auth controller + const originalAuhtControllerFactory = plugin.controllers.auth; + plugin.controllers.auth = ({ strapi }) => { + const controller = originalAuhtControllerFactory({ strapi }); - if (!user) { - return undefined; - } - return pick(user, ["id", "email", "ongName"]); -}; + controller.findRegistrationInfo = async (ctx) => { + const { registrationToken } = ctx.query; + if (!registrationToken) { + return ctx.badRequest("No registrationToken"); + } + let user = await strapi + .query("plugin::users-permissions.user") + .findOne({ where: { registrationToken } }); + + if (!user) { + return undefined; + } + return pick(user, ["id", "email", "ongName"]); + }; + + controller.registerWithConfirmation = async (ctx) => { + const { data } = ctx.request.body; + const id = data?.id; + if (!id) { + return ctx.badRequest("Missing user id"); + } + const user = await strapi.entityService.update( + "plugin::users-permissions.user", + id, + { + data: { password: data.password, registrationToken: null }, + } + ); + if (!user) { + return ctx.badRequest("Failed to register"); + } + return user; + }; + + return controller; + }; -const registerWithConfirmation = async (ctx) => { - const { data } = ctx.request.body; - const id = data?.id; - if (!id) { - return ctx.badRequest("Missing user id"); - } - const user = await strapi.entityService.update( - "plugin::users-permissions.user", - id, + // Add the new route for reset password + plugin.routes["content-api"].routes.push( + { + method: "GET", + path: "/registration-info", + handler: "auth.findRegistrationInfo", + }, { - data: { password: data.password, registrationToken: null }, + method: "POST", + path: "/register", + handler: "auth.registerWithConfirmation", } ); - if (!user) { - return ctx.badRequest("Failed to register"); - } - return user; -}; -export default (plugin) => { - plugin.controllers.auth.findRegistrationInfo = findRegistrationInfo; - plugin.controllers.auth.registerWithConfirmation = registerWithConfirmation; - - const userServices = plugin.services.user; - plugin.services.user = (params) => { - const services = userServices(params); - return { - ...services, - magicLink, - }; - }; - plugin.routes["content-api"].routes.push(...customRoutes); return plugin; }; From 5bf33df07762401d7637b36908b46ebb7f42f273 Mon Sep 17 00:00:00 2001 From: Ion Dormenco Date: Fri, 12 Sep 2025 15:13:42 +0300 Subject: [PATCH 25/61] Add client 2 with upgraded packages --- client/package.json | 1 + client/src/redux/api/userApi.ts | 5 +- client/yarn.lock | 5 + client2/.env.example | 2 + client2/.gitignore | 82 + client2/README.md | 0 client2/TODO.md | 1 + client2/global.d.ts | 27 + client2/index.html | 60 + client2/package.json | 65 + client2/pnpm-lock.yaml | 4851 + client2/postcss.config.js | 9 + client2/public/apple-touch-icon.png | Bin 0 -> 3481 bytes client2/public/favicon-96x96.png | Bin 0 -> 2319 bytes client2/public/favicon.ico | Bin 0 -> 15086 bytes client2/public/site.webmanifest | 21 + client2/public/web-app-manifest-192x192.png | Bin 0 -> 3761 bytes client2/public/web-app-manifest-512x512.png | Bin 0 -> 9974 bytes client2/src/assets/bad.svg | 3 + client2/src/assets/empty.svg | 3 + client2/src/assets/envelope.svg | 15 + client2/src/assets/good.svg | 3 + client2/src/assets/illustration.svg | 1 + client2/src/assets/logo-fdsc.jpg | Bin 0 -> 32822 bytes client2/src/assets/logo.png | Bin 0 -> 9118 bytes client2/src/assets/screenshot-end.jpg | Bin 0 -> 276336 bytes client2/src/assets/screenshot-start.jpg | Bin 0 -> 342196 bytes client2/src/assets/screenshot.jpg | Bin 0 -> 346088 bytes .../components/AddMentorInProgram/index.tsx | 97 + .../src/components/AddUserInProgram/index.tsx | 97 + .../src/components/AuthMiddleware/index.tsx | 36 + client2/src/components/Avatar/index.tsx | 37 + client2/src/components/Breadcrumbs/index.tsx | 40 + client2/src/components/Button/index.tsx | 50 + client2/src/components/Confirm/index.tsx | 115 + .../src/components/CreateEvaluation/index.tsx | 70 + .../src/components/DeleteEvaluation/index.tsx | 57 + client2/src/components/EmptyScreen/index.tsx | 22 + .../components/EvaluationFinished/index.tsx | 42 + .../components/EvaluationResults/index.jsx | 90 + client2/src/components/ExportXLSX/index.tsx | 42 + .../src/components/ExternalLinkItem/index.tsx | 51 + client2/src/components/Feed/index.tsx | 72 + client2/src/components/Footer/index.tsx | 139 + client2/src/components/Form/Password.tsx | 84 + client2/src/components/Form/Textarea.tsx | 35 + client2/src/components/Form/index.tsx | 4 + .../src/components/FullScreenLoader/index.tsx | 25 + client2/src/components/Heading/index.tsx | 20 + client2/src/components/Input/index.tsx | 52 + client2/src/components/LayoutApp/index.tsx | 16 + .../src/components/LayoutDashboard/index.tsx | 21 + .../src/components/LayoutEvaluation/index.tsx | 16 + .../src/components/LibraryBanner/index.tsx | 27 + client2/src/components/MadeBy/index.tsx | 39 + client2/src/components/Matrix/index.tsx | 77 + client2/src/components/MultiSelect/index.tsx | 124 + client2/src/components/Navbar/index.tsx | 240 + .../src/components/NavbarEvaluation/index.tsx | 29 + client2/src/components/Pagination/index.tsx | 32 + client2/src/components/ProgressBar/index.tsx | 54 + client2/src/components/RequireUser/index.tsx | 15 + .../components/ResultsByDimension/index.tsx | 45 + client2/src/components/ScrollToTop/index.tsx | 14 + client2/src/components/Section/index.tsx | 15 + client2/src/components/Select/index.tsx | 44 + .../components/SocialNetworkLinks/index.tsx | 41 + .../src/components/StartEvaluation/index.tsx | 92 + client2/src/components/Stats/index.tsx | 21 + client2/src/components/Table/index.tsx | 93 + .../src/components/TableEvaluations/index.tsx | 77 + .../src/components/TableRowReport/index.tsx | 47 + .../components/TableRowReportFDSC/index.tsx | 61 + client2/src/components/Toggle/index.tsx | 28 + client2/src/components/UserMenu/index.tsx | 92 + .../src/components/index/TableHeadReports.tsx | 41 + client2/src/index.tsx | 35 + client2/src/lib/filters.ts | 10 + client2/src/lib/formatDate.ts | 7 + client2/src/lib/orase-dupa-judet.json | 123881 +++++++++++++++ client2/src/lib/reports.js | 3 + client2/src/lib/score.ts | 127 + client2/src/lib/store.ts | 20 + client2/src/lib/userType.ts | 4 + client2/src/pages/Dashboard/index.tsx | 37 + .../src/pages/Evaluation/EvaluationStep.tsx | 65 + .../pages/Evaluation/ExpiredEvaluation.tsx | 11 + .../src/pages/Evaluation/RadioQuestion.tsx | 64 + client2/src/pages/Evaluation/index.tsx | 347 + client2/src/pages/Home/UsersTable.tsx | 373 + client2/src/pages/Home/index.tsx | 129 + client2/src/pages/Mentors/index.tsx | 69 + client2/src/pages/NewReport/index.tsx | 159 + client2/src/pages/Profile/index.tsx | 76 + client2/src/pages/ReportsList/index.tsx | 217 + client2/src/pages/UserReports/index.tsx | 263 + client2/src/pages/UsersList/index.tsx | 20 + .../src/pages/admin/CreateMentor/index.tsx | 287 + .../src/pages/admin/CreateProgram/index.tsx | 156 + client2/src/pages/admin/CreateUser/index.tsx | 452 + .../src/pages/admin/Program/ExportProgram.tsx | 125 + client2/src/pages/admin/Program/index.tsx | 203 + .../admin/ProgramsList/ProgramsTable.tsx | 146 + .../src/pages/admin/ProgramsList/index.tsx | 19 + .../src/pages/admin/Report/ReportDetails.tsx | 91 + .../src/pages/admin/Report/ReportResults.tsx | 22 + client2/src/pages/admin/Report/index.tsx | 61 + .../pages/authenticated/EditProfile/index.tsx | 489 + .../src/pages/authenticated/Matrix/index.tsx | 5 + .../src/pages/authenticated/Mentor/index.tsx | 30 + .../authenticated/MentorsList/MentorCard.tsx | 129 + .../pages/authenticated/MentorsList/index.tsx | 49 + .../authenticated/Report/ReportInProgress.tsx | 213 + .../authenticated/Report/ReportResults.tsx | 43 + .../src/pages/authenticated/Report/index.tsx | 69 + client2/src/pages/mentor/Activities/index.tsx | 42 + .../src/pages/mentor/EditProfile/index.tsx | 343 + client2/src/pages/mentor/Home/index.tsx | 6 + .../src/pages/mentor/NewActivity/index.tsx | 162 + client2/src/pages/mentor/Profile/index.tsx | 43 + .../src/pages/mentor/Report/ReportResults.tsx | 52 + client2/src/pages/mentor/Report/index.tsx | 64 + .../src/pages/public/ForgotPassword/index.tsx | 74 + client2/src/pages/public/Login/index.tsx | 158 + client2/src/pages/public/Register/index.tsx | 514 + .../src/pages/public/ResetPassword/index.tsx | 126 + .../src/pages/public/SetPassword/index.tsx | 146 + client2/src/redux/api/authApi.ts | 71 + client2/src/redux/api/types.ts | 182 + client2/src/redux/api/userApi.ts | 488 + client2/src/redux/features/userSlice.ts | 51 + client2/src/redux/store.tsx | 21 + client2/src/router/index.tsx | 100 + client2/src/styles/globals.css | 94 + client2/src/styles/tailwind.config.css | 61 + client2/tsconfig.json | 62 + client2/vite.config.ts | 66 + server2/README.md | 6 + server2/public/client.ts | 7541 + server2/public/swagger-spec.json | 16963 ++ 140 files changed, 163773 insertions(+), 1 deletion(-) create mode 100644 client2/.env.example create mode 100644 client2/.gitignore create mode 100644 client2/README.md create mode 100644 client2/TODO.md create mode 100644 client2/global.d.ts create mode 100644 client2/index.html create mode 100644 client2/package.json create mode 100644 client2/pnpm-lock.yaml create mode 100644 client2/postcss.config.js create mode 100644 client2/public/apple-touch-icon.png create mode 100644 client2/public/favicon-96x96.png create mode 100644 client2/public/favicon.ico create mode 100644 client2/public/site.webmanifest create mode 100644 client2/public/web-app-manifest-192x192.png create mode 100644 client2/public/web-app-manifest-512x512.png create mode 100644 client2/src/assets/bad.svg create mode 100644 client2/src/assets/empty.svg create mode 100644 client2/src/assets/envelope.svg create mode 100644 client2/src/assets/good.svg create mode 100644 client2/src/assets/illustration.svg create mode 100644 client2/src/assets/logo-fdsc.jpg create mode 100644 client2/src/assets/logo.png create mode 100644 client2/src/assets/screenshot-end.jpg create mode 100644 client2/src/assets/screenshot-start.jpg create mode 100644 client2/src/assets/screenshot.jpg create mode 100644 client2/src/components/AddMentorInProgram/index.tsx create mode 100644 client2/src/components/AddUserInProgram/index.tsx create mode 100644 client2/src/components/AuthMiddleware/index.tsx create mode 100644 client2/src/components/Avatar/index.tsx create mode 100644 client2/src/components/Breadcrumbs/index.tsx create mode 100644 client2/src/components/Button/index.tsx create mode 100644 client2/src/components/Confirm/index.tsx create mode 100644 client2/src/components/CreateEvaluation/index.tsx create mode 100644 client2/src/components/DeleteEvaluation/index.tsx create mode 100644 client2/src/components/EmptyScreen/index.tsx create mode 100644 client2/src/components/EvaluationFinished/index.tsx create mode 100644 client2/src/components/EvaluationResults/index.jsx create mode 100644 client2/src/components/ExportXLSX/index.tsx create mode 100644 client2/src/components/ExternalLinkItem/index.tsx create mode 100644 client2/src/components/Feed/index.tsx create mode 100644 client2/src/components/Footer/index.tsx create mode 100644 client2/src/components/Form/Password.tsx create mode 100644 client2/src/components/Form/Textarea.tsx create mode 100644 client2/src/components/Form/index.tsx create mode 100644 client2/src/components/FullScreenLoader/index.tsx create mode 100644 client2/src/components/Heading/index.tsx create mode 100644 client2/src/components/Input/index.tsx create mode 100644 client2/src/components/LayoutApp/index.tsx create mode 100644 client2/src/components/LayoutDashboard/index.tsx create mode 100644 client2/src/components/LayoutEvaluation/index.tsx create mode 100644 client2/src/components/LibraryBanner/index.tsx create mode 100644 client2/src/components/MadeBy/index.tsx create mode 100644 client2/src/components/Matrix/index.tsx create mode 100644 client2/src/components/MultiSelect/index.tsx create mode 100644 client2/src/components/Navbar/index.tsx create mode 100644 client2/src/components/NavbarEvaluation/index.tsx create mode 100644 client2/src/components/Pagination/index.tsx create mode 100644 client2/src/components/ProgressBar/index.tsx create mode 100644 client2/src/components/RequireUser/index.tsx create mode 100644 client2/src/components/ResultsByDimension/index.tsx create mode 100644 client2/src/components/ScrollToTop/index.tsx create mode 100644 client2/src/components/Section/index.tsx create mode 100644 client2/src/components/Select/index.tsx create mode 100644 client2/src/components/SocialNetworkLinks/index.tsx create mode 100644 client2/src/components/StartEvaluation/index.tsx create mode 100644 client2/src/components/Stats/index.tsx create mode 100644 client2/src/components/Table/index.tsx create mode 100644 client2/src/components/TableEvaluations/index.tsx create mode 100644 client2/src/components/TableRowReport/index.tsx create mode 100644 client2/src/components/TableRowReportFDSC/index.tsx create mode 100644 client2/src/components/Toggle/index.tsx create mode 100644 client2/src/components/UserMenu/index.tsx create mode 100644 client2/src/components/index/TableHeadReports.tsx create mode 100644 client2/src/index.tsx create mode 100644 client2/src/lib/filters.ts create mode 100644 client2/src/lib/formatDate.ts create mode 100644 client2/src/lib/orase-dupa-judet.json create mode 100644 client2/src/lib/reports.js create mode 100644 client2/src/lib/score.ts create mode 100644 client2/src/lib/store.ts create mode 100644 client2/src/lib/userType.ts create mode 100644 client2/src/pages/Dashboard/index.tsx create mode 100644 client2/src/pages/Evaluation/EvaluationStep.tsx create mode 100644 client2/src/pages/Evaluation/ExpiredEvaluation.tsx create mode 100644 client2/src/pages/Evaluation/RadioQuestion.tsx create mode 100644 client2/src/pages/Evaluation/index.tsx create mode 100644 client2/src/pages/Home/UsersTable.tsx create mode 100644 client2/src/pages/Home/index.tsx create mode 100644 client2/src/pages/Mentors/index.tsx create mode 100644 client2/src/pages/NewReport/index.tsx create mode 100644 client2/src/pages/Profile/index.tsx create mode 100644 client2/src/pages/ReportsList/index.tsx create mode 100644 client2/src/pages/UserReports/index.tsx create mode 100644 client2/src/pages/UsersList/index.tsx create mode 100644 client2/src/pages/admin/CreateMentor/index.tsx create mode 100644 client2/src/pages/admin/CreateProgram/index.tsx create mode 100644 client2/src/pages/admin/CreateUser/index.tsx create mode 100644 client2/src/pages/admin/Program/ExportProgram.tsx create mode 100644 client2/src/pages/admin/Program/index.tsx create mode 100644 client2/src/pages/admin/ProgramsList/ProgramsTable.tsx create mode 100644 client2/src/pages/admin/ProgramsList/index.tsx create mode 100644 client2/src/pages/admin/Report/ReportDetails.tsx create mode 100644 client2/src/pages/admin/Report/ReportResults.tsx create mode 100644 client2/src/pages/admin/Report/index.tsx create mode 100644 client2/src/pages/authenticated/EditProfile/index.tsx create mode 100644 client2/src/pages/authenticated/Matrix/index.tsx create mode 100644 client2/src/pages/authenticated/Mentor/index.tsx create mode 100644 client2/src/pages/authenticated/MentorsList/MentorCard.tsx create mode 100644 client2/src/pages/authenticated/MentorsList/index.tsx create mode 100644 client2/src/pages/authenticated/Report/ReportInProgress.tsx create mode 100644 client2/src/pages/authenticated/Report/ReportResults.tsx create mode 100644 client2/src/pages/authenticated/Report/index.tsx create mode 100644 client2/src/pages/mentor/Activities/index.tsx create mode 100644 client2/src/pages/mentor/EditProfile/index.tsx create mode 100644 client2/src/pages/mentor/Home/index.tsx create mode 100644 client2/src/pages/mentor/NewActivity/index.tsx create mode 100644 client2/src/pages/mentor/Profile/index.tsx create mode 100644 client2/src/pages/mentor/Report/ReportResults.tsx create mode 100644 client2/src/pages/mentor/Report/index.tsx create mode 100644 client2/src/pages/public/ForgotPassword/index.tsx create mode 100644 client2/src/pages/public/Login/index.tsx create mode 100644 client2/src/pages/public/Register/index.tsx create mode 100644 client2/src/pages/public/ResetPassword/index.tsx create mode 100644 client2/src/pages/public/SetPassword/index.tsx create mode 100644 client2/src/redux/api/authApi.ts create mode 100644 client2/src/redux/api/types.ts create mode 100644 client2/src/redux/api/userApi.ts create mode 100644 client2/src/redux/features/userSlice.ts create mode 100644 client2/src/redux/store.tsx create mode 100644 client2/src/router/index.tsx create mode 100644 client2/src/styles/globals.css create mode 100644 client2/src/styles/tailwind.config.css create mode 100644 client2/tsconfig.json create mode 100644 client2/vite.config.ts create mode 100644 server2/public/client.ts create mode 100644 server2/public/swagger-spec.json diff --git a/client/package.json b/client/package.json index 7d66443d..92521121 100644 --- a/client/package.json +++ b/client/package.json @@ -37,6 +37,7 @@ "@types/node": "^20.8.7", "@types/react": "^18.0.27", "@types/react-dom": "^18.0.10", + "@types/qs": "^6.14.0", "@vitejs/plugin-react-swc": "^3.0.0", "autoprefixer": "^10.4.13", "dotenv": "^16.3.1", diff --git a/client/src/redux/api/userApi.ts b/client/src/redux/api/userApi.ts index e5d8f975..df271733 100644 --- a/client/src/redux/api/userApi.ts +++ b/client/src/redux/api/userApi.ts @@ -90,7 +90,10 @@ export const userApi = createApi({ transformResponse: (result: User) => ({ ...result, reports: result.reports?.sort((a: Report, b: Report) => { - return new Date(b?.createdAt) - new Date(a?.createdAt); + return ( + new Date(b?.createdAt ?? 0).getTime() - + new Date(a?.createdAt ?? 0).getTime() + ); }), }), providesTags: ["Report"], diff --git a/client/yarn.lock b/client/yarn.lock index b9b6bd48..2bcacbe1 100644 --- a/client/yarn.lock +++ b/client/yarn.lock @@ -282,6 +282,11 @@ resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.5.tgz#5f19d2b85a98e9558036f6a3cacc8819420f05cf" integrity sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w== +"@types/qs@^6.14.0": + version "6.14.0" + resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.14.0.tgz#d8b60cecf62f2db0fb68e5e006077b9178b85de5" + integrity sha512-eOunJqu0K1923aExK6y8p6fsihYEn/BYuQ4g0CxAAgFc4b/ZLN4CrsRZ55srTdqoiLzU2B2evC+apEIxprEzkQ== + "@types/react-dom@^18.0.10": version "18.0.11" resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-18.0.11.tgz#321351c1459bc9ca3d216aefc8a167beec334e33" diff --git a/client2/.env.example b/client2/.env.example new file mode 100644 index 00000000..66bbe725 --- /dev/null +++ b/client2/.env.example @@ -0,0 +1,2 @@ +VITE_SERVER_ENDPOINT=http://127.0.0.1:1337 +NODE_ENV=development diff --git a/client2/.gitignore b/client2/.gitignore new file mode 100644 index 00000000..22590e9d --- /dev/null +++ b/client2/.gitignore @@ -0,0 +1,82 @@ +# Include your project-specific ignores in this file +# Read about how to use .gitignore: https://help.github.com/articles/ignoring-files + +# Compiled output +**/dist/ +**/*.tsbuildinfo + +# Bun package manager +# https://bun.sh/docs/install/lockfile +node_modules/ + +# Logs +*.log + +# Cache +/.cache +/*/.swc/ +.eslintcache + +# Testing +/coverage +*.lcov + +# Environment variables +.env + +# Visual Studio Code +# https://github.com/github/gitignore/blob/master/Global/VisualStudioCode.gitignore +.vscode/* +!.vscode/extensions.json +!.vscode/launch.json +!.vscode/mcp.json +!.vscode/settings.json +!.vscode/tasks.json + +# WebStorm +.idea + +# Wrangler CLI +# https://developers.cloudflare.com/workers/wrangler/ +.wrangler/ + +# Terraform +# https://github.com/github/gitignore/blob/main/Terraform.gitignore +*.tfstate +*.tfstate.* +.terraform/ +.terraform.lock.hcl +*.tfvars +*.tfvars.json +override.tf +override.tf.json +*_override.tf +*_override.tf.json +.terraformrc +terraform.rc + +# Astro +.astro/ + +# TanStack Router +# Generated route tree files should not be committed +*/lib/routeTree.gen.ts +*/.tanstack/ + +# VitePress +docs/.vitepress/cache +docs/.vitepress/dist + +# React Email +# Generated preview build and runtime files +.react-email/ + +# Local development files +*.local.md +*.local.json +*.local.jsonc + +# macOS +# https://github.com/github/gitignore/blob/master/Global/macOS.gitignore +.DS_Store + diff --git a/client2/README.md b/client2/README.md new file mode 100644 index 00000000..e69de29b diff --git a/client2/TODO.md b/client2/TODO.md new file mode 100644 index 00000000..39c9c656 --- /dev/null +++ b/client2/TODO.md @@ -0,0 +1 @@ +- change react-circle-chart diff --git a/client2/global.d.ts b/client2/global.d.ts new file mode 100644 index 00000000..1c45c806 --- /dev/null +++ b/client2/global.d.ts @@ -0,0 +1,27 @@ +/* SPDX-FileCopyrightText: 2014-present Kriasoft */ +/* SPDX-License-Identifier: MIT */ + +import * as React from "react"; +import "vite/client"; + +interface Window { + dataLayer: unknown[]; +} + +interface ImportMetaEnv { + readonly VITE_SERVER_ENDPOINT: string; + readonly NODE_ENV: string; +} + +declare module "relay-runtime" { + interface PayloadError { + errors?: Record; + } +} + +declare module "*.css"; + +declare module "*.svg" { + const content: React.FC>; + export default content; +} diff --git a/client2/index.html b/client2/index.html new file mode 100644 index 00000000..f6813c9a --- /dev/null +++ b/client2/index.html @@ -0,0 +1,60 @@ + + + + + + + Evaluare ONG | Creștem.ONG + + + + + + + + +
+
+ + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/client2/package.json b/client2/package.json new file mode 100644 index 00000000..c981b57e --- /dev/null +++ b/client2/package.json @@ -0,0 +1,65 @@ +{ + "name": "crestem-ong", + "version": "0.0.0", + "private": true, + "type": "module", + "scripts": { + "dev": "vite serve", + "build": "vite build", + "preview": "vite preview", + "test": "vitest", + "coverage": "vitest --coverage", + "typecheck": "tsc --noEmit" + }, + "dependencies": { + "@headlessui/react": "^2.2.7", + "@heroicons/react": "^2.2.0", + "@hookform/error-message": "^2.0.1", + "@hookform/resolvers": "^5.2.1", + "@reduxjs/toolkit": "^2.9.0", + "@types/qs": "^6.14.0", + "better-auth": "^1.3.9", + "class-variance-authority": "^0.7.1", + "clsx": "^2.1.1", + "jotai": "^2.14.0", + "jotai-effect": "^2.1.1", + "js-cookie": "^3.0.5", + "localforage": "^1.10.0", + "lucide-react": "^0.543.0", + "qs": "^6.14.0", + "react": "^19.1.1", + "react-circle-chart": "^1.0.4", + "react-dom": "^19.1.1", + "react-error-boundary": "^6.0.0", + "react-export-table-to-excel": "^1.0.6", + "react-hook-form": "^7.62.0", + "react-range-slider-input": "^3.2.1", + "react-redux": "^9.2.0", + "react-router-dom": "^7.8.2", + "react-toastify": "^11.0.5", + "tailwind-merge": "^3.3.1", + "xlsx": "^0.18.5", + "zod": "^4.1.8" + }, + "devDependencies": { + "@tailwindcss/postcss": "^4.1.13", + "@types/js-cookie": "^3.0.6", + "@types/node": "^24.3.1", + "@types/react": "^19.1.12", + "@types/react-dom": "^19.1.9", + "@vitejs/plugin-react": "^5.0.2", + "@vitejs/plugin-react-swc": "^4.0.1", + "autoprefixer": "^10.4.21", + "envars": "^1.1.1", + "execa": "^9.6.0", + "globby": "^14.1.0", + "happy-dom": "^18.0.1", + "postcss": "^8.5.6", + "tailwindcss": "^4.1.13", + "tw-animate-css": "^1.3.8", + "typescript": "~5.9.2", + "vite": "~7.1.5", + "vite-tsconfig-paths": "^5.1.4", + "vitest": "~3.2.4" + } +} diff --git a/client2/pnpm-lock.yaml b/client2/pnpm-lock.yaml new file mode 100644 index 00000000..e93484e8 --- /dev/null +++ b/client2/pnpm-lock.yaml @@ -0,0 +1,4851 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: + dependencies: + '@headlessui/react': + specifier: ^2.2.7 + version: 2.2.7(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@heroicons/react': + specifier: ^2.2.0 + version: 2.2.0(react@19.1.1) + '@hookform/error-message': + specifier: ^2.0.1 + version: 2.0.1(react-dom@19.1.1(react@19.1.1))(react-hook-form@7.62.0(react@19.1.1))(react@19.1.1) + '@hookform/resolvers': + specifier: ^5.2.1 + version: 5.2.1(react-hook-form@7.62.0(react@19.1.1)) + '@reduxjs/toolkit': + specifier: ^2.9.0 + version: 2.9.0(react-redux@9.2.0(@types/react@19.1.12)(react@19.1.1)(redux@5.0.1))(react@19.1.1) + '@types/qs': + specifier: ^6.14.0 + version: 6.14.0 + better-auth: + specifier: ^1.3.9 + version: 1.3.9(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + class-variance-authority: + specifier: ^0.7.1 + version: 0.7.1 + clsx: + specifier: ^2.1.1 + version: 2.1.1 + jotai: + specifier: ^2.14.0 + version: 2.14.0(@babel/core@7.28.4)(@babel/template@7.27.2)(@types/react@19.1.12)(react@19.1.1) + jotai-effect: + specifier: ^2.1.1 + version: 2.1.1(jotai@2.14.0(@babel/core@7.28.4)(@babel/template@7.27.2)(@types/react@19.1.12)(react@19.1.1)) + js-cookie: + specifier: ^3.0.5 + version: 3.0.5 + localforage: + specifier: ^1.10.0 + version: 1.10.0 + lucide-react: + specifier: ^0.543.0 + version: 0.543.0(react@19.1.1) + qs: + specifier: ^6.14.0 + version: 6.14.0 + react: + specifier: ^19.1.1 + version: 19.1.1 + react-circle-chart: + specifier: ^1.0.4 + version: 1.0.4(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + react-dom: + specifier: ^19.1.1 + version: 19.1.1(react@19.1.1) + react-error-boundary: + specifier: ^6.0.0 + version: 6.0.0(react@19.1.1) + react-export-table-to-excel: + specifier: ^1.0.6 + version: 1.0.6 + react-hook-form: + specifier: ^7.62.0 + version: 7.62.0(react@19.1.1) + react-range-slider-input: + specifier: ^3.2.1 + version: 3.2.1 + react-redux: + specifier: ^9.2.0 + version: 9.2.0(@types/react@19.1.12)(react@19.1.1)(redux@5.0.1) + react-router-dom: + specifier: ^7.8.2 + version: 7.8.2(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + react-toastify: + specifier: ^11.0.5 + version: 11.0.5(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + tailwind-merge: + specifier: ^3.3.1 + version: 3.3.1 + xlsx: + specifier: ^0.18.5 + version: 0.18.5 + zod: + specifier: ^4.1.8 + version: 4.1.8 + devDependencies: + '@tailwindcss/postcss': + specifier: ^4.1.13 + version: 4.1.13 + '@types/js-cookie': + specifier: ^3.0.6 + version: 3.0.6 + '@types/node': + specifier: ^24.3.1 + version: 24.3.1 + '@types/react': + specifier: ^19.1.12 + version: 19.1.12 + '@types/react-dom': + specifier: ^19.1.9 + version: 19.1.9(@types/react@19.1.12) + '@vitejs/plugin-react': + specifier: ^5.0.2 + version: 5.0.2(vite@7.1.5(@types/node@24.3.1)(jiti@2.5.1)(lightningcss@1.30.1)(tsx@4.20.5)) + '@vitejs/plugin-react-swc': + specifier: ^4.0.1 + version: 4.0.1(@swc/helpers@0.5.17)(vite@7.1.5(@types/node@24.3.1)(jiti@2.5.1)(lightningcss@1.30.1)(tsx@4.20.5)) + autoprefixer: + specifier: ^10.4.21 + version: 10.4.21(postcss@8.5.6) + envars: + specifier: ^1.1.1 + version: 1.1.1 + execa: + specifier: ^9.6.0 + version: 9.6.0 + globby: + specifier: ^14.1.0 + version: 14.1.0 + happy-dom: + specifier: ^18.0.1 + version: 18.0.1 + postcss: + specifier: ^8.5.6 + version: 8.5.6 + tailwindcss: + specifier: ^4.1.13 + version: 4.1.13 + tw-animate-css: + specifier: ^1.3.8 + version: 1.3.8 + typescript: + specifier: ~5.9.2 + version: 5.9.2 + vite: + specifier: ~7.1.5 + version: 7.1.5(@types/node@24.3.1)(jiti@2.5.1)(lightningcss@1.30.1)(tsx@4.20.5) + vite-tsconfig-paths: + specifier: ^5.1.4 + version: 5.1.4(typescript@5.9.2)(vite@7.1.5(@types/node@24.3.1)(jiti@2.5.1)(lightningcss@1.30.1)(tsx@4.20.5)) + vitest: + specifier: ~3.2.4 + version: 3.2.4(@types/node@24.3.1)(happy-dom@18.0.1)(jiti@2.5.1)(lightningcss@1.30.1)(tsx@4.20.5) + +packages: + + '@alloc/quick-lru@5.2.0': + resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==} + engines: {node: '>=10'} + + '@babel/code-frame@7.27.1': + resolution: {integrity: sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==} + engines: {node: '>=6.9.0'} + + '@babel/compat-data@7.28.4': + resolution: {integrity: sha512-YsmSKC29MJwf0gF8Rjjrg5LQCmyh+j/nD8/eP7f+BeoQTKYqs9RoWbjGOdy0+1Ekr68RJZMUOPVQaQisnIo4Rw==} + engines: {node: '>=6.9.0'} + + '@babel/core@7.28.4': + resolution: {integrity: sha512-2BCOP7TN8M+gVDj7/ht3hsaO/B/n5oDbiAyyvnRlNOs+u1o+JWNYTQrmpuNp1/Wq2gcFrI01JAW+paEKDMx/CA==} + engines: {node: '>=6.9.0'} + + '@babel/generator@7.28.3': + resolution: {integrity: sha512-3lSpxGgvnmZznmBkCRnVREPUFJv2wrv9iAoFDvADJc0ypmdOxdUtcLeBgBJ6zE0PMeTKnxeQzyk0xTBq4Ep7zw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-compilation-targets@7.27.2': + resolution: {integrity: sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==} + engines: {node: '>=6.9.0'} + + '@babel/helper-globals@7.28.0': + resolution: {integrity: sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-module-imports@7.27.1': + resolution: {integrity: sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==} + engines: {node: '>=6.9.0'} + + '@babel/helper-module-transforms@7.28.3': + resolution: {integrity: sha512-gytXUbs8k2sXS9PnQptz5o0QnpLL51SwASIORY6XaBKF88nsOT0Zw9szLqlSGQDP/4TljBAD5y98p2U1fqkdsw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-plugin-utils@7.27.1': + resolution: {integrity: sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-string-parser@7.27.1': + resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-identifier@7.27.1': + resolution: {integrity: sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-option@7.27.1': + resolution: {integrity: sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==} + engines: {node: '>=6.9.0'} + + '@babel/helpers@7.28.4': + resolution: {integrity: sha512-HFN59MmQXGHVyYadKLVumYsA9dBFun/ldYxipEjzA4196jpLZd8UjEEBLkbEkvfYreDqJhZxYAWFPtrfhNpj4w==} + engines: {node: '>=6.9.0'} + + '@babel/parser@7.28.4': + resolution: {integrity: sha512-yZbBqeM6TkpP9du/I2pUZnJsRMGGvOuIrhjzC1AwHwW+6he4mni6Bp/m8ijn0iOuZuPI2BfkCoSRunpyjnrQKg==} + engines: {node: '>=6.0.0'} + hasBin: true + + '@babel/plugin-transform-react-jsx-self@7.27.1': + resolution: {integrity: sha512-6UzkCs+ejGdZ5mFFC/OCUrv028ab2fp1znZmCZjAOBKiBK2jXD1O+BPSfX8X2qjJ75fZBMSnQn3Rq2mrBJK2mw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-react-jsx-source@7.27.1': + resolution: {integrity: sha512-zbwoTsBruTeKB9hSq73ha66iFeJHuaFkUbwvqElnygoNbj/jHRsSeokowZFN3CZ64IvEqcmmkVe89OPXc7ldAw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/runtime@7.28.4': + resolution: {integrity: sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ==} + engines: {node: '>=6.9.0'} + + '@babel/template@7.27.2': + resolution: {integrity: sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==} + engines: {node: '>=6.9.0'} + + '@babel/traverse@7.28.4': + resolution: {integrity: sha512-YEzuboP2qvQavAcjgQNVgsvHIDv6ZpwXvcvjmyySP2DIMuByS/6ioU5G9pYrWHM6T2YDfc7xga9iNzYOs12CFQ==} + engines: {node: '>=6.9.0'} + + '@babel/types@7.28.4': + resolution: {integrity: sha512-bkFqkLhh3pMBUQQkpVgWDWq/lqzc2678eUyDlTBhRqhCHFguYYGM0Efga7tYk4TogG/3x0EEl66/OQ+WGbWB/Q==} + engines: {node: '>=6.9.0'} + + '@better-auth/utils@0.2.6': + resolution: {integrity: sha512-3y/vaL5Ox33dBwgJ6ub3OPkVqr6B5xL2kgxNHG8eHZuryLyG/4JSPGqjbdRSgjuy9kALUZYDFl+ORIAxlWMSuA==} + + '@better-fetch/fetch@1.1.18': + resolution: {integrity: sha512-rEFOE1MYIsBmoMJtQbl32PGHHXuG2hDxvEd7rUHE0vCBoFQVSDqaVs9hkZEtHCxRoY+CljXKFCOuJ8uxqw1LcA==} + + '@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/aix-ppc64@0.24.2': + resolution: {integrity: sha512-thpVCb/rhxE/BnMLQ7GReQLLN8q9qbHmI55F4489/ByVg2aQaQ6kbcLb6FHkocZzQhxc4gx0sCk0tJkKBFzDhA==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [aix] + + '@esbuild/aix-ppc64@0.25.9': + resolution: {integrity: sha512-OaGtL73Jck6pBKjNIe24BnFE6agGl+6KxDtTfHhy1HmhthfKouEcOhqpSL64K4/0WCtbKFLOdzD/44cJ4k9opA==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [aix] + + '@esbuild/android-arm64@0.23.1': + resolution: {integrity: sha512-xw50ipykXcLstLeWH7WRdQuysJqejuAGPd30vd1i5zSyKK3WE+ijzHmLKxdiCMtH1pHz78rOg0BKSYOSB/2Khw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [android] + + '@esbuild/android-arm64@0.24.2': + resolution: {integrity: sha512-cNLgeqCqV8WxfcTIOeL4OAtSmL8JjcN6m09XIgro1Wi7cF4t/THaWEa7eL5CMoMBdjoHOTh/vwTO/o2TRXIyzg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [android] + + '@esbuild/android-arm64@0.25.9': + resolution: {integrity: sha512-IDrddSmpSv51ftWslJMvl3Q2ZT98fUSL2/rlUXuVqRXHCs5EUF1/f+jbjF5+NG9UffUDMCiTyh8iec7u8RlTLg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [android] + + '@esbuild/android-arm@0.23.1': + resolution: {integrity: sha512-uz6/tEy2IFm9RYOyvKl88zdzZfwEfKZmnX9Cj1BHjeSGNuGLuMD1kR8y5bteYmwqKm1tj8m4cb/aKEorr6fHWQ==} + engines: {node: '>=18'} + cpu: [arm] + os: [android] + + '@esbuild/android-arm@0.24.2': + resolution: {integrity: sha512-tmwl4hJkCfNHwFB3nBa8z1Uy3ypZpxqxfTQOcHX+xRByyYgunVbZ9MzUUfb0RxaHIMnbHagwAxuTL+tnNM+1/Q==} + engines: {node: '>=18'} + cpu: [arm] + os: [android] + + '@esbuild/android-arm@0.25.9': + resolution: {integrity: sha512-5WNI1DaMtxQ7t7B6xa572XMXpHAaI/9Hnhk8lcxF4zVN4xstUgTlvuGDorBguKEnZO70qwEcLpfifMLoxiPqHQ==} + engines: {node: '>=18'} + cpu: [arm] + os: [android] + + '@esbuild/android-x64@0.23.1': + resolution: {integrity: sha512-nlN9B69St9BwUoB+jkyU090bru8L0NA3yFvAd7k8dNsVH8bi9a8cUAUSEcEEgTp2z3dbEDGJGfP6VUnkQnlReg==} + engines: {node: '>=18'} + cpu: [x64] + os: [android] + + '@esbuild/android-x64@0.24.2': + resolution: {integrity: sha512-B6Q0YQDqMx9D7rvIcsXfmJfvUYLoP722bgfBlO5cGvNVb5V/+Y7nhBE3mHV9OpxBf4eAS2S68KZztiPaWq4XYw==} + engines: {node: '>=18'} + cpu: [x64] + os: [android] + + '@esbuild/android-x64@0.25.9': + resolution: {integrity: sha512-I853iMZ1hWZdNllhVZKm34f4wErd4lMyeV7BLzEExGEIZYsOzqDWDf+y082izYUE8gtJnYHdeDpN/6tUdwvfiw==} + engines: {node: '>=18'} + cpu: [x64] + os: [android] + + '@esbuild/darwin-arm64@0.23.1': + resolution: {integrity: sha512-YsS2e3Wtgnw7Wq53XXBLcV6JhRsEq8hkfg91ESVadIrzr9wO6jJDMZnCQbHm1Guc5t/CdDiFSSfWP58FNuvT3Q==} + engines: {node: '>=18'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-arm64@0.24.2': + resolution: {integrity: sha512-kj3AnYWc+CekmZnS5IPu9D+HWtUI49hbnyqk0FLEJDbzCIQt7hg7ucF1SQAilhtYpIujfaHr6O0UHlzzSPdOeA==} + engines: {node: '>=18'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-arm64@0.25.9': + resolution: {integrity: sha512-XIpIDMAjOELi/9PB30vEbVMs3GV1v2zkkPnuyRRURbhqjyzIINwj+nbQATh4H9GxUgH1kFsEyQMxwiLFKUS6Rg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-x64@0.23.1': + resolution: {integrity: sha512-aClqdgTDVPSEGgoCS8QDG37Gu8yc9lTHNAQlsztQ6ENetKEO//b8y31MMu2ZaPbn4kVsIABzVLXYLhCGekGDqw==} + engines: {node: '>=18'} + cpu: [x64] + os: [darwin] + + '@esbuild/darwin-x64@0.24.2': + resolution: {integrity: sha512-WeSrmwwHaPkNR5H3yYfowhZcbriGqooyu3zI/3GGpF8AyUdsrrP0X6KumITGA9WOyiJavnGZUwPGvxvwfWPHIA==} + engines: {node: '>=18'} + cpu: [x64] + os: [darwin] + + '@esbuild/darwin-x64@0.25.9': + resolution: {integrity: sha512-jhHfBzjYTA1IQu8VyrjCX4ApJDnH+ez+IYVEoJHeqJm9VhG9Dh2BYaJritkYK3vMaXrf7Ogr/0MQ8/MeIefsPQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [darwin] + + '@esbuild/freebsd-arm64@0.23.1': + resolution: {integrity: sha512-h1k6yS8/pN/NHlMl5+v4XPfikhJulk4G+tKGFIOwURBSFzE8bixw1ebjluLOjfwtLqY0kewfjLSrO6tN2MgIhA==} + engines: {node: '>=18'} + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-arm64@0.24.2': + resolution: {integrity: sha512-UN8HXjtJ0k/Mj6a9+5u6+2eZ2ERD7Edt1Q9IZiB5UZAIdPnVKDoG7mdTVGhHJIeEml60JteamR3qhsr1r8gXvg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-arm64@0.25.9': + resolution: {integrity: sha512-z93DmbnY6fX9+KdD4Ue/H6sYs+bhFQJNCPZsi4XWJoYblUqT06MQUdBCpcSfuiN72AbqeBFu5LVQTjfXDE2A6Q==} + engines: {node: '>=18'} + cpu: [arm64] + 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/freebsd-x64@0.24.2': + resolution: {integrity: sha512-TvW7wE/89PYW+IevEJXZ5sF6gJRDY/14hyIGFXdIucxCsbRmLUcjseQu1SyTko+2idmCw94TgyaEZi9HUSOe3Q==} + engines: {node: '>=18'} + cpu: [x64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.25.9': + resolution: {integrity: sha512-mrKX6H/vOyo5v71YfXWJxLVxgy1kyt1MQaD8wZJgJfG4gq4DpQGpgTB74e5yBeQdyMTbgxp0YtNj7NuHN0PoZg==} + engines: {node: '>=18'} + cpu: [x64] + os: [freebsd] + + '@esbuild/linux-arm64@0.23.1': + resolution: {integrity: sha512-/93bf2yxencYDnItMYV/v116zff6UyTjo4EtEQjUBeGiVpMmffDNUyD9UN2zV+V3LRV3/on4xdZ26NKzn6754g==} + engines: {node: '>=18'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm64@0.24.2': + resolution: {integrity: sha512-7HnAD6074BW43YvvUmE/35Id9/NB7BeX5EoNkK9obndmZBUk8xmJJeU7DwmUeN7tkysslb2eSl6CTrYz6oEMQg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm64@0.25.9': + resolution: {integrity: sha512-BlB7bIcLT3G26urh5Dmse7fiLmLXnRlopw4s8DalgZ8ef79Jj4aUcYbk90g8iCa2467HX8SAIidbL7gsqXHdRw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm@0.23.1': + resolution: {integrity: sha512-CXXkzgn+dXAPs3WBwE+Kvnrf4WECwBdfjfeYHpMeVxWE0EceB6vhWGShs6wi0IYEqMSIzdOF1XjQ/Mkm5d7ZdQ==} + engines: {node: '>=18'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-arm@0.24.2': + resolution: {integrity: sha512-n0WRM/gWIdU29J57hJyUdIsk0WarGd6To0s+Y+LwvlC55wt+GT/OgkwoXCXvIue1i1sSNWblHEig00GBWiJgfA==} + engines: {node: '>=18'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-arm@0.25.9': + resolution: {integrity: sha512-HBU2Xv78SMgaydBmdor38lg8YDnFKSARg1Q6AT0/y2ezUAKiZvc211RDFHlEZRFNRVhcMamiToo7bDx3VEOYQw==} + engines: {node: '>=18'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-ia32@0.23.1': + resolution: {integrity: sha512-VTN4EuOHwXEkXzX5nTvVY4s7E/Krz7COC8xkftbbKRYAl96vPiUssGkeMELQMOnLOJ8k3BY1+ZY52tttZnHcXQ==} + engines: {node: '>=18'} + cpu: [ia32] + os: [linux] + + '@esbuild/linux-ia32@0.24.2': + resolution: {integrity: sha512-sfv0tGPQhcZOgTKO3oBE9xpHuUqguHvSo4jl+wjnKwFpapx+vUDcawbwPNuBIAYdRAvIDBfZVvXprIj3HA+Ugw==} + engines: {node: '>=18'} + cpu: [ia32] + os: [linux] + + '@esbuild/linux-ia32@0.25.9': + resolution: {integrity: sha512-e7S3MOJPZGp2QW6AK6+Ly81rC7oOSerQ+P8L0ta4FhVi+/j/v2yZzx5CqqDaWjtPFfYz21Vi1S0auHrap3Ma3A==} + engines: {node: '>=18'} + cpu: [ia32] + 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-loong64@0.24.2': + resolution: {integrity: sha512-CN9AZr8kEndGooS35ntToZLTQLHEjtVB5n7dl8ZcTZMonJ7CCfStrYhrzF97eAecqVbVJ7APOEe18RPI4KLhwQ==} + engines: {node: '>=18'} + cpu: [loong64] + os: [linux] + + '@esbuild/linux-loong64@0.25.9': + resolution: {integrity: sha512-Sbe10Bnn0oUAB2AalYztvGcK+o6YFFA/9829PhOCUS9vkJElXGdphz0A3DbMdP8gmKkqPmPcMJmJOrI3VYB1JQ==} + engines: {node: '>=18'} + cpu: [loong64] + 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-mips64el@0.24.2': + resolution: {integrity: sha512-iMkk7qr/wl3exJATwkISxI7kTcmHKE+BlymIAbHO8xanq/TjHaaVThFF6ipWzPHryoFsesNQJPE/3wFJw4+huw==} + engines: {node: '>=18'} + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-mips64el@0.25.9': + resolution: {integrity: sha512-YcM5br0mVyZw2jcQeLIkhWtKPeVfAerES5PvOzaDxVtIyZ2NUBZKNLjC5z3/fUlDgT6w89VsxP2qzNipOaaDyA==} + engines: {node: '>=18'} + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-ppc64@0.23.1': + resolution: {integrity: sha512-dKN8fgVqd0vUIjxuJI6P/9SSSe/mB9rvA98CSH2sJnlZ/OCZWO1DJvxj8jvKTfYUdGfcq2dDxoKaC6bHuTlgcw==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-ppc64@0.24.2': + resolution: {integrity: sha512-shsVrgCZ57Vr2L8mm39kO5PPIb+843FStGt7sGGoqiiWYconSxwTiuswC1VJZLCjNiMLAMh34jg4VSEQb+iEbw==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-ppc64@0.25.9': + resolution: {integrity: sha512-++0HQvasdo20JytyDpFvQtNrEsAgNG2CY1CLMwGXfFTKGBGQT3bOeLSYE2l1fYdvML5KUuwn9Z8L1EWe2tzs1w==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-riscv64@0.23.1': + resolution: {integrity: sha512-5AV4Pzp80fhHL83JM6LoA6pTQVWgB1HovMBsLQ9OZWLDqVY8MVobBXNSmAJi//Csh6tcY7e7Lny2Hg1tElMjIA==} + engines: {node: '>=18'} + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-riscv64@0.24.2': + resolution: {integrity: sha512-4eSFWnU9Hhd68fW16GD0TINewo1L6dRrB+oLNNbYyMUAeOD2yCK5KXGK1GH4qD/kT+bTEXjsyTCiJGHPZ3eM9Q==} + engines: {node: '>=18'} + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-riscv64@0.25.9': + resolution: {integrity: sha512-uNIBa279Y3fkjV+2cUjx36xkx7eSjb8IvnL01eXUKXez/CBHNRw5ekCGMPM0BcmqBxBcdgUWuUXmVWwm4CH9kg==} + engines: {node: '>=18'} + cpu: [riscv64] + 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-s390x@0.24.2': + resolution: {integrity: sha512-S0Bh0A53b0YHL2XEXC20bHLuGMOhFDO6GN4b3YjRLK//Ep3ql3erpNcPlEFed93hsQAjAQDNsvcK+hV90FubSw==} + engines: {node: '>=18'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-s390x@0.25.9': + resolution: {integrity: sha512-Mfiphvp3MjC/lctb+7D287Xw1DGzqJPb/J2aHHcHxflUo+8tmN/6d4k6I2yFR7BVo5/g7x2Monq4+Yew0EHRIA==} + engines: {node: '>=18'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-x64@0.23.1': + resolution: {integrity: sha512-EV6+ovTsEXCPAp58g2dD68LxoP/wK5pRvgy0J/HxPGB009omFPv3Yet0HiaqvrIrgPTBuC6wCH1LTOY91EO5hQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [linux] + + '@esbuild/linux-x64@0.24.2': + resolution: {integrity: sha512-8Qi4nQcCTbLnK9WoMjdC9NiTG6/E38RNICU6sUNqK0QFxCYgoARqVqxdFmWkdonVsvGqWhmm7MO0jyTqLqwj0Q==} + engines: {node: '>=18'} + cpu: [x64] + os: [linux] + + '@esbuild/linux-x64@0.25.9': + resolution: {integrity: sha512-iSwByxzRe48YVkmpbgoxVzn76BXjlYFXC7NvLYq+b+kDjyyk30J0JY47DIn8z1MO3K0oSl9fZoRmZPQI4Hklzg==} + engines: {node: '>=18'} + cpu: [x64] + os: [linux] + + '@esbuild/netbsd-arm64@0.24.2': + resolution: {integrity: sha512-wuLK/VztRRpMt9zyHSazyCVdCXlpHkKm34WUyinD2lzK07FAHTq0KQvZZlXikNWkDGoT6x3TD51jKQ7gMVpopw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [netbsd] + + '@esbuild/netbsd-arm64@0.25.9': + resolution: {integrity: sha512-9jNJl6FqaUG+COdQMjSCGW4QiMHH88xWbvZ+kRVblZsWrkXlABuGdFJ1E9L7HK+T0Yqd4akKNa/lO0+jDxQD4Q==} + engines: {node: '>=18'} + cpu: [arm64] + os: [netbsd] + + '@esbuild/netbsd-x64@0.23.1': + resolution: {integrity: sha512-aevEkCNu7KlPRpYLjwmdcuNz6bDFiE7Z8XC4CPqExjTvrHugh28QzUXVOZtiYghciKUacNktqxdpymplil1beA==} + engines: {node: '>=18'} + cpu: [x64] + os: [netbsd] + + '@esbuild/netbsd-x64@0.24.2': + resolution: {integrity: sha512-VefFaQUc4FMmJuAxmIHgUmfNiLXY438XrL4GDNV1Y1H/RW3qow68xTwjZKfj/+Plp9NANmzbH5R40Meudu8mmw==} + engines: {node: '>=18'} + cpu: [x64] + os: [netbsd] + + '@esbuild/netbsd-x64@0.25.9': + resolution: {integrity: sha512-RLLdkflmqRG8KanPGOU7Rpg829ZHu8nFy5Pqdi9U01VYtG9Y0zOG6Vr2z4/S+/3zIyOxiK6cCeYNWOFR9QP87g==} + 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-arm64@0.24.2': + resolution: {integrity: sha512-YQbi46SBct6iKnszhSvdluqDmxCJA+Pu280Av9WICNwQmMxV7nLRHZfjQzwbPs3jeWnuAhE9Jy0NrnJ12Oz+0A==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openbsd] + + '@esbuild/openbsd-arm64@0.25.9': + resolution: {integrity: sha512-YaFBlPGeDasft5IIM+CQAhJAqS3St3nJzDEgsgFixcfZeyGPCd6eJBWzke5piZuZ7CtL656eOSYKk4Ls2C0FRQ==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openbsd] + + '@esbuild/openbsd-x64@0.23.1': + resolution: {integrity: sha512-aY2gMmKmPhxfU+0EdnN+XNtGbjfQgwZj43k8G3fyrDM/UdZww6xrWxmDkuz2eCZchqVeABjV5BpildOrUbBTqA==} + engines: {node: '>=18'} + cpu: [x64] + os: [openbsd] + + '@esbuild/openbsd-x64@0.24.2': + resolution: {integrity: sha512-+iDS6zpNM6EnJyWv0bMGLWSWeXGN/HTaF/LXHXHwejGsVi+ooqDfMCCTerNFxEkM3wYVcExkeGXNqshc9iMaOA==} + engines: {node: '>=18'} + cpu: [x64] + os: [openbsd] + + '@esbuild/openbsd-x64@0.25.9': + resolution: {integrity: sha512-1MkgTCuvMGWuqVtAvkpkXFmtL8XhWy+j4jaSO2wxfJtilVCi0ZE37b8uOdMItIHz4I6z1bWWtEX4CJwcKYLcuA==} + engines: {node: '>=18'} + cpu: [x64] + os: [openbsd] + + '@esbuild/openharmony-arm64@0.25.9': + resolution: {integrity: sha512-4Xd0xNiMVXKh6Fa7HEJQbrpP3m3DDn43jKxMjxLLRjWnRsfxjORYJlXPO4JNcXtOyfajXorRKY9NkOpTHptErg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openharmony] + + '@esbuild/sunos-x64@0.23.1': + resolution: {integrity: sha512-RBRT2gqEl0IKQABT4XTj78tpk9v7ehp+mazn2HbUeZl1YMdaGAQqhapjGTCe7uw7y0frDi4gS0uHzhvpFuI1sA==} + engines: {node: '>=18'} + cpu: [x64] + os: [sunos] + + '@esbuild/sunos-x64@0.24.2': + resolution: {integrity: sha512-hTdsW27jcktEvpwNHJU4ZwWFGkz2zRJUz8pvddmXPtXDzVKTTINmlmga3ZzwcuMpUvLw7JkLy9QLKyGpD2Yxig==} + engines: {node: '>=18'} + cpu: [x64] + os: [sunos] + + '@esbuild/sunos-x64@0.25.9': + resolution: {integrity: sha512-WjH4s6hzo00nNezhp3wFIAfmGZ8U7KtrJNlFMRKxiI9mxEK1scOMAaa9i4crUtu+tBr+0IN6JCuAcSBJZfnphw==} + engines: {node: '>=18'} + cpu: [x64] + os: [sunos] + + '@esbuild/win32-arm64@0.23.1': + resolution: {integrity: sha512-4O+gPR5rEBe2FpKOVyiJ7wNDPA8nGzDuJ6gN4okSA1gEOYZ67N8JPk58tkWtdtPeLz7lBnY6I5L3jdsr3S+A6A==} + engines: {node: '>=18'} + cpu: [arm64] + os: [win32] + + '@esbuild/win32-arm64@0.24.2': + resolution: {integrity: sha512-LihEQ2BBKVFLOC9ZItT9iFprsE9tqjDjnbulhHoFxYQtQfai7qfluVODIYxt1PgdoyQkz23+01rzwNwYfutxUQ==} + engines: {node: '>=18'} + cpu: [arm64] + os: [win32] + + '@esbuild/win32-arm64@0.25.9': + resolution: {integrity: sha512-mGFrVJHmZiRqmP8xFOc6b84/7xa5y5YvR1x8djzXpJBSv/UsNK6aqec+6JDjConTgvvQefdGhFDAs2DLAds6gQ==} + engines: {node: '>=18'} + cpu: [arm64] + os: [win32] + + '@esbuild/win32-ia32@0.23.1': + resolution: {integrity: sha512-BcaL0Vn6QwCwre3Y717nVHZbAa4UBEigzFm6VdsVdT/MbZ38xoj1X9HPkZhbmaBGUD1W8vxAfffbDe8bA6AKnQ==} + engines: {node: '>=18'} + cpu: [ia32] + os: [win32] + + '@esbuild/win32-ia32@0.24.2': + resolution: {integrity: sha512-q+iGUwfs8tncmFC9pcnD5IvRHAzmbwQ3GPS5/ceCyHdjXubwQWI12MKWSNSMYLJMq23/IUCvJMS76PDqXe1fxA==} + engines: {node: '>=18'} + cpu: [ia32] + os: [win32] + + '@esbuild/win32-ia32@0.25.9': + resolution: {integrity: sha512-b33gLVU2k11nVx1OhX3C8QQP6UHQK4ZtN56oFWvVXvz2VkDoe6fbG8TOgHFxEvqeqohmRnIHe5A1+HADk4OQww==} + engines: {node: '>=18'} + cpu: [ia32] + os: [win32] + + '@esbuild/win32-x64@0.23.1': + resolution: {integrity: sha512-BHpFFeslkWrXWyUPnbKm+xYYVYruCinGcftSBaa8zoF9hZO4BcSCFUvHVTtzpIY6YzUnYtuEhZ+C9iEXjxnasg==} + engines: {node: '>=18'} + cpu: [x64] + os: [win32] + + '@esbuild/win32-x64@0.24.2': + resolution: {integrity: sha512-7VTgWzgMGvup6aSqDPLiW5zHaxYJGTO4OokMjIlrCtf+VpEL+cXKtCvg723iguPYI5oaUNdS+/V7OU2gvXVWEg==} + engines: {node: '>=18'} + cpu: [x64] + os: [win32] + + '@esbuild/win32-x64@0.25.9': + resolution: {integrity: sha512-PPOl1mi6lpLNQxnGoyAfschAodRFYXJ+9fs6WHXz7CSWKbOqiMZsubC+BQsVKuul+3vKLuwTHsS2c2y9EoKwxQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [win32] + + '@floating-ui/core@1.7.3': + resolution: {integrity: sha512-sGnvb5dmrJaKEZ+LDIpguvdX3bDlEllmv4/ClQ9awcmCZrlx5jQyyMWFM5kBI+EyNOCDDiKk8il0zeuX3Zlg/w==} + + '@floating-ui/dom@1.7.4': + resolution: {integrity: sha512-OOchDgh4F2CchOX94cRVqhvy7b3AFb+/rQXyswmzmGakRfkMgoWVjfnLWkRirfLEfuD4ysVW16eXzwt3jHIzKA==} + + '@floating-ui/react-dom@2.1.6': + resolution: {integrity: sha512-4JX6rEatQEvlmgU80wZyq9RT96HZJa88q8hp0pBd+LrczeDI4o6uA2M+uvxngVHo4Ihr8uibXxH6+70zhAFrVw==} + peerDependencies: + react: '>=16.8.0' + react-dom: '>=16.8.0' + + '@floating-ui/react@0.26.28': + resolution: {integrity: sha512-yORQuuAtVpiRjpMhdc0wJj06b9JFjrYF4qp96j++v2NBpbi6SEGF7donUJ3TMieerQ6qVkAv1tgr7L4r5roTqw==} + peerDependencies: + react: '>=16.8.0' + react-dom: '>=16.8.0' + + '@floating-ui/utils@0.2.10': + resolution: {integrity: sha512-aGTxbpbg8/b5JfU1HXSrbH3wXZuLPJcNEcZQFMxLs3oSzgtVu6nFPkbbGGUvBcUjKV2YyB9Wxxabo+HEH9tcRQ==} + + '@google-cloud/secret-manager@5.6.0': + resolution: {integrity: sha512-0daW/OXQEVc6VQKPyJTQNyD+563I/TYQ7GCQJx4dq3lB666R9FUPvqHx9b/o/qQtZ5pfuoCbGZl3krpxgTSW8Q==} + engines: {node: '>=14.0.0'} + + '@grpc/grpc-js@1.13.4': + resolution: {integrity: sha512-GsFaMXCkMqkKIvwCQjCrwH+GHbPKBjhwo/8ZuUkWHqbI73Kky9I+pQltrlT0+MWpedCoosda53lgjYfyEPgxBg==} + engines: {node: '>=12.10.0'} + + '@grpc/proto-loader@0.7.15': + resolution: {integrity: sha512-tMXdRCfYVixjuFK+Hk0Q1s38gV9zDiDJfWL3h1rv4Qc39oILCu1TRTDt7+fGUI8K4G1Fj125Hx/ru3azECWTyQ==} + engines: {node: '>=6'} + hasBin: true + + '@headlessui/react@2.2.7': + resolution: {integrity: sha512-WKdTymY8Y49H8/gUc/lIyYK1M+/6dq0Iywh4zTZVAaiTDprRfioxSgD0wnXTQTBpjpGJuTL1NO/mqEvc//5SSg==} + engines: {node: '>=10'} + peerDependencies: + react: ^18 || ^19 || ^19.0.0-rc + react-dom: ^18 || ^19 || ^19.0.0-rc + + '@heroicons/react@2.2.0': + resolution: {integrity: sha512-LMcepvRaS9LYHJGsF0zzmgKCUim/X3N/DQKc4jepAXJ7l8QxJ1PmxJzqplF2Z3FE4PqBAIGyJAQ/w4B5dsqbtQ==} + peerDependencies: + react: '>= 16 || ^19.0.0-rc' + + '@hexagon/base64@1.1.28': + resolution: {integrity: sha512-lhqDEAvWixy3bZ+UOYbPwUbBkwBq5C1LAJ/xPC8Oi+lL54oyakv/npbA0aU2hgCsx/1NUd4IBvV03+aUBWxerw==} + + '@hookform/error-message@2.0.1': + resolution: {integrity: sha512-U410sAr92xgxT1idlu9WWOVjndxLdgPUHEB8Schr27C9eh7/xUnITWpCMF93s+lGiG++D4JnbSnrb5A21AdSNg==} + peerDependencies: + react: '>=16.8.0' + react-dom: '>=16.8.0' + react-hook-form: ^7.0.0 + + '@hookform/resolvers@5.2.1': + resolution: {integrity: sha512-u0+6X58gkjMcxur1wRWokA7XsiiBJ6aK17aPZxhkoYiK5J+HcTx0Vhu9ovXe6H+dVpO6cjrn2FkJTryXEMlryQ==} + peerDependencies: + react-hook-form: ^7.55.0 + + '@isaacs/fs-minipass@4.0.1': + resolution: {integrity: sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==} + engines: {node: '>=18.0.0'} + + '@jridgewell/gen-mapping@0.3.13': + resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==} + + '@jridgewell/remapping@2.3.5': + resolution: {integrity: sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==} + + '@jridgewell/resolve-uri@3.1.2': + resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} + engines: {node: '>=6.0.0'} + + '@jridgewell/sourcemap-codec@1.5.5': + resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==} + + '@jridgewell/trace-mapping@0.3.31': + resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==} + + '@js-sdsl/ordered-map@4.4.2': + resolution: {integrity: sha512-iUKgm52T8HOE/makSxjqoWhe95ZJA1/G1sYsGev2JDKUSS14KAgg1LHb+Ba+IPow0xflbnSkOsZcO08C7w1gYw==} + + '@levischuck/tiny-cbor@0.2.11': + resolution: {integrity: sha512-llBRm4dT4Z89aRsm6u2oEZ8tfwL/2l6BwpZ7JcyieouniDECM5AqNgr/y08zalEIvW3RSK4upYyybDcmjXqAow==} + + '@noble/ciphers@2.0.0': + resolution: {integrity: sha512-j/l6jpnpaIBM87cAYPJzi/6TgqmBv9spkqPyCXvRYsu5uxqh6tPJZDnD85yo8VWqzTuTQPgfv7NgT63u7kbwAQ==} + engines: {node: '>= 20.19.0'} + + '@noble/hashes@2.0.0': + resolution: {integrity: sha512-h8VUBlE8R42+XIDO229cgisD287im3kdY6nbNZJFjc6ZvKIXPYXe6Vc/t+kyjFdMFyt5JpapzTsEg8n63w5/lw==} + engines: {node: '>= 20.19.0'} + + '@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'} + + '@peculiar/asn1-android@2.5.0': + resolution: {integrity: sha512-t8A83hgghWQkcneRsgGs2ebAlRe54ns88p7ouv8PW2tzF1nAW4yHcL4uZKrFpIU+uszIRzTkcCuie37gpkId0A==} + + '@peculiar/asn1-ecc@2.5.0': + resolution: {integrity: sha512-t4eYGNhXtLRxaP50h3sfO6aJebUCDGQACoeexcelL4roMFRRVgB20yBIu2LxsPh/tdW9I282gNgMOyg3ywg/mg==} + + '@peculiar/asn1-rsa@2.5.0': + resolution: {integrity: sha512-qMZ/vweiTHy9syrkkqWFvbT3eLoedvamcUdnnvwyyUNv5FgFXA3KP8td+ATibnlZ0EANW5PYRm8E6MJzEB/72Q==} + + '@peculiar/asn1-schema@2.5.0': + resolution: {integrity: sha512-YM/nFfskFJSlHqv59ed6dZlLZqtZQwjRVJ4bBAiWV08Oc+1rSd5lDZcBEx0lGDHfSoH3UziI2pXt2UM33KerPQ==} + + '@peculiar/asn1-x509@2.5.0': + resolution: {integrity: sha512-CpwtMCTJvfvYTFMuiME5IH+8qmDe3yEWzKHe7OOADbGfq7ohxeLaXwQo0q4du3qs0AII3UbLCvb9NF/6q0oTKQ==} + + '@protobufjs/aspromise@1.1.2': + resolution: {integrity: sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==} + + '@protobufjs/base64@1.1.2': + resolution: {integrity: sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==} + + '@protobufjs/codegen@2.0.4': + resolution: {integrity: sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==} + + '@protobufjs/eventemitter@1.1.0': + resolution: {integrity: sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==} + + '@protobufjs/fetch@1.1.0': + resolution: {integrity: sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==} + + '@protobufjs/float@1.0.2': + resolution: {integrity: sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==} + + '@protobufjs/inquire@1.1.0': + resolution: {integrity: sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==} + + '@protobufjs/path@1.1.2': + resolution: {integrity: sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==} + + '@protobufjs/pool@1.1.0': + resolution: {integrity: sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==} + + '@protobufjs/utf8@1.1.0': + resolution: {integrity: sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==} + + '@react-aria/focus@3.21.1': + resolution: {integrity: sha512-hmH1IhHlcQ2lSIxmki1biWzMbGgnhdxJUM0MFfzc71Rv6YAzhlx4kX3GYn4VNcjCeb6cdPv4RZ5vunV4kgMZYQ==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + + '@react-aria/interactions@3.25.5': + resolution: {integrity: sha512-EweYHOEvMwef/wsiEqV73KurX/OqnmbzKQa2fLxdULbec5+yDj6wVGaRHIzM4NiijIDe+bldEl5DG05CAKOAHA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + + '@react-aria/ssr@3.9.10': + resolution: {integrity: sha512-hvTm77Pf+pMBhuBm760Li0BVIO38jv1IBws1xFm1NoL26PU+fe+FMW5+VZWyANR6nYL65joaJKZqOdTQMkO9IQ==} + engines: {node: '>= 12'} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + + '@react-aria/utils@3.30.1': + resolution: {integrity: sha512-zETcbDd6Vf9GbLndO6RiWJadIZsBU2MMm23rBACXLmpRztkrIqPEb2RVdlLaq1+GklDx0Ii6PfveVjx+8S5U6A==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + + '@react-stately/flags@3.1.2': + resolution: {integrity: sha512-2HjFcZx1MyQXoPqcBGALwWWmgFVUk2TuKVIQxCbRq7fPyWXIl6VHcakCLurdtYC2Iks7zizvz0Idv48MQ38DWg==} + + '@react-stately/utils@3.10.8': + resolution: {integrity: sha512-SN3/h7SzRsusVQjQ4v10LaVsDc81jyyR0DD5HnsQitm/I5WDpaSr2nRHtyloPFU48jlql1XX/S04T2DLQM7Y3g==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + + '@react-types/shared@3.32.0': + resolution: {integrity: sha512-t+cligIJsZYFMSPFMvsJMjzlzde06tZMOIOFa1OV5Z0BcMowrb2g4mB57j/9nP28iJIRYn10xCniQts+qadrqQ==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + + '@reduxjs/toolkit@2.9.0': + resolution: {integrity: sha512-fSfQlSRu9Z5yBkvsNhYF2rPS8cGXn/TZVrlwN1948QyZ8xMZ0JvP50S2acZNaf+o63u6aEeMjipFyksjIcWrog==} + peerDependencies: + react: ^16.9.0 || ^17.0.0 || ^18 || ^19 + react-redux: ^7.2.1 || ^8.1.3 || ^9.0.0 + peerDependenciesMeta: + react: + optional: true + react-redux: + optional: true + + '@rolldown/pluginutils@1.0.0-beta.32': + resolution: {integrity: sha512-QReCdvxiUZAPkvp1xpAg62IeNzykOFA6syH2CnClif4YmALN1XKpB39XneL80008UbtMShthSVDKmrx05N1q/g==} + + '@rolldown/pluginutils@1.0.0-beta.34': + resolution: {integrity: sha512-LyAREkZHP5pMom7c24meKmJCdhf2hEyvam2q0unr3or9ydwDL+DJ8chTF6Av/RFPb3rH8UFBdMzO5MxTZW97oA==} + + '@rollup/rollup-android-arm-eabi@4.50.1': + resolution: {integrity: sha512-HJXwzoZN4eYTdD8bVV22DN8gsPCAj3V20NHKOs8ezfXanGpmVPR7kalUHd+Y31IJp9stdB87VKPFbsGY3H/2ag==} + cpu: [arm] + os: [android] + + '@rollup/rollup-android-arm64@4.50.1': + resolution: {integrity: sha512-PZlsJVcjHfcH53mOImyt3bc97Ep3FJDXRpk9sMdGX0qgLmY0EIWxCag6EigerGhLVuL8lDVYNnSo8qnTElO4xw==} + cpu: [arm64] + os: [android] + + '@rollup/rollup-darwin-arm64@4.50.1': + resolution: {integrity: sha512-xc6i2AuWh++oGi4ylOFPmzJOEeAa2lJeGUGb4MudOtgfyyjr4UPNK+eEWTPLvmPJIY/pgw6ssFIox23SyrkkJw==} + cpu: [arm64] + os: [darwin] + + '@rollup/rollup-darwin-x64@4.50.1': + resolution: {integrity: sha512-2ofU89lEpDYhdLAbRdeyz/kX3Y2lpYc6ShRnDjY35bZhd2ipuDMDi6ZTQ9NIag94K28nFMofdnKeHR7BT0CATw==} + cpu: [x64] + os: [darwin] + + '@rollup/rollup-freebsd-arm64@4.50.1': + resolution: {integrity: sha512-wOsE6H2u6PxsHY/BeFHA4VGQN3KUJFZp7QJBmDYI983fgxq5Th8FDkVuERb2l9vDMs1D5XhOrhBrnqcEY6l8ZA==} + cpu: [arm64] + os: [freebsd] + + '@rollup/rollup-freebsd-x64@4.50.1': + resolution: {integrity: sha512-A/xeqaHTlKbQggxCqispFAcNjycpUEHP52mwMQZUNqDUJFFYtPHCXS1VAG29uMlDzIVr+i00tSFWFLivMcoIBQ==} + cpu: [x64] + os: [freebsd] + + '@rollup/rollup-linux-arm-gnueabihf@4.50.1': + resolution: {integrity: sha512-54v4okehwl5TaSIkpp97rAHGp7t3ghinRd/vyC1iXqXMfjYUTm7TfYmCzXDoHUPTTf36L8pr0E7YsD3CfB3ZDg==} + cpu: [arm] + os: [linux] + + '@rollup/rollup-linux-arm-musleabihf@4.50.1': + resolution: {integrity: sha512-p/LaFyajPN/0PUHjv8TNyxLiA7RwmDoVY3flXHPSzqrGcIp/c2FjwPPP5++u87DGHtw+5kSH5bCJz0mvXngYxw==} + cpu: [arm] + os: [linux] + + '@rollup/rollup-linux-arm64-gnu@4.50.1': + resolution: {integrity: sha512-2AbMhFFkTo6Ptna1zO7kAXXDLi7H9fGTbVaIq2AAYO7yzcAsuTNWPHhb2aTA6GPiP+JXh85Y8CiS54iZoj4opw==} + cpu: [arm64] + os: [linux] + + '@rollup/rollup-linux-arm64-musl@4.50.1': + resolution: {integrity: sha512-Cgef+5aZwuvesQNw9eX7g19FfKX5/pQRIyhoXLCiBOrWopjo7ycfB292TX9MDcDijiuIJlx1IzJz3IoCPfqs9w==} + cpu: [arm64] + os: [linux] + + '@rollup/rollup-linux-loongarch64-gnu@4.50.1': + resolution: {integrity: sha512-RPhTwWMzpYYrHrJAS7CmpdtHNKtt2Ueo+BlLBjfZEhYBhK00OsEqM08/7f+eohiF6poe0YRDDd8nAvwtE/Y62Q==} + cpu: [loong64] + os: [linux] + + '@rollup/rollup-linux-ppc64-gnu@4.50.1': + resolution: {integrity: sha512-eSGMVQw9iekut62O7eBdbiccRguuDgiPMsw++BVUg+1K7WjZXHOg/YOT9SWMzPZA+w98G+Fa1VqJgHZOHHnY0Q==} + cpu: [ppc64] + os: [linux] + + '@rollup/rollup-linux-riscv64-gnu@4.50.1': + resolution: {integrity: sha512-S208ojx8a4ciIPrLgazF6AgdcNJzQE4+S9rsmOmDJkusvctii+ZvEuIC4v/xFqzbuP8yDjn73oBlNDgF6YGSXQ==} + cpu: [riscv64] + os: [linux] + + '@rollup/rollup-linux-riscv64-musl@4.50.1': + resolution: {integrity: sha512-3Ag8Ls1ggqkGUvSZWYcdgFwriy2lWo+0QlYgEFra/5JGtAd6C5Hw59oojx1DeqcA2Wds2ayRgvJ4qxVTzCHgzg==} + cpu: [riscv64] + os: [linux] + + '@rollup/rollup-linux-s390x-gnu@4.50.1': + resolution: {integrity: sha512-t9YrKfaxCYe7l7ldFERE1BRg/4TATxIg+YieHQ966jwvo7ddHJxPj9cNFWLAzhkVsbBvNA4qTbPVNsZKBO4NSg==} + cpu: [s390x] + os: [linux] + + '@rollup/rollup-linux-x64-gnu@4.50.1': + resolution: {integrity: sha512-MCgtFB2+SVNuQmmjHf+wfI4CMxy3Tk8XjA5Z//A0AKD7QXUYFMQcns91K6dEHBvZPCnhJSyDWLApk40Iq/H3tA==} + cpu: [x64] + os: [linux] + + '@rollup/rollup-linux-x64-musl@4.50.1': + resolution: {integrity: sha512-nEvqG+0jeRmqaUMuwzlfMKwcIVffy/9KGbAGyoa26iu6eSngAYQ512bMXuqqPrlTyfqdlB9FVINs93j534UJrg==} + cpu: [x64] + os: [linux] + + '@rollup/rollup-openharmony-arm64@4.50.1': + resolution: {integrity: sha512-RDsLm+phmT3MJd9SNxA9MNuEAO/J2fhW8GXk62G/B4G7sLVumNFbRwDL6v5NrESb48k+QMqdGbHgEtfU0LCpbA==} + cpu: [arm64] + os: [openharmony] + + '@rollup/rollup-win32-arm64-msvc@4.50.1': + resolution: {integrity: sha512-hpZB/TImk2FlAFAIsoElM3tLzq57uxnGYwplg6WDyAxbYczSi8O2eQ+H2Lx74504rwKtZ3N2g4bCUkiamzS6TQ==} + cpu: [arm64] + os: [win32] + + '@rollup/rollup-win32-ia32-msvc@4.50.1': + resolution: {integrity: sha512-SXjv8JlbzKM0fTJidX4eVsH+Wmnp0/WcD8gJxIZyR6Gay5Qcsmdbi9zVtnbkGPG8v2vMR1AD06lGWy5FLMcG7A==} + cpu: [ia32] + os: [win32] + + '@rollup/rollup-win32-x64-msvc@4.50.1': + resolution: {integrity: sha512-StxAO/8ts62KZVRAm4JZYq9+NqNsV7RvimNK+YM7ry//zebEH6meuugqW/P5OFUCjyQgui+9fUxT6d5NShvMvA==} + cpu: [x64] + os: [win32] + + '@sec-ant/readable-stream@0.4.1': + resolution: {integrity: sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==} + + '@simplewebauthn/browser@13.1.2': + resolution: {integrity: sha512-aZnW0KawAM83fSBUgglP5WofbrLbLyr7CoPqYr66Eppm7zO86YX6rrCjRB3hQKPrL7ATvY4FVXlykZ6w6FwYYw==} + + '@simplewebauthn/server@13.1.2': + resolution: {integrity: sha512-VwoDfvLXSCaRiD+xCIuyslU0HLxVggeE5BL06+GbsP2l1fGf5op8e0c3ZtKoi+vSg1q4ikjtAghC23ze2Q3H9g==} + engines: {node: '>=20.0.0'} + + '@sindresorhus/merge-streams@2.3.0': + resolution: {integrity: sha512-LtoMMhxAlorcGhmFYI+LhPgbPZCkgP6ra1YL604EeF6U98pLlQ3iWIGMdWSC+vWmPBWBNgmDBAhnAobLROJmwg==} + engines: {node: '>=18'} + + '@sindresorhus/merge-streams@4.0.0': + resolution: {integrity: sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==} + engines: {node: '>=18'} + + '@standard-schema/spec@1.0.0': + resolution: {integrity: sha512-m2bOd0f2RT9k8QJx1JN85cZYyH1RqFBdlwtkSlf4tBDYLCiiZnv1fIIwacK6cqwXavOydf0NPToMQgpKq+dVlA==} + + '@standard-schema/utils@0.3.0': + resolution: {integrity: sha512-e7Mew686owMaPJVNNLs55PUvgz371nKgwsc4vxE49zsODpJEnxgxRo2y/OKrqueavXgZNMDVj3DdHFlaSAeU8g==} + + '@swc/core-darwin-arm64@1.13.5': + resolution: {integrity: sha512-lKNv7SujeXvKn16gvQqUQI5DdyY8v7xcoO3k06/FJbHJS90zEwZdQiMNRiqpYw/orU543tPaWgz7cIYWhbopiQ==} + engines: {node: '>=10'} + cpu: [arm64] + os: [darwin] + + '@swc/core-darwin-x64@1.13.5': + resolution: {integrity: sha512-ILd38Fg/w23vHb0yVjlWvQBoE37ZJTdlLHa8LRCFDdX4WKfnVBiblsCU9ar4QTMNdeTBEX9iUF4IrbNWhaF1Ng==} + engines: {node: '>=10'} + cpu: [x64] + os: [darwin] + + '@swc/core-linux-arm-gnueabihf@1.13.5': + resolution: {integrity: sha512-Q6eS3Pt8GLkXxqz9TAw+AUk9HpVJt8Uzm54MvPsqp2yuGmY0/sNaPPNVqctCX9fu/Nu8eaWUen0si6iEiCsazQ==} + engines: {node: '>=10'} + cpu: [arm] + os: [linux] + + '@swc/core-linux-arm64-gnu@1.13.5': + resolution: {integrity: sha512-aNDfeN+9af+y+M2MYfxCzCy/VDq7Z5YIbMqRI739o8Ganz6ST+27kjQFd8Y/57JN/hcnUEa9xqdS3XY7WaVtSw==} + engines: {node: '>=10'} + cpu: [arm64] + os: [linux] + + '@swc/core-linux-arm64-musl@1.13.5': + resolution: {integrity: sha512-9+ZxFN5GJag4CnYnq6apKTnnezpfJhCumyz0504/JbHLo+Ue+ZtJnf3RhyA9W9TINtLE0bC4hKpWi8ZKoETyOQ==} + engines: {node: '>=10'} + cpu: [arm64] + os: [linux] + + '@swc/core-linux-x64-gnu@1.13.5': + resolution: {integrity: sha512-WD530qvHrki8Ywt/PloKUjaRKgstQqNGvmZl54g06kA+hqtSE2FTG9gngXr3UJxYu/cNAjJYiBifm7+w4nbHbA==} + engines: {node: '>=10'} + cpu: [x64] + os: [linux] + + '@swc/core-linux-x64-musl@1.13.5': + resolution: {integrity: sha512-Luj8y4OFYx4DHNQTWjdIuKTq2f5k6uSXICqx+FSabnXptaOBAbJHNbHT/06JZh6NRUouaf0mYXN0mcsqvkhd7Q==} + engines: {node: '>=10'} + cpu: [x64] + os: [linux] + + '@swc/core-win32-arm64-msvc@1.13.5': + resolution: {integrity: sha512-cZ6UpumhF9SDJvv4DA2fo9WIzlNFuKSkZpZmPG1c+4PFSEMy5DFOjBSllCvnqihCabzXzpn6ykCwBmHpy31vQw==} + engines: {node: '>=10'} + cpu: [arm64] + os: [win32] + + '@swc/core-win32-ia32-msvc@1.13.5': + resolution: {integrity: sha512-C5Yi/xIikrFUzZcyGj9L3RpKljFvKiDMtyDzPKzlsDrKIw2EYY+bF88gB6oGY5RGmv4DAX8dbnpRAqgFD0FMEw==} + engines: {node: '>=10'} + cpu: [ia32] + os: [win32] + + '@swc/core-win32-x64-msvc@1.13.5': + resolution: {integrity: sha512-YrKdMVxbYmlfybCSbRtrilc6UA8GF5aPmGKBdPvjrarvsmf4i7ZHGCEnLtfOMd3Lwbs2WUZq3WdMbozYeLU93Q==} + engines: {node: '>=10'} + cpu: [x64] + os: [win32] + + '@swc/core@1.13.5': + resolution: {integrity: sha512-WezcBo8a0Dg2rnR82zhwoR6aRNxeTGfK5QCD6TQ+kg3xx/zNT02s/0o+81h/3zhvFSB24NtqEr8FTw88O5W/JQ==} + engines: {node: '>=10'} + peerDependencies: + '@swc/helpers': '>=0.5.17' + peerDependenciesMeta: + '@swc/helpers': + optional: true + + '@swc/counter@0.1.3': + resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==} + + '@swc/helpers@0.5.17': + resolution: {integrity: sha512-5IKx/Y13RsYd+sauPb2x+U/xZikHjolzfuDgTAl/Tdf3Q8rslRvC19NKDLgAJQ6wsqADk10ntlv08nPFw/gO/A==} + + '@swc/types@0.1.25': + resolution: {integrity: sha512-iAoY/qRhNH8a/hBvm3zKj9qQ4oc2+3w1unPJa2XvTK3XjeLXtzcCingVPw/9e5mn1+0yPqxcBGp9Jf0pkfMb1g==} + + '@tailwindcss/node@4.1.13': + resolution: {integrity: sha512-eq3ouolC1oEFOAvOMOBAmfCIqZBJuvWvvYWh5h5iOYfe1HFC6+GZ6EIL0JdM3/niGRJmnrOc+8gl9/HGUaaptw==} + + '@tailwindcss/oxide-android-arm64@4.1.13': + resolution: {integrity: sha512-BrpTrVYyejbgGo57yc8ieE+D6VT9GOgnNdmh5Sac6+t0m+v+sKQevpFVpwX3pBrM2qKrQwJ0c5eDbtjouY/+ew==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [android] + + '@tailwindcss/oxide-darwin-arm64@4.1.13': + resolution: {integrity: sha512-YP+Jksc4U0KHcu76UhRDHq9bx4qtBftp9ShK/7UGfq0wpaP96YVnnjFnj3ZFrUAjc5iECzODl/Ts0AN7ZPOANQ==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [darwin] + + '@tailwindcss/oxide-darwin-x64@4.1.13': + resolution: {integrity: sha512-aAJ3bbwrn/PQHDxCto9sxwQfT30PzyYJFG0u/BWZGeVXi5Hx6uuUOQEI2Fa43qvmUjTRQNZnGqe9t0Zntexeuw==} + engines: {node: '>= 10'} + cpu: [x64] + os: [darwin] + + '@tailwindcss/oxide-freebsd-x64@4.1.13': + resolution: {integrity: sha512-Wt8KvASHwSXhKE/dJLCCWcTSVmBj3xhVhp/aF3RpAhGeZ3sVo7+NTfgiN8Vey/Fi8prRClDs6/f0KXPDTZE6nQ==} + engines: {node: '>= 10'} + cpu: [x64] + os: [freebsd] + + '@tailwindcss/oxide-linux-arm-gnueabihf@4.1.13': + resolution: {integrity: sha512-mbVbcAsW3Gkm2MGwA93eLtWrwajz91aXZCNSkGTx/R5eb6KpKD5q8Ueckkh9YNboU8RH7jiv+ol/I7ZyQ9H7Bw==} + engines: {node: '>= 10'} + cpu: [arm] + os: [linux] + + '@tailwindcss/oxide-linux-arm64-gnu@4.1.13': + resolution: {integrity: sha512-wdtfkmpXiwej/yoAkrCP2DNzRXCALq9NVLgLELgLim1QpSfhQM5+ZxQQF8fkOiEpuNoKLp4nKZ6RC4kmeFH0HQ==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + + '@tailwindcss/oxide-linux-arm64-musl@4.1.13': + resolution: {integrity: sha512-hZQrmtLdhyqzXHB7mkXfq0IYbxegaqTmfa1p9MBj72WPoDD3oNOh1Lnxf6xZLY9C3OV6qiCYkO1i/LrzEdW2mg==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + + '@tailwindcss/oxide-linux-x64-gnu@4.1.13': + resolution: {integrity: sha512-uaZTYWxSXyMWDJZNY1Ul7XkJTCBRFZ5Fo6wtjrgBKzZLoJNrG+WderJwAjPzuNZOnmdrVg260DKwXCFtJ/hWRQ==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + + '@tailwindcss/oxide-linux-x64-musl@4.1.13': + resolution: {integrity: sha512-oXiPj5mi4Hdn50v5RdnuuIms0PVPI/EG4fxAfFiIKQh5TgQgX7oSuDWntHW7WNIi/yVLAiS+CRGW4RkoGSSgVQ==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + + '@tailwindcss/oxide-wasm32-wasi@4.1.13': + resolution: {integrity: sha512-+LC2nNtPovtrDwBc/nqnIKYh/W2+R69FA0hgoeOn64BdCX522u19ryLh3Vf3F8W49XBcMIxSe665kwy21FkhvA==} + engines: {node: '>=14.0.0'} + cpu: [wasm32] + bundledDependencies: + - '@napi-rs/wasm-runtime' + - '@emnapi/core' + - '@emnapi/runtime' + - '@tybys/wasm-util' + - '@emnapi/wasi-threads' + - tslib + + '@tailwindcss/oxide-win32-arm64-msvc@4.1.13': + resolution: {integrity: sha512-dziTNeQXtoQ2KBXmrjCxsuPk3F3CQ/yb7ZNZNA+UkNTeiTGgfeh+gH5Pi7mRncVgcPD2xgHvkFCh/MhZWSgyQg==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [win32] + + '@tailwindcss/oxide-win32-x64-msvc@4.1.13': + resolution: {integrity: sha512-3+LKesjXydTkHk5zXX01b5KMzLV1xl2mcktBJkje7rhFUpUlYJy7IMOLqjIRQncLTa1WZZiFY/foAeB5nmaiTw==} + engines: {node: '>= 10'} + cpu: [x64] + os: [win32] + + '@tailwindcss/oxide@4.1.13': + resolution: {integrity: sha512-CPgsM1IpGRa880sMbYmG1s4xhAy3xEt1QULgTJGQmZUeNgXFR7s1YxYygmJyBGtou4SyEosGAGEeYqY7R53bIA==} + engines: {node: '>= 10'} + + '@tailwindcss/postcss@4.1.13': + resolution: {integrity: sha512-HLgx6YSFKJT7rJqh9oJs/TkBFhxuMOfUKSBEPYwV+t78POOBsdQ7crhZLzwcH3T0UyUuOzU/GK5pk5eKr3wCiQ==} + + '@tanstack/react-virtual@3.13.12': + resolution: {integrity: sha512-Gd13QdxPSukP8ZrkbgS2RwoZseTTbQPLnQEn7HY/rqtM+8Zt95f7xKC7N0EsKs7aoz0WzZ+fditZux+F8EzYxA==} + 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 + + '@tanstack/virtual-core@3.13.12': + resolution: {integrity: sha512-1YBOJfRHV4sXUmWsFSf5rQor4Ss82G8dQWLRbnk3GA4jeP8hQt1hxXh0tmflpC0dz3VgEv/1+qwPyLeWkQuPFA==} + + '@tootallnate/once@2.0.0': + resolution: {integrity: sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==} + engines: {node: '>= 10'} + + '@types/babel__core@7.20.5': + resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} + + '@types/babel__generator@7.27.0': + resolution: {integrity: sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==} + + '@types/babel__template@7.4.4': + resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==} + + '@types/babel__traverse@7.28.0': + resolution: {integrity: sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==} + + '@types/caseless@0.12.5': + resolution: {integrity: sha512-hWtVTC2q7hc7xZ/RLbxapMvDMgUnDvKvMOpKal4DrMyfGBUfB1oKaZlIRr6mJL+If3bAP6sV/QneGzF6tJjZDg==} + + '@types/chai@5.2.2': + resolution: {integrity: sha512-8kB30R7Hwqf40JPiKhVzodJs2Qc1ZJ5zuT3uzw5Hq/dhNCl3G3l83jfpdI1e20BP348+fV7VIL/+FxaXkqBmWg==} + + '@types/deep-eql@4.0.2': + resolution: {integrity: sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==} + + '@types/estree@1.0.8': + resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} + + '@types/js-cookie@3.0.6': + resolution: {integrity: sha512-wkw9yd1kEXOPnvEeEV1Go1MmxtBJL0RR79aOTAApecWFVu7w0NNXNqhcWgvw2YgZDYadliXkl14pa3WXw5jlCQ==} + + '@types/long@4.0.2': + resolution: {integrity: sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA==} + + '@types/node@20.19.13': + resolution: {integrity: sha512-yCAeZl7a0DxgNVteXFHt9+uyFbqXGy/ShC4BlcHkoE0AfGXYv/BUiplV72DjMYXHDBXFjhvr6DD1NiRVfB4j8g==} + + '@types/node@24.3.1': + resolution: {integrity: sha512-3vXmQDXy+woz+gnrTvuvNrPzekOi+Ds0ReMxw0LzBiK3a+1k0kQn9f2NWk+lgD4rJehFUmYy2gMhJ2ZI+7YP9g==} + + '@types/normalize-package-data@2.4.4': + resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==} + + '@types/qs@6.14.0': + resolution: {integrity: sha512-eOunJqu0K1923aExK6y8p6fsihYEn/BYuQ4g0CxAAgFc4b/ZLN4CrsRZ55srTdqoiLzU2B2evC+apEIxprEzkQ==} + + '@types/react-dom@19.1.9': + resolution: {integrity: sha512-qXRuZaOsAdXKFyOhRBg6Lqqc0yay13vN7KrIg4L7N4aaHN68ma9OK3NE1BoDFgFOTfM7zg+3/8+2n8rLUH3OKQ==} + peerDependencies: + '@types/react': ^19.0.0 + + '@types/react@19.1.12': + resolution: {integrity: sha512-cMoR+FoAf/Jyq6+Df2/Z41jISvGZZ2eTlnsaJRptmZ76Caldwy1odD4xTr/gNV9VLj0AWgg/nmkevIyUfIIq5w==} + + '@types/request@2.48.13': + resolution: {integrity: sha512-FGJ6udDNUCjd19pp0Q3iTiDkwhYup7J8hpMW9c4k53NrccQFFWKRho6hvtPPEhnXWKvukfwAlB6DbDz4yhH5Gg==} + + '@types/tough-cookie@4.0.5': + resolution: {integrity: sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==} + + '@types/use-sync-external-store@0.0.6': + resolution: {integrity: sha512-zFDAD+tlpf2r4asuHEj0XH6pY6i0g5NeAHPn+15wk3BV6JA69eERFXC1gyGThDkVa1zCyKr5jox1+2LbV/AMLg==} + + '@types/whatwg-mimetype@3.0.2': + resolution: {integrity: sha512-c2AKvDT8ToxLIOUlN51gTiHXflsfIFisS4pO7pDPoKouJCESkhZnEy623gwP9laCy5lnLDAw1vAzu2vM2YLOrA==} + + '@vitejs/plugin-react-swc@4.0.1': + resolution: {integrity: sha512-NQhPjysi5duItyrMd5JWZFf2vNOuSMyw+EoZyTBDzk+DkfYD8WNrsUs09sELV2cr1P15nufsN25hsUBt4CKF9Q==} + engines: {node: ^20.19.0 || >=22.12.0} + peerDependencies: + vite: ^4 || ^5 || ^6 || ^7 + + '@vitejs/plugin-react@5.0.2': + resolution: {integrity: sha512-tmyFgixPZCx2+e6VO9TNITWcCQl8+Nl/E8YbAyPVv85QCc7/A3JrdfG2A8gIzvVhWuzMOVrFW1aReaNxrI6tbw==} + engines: {node: ^20.19.0 || >=22.12.0} + peerDependencies: + vite: ^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 + + '@vitest/expect@3.2.4': + resolution: {integrity: sha512-Io0yyORnB6sikFlt8QW5K7slY4OjqNX9jmJQ02QDda8lyM6B5oNgVWoSoKPac8/kgnCUzuHQKrSLtu/uOqqrig==} + + '@vitest/mocker@3.2.4': + resolution: {integrity: sha512-46ryTE9RZO/rfDd7pEqFl7etuyzekzEhUbTW3BvmeO/BcCMEgq59BKhek3dXDWgAj4oMK6OZi+vRr1wPW6qjEQ==} + peerDependencies: + msw: ^2.4.9 + vite: ^5.0.0 || ^6.0.0 || ^7.0.0-0 + peerDependenciesMeta: + msw: + optional: true + vite: + optional: true + + '@vitest/pretty-format@3.2.4': + resolution: {integrity: sha512-IVNZik8IVRJRTr9fxlitMKeJeXFFFN0JaB9PHPGQ8NKQbGpfjlTx9zO4RefN8gp7eqjNy8nyK3NZmBzOPeIxtA==} + + '@vitest/runner@3.2.4': + resolution: {integrity: sha512-oukfKT9Mk41LreEW09vt45f8wx7DordoWUZMYdY/cyAk7w5TWkTRCNZYF7sX7n2wB7jyGAl74OxgwhPgKaqDMQ==} + + '@vitest/snapshot@3.2.4': + resolution: {integrity: sha512-dEYtS7qQP2CjU27QBC5oUOxLE/v5eLkGqPE0ZKEIDGMs4vKWe7IjgLOeauHsR0D5YuuycGRO5oSRXnwnmA78fQ==} + + '@vitest/spy@3.2.4': + resolution: {integrity: sha512-vAfasCOe6AIK70iP5UD11Ac4siNUNJ9i/9PZ3NKx07sG6sUxeag1LWdNrMWeKKYBLlzuK+Gn65Yd5nyL6ds+nw==} + + '@vitest/utils@3.2.4': + resolution: {integrity: sha512-fB2V0JFrQSMsCo9HiSq3Ezpdv4iYaXRG1Sx8edX3MwxfyNn83mKiGzOcH+Fkxt4MHxr3y42fQi1oeAInqgX2QA==} + + abort-controller@3.0.0: + resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} + engines: {node: '>=6.5'} + + adler-32@1.3.1: + resolution: {integrity: sha512-ynZ4w/nUUv5rrsR8UUGoe1VC9hZj6V5hU9Qw1HlMDJGEJw5S7TfTErWTjMys6M7vr0YWcPqs3qAr4ss0nDfP+A==} + engines: {node: '>=0.8'} + + agent-base@6.0.2: + resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} + engines: {node: '>= 6.0.0'} + + agent-base@7.1.4: + resolution: {integrity: sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==} + engines: {node: '>= 14'} + + ansi-regex@5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} + + ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} + + asn1js@3.0.6: + resolution: {integrity: sha512-UOCGPYbl0tv8+006qks/dTgV9ajs97X2p0FAbyS2iyCRrmLSRolDaHdp+v/CLgnzHc3fVB+CwYiUmei7ndFcgA==} + engines: {node: '>=12.0.0'} + + assertion-error@2.0.1: + resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} + engines: {node: '>=12'} + + asynckit@0.4.0: + resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} + + autoprefixer@10.4.21: + resolution: {integrity: sha512-O+A6LWV5LDHSJD3LjHYoNi4VLsj/Whi7k6zG12xTYaU4cQ8oxQGckXNX8cRHK5yOZ/ppVHe0ZBXGzSV9jXdVbQ==} + engines: {node: ^10 || ^12 || >=14} + hasBin: true + peerDependencies: + postcss: ^8.1.0 + + base64-js@1.5.1: + resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} + + better-auth@1.3.9: + resolution: {integrity: sha512-Ty6BHzuShlqSs7I4RMlBRQ3duOWNB7WWriIu2FJVGjQAOtTVvamzFCR4/j5ROFLoNkpvNTRF7BJozsrMICL1gw==} + peerDependencies: + '@lynx-js/react': '*' + react: ^18.0.0 || ^19.0.0 + react-dom: ^18.0.0 || ^19.0.0 + peerDependenciesMeta: + '@lynx-js/react': + optional: true + react: + optional: true + react-dom: + optional: true + + better-call@1.0.18: + resolution: {integrity: sha512-Ojyck3P3fs/egBmCW50tvfbCJorNV5KphfPOKrkCxPfOr8Brth1ruDtAJuhHVHEUiWrXv+vpEgWQk7m7FzhbbQ==} + + bignumber.js@9.3.1: + resolution: {integrity: sha512-Ko0uX15oIUS7wJ3Rb30Fs6SkVbLmPBAKdlm7q9+ak9bbIeFf0MwuBsQV6z7+X768/cHsfg+WlysDWJcmthjsjQ==} + + braces@3.0.3: + resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} + engines: {node: '>=8'} + + browserslist@4.25.4: + resolution: {integrity: sha512-4jYpcjabC606xJ3kw2QwGEZKX0Aw7sgQdZCvIK9dhVSPh76BKo+C+btT1RRofH7B+8iNpEbgGNVWiLki5q93yg==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + + buffer-equal-constant-time@1.0.1: + resolution: {integrity: sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==} + + cac@6.7.14: + resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} + engines: {node: '>=8'} + + call-bind-apply-helpers@1.0.2: + resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==} + engines: {node: '>= 0.4'} + + call-bound@1.0.4: + resolution: {integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==} + engines: {node: '>= 0.4'} + + callsites@4.2.0: + resolution: {integrity: sha512-kfzR4zzQtAE9PC7CzZsjl3aBNbXWuXiSeOCdLcPpBfGW8YuCqQHcRPFDbr/BPVmd3EEPVpuFzLyuT/cUhPr4OQ==} + engines: {node: '>=12.20'} + + caniuse-lite@1.0.30001741: + resolution: {integrity: sha512-QGUGitqsc8ARjLdgAfxETDhRbJ0REsP6O3I96TAth/mVjh2cYzN2u+3AzPP3aVSm2FehEItaJw1xd+IGBXWeSw==} + + cfb@1.2.2: + resolution: {integrity: sha512-KfdUZsSOw19/ObEWasvBP/Ac4reZvAGauZhs6S/gqNhXhI7cKwvlH7ulj+dOEYnca4bm4SGo8C1bTAQvnTjgQA==} + engines: {node: '>=0.8'} + + chai@5.3.3: + resolution: {integrity: sha512-4zNhdJD/iOjSH0A05ea+Ke6MU5mmpQcbQsSOkgdaUMJ9zTlDTD/GYlwohmIE2u0gaxHYiVHEn1Fw9mZ/ktJWgw==} + engines: {node: '>=18'} + + check-error@2.1.1: + resolution: {integrity: sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==} + engines: {node: '>= 16'} + + chownr@3.0.0: + resolution: {integrity: sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==} + engines: {node: '>=18'} + + class-variance-authority@0.7.1: + resolution: {integrity: sha512-Ka+9Trutv7G8M6WT6SeiRWz792K5qEqIGEGzXKhAE6xOWAY6pPH8U+9IY3oCMv6kqTmLsv7Xh/2w2RigkePMsg==} + + cliui@8.0.1: + resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} + engines: {node: '>=12'} + + clsx@1.2.1: + resolution: {integrity: sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==} + engines: {node: '>=6'} + + clsx@2.1.1: + resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==} + engines: {node: '>=6'} + + codepage@1.15.0: + resolution: {integrity: sha512-3g6NUTPd/YtuuGrhMnOMRjFc+LJw/bnMp3+0r/Wcz3IXUuCosKRJvMphm5+Q+bvTVGcJJuRvVLuYba+WojaFaA==} + engines: {node: '>=0.8'} + + color-convert@2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} + + color-name@1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + + combined-stream@1.0.8: + resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} + engines: {node: '>= 0.8'} + + convert-source-map@2.0.0: + resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} + + cookie@1.0.2: + resolution: {integrity: sha512-9Kr/j4O16ISv8zBBhJoi4bXOYNTkFLOqSL3UDB0njXxCXNezjeyVrJyGOWtgfs/q2km1gwBcfH8q1yEGoMYunA==} + engines: {node: '>=18'} + + core-js@3.45.1: + resolution: {integrity: sha512-L4NPsJlCfZsPeXukyzHFlg/i7IIVwHSItR0wg0FLNqYClJ4MQYTYLbC7EkjKYRLZF2iof2MUgN0EGy7MdQFChg==} + + crc-32@1.2.2: + resolution: {integrity: sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==} + engines: {node: '>=0.8'} + hasBin: true + + cross-spawn@7.0.6: + resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} + engines: {node: '>= 8'} + + csstype@3.1.3: + resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} + + debug@4.4.1: + resolution: {integrity: sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==} + 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'} + + defu@6.1.4: + resolution: {integrity: sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==} + + delayed-stream@1.0.0: + resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} + engines: {node: '>=0.4.0'} + + detect-libc@2.0.4: + resolution: {integrity: sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA==} + engines: {node: '>=8'} + + dotenv-expand@12.0.3: + resolution: {integrity: sha512-uc47g4b+4k/M/SeaW1y4OApx+mtLWl92l5LMPP0GNXctZqELk+YGgOPIIC5elYmUH4OuoK3JLhuRUYegeySiFA==} + engines: {node: '>=12'} + + dotenv@16.6.1: + resolution: {integrity: sha512-uBq4egWHTcTt33a72vpSG0z3HnPuIl6NqYcTrKEg2azoEyl2hpW0zqlxysq2pK9HlDIHyHyakeYaYnSAwd8bow==} + engines: {node: '>=12'} + + dunder-proto@1.0.1: + resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} + engines: {node: '>= 0.4'} + + duplexify@4.1.3: + resolution: {integrity: sha512-M3BmBhwJRZsSx38lZyhE53Csddgzl5R7xGJNk7CVddZD6CcmwMCH8J+7AprIrQKH7TonKxaCjcv27Qmf+sQ+oA==} + + ecdsa-sig-formatter@1.0.11: + resolution: {integrity: sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==} + + electron-to-chromium@1.5.218: + resolution: {integrity: sha512-uwwdN0TUHs8u6iRgN8vKeWZMRll4gBkz+QMqdS7DDe49uiK68/UX92lFb61oiFPrpYZNeZIqa4bA7O6Aiasnzg==} + + emoji-regex@8.0.0: + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + + end-of-stream@1.4.5: + resolution: {integrity: sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==} + + enhanced-resolve@5.18.3: + resolution: {integrity: sha512-d4lC8xfavMeBjzGr2vECC3fsGXziXZQyJxD868h2M/mBI3PwAuODxAkLkq5HYuvrPYcUtiLzsTo8U3PgX3Ocww==} + engines: {node: '>=10.13.0'} + + envars@1.1.1: + resolution: {integrity: sha512-dCRNfwscMiMUyh+CA8ifYRHefzxaUjCs3JEax932rKNMP2cE61Ue7Ifm1lnqVK0RfI40hX7XfJuzZjchdBYzvw==} + + es-define-property@1.0.1: + resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==} + engines: {node: '>= 0.4'} + + es-errors@1.3.0: + resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} + engines: {node: '>= 0.4'} + + es-module-lexer@1.7.0: + resolution: {integrity: sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==} + + es-object-atoms@1.1.1: + resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==} + engines: {node: '>= 0.4'} + + es-set-tostringtag@2.1.0: + resolution: {integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==} + engines: {node: '>= 0.4'} + + esbuild@0.23.1: + resolution: {integrity: sha512-VVNz/9Sa0bs5SELtn3f7qhJCDPCF5oMEl5cO9/SSinpE9hbPVvxbd572HH5AKiP7WD8INO53GgfDDhRjkylHEg==} + engines: {node: '>=18'} + hasBin: true + + esbuild@0.24.2: + resolution: {integrity: sha512-+9egpBW8I3CD5XPe0n6BfT5fxLzxrlDzqydF3aviG+9ni1lDC/OvMHcxqEFV0+LANZG5R1bFMWfUrjVsdwxJvA==} + engines: {node: '>=18'} + hasBin: true + + esbuild@0.25.9: + resolution: {integrity: sha512-CRbODhYyQx3qp7ZEwzxOk4JBqmD/seJrzPa/cGjY1VtIn5E09Oi9/dB4JwctnfZ8Q8iT7rioVv5k/FNT/uf54g==} + engines: {node: '>=18'} + hasBin: true + + escalade@3.2.0: + resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} + engines: {node: '>=6'} + + estree-walker@3.0.3: + resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} + + event-target-shim@5.0.1: + resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==} + engines: {node: '>=6'} + + execa@9.6.0: + resolution: {integrity: sha512-jpWzZ1ZhwUmeWRhS7Qv3mhpOhLfwI+uAX4e5fOcXqwMR7EcJ0pj2kV1CVzHVMX/LphnKWD3LObjZCoJ71lKpHw==} + engines: {node: ^18.19.0 || >=20.5.0} + + expect-type@1.2.2: + resolution: {integrity: sha512-JhFGDVJ7tmDJItKhYgJCGLOWjuK9vPxiXoUFLwLDc99NlmklilbiQJwoctZtt13+xMw91MCk/REan6MWHqDjyA==} + engines: {node: '>=12.0.0'} + + extend@3.0.2: + resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} + + fast-glob@3.3.3: + resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==} + engines: {node: '>=8.6.0'} + + fastq@1.19.1: + resolution: {integrity: sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==} + + fdir@6.5.0: + resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==} + engines: {node: '>=12.0.0'} + peerDependencies: + picomatch: ^3 || ^4 + peerDependenciesMeta: + picomatch: + optional: true + + figures@6.1.0: + resolution: {integrity: sha512-d+l3qxjSesT4V7v2fh+QnmFnUWv9lSpjarhShNTgBOfA0ttejbQUAlHLitbjkoRiDulW0OPoQPYIGhIC8ohejg==} + engines: {node: '>=18'} + + fill-range@7.1.1: + resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} + engines: {node: '>=8'} + + find-up-simple@1.0.1: + resolution: {integrity: sha512-afd4O7zpqHeRyg4PfDQsXmlDe2PfdHtJt6Akt8jOWaApLOZk5JXs6VMR29lz03pRe9mpykrRCYIYxaJYcfpncQ==} + engines: {node: '>=18'} + + form-data@2.5.5: + resolution: {integrity: sha512-jqdObeR2rxZZbPSGL+3VckHMYtu+f9//KXBsVny6JSX/pa38Fy+bGjuG8eW/H6USNQWhLi8Num++cU2yOCNz4A==} + engines: {node: '>= 0.12'} + + frac@1.1.2: + resolution: {integrity: sha512-w/XBfkibaTl3YDqASwfDUqkna4Z2p9cFSr1aHDt0WoMTECnRfBOv2WArlZILlqgWlmdIlALXGpM2AOhEk5W3IA==} + engines: {node: '>=0.8'} + + fraction.js@4.3.7: + resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==} + + 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==} + + gaxios@6.7.1: + resolution: {integrity: sha512-LDODD4TMYx7XXdpwxAVRAIAuB0bzv0s+ywFonY46k126qzQHT9ygyoa9tncmOiQmmDrik65UYsEkv3lbfqQ3yQ==} + engines: {node: '>=14'} + + gcp-metadata@6.1.1: + resolution: {integrity: sha512-a4tiq7E0/5fTjxPAaH4jpjkSv/uCaU2p5KC6HVGrvl0cDjA8iBZv4vv1gyzlmK0ZUKqwpOyQMKzZQe3lTit77A==} + engines: {node: '>=14'} + + 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-intrinsic@1.3.0: + resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==} + engines: {node: '>= 0.4'} + + get-proto@1.0.1: + resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==} + engines: {node: '>= 0.4'} + + get-stream@9.0.1: + resolution: {integrity: sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA==} + engines: {node: '>=18'} + + get-tsconfig@4.10.1: + resolution: {integrity: sha512-auHyJ4AgMz7vgS8Hp3N6HXSmlMdUyhSUrfBF16w153rxtLIEOE+HGqaBppczZvnHLqQJfiHotCYpNhl0lUROFQ==} + + glob-parent@5.1.2: + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + engines: {node: '>= 6'} + + globby@14.1.0: + resolution: {integrity: sha512-0Ia46fDOaT7k4og1PDW4YbodWWr3scS2vAr2lTbsplOt2WkKp0vQbkI9wKis/T5LV/dqPjO3bpS/z6GTJB82LA==} + engines: {node: '>=18'} + + globrex@0.1.2: + resolution: {integrity: sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==} + + google-auth-library@9.15.1: + resolution: {integrity: sha512-Jb6Z0+nvECVz+2lzSMt9u98UsoakXxA2HGHMCxh+so3n90XgYWkq5dur19JAJV7ONiJY22yBTyJB1TSkvPq9Ng==} + engines: {node: '>=14'} + + google-gax@4.6.1: + resolution: {integrity: sha512-V6eky/xz2mcKfAd1Ioxyd6nmA61gao3n01C+YeuIwu3vzM9EDR6wcVzMSIbLMDXWeoi9SHYctXuKYC5uJUT3eQ==} + engines: {node: '>=14'} + + google-logging-utils@0.0.2: + resolution: {integrity: sha512-NEgUnEcBiP5HrPzufUkBzJOD/Sxsco3rLNo1F1TNf7ieU8ryUzBhqba8r756CjLX7rn3fHl6iLEwPYuqpoKgQQ==} + engines: {node: '>=14'} + + gopd@1.2.0: + resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} + engines: {node: '>= 0.4'} + + graceful-fs@4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + + gtoken@7.1.0: + resolution: {integrity: sha512-pCcEwRi+TKpMlxAQObHDQ56KawURgyAf6jtIY046fJ5tIv3zDe/LEIubckAO8fj6JnAxLdmWkUfNyulQ2iKdEw==} + engines: {node: '>=14.0.0'} + + happy-dom@18.0.1: + resolution: {integrity: sha512-qn+rKOW7KWpVTtgIUi6RVmTBZJSe2k0Db0vh1f7CWrWclkkc7/Q+FrOfkZIb2eiErLyqu5AXEzE7XthO9JVxRA==} + engines: {node: '>=20.0.0'} + + has-symbols@1.1.0: + resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==} + 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'} + + hosted-git-info@7.0.2: + resolution: {integrity: sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==} + engines: {node: ^16.14.0 || >=18.0.0} + + http-proxy-agent@5.0.0: + resolution: {integrity: sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==} + engines: {node: '>= 6'} + + https-proxy-agent@5.0.1: + resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} + engines: {node: '>= 6'} + + https-proxy-agent@7.0.6: + resolution: {integrity: sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==} + engines: {node: '>= 14'} + + human-signals@8.0.1: + resolution: {integrity: sha512-eKCa6bwnJhvxj14kZk5NCPc6Hb6BdsU9DZcOnmQKSnO1VKrfV0zCvtttPZUsBvjmNDn8rpcJfpwSYnHBjc95MQ==} + engines: {node: '>=18.18.0'} + + ignore@7.0.5: + resolution: {integrity: sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==} + engines: {node: '>= 4'} + + immediate@3.0.6: + resolution: {integrity: sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==} + + immer@10.1.3: + resolution: {integrity: sha512-tmjF/k8QDKydUlm3mZU+tjM6zeq9/fFpPqH9SzWmBnVVKsPBg/V66qsMwb3/Bo90cgUN+ghdVBess+hPsxUyRw==} + + index-to-position@1.1.0: + resolution: {integrity: sha512-XPdx9Dq4t9Qk1mTMbWONJqU7boCoumEH7fRET37HX5+khDUl3J2W6PdALxhILYlIYx2amlwYcRPp28p0tSiojg==} + engines: {node: '>=18'} + + inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + + is-extglob@2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} + + is-fullwidth-code-point@3.0.0: + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + engines: {node: '>=8'} + + is-glob@4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} + + is-number@7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} + + is-plain-obj@4.1.0: + resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==} + engines: {node: '>=12'} + + is-stream@2.0.1: + resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} + engines: {node: '>=8'} + + is-stream@4.0.1: + resolution: {integrity: sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A==} + engines: {node: '>=18'} + + is-unicode-supported@2.1.0: + resolution: {integrity: sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==} + engines: {node: '>=18'} + + isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + + jiti@2.5.1: + resolution: {integrity: sha512-twQoecYPiVA5K/h6SxtORw/Bs3ar+mLUtoPSc7iMXzQzK8d7eJ/R09wmTwAjiamETn1cXYPGfNnu7DMoHgu12w==} + hasBin: true + + jose@6.1.0: + resolution: {integrity: sha512-TTQJyoEoKcC1lscpVDCSsVgYzUDg/0Bt3WE//WiTPK6uOCQC2KZS4MpugbMWt/zyjkopgZoXhZuCi00gLudfUA==} + + jotai-effect@2.1.1: + resolution: {integrity: sha512-/K6YFfAFtaY+LYVmbqrZLL/KkWTYEki3CYTUE/Odz4p1pAfQs6gh0NkL6j9oA+RfKlc9UUdMjZeSGkjbxnSvAQ==} + engines: {node: '>=12.20.0'} + peerDependencies: + jotai: '>=2.14.0' + + jotai@2.14.0: + resolution: {integrity: sha512-JQkNkTnqjk1BlSUjHfXi+pGG/573bVN104gp6CymhrWDseZGDReTNniWrLhJ+zXbM6pH+82+UNJ2vwYQUkQMWQ==} + engines: {node: '>=12.20.0'} + peerDependencies: + '@babel/core': '>=7.0.0' + '@babel/template': '>=7.0.0' + '@types/react': '>=17.0.0' + react: '>=17.0.0' + peerDependenciesMeta: + '@babel/core': + optional: true + '@babel/template': + optional: true + '@types/react': + optional: true + react: + optional: true + + js-cookie@3.0.5: + resolution: {integrity: sha512-cEiJEAEoIbWfCZYKWhVwFuvPX1gETRYPw6LlaTKoxD3s2AkXzkCjnp6h0V77ozyqj0jakteJ4YqDJT830+lVGw==} + engines: {node: '>=14'} + + js-tokens@4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + + js-tokens@9.0.1: + resolution: {integrity: sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ==} + + jsesc@3.1.0: + resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==} + engines: {node: '>=6'} + hasBin: true + + json-bigint@1.0.0: + resolution: {integrity: sha512-SiPv/8VpZuWbvLSMtTDU8hEfrZWg/mH/nV/b4o0CYbSxu1UIQPLdwKOCIyLQX+VIPO5vrLX3i8qtqFyhdPSUSQ==} + + json5@2.2.3: + resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} + engines: {node: '>=6'} + hasBin: true + + jwa@2.0.1: + resolution: {integrity: sha512-hRF04fqJIP8Abbkq5NKGN0Bbr3JxlQ+qhZufXVr0DvujKy93ZCbXZMHDL4EOtodSbCWxOqR8MS1tXA5hwqCXDg==} + + jws@4.0.0: + resolution: {integrity: sha512-KDncfTmOZoOMTFG4mBlG0qUIOlc03fmzH+ru6RgYVZhPkyiy/92Owlt/8UEN+a4TXR1FQetfIpJE8ApdvdVxTg==} + + kysely@0.28.5: + resolution: {integrity: sha512-rlB0I/c6FBDWPcQoDtkxi9zIvpmnV5xoIalfCMSMCa7nuA6VGA3F54TW9mEgX4DVf10sXAWCF5fDbamI/5ZpKA==} + engines: {node: '>=20.0.0'} + + lie@3.1.1: + resolution: {integrity: sha512-RiNhHysUjhrDQntfYSfY4MU24coXXdEOgw9WGcKHNeEwffDYbF//u87M1EWaMGzuFoSbqW0C9C6lEEhDOAswfw==} + + lightningcss-darwin-arm64@1.30.1: + resolution: {integrity: sha512-c8JK7hyE65X1MHMN+Viq9n11RRC7hgin3HhYKhrMyaXflk5GVplZ60IxyoVtzILeKr+xAJwg6zK6sjTBJ0FKYQ==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [darwin] + + lightningcss-darwin-x64@1.30.1: + resolution: {integrity: sha512-k1EvjakfumAQoTfcXUcHQZhSpLlkAuEkdMBsI/ivWw9hL+7FtilQc0Cy3hrx0AAQrVtQAbMI7YjCgYgvn37PzA==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [darwin] + + lightningcss-freebsd-x64@1.30.1: + resolution: {integrity: sha512-kmW6UGCGg2PcyUE59K5r0kWfKPAVy4SltVeut+umLCFoJ53RdCUWxcRDzO1eTaxf/7Q2H7LTquFHPL5R+Gjyig==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [freebsd] + + lightningcss-linux-arm-gnueabihf@1.30.1: + resolution: {integrity: sha512-MjxUShl1v8pit+6D/zSPq9S9dQ2NPFSQwGvxBCYaBYLPlCWuPh9/t1MRS8iUaR8i+a6w7aps+B4N0S1TYP/R+Q==} + engines: {node: '>= 12.0.0'} + cpu: [arm] + os: [linux] + + lightningcss-linux-arm64-gnu@1.30.1: + resolution: {integrity: sha512-gB72maP8rmrKsnKYy8XUuXi/4OctJiuQjcuqWNlJQ6jZiWqtPvqFziskH3hnajfvKB27ynbVCucKSm2rkQp4Bw==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] + + lightningcss-linux-arm64-musl@1.30.1: + resolution: {integrity: sha512-jmUQVx4331m6LIX+0wUhBbmMX7TCfjF5FoOH6SD1CttzuYlGNVpA7QnrmLxrsub43ClTINfGSYyHe2HWeLl5CQ==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] + + lightningcss-linux-x64-gnu@1.30.1: + resolution: {integrity: sha512-piWx3z4wN8J8z3+O5kO74+yr6ze/dKmPnI7vLqfSqI8bccaTGY5xiSGVIJBDd5K5BHlvVLpUB3S2YCfelyJ1bw==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [linux] + + lightningcss-linux-x64-musl@1.30.1: + resolution: {integrity: sha512-rRomAK7eIkL+tHY0YPxbc5Dra2gXlI63HL+v1Pdi1a3sC+tJTcFrHX+E86sulgAXeI7rSzDYhPSeHHjqFhqfeQ==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [linux] + + lightningcss-win32-arm64-msvc@1.30.1: + resolution: {integrity: sha512-mSL4rqPi4iXq5YVqzSsJgMVFENoa4nGTT/GjO2c0Yl9OuQfPsIfncvLrEW6RbbB24WtZ3xP/2CCmI3tNkNV4oA==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [win32] + + lightningcss-win32-x64-msvc@1.30.1: + resolution: {integrity: sha512-PVqXh48wh4T53F/1CCu8PIPCxLzWyCnn/9T5W1Jpmdy5h9Cwd+0YQS6/LwhHXSafuc61/xg9Lv5OrCby6a++jg==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [win32] + + lightningcss@1.30.1: + resolution: {integrity: sha512-xi6IyHML+c9+Q3W0S4fCQJOym42pyurFiJUHEcEyHS0CeKzia4yZDEsLlqOFykxOdHpNy0NmvVO31vcSqAxJCg==} + engines: {node: '>= 12.0.0'} + + localforage@1.10.0: + resolution: {integrity: sha512-14/H1aX7hzBBmmh7sGPd+AOMkkIrHM3Z1PAyGgZigA1H1p5O5ANnMyWzvpAETtG68/dC4pC0ncy3+PPGzXZHPg==} + + lodash.camelcase@4.3.0: + resolution: {integrity: sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==} + + long@5.3.2: + resolution: {integrity: sha512-mNAgZ1GmyNhD7AuqnTG3/VQ26o760+ZYBPKjPvugO8+nLbYfX6TVpJPseBvopbdY+qpZ/lKUnmEc1LeZYS3QAA==} + + loupe@3.2.1: + resolution: {integrity: sha512-CdzqowRJCeLU72bHvWqwRBBlLcMEtIvGrlvef74kMnV2AolS9Y8xUv1I0U/MNAWMhBlKIoyuEgoJ0t/bbwHbLQ==} + + 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.543.0: + resolution: {integrity: sha512-fpVfuOQO0V3HBaOA1stIiP/A2fPCXHIleRZL16Mx3HmjTYwNSbimhnFBygs2CAfU1geexMX5ItUcWBGUaqw5CA==} + peerDependencies: + react: ^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0 + + magic-string@0.30.19: + resolution: {integrity: sha512-2N21sPY9Ws53PZvsEpVtNuSW+ScYbQdp4b9qUaL+9QkHUrGFKo56Lg9Emg5s9V/qrtNBmiR01sYhUOwu3H+VOw==} + + math-intrinsics@1.1.0: + resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} + engines: {node: '>= 0.4'} + + merge2@1.4.1: + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + engines: {node: '>= 8'} + + 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'} + + minipass@7.1.2: + resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} + engines: {node: '>=16 || 14 >=14.17'} + + minizlib@3.0.2: + resolution: {integrity: sha512-oG62iEk+CYt5Xj2YqI5Xi9xWUeZhDI8jjQmC5oThVH5JGCTgIjr7ciJDzC7MBzYd//WvR1OTmP5Q38Q8ShQtVA==} + engines: {node: '>= 18'} + + mkdirp@3.0.1: + resolution: {integrity: sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==} + engines: {node: '>=10'} + hasBin: true + + module-from-string@3.3.1: + resolution: {integrity: sha512-nFdOQ8NHJXR7ITj2JAwjpPSgX3vjbG2LfBL1YA5gil8sLkFTFa5pmV9P1NBGRik65u+NNyGEeUMcwkbqwPJ/ew==} + engines: {node: '>=12.20.0'} + + ms@2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + + nanoid@3.3.11: + resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + + nanostores@0.11.4: + resolution: {integrity: sha512-k1oiVNN4hDK8NcNERSZLQiMfRzEGtfnvZvdBvey3SQbgn8Dcrk0h1I6vpxApjb10PFUflZrgJ2WEZyJQ+5v7YQ==} + engines: {node: ^18.0.0 || >=20.0.0} + + node-fetch@2.7.0: + resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} + engines: {node: 4.x || >=6.0.0} + peerDependencies: + encoding: ^0.1.0 + peerDependenciesMeta: + encoding: + optional: true + + node-releases@2.0.20: + resolution: {integrity: sha512-7gK6zSXEH6neM212JgfYFXe+GmZQM+fia5SsusuBIUgnPheLFBmIPhtFoAQRj8/7wASYQnbDlHPVwY0BefoFgA==} + + normalize-package-data@6.0.2: + resolution: {integrity: sha512-V6gygoYb/5EmNI+MEGrWkC+e6+Rr7mTmfHrxDbLzxQogBkgzo76rkok0Am6thgSF7Mv2nLOajAJj5vDJZEFn7g==} + engines: {node: ^16.14.0 || >=18.0.0} + + normalize-range@0.1.2: + resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} + engines: {node: '>=0.10.0'} + + npm-run-path@6.0.0: + resolution: {integrity: sha512-9qny7Z9DsQU8Ou39ERsPU4OZQlSTP47ShQzuKZ6PRXpYLtIFgl/DEBYEXKlvcEa+9tHVcK8CF81Y2V72qaZhWA==} + engines: {node: '>=18'} + + object-hash@3.0.0: + resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} + engines: {node: '>= 6'} + + object-inspect@1.13.4: + resolution: {integrity: sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==} + engines: {node: '>= 0.4'} + + once@1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + + parent-module@3.1.0: + resolution: {integrity: sha512-FX4TpKXX6CesSm1D9y5IcF0/KdDjP/w0c1AKqreGZne2QyWiPWHfoApMaJl8zvH3DTh+xtVmlLIUqSSoPYjqLQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + parse-json@8.3.0: + resolution: {integrity: sha512-ybiGyvspI+fAoRQbIPRddCcSTV9/LsJbf0e/S85VLowVGzRmokfneg2kwVW/KU5rOXrPSbF1qAKPMgNTqqROQQ==} + engines: {node: '>=18'} + + parse-ms@4.0.0: + resolution: {integrity: sha512-TXfryirbmq34y8QBwgqCVLi+8oA3oWx2eAnSn62ITyEhEYaWRlVZ2DvMM9eZbMs/RfxPu/PK/aBLyGj4IrqMHw==} + engines: {node: '>=18'} + + 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-type@6.0.0: + resolution: {integrity: sha512-Vj7sf++t5pBD637NSfkxpHSMfWaeig5+DKWLhcqIYx6mWQz5hdJTGDVMQiJcw1ZYkhs7AazKDGpRVji1LJCZUQ==} + engines: {node: '>=18'} + + pathe@2.0.3: + resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==} + + pathval@2.0.1: + resolution: {integrity: sha512-//nshmD55c46FuFw26xV/xFAaB5HF9Xdap7HJBBnrKdAd6/GxDBaNA1870O79+9ueg61cZLSVc+OaFlfmObYVQ==} + 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'} + + picomatch@4.0.3: + resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==} + engines: {node: '>=12'} + + postcss-value-parser@4.2.0: + resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} + + postcss@8.5.6: + resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==} + engines: {node: ^10 || ^12 || >=14} + + pretty-ms@9.2.0: + resolution: {integrity: sha512-4yf0QO/sllf/1zbZWYnvWw3NxCQwLXKzIj0G849LSufP15BXKM0rbD2Z3wVnkMfjdn/CB0Dpp444gYAACdsplg==} + engines: {node: '>=18'} + + proto3-json-serializer@2.0.2: + resolution: {integrity: sha512-SAzp/O4Yh02jGdRc+uIrGoe87dkN/XtwxfZ4ZyafJHymd79ozp5VG5nyZ7ygqPM5+cpLDjjGnYFUkngonyDPOQ==} + engines: {node: '>=14.0.0'} + + protobufjs@7.5.4: + resolution: {integrity: sha512-CvexbZtbov6jW2eXAvLukXjXUW1TzFaivC46BpWc/3BpcCysb5Vffu+B3XHMm8lVEuy2Mm4XGex8hBSg1yapPg==} + engines: {node: '>=12.0.0'} + + pvtsutils@1.3.6: + resolution: {integrity: sha512-PLgQXQ6H2FWCaeRak8vvk1GW462lMxB5s3Jm673N82zI4vqtVUPuZdffdZbPDFRoU8kAhItWFtPCWiPpp4/EDg==} + + pvutils@1.1.3: + resolution: {integrity: sha512-pMpnA0qRdFp32b1sJl1wOJNxZLQ2cbQx+k6tjNtZ8CpvVhNqEPRgivZ2WOUev2YMajecdH7ctUPDvEe87nariQ==} + engines: {node: '>=6.0.0'} + + qs@6.14.0: + resolution: {integrity: sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==} + engines: {node: '>=0.6'} + + queue-microtask@1.2.3: + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + + react-circle-chart@1.0.4: + resolution: {integrity: sha512-HIoAuILNNISjvxTTWH22H2QSBLRsX45H+08LFW8n5DzRnTzXbGWIssoXSzFau52SVlxtHdM906QKQfRKxDke+A==} + peerDependencies: + react: ^17.0.2 + react-dom: ^17.0.2 + + react-dom@19.1.1: + resolution: {integrity: sha512-Dlq/5LAZgF0Gaz6yiqZCf6VCcZs1ghAJyrsu84Q/GT0gV+mCxbfmKNoGRKBYMJ8IEdGPqu49YWXD02GCknEDkw==} + peerDependencies: + react: ^19.1.1 + + react-error-boundary@6.0.0: + resolution: {integrity: sha512-gdlJjD7NWr0IfkPlaREN2d9uUZUlksrfOx7SX62VRerwXbMY6ftGCIZua1VG1aXFNOimhISsTq+Owp725b9SiA==} + peerDependencies: + react: '>=16.13.1' + + react-export-table-to-excel@1.0.6: + resolution: {integrity: sha512-2NKyor1rFFEqYDXQq5tPoVNwwdv5kT8DWc65wAmDa9Hi0441qHj0tOxegWhpW0vlCM2TypIsw+ghzIr900U4RA==} + + react-hook-form@7.62.0: + resolution: {integrity: sha512-7KWFejc98xqG/F4bAxpL41NB3o1nnvQO1RWZT3TqRZYL8RryQETGfEdVnJN2fy1crCiBLLjkRBVK05j24FxJGA==} + engines: {node: '>=18.0.0'} + peerDependencies: + react: ^16.8.0 || ^17 || ^18 || ^19 + + react-range-slider-input@3.2.1: + resolution: {integrity: sha512-MApTX4a/Uzm9ZrJFoWu2kM87TKHJpnHHBV2JR9N9WmOSWk832DDBT3suNN6vCQmFRRtfJO9stw+bsiGpto0Hig==} + + react-redux@9.2.0: + resolution: {integrity: sha512-ROY9fvHhwOD9ySfrF0wmvu//bKCQ6AeZZq1nJNtbDC+kk5DuSuNX/n6YWYF/SYy7bSba4D4FSz8DJeKY/S/r+g==} + peerDependencies: + '@types/react': ^18.2.25 || ^19 + react: ^18.0 || ^19 + redux: ^5.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + redux: + optional: true + + react-refresh@0.17.0: + resolution: {integrity: sha512-z6F7K9bV85EfseRCp2bzrpyQ0Gkw1uLoCel9XBVWPg/TjRj94SkJzUTGfOa4bs7iJvBWtQG0Wq7wnI0syw3EBQ==} + engines: {node: '>=0.10.0'} + + react-router-dom@7.8.2: + resolution: {integrity: sha512-Z4VM5mKDipal2jQ385H6UBhiiEDlnJPx6jyWsTYoZQdl5TrjxEV2a9yl3Fi60NBJxYzOTGTTHXPi0pdizvTwow==} + engines: {node: '>=20.0.0'} + peerDependencies: + react: '>=18' + react-dom: '>=18' + + react-router@7.8.2: + resolution: {integrity: sha512-7M2fR1JbIZ/jFWqelpvSZx+7vd7UlBTfdZqf6OSdF9g6+sfdqJDAWcak6ervbHph200ePlu+7G8LdoiC3ReyAQ==} + engines: {node: '>=20.0.0'} + peerDependencies: + react: '>=18' + react-dom: '>=18' + peerDependenciesMeta: + react-dom: + optional: true + + react-toastify@11.0.5: + resolution: {integrity: sha512-EpqHBGvnSTtHYhCPLxML05NLY2ZX0JURbAdNYa6BUkk+amz4wbKBQvoKQAB0ardvSarUBuY4Q4s1sluAzZwkmA==} + peerDependencies: + react: ^18 || ^19 + react-dom: ^18 || ^19 + + react@19.1.1: + resolution: {integrity: sha512-w8nqGImo45dmMIfljjMwOGtbmC/mk4CMYhWIicdSflH91J9TyCyczcPFXJzrZ/ZXcgGRFeP6BU0BEJTw6tZdfQ==} + engines: {node: '>=0.10.0'} + + read-pkg-up@11.0.0: + resolution: {integrity: sha512-LOVbvF1Q0SZdjClSefZ0Nz5z8u+tIE7mV5NibzmE9VYmDe9CaBbAVtz1veOSZbofrdsilxuDAYnFenukZVp8/Q==} + engines: {node: '>=18'} + deprecated: Renamed to read-package-up + + read-pkg@9.0.1: + resolution: {integrity: sha512-9viLL4/n1BJUCT1NXVTdS1jtm80yDEgR5T4yCelII49Mbj0v1rZdKqj7zCiYdbB0CuCgdrvHcNogAKTFPBocFA==} + engines: {node: '>=18'} + + readable-stream@3.6.2: + resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} + engines: {node: '>= 6'} + + redux-thunk@3.1.0: + resolution: {integrity: sha512-NW2r5T6ksUKXCabzhL9z+h206HQw/NJkcLm1GPImRQ8IzfXwRGqjVhKJGauHirT0DAuyy6hjdnMZaRoAcy0Klw==} + peerDependencies: + redux: ^5.0.0 + + redux@5.0.1: + resolution: {integrity: sha512-M9/ELqF6fy8FwmkpnF0S3YKOqMyoWJ4+CS5Efg2ct3oY9daQvd/Pc71FpGZsVsbl3Cpb+IIcjBDUnnyBdQbq4w==} + + require-directory@2.1.1: + resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} + engines: {node: '>=0.10.0'} + + reselect@5.1.1: + resolution: {integrity: sha512-K/BG6eIky/SBpzfHZv/dd+9JBFiS4SWV7FIujVyJRux6e45+73RaUHXLmIR1f7WOMaQ0U1km6qwklRQxpJJY0w==} + + resolve-pkg-maps@1.0.0: + resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} + + retry-request@7.0.2: + resolution: {integrity: sha512-dUOvLMJ0/JJYEn8NrpOaGNE7X3vpI5XlZS/u0ANjqtcZVKnIxP7IgCFwrKTxENw29emmwug53awKtaMm4i9g5w==} + engines: {node: '>=14'} + + reusify@1.1.0: + resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==} + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + + rollup@4.50.1: + resolution: {integrity: sha512-78E9voJHwnXQMiQdiqswVLZwJIzdBKJ1GdI5Zx6XwoFKUIk09/sSrr+05QFzvYb8q6Y9pPV45zzDuYa3907TZA==} + engines: {node: '>=18.0.0', npm: '>=8.0.0'} + hasBin: true + + rou3@0.5.1: + resolution: {integrity: sha512-OXMmJ3zRk2xeXFGfA3K+EOPHC5u7RDFG7lIOx0X1pdnhUkI8MdVrbV+sNsD80ElpUZ+MRHdyxPnFthq9VHs8uQ==} + + run-parallel@1.2.0: + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + + safe-buffer@5.2.1: + resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + + scheduler@0.26.0: + resolution: {integrity: sha512-NlHwttCI/l5gCPR3D1nNXtWABUmBwvZpEQiD4IXSbIDq8BzLIK/7Ir5gTFSGZDUu37K5cMNp0hFtzO38sC7gWA==} + + semver@6.3.1: + resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} + hasBin: true + + semver@7.7.2: + resolution: {integrity: sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==} + engines: {node: '>=10'} + hasBin: true + + set-cookie-parser@2.7.1: + resolution: {integrity: sha512-IOc8uWeOZgnb3ptbCURJWNjWUPcO3ZnTTdzsurqERrP6nPyv+paC55vJM0LpOlT2ne+Ix+9+CRG1MNLlyZ4GjQ==} + + 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-list@1.0.0: + resolution: {integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==} + engines: {node: '>= 0.4'} + + side-channel-map@1.0.1: + resolution: {integrity: sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==} + engines: {node: '>= 0.4'} + + side-channel-weakmap@1.0.2: + resolution: {integrity: sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==} + engines: {node: '>= 0.4'} + + side-channel@1.1.0: + resolution: {integrity: sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==} + engines: {node: '>= 0.4'} + + siginfo@2.0.0: + resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} + + signal-exit@4.1.0: + resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} + engines: {node: '>=14'} + + slash@5.1.0: + resolution: {integrity: sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==} + engines: {node: '>=14.16'} + + source-map-js@1.2.1: + resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} + engines: {node: '>=0.10.0'} + + spdx-correct@3.2.0: + resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==} + + spdx-exceptions@2.5.0: + resolution: {integrity: sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==} + + spdx-expression-parse@3.0.1: + resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} + + spdx-license-ids@3.0.22: + resolution: {integrity: sha512-4PRT4nh1EImPbt2jASOKHX7PB7I+e4IWNLvkKFDxNhJlfjbYlleYQh285Z/3mPTHSAK/AvdMmw5BNNuYH8ShgQ==} + + ssf@0.11.2: + resolution: {integrity: sha512-+idbmIXoYET47hH+d7dfm2epdOMUDjqcB4648sTZ+t2JwoyBFL/insLfB/racrDmsKB3diwsDA696pZMieAC5g==} + engines: {node: '>=0.8'} + + stackback@0.0.2: + resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} + + std-env@3.9.0: + resolution: {integrity: sha512-UGvjygr6F6tpH7o2qyqR6QYpwraIjKSdtzyBdyytFOHmPZY917kwdwLG0RbOjWOnKmnm3PeHjaoLLMie7kPLQw==} + + stream-events@1.0.5: + resolution: {integrity: sha512-E1GUzBSgvct8Jsb3v2X15pjzN1tYebtbLaMg+eBOUOAxgbLoSbT2NS91ckc5lJD1KfLjId+jXJRgo0qnV5Nerg==} + + stream-shift@1.0.3: + resolution: {integrity: sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ==} + + string-width@4.2.3: + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} + engines: {node: '>=8'} + + string_decoder@1.3.0: + resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} + + strip-ansi@6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} + + strip-final-newline@4.0.0: + resolution: {integrity: sha512-aulFJcD6YK8V1G7iRB5tigAP4TsHBZZrOV8pjV++zdUwmeV8uzbY7yn6h9MswN62adStNZFuCIx4haBnRuMDaw==} + engines: {node: '>=18'} + + strip-literal@3.0.0: + resolution: {integrity: sha512-TcccoMhJOM3OebGhSBEmp3UZ2SfDMZUEBdRA/9ynfLi8yYajyWX3JiXArcJt4Umh4vISpspkQIY8ZZoCqjbviA==} + + stubs@3.0.0: + resolution: {integrity: sha512-PdHt7hHUJKxvTCgbKX9C1V/ftOcjJQgz8BZwNfV5c4B6dcGqlpelTbJ999jBGZ2jYiPAwcX5dP6oBwVlBlUbxw==} + + tabbable@6.2.0: + resolution: {integrity: sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==} + + tailwind-merge@3.3.1: + resolution: {integrity: sha512-gBXpgUm/3rp1lMZZrM/w7D8GKqshif0zAymAhbCyIt8KMe+0v9DQ7cdYLR4FHH/cKpdTXb+A/tKKU3eolfsI+g==} + + tailwindcss@4.1.13: + resolution: {integrity: sha512-i+zidfmTqtwquj4hMEwdjshYYgMbOrPzb9a0M3ZgNa0JMoZeFC6bxZvO8yr8ozS6ix2SDz0+mvryPeBs2TFE+w==} + + tapable@2.2.3: + resolution: {integrity: sha512-ZL6DDuAlRlLGghwcfmSn9sK3Hr6ArtyudlSAiCqQ6IfE+b+HHbydbYDIG15IfS5do+7XQQBdBiubF/cV2dnDzg==} + engines: {node: '>=6'} + + tar@7.4.3: + resolution: {integrity: sha512-5S7Va8hKfV7W5U6g3aYxXmlPoZVAwUMy9AOKyF2fVuZa2UD3qZjg578OrLRt8PcNN1PleVaL/5/yYATNL0ICUw==} + engines: {node: '>=18'} + + teeny-request@9.0.0: + resolution: {integrity: sha512-resvxdc6Mgb7YEThw6G6bExlXKkv6+YbuzGg9xuXxSgxJF7Ozs+o8Y9+2R3sArdWdW8nOokoQb1yrpFB0pQK2g==} + engines: {node: '>=14'} + + tinybench@2.9.0: + resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==} + + tinyexec@0.3.2: + resolution: {integrity: sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==} + + tinyglobby@0.2.15: + resolution: {integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==} + engines: {node: '>=12.0.0'} + + tinypool@1.1.1: + resolution: {integrity: sha512-Zba82s87IFq9A9XmjiX5uZA/ARWDrB03OHlq+Vw1fSdt0I+4/Kutwy8BP4Y/y/aORMo61FQ0vIb5j44vSo5Pkg==} + engines: {node: ^18.0.0 || >=20.0.0} + + tinyrainbow@2.0.0: + resolution: {integrity: sha512-op4nsTR47R6p0vMUUoYl/a+ljLFVtlfaXkLQmqfLR1qHma1h/ysYk4hEXZ880bf2CYgTskvTa/e196Vd5dDQXw==} + engines: {node: '>=14.0.0'} + + tinyspy@4.0.3: + resolution: {integrity: sha512-t2T/WLB2WRgZ9EpE4jgPJ9w+i66UZfDc8wHh0xrwiRNN+UwH98GIJkTeZqX9rg0i0ptwzqW+uYeIF0T4F8LR7A==} + engines: {node: '>=14.0.0'} + + to-regex-range@5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} + + tr46@0.0.3: + resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} + + tsconfck@3.1.6: + resolution: {integrity: sha512-ks6Vjr/jEw0P1gmOVwutM3B7fWxoWBL2KRDb1JfqGVawBmO5UsvmWOQFGHBPl5yxYz4eERr19E6L7NMv+Fej4w==} + engines: {node: ^18 || >=20} + hasBin: true + peerDependencies: + typescript: ^5.0.0 + peerDependenciesMeta: + typescript: + optional: true + + tslib@2.8.1: + resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} + + tsx@4.20.5: + resolution: {integrity: sha512-+wKjMNU9w/EaQayHXb7WA7ZaHY6hN8WgfvHNQ3t1PnU91/7O8TcTnIhCDYTZwnt8JsO9IBqZ30Ln1r7pPF52Aw==} + engines: {node: '>=18.0.0'} + hasBin: true + + tw-animate-css@1.3.8: + resolution: {integrity: sha512-Qrk3PZ7l7wUcGYhwZloqfkWCmaXZAoqjkdbIDvzfGshwGtexa/DAs9koXxIkrpEasyevandomzCBAV1Yyop5rw==} + + type-fest@4.41.0: + resolution: {integrity: sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==} + engines: {node: '>=16'} + + typescript@5.9.2: + resolution: {integrity: sha512-CWBzXQrc/qOkhidw1OzBTQuYRbfyxDXJMVJ1XNwUHGROVmuaeiEm3OslpZ1RV96d7SKKjZKrSJu3+t/xlw3R9A==} + engines: {node: '>=14.17'} + hasBin: true + + uncrypto@0.1.3: + resolution: {integrity: sha512-Ql87qFHB3s/De2ClA9e0gsnS6zXG27SkTiSJwjCc9MebbfapQfuPzumMIUMi38ezPZVNFcHI9sUIepeQfw8J8Q==} + + undici-types@6.21.0: + resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==} + + undici-types@7.10.0: + resolution: {integrity: sha512-t5Fy/nfn+14LuOc2KNYg75vZqClpAiqscVvMygNnlsHBFpSXdJaYtXMcdNLpl/Qvc3P2cB3s6lOV51nqsFq4ag==} + + unicorn-magic@0.1.0: + resolution: {integrity: sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==} + engines: {node: '>=18'} + + unicorn-magic@0.3.0: + resolution: {integrity: sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==} + engines: {node: '>=18'} + + update-browserslist-db@1.1.3: + resolution: {integrity: sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + + use-sync-external-store@1.5.0: + resolution: {integrity: sha512-Rb46I4cGGVBmjamjphe8L/UnvJD+uPPtTkNvX5mZgqdbavhI4EbgIWJiIHXJ8bc/i9EQGPRh4DwEURJ552Do0A==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + + util-deprecate@1.0.2: + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + + uuid@9.0.1: + resolution: {integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==} + hasBin: true + + validate-npm-package-license@3.0.4: + resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} + + vite-node@3.2.4: + resolution: {integrity: sha512-EbKSKh+bh1E1IFxeO0pg1n4dvoOTt0UDiXMd/qn++r98+jPO1xtJilvXldeuQ8giIB5IkpjCgMleHMNEsGH6pg==} + engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} + hasBin: true + + vite-tsconfig-paths@5.1.4: + resolution: {integrity: sha512-cYj0LRuLV2c2sMqhqhGpaO3LretdtMn/BVX4cPLanIZuwwrkVl+lK84E/miEXkCHWXuq65rhNN4rXsBcOB3S4w==} + peerDependencies: + vite: '*' + peerDependenciesMeta: + vite: + optional: true + + vite@7.1.5: + resolution: {integrity: sha512-4cKBO9wR75r0BeIWWWId9XK9Lj6La5X846Zw9dFfzMRw38IlTk2iCcUt6hsyiDRcPidc55ZParFYDXi0nXOeLQ==} + engines: {node: ^20.19.0 || >=22.12.0} + hasBin: true + peerDependencies: + '@types/node': ^20.19.0 || >=22.12.0 + jiti: '>=1.21.0' + less: ^4.0.0 + lightningcss: ^1.21.0 + sass: ^1.70.0 + sass-embedded: ^1.70.0 + stylus: '>=0.54.8' + sugarss: ^5.0.0 + terser: ^5.16.0 + tsx: ^4.8.1 + yaml: ^2.4.2 + peerDependenciesMeta: + '@types/node': + optional: true + jiti: + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + sass-embedded: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + tsx: + optional: true + yaml: + optional: true + + vitest@3.2.4: + resolution: {integrity: sha512-LUCP5ev3GURDysTWiP47wRRUpLKMOfPh+yKTx3kVIEiu5KOMeqzpnYNsKyOoVrULivR8tLcks4+lga33Whn90A==} + engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} + hasBin: true + peerDependencies: + '@edge-runtime/vm': '*' + '@types/debug': ^4.1.12 + '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0 + '@vitest/browser': 3.2.4 + '@vitest/ui': 3.2.4 + happy-dom: '*' + jsdom: '*' + peerDependenciesMeta: + '@edge-runtime/vm': + optional: true + '@types/debug': + optional: true + '@types/node': + optional: true + '@vitest/browser': + optional: true + '@vitest/ui': + optional: true + happy-dom: + optional: true + jsdom: + optional: true + + webidl-conversions@3.0.1: + resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} + + whatwg-mimetype@3.0.0: + resolution: {integrity: sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==} + engines: {node: '>=12'} + + whatwg-url@5.0.0: + resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} + + which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true + + why-is-node-running@2.3.0: + resolution: {integrity: sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==} + engines: {node: '>=8'} + hasBin: true + + wmf@1.0.2: + resolution: {integrity: sha512-/p9K7bEh0Dj6WbXg4JG0xvLQmIadrner1bi45VMJTfnbVHsc7yIajZyoSoK60/dtVBs12Fm6WkUI5/3WAVsNMw==} + engines: {node: '>=0.8'} + + word@0.3.0: + resolution: {integrity: sha512-OELeY0Q61OXpdUfTp+oweA/vtLVg5VDOXh+3he3PNzLGG/y0oylSOC1xRVj0+l4vQ3tj/bB1HVHv1ocXkQceFA==} + engines: {node: '>=0.8'} + + wrap-ansi@7.0.0: + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} + engines: {node: '>=10'} + + wrappy@1.0.2: + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + + xlsx@0.18.5: + resolution: {integrity: sha512-dmg3LCjBPHZnQp5/F/+nnTa+miPJxUXB6vtk42YjBBKayDNagxGEeIdWApkYPOf3Z3pm3k62Knjzp7lMeTEtFQ==} + engines: {node: '>=0.8'} + hasBin: true + + y18n@5.0.8: + resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} + engines: {node: '>=10'} + + yallist@3.1.1: + resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} + + yallist@5.0.0: + resolution: {integrity: sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==} + engines: {node: '>=18'} + + 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'} + + yoctocolors@2.1.2: + resolution: {integrity: sha512-CzhO+pFNo8ajLM2d2IW/R93ipy99LWjtwblvC1RsoSUMZgyLbYFr221TnSNT7GjGdYui6P459mw9JH/g/zW2ug==} + engines: {node: '>=18'} + + zod@4.1.8: + resolution: {integrity: sha512-5R1P+WwQqmmMIEACyzSvo4JXHY5WiAFHRMg+zBZKgKS+Q1viRa0C1hmUKtHltoIFKtIdki3pRxkmpP74jnNYHQ==} + +snapshots: + + '@alloc/quick-lru@5.2.0': {} + + '@babel/code-frame@7.27.1': + dependencies: + '@babel/helper-validator-identifier': 7.27.1 + js-tokens: 4.0.0 + picocolors: 1.1.1 + + '@babel/compat-data@7.28.4': {} + + '@babel/core@7.28.4': + 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/core@7.28.4) + '@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.4.1 + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + '@babel/generator@7.28.3': + dependencies: + '@babel/parser': 7.28.4 + '@babel/types': 7.28.4 + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 + jsesc: 3.1.0 + + '@babel/helper-compilation-targets@7.27.2': + dependencies: + '@babel/compat-data': 7.28.4 + '@babel/helper-validator-option': 7.27.1 + browserslist: 4.25.4 + lru-cache: 5.1.1 + semver: 6.3.1 + + '@babel/helper-globals@7.28.0': {} + + '@babel/helper-module-imports@7.27.1': + dependencies: + '@babel/traverse': 7.28.4 + '@babel/types': 7.28.4 + transitivePeerDependencies: + - supports-color + + '@babel/helper-module-transforms@7.28.3(@babel/core@7.28.4)': + dependencies: + '@babel/core': 7.28.4 + '@babel/helper-module-imports': 7.27.1 + '@babel/helper-validator-identifier': 7.27.1 + '@babel/traverse': 7.28.4 + transitivePeerDependencies: + - supports-color + + '@babel/helper-plugin-utils@7.27.1': {} + + '@babel/helper-string-parser@7.27.1': {} + + '@babel/helper-validator-identifier@7.27.1': {} + + '@babel/helper-validator-option@7.27.1': {} + + '@babel/helpers@7.28.4': + dependencies: + '@babel/template': 7.27.2 + '@babel/types': 7.28.4 + + '@babel/parser@7.28.4': + dependencies: + '@babel/types': 7.28.4 + + '@babel/plugin-transform-react-jsx-self@7.27.1(@babel/core@7.28.4)': + dependencies: + '@babel/core': 7.28.4 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-react-jsx-source@7.27.1(@babel/core@7.28.4)': + dependencies: + '@babel/core': 7.28.4 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/runtime@7.28.4': {} + + '@babel/template@7.27.2': + dependencies: + '@babel/code-frame': 7.27.1 + '@babel/parser': 7.28.4 + '@babel/types': 7.28.4 + + '@babel/traverse@7.28.4': + 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.4.1 + transitivePeerDependencies: + - supports-color + + '@babel/types@7.28.4': + dependencies: + '@babel/helper-string-parser': 7.27.1 + '@babel/helper-validator-identifier': 7.27.1 + + '@better-auth/utils@0.2.6': + dependencies: + uncrypto: 0.1.3 + + '@better-fetch/fetch@1.1.18': {} + + '@esbuild/aix-ppc64@0.23.1': + optional: true + + '@esbuild/aix-ppc64@0.24.2': + optional: true + + '@esbuild/aix-ppc64@0.25.9': + optional: true + + '@esbuild/android-arm64@0.23.1': + optional: true + + '@esbuild/android-arm64@0.24.2': + optional: true + + '@esbuild/android-arm64@0.25.9': + optional: true + + '@esbuild/android-arm@0.23.1': + optional: true + + '@esbuild/android-arm@0.24.2': + optional: true + + '@esbuild/android-arm@0.25.9': + optional: true + + '@esbuild/android-x64@0.23.1': + optional: true + + '@esbuild/android-x64@0.24.2': + optional: true + + '@esbuild/android-x64@0.25.9': + optional: true + + '@esbuild/darwin-arm64@0.23.1': + optional: true + + '@esbuild/darwin-arm64@0.24.2': + optional: true + + '@esbuild/darwin-arm64@0.25.9': + optional: true + + '@esbuild/darwin-x64@0.23.1': + optional: true + + '@esbuild/darwin-x64@0.24.2': + optional: true + + '@esbuild/darwin-x64@0.25.9': + optional: true + + '@esbuild/freebsd-arm64@0.23.1': + optional: true + + '@esbuild/freebsd-arm64@0.24.2': + optional: true + + '@esbuild/freebsd-arm64@0.25.9': + optional: true + + '@esbuild/freebsd-x64@0.23.1': + optional: true + + '@esbuild/freebsd-x64@0.24.2': + optional: true + + '@esbuild/freebsd-x64@0.25.9': + optional: true + + '@esbuild/linux-arm64@0.23.1': + optional: true + + '@esbuild/linux-arm64@0.24.2': + optional: true + + '@esbuild/linux-arm64@0.25.9': + optional: true + + '@esbuild/linux-arm@0.23.1': + optional: true + + '@esbuild/linux-arm@0.24.2': + optional: true + + '@esbuild/linux-arm@0.25.9': + optional: true + + '@esbuild/linux-ia32@0.23.1': + optional: true + + '@esbuild/linux-ia32@0.24.2': + optional: true + + '@esbuild/linux-ia32@0.25.9': + optional: true + + '@esbuild/linux-loong64@0.23.1': + optional: true + + '@esbuild/linux-loong64@0.24.2': + optional: true + + '@esbuild/linux-loong64@0.25.9': + optional: true + + '@esbuild/linux-mips64el@0.23.1': + optional: true + + '@esbuild/linux-mips64el@0.24.2': + optional: true + + '@esbuild/linux-mips64el@0.25.9': + optional: true + + '@esbuild/linux-ppc64@0.23.1': + optional: true + + '@esbuild/linux-ppc64@0.24.2': + optional: true + + '@esbuild/linux-ppc64@0.25.9': + optional: true + + '@esbuild/linux-riscv64@0.23.1': + optional: true + + '@esbuild/linux-riscv64@0.24.2': + optional: true + + '@esbuild/linux-riscv64@0.25.9': + optional: true + + '@esbuild/linux-s390x@0.23.1': + optional: true + + '@esbuild/linux-s390x@0.24.2': + optional: true + + '@esbuild/linux-s390x@0.25.9': + optional: true + + '@esbuild/linux-x64@0.23.1': + optional: true + + '@esbuild/linux-x64@0.24.2': + optional: true + + '@esbuild/linux-x64@0.25.9': + optional: true + + '@esbuild/netbsd-arm64@0.24.2': + optional: true + + '@esbuild/netbsd-arm64@0.25.9': + optional: true + + '@esbuild/netbsd-x64@0.23.1': + optional: true + + '@esbuild/netbsd-x64@0.24.2': + optional: true + + '@esbuild/netbsd-x64@0.25.9': + optional: true + + '@esbuild/openbsd-arm64@0.23.1': + optional: true + + '@esbuild/openbsd-arm64@0.24.2': + optional: true + + '@esbuild/openbsd-arm64@0.25.9': + optional: true + + '@esbuild/openbsd-x64@0.23.1': + optional: true + + '@esbuild/openbsd-x64@0.24.2': + optional: true + + '@esbuild/openbsd-x64@0.25.9': + optional: true + + '@esbuild/openharmony-arm64@0.25.9': + optional: true + + '@esbuild/sunos-x64@0.23.1': + optional: true + + '@esbuild/sunos-x64@0.24.2': + optional: true + + '@esbuild/sunos-x64@0.25.9': + optional: true + + '@esbuild/win32-arm64@0.23.1': + optional: true + + '@esbuild/win32-arm64@0.24.2': + optional: true + + '@esbuild/win32-arm64@0.25.9': + optional: true + + '@esbuild/win32-ia32@0.23.1': + optional: true + + '@esbuild/win32-ia32@0.24.2': + optional: true + + '@esbuild/win32-ia32@0.25.9': + optional: true + + '@esbuild/win32-x64@0.23.1': + optional: true + + '@esbuild/win32-x64@0.24.2': + optional: true + + '@esbuild/win32-x64@0.25.9': + optional: true + + '@floating-ui/core@1.7.3': + dependencies: + '@floating-ui/utils': 0.2.10 + + '@floating-ui/dom@1.7.4': + dependencies: + '@floating-ui/core': 1.7.3 + '@floating-ui/utils': 0.2.10 + + '@floating-ui/react-dom@2.1.6(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': + dependencies: + '@floating-ui/dom': 1.7.4 + react: 19.1.1 + react-dom: 19.1.1(react@19.1.1) + + '@floating-ui/react@0.26.28(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': + dependencies: + '@floating-ui/react-dom': 2.1.6(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@floating-ui/utils': 0.2.10 + react: 19.1.1 + react-dom: 19.1.1(react@19.1.1) + tabbable: 6.2.0 + + '@floating-ui/utils@0.2.10': {} + + '@google-cloud/secret-manager@5.6.0': + dependencies: + google-gax: 4.6.1 + transitivePeerDependencies: + - encoding + - supports-color + + '@grpc/grpc-js@1.13.4': + dependencies: + '@grpc/proto-loader': 0.7.15 + '@js-sdsl/ordered-map': 4.4.2 + + '@grpc/proto-loader@0.7.15': + dependencies: + lodash.camelcase: 4.3.0 + long: 5.3.2 + protobufjs: 7.5.4 + yargs: 17.7.2 + + '@headlessui/react@2.2.7(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': + dependencies: + '@floating-ui/react': 0.26.28(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-aria/focus': 3.21.1(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-aria/interactions': 3.25.5(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@tanstack/react-virtual': 3.13.12(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + react: 19.1.1 + react-dom: 19.1.1(react@19.1.1) + use-sync-external-store: 1.5.0(react@19.1.1) + + '@heroicons/react@2.2.0(react@19.1.1)': + dependencies: + react: 19.1.1 + + '@hexagon/base64@1.1.28': {} + + '@hookform/error-message@2.0.1(react-dom@19.1.1(react@19.1.1))(react-hook-form@7.62.0(react@19.1.1))(react@19.1.1)': + dependencies: + react: 19.1.1 + react-dom: 19.1.1(react@19.1.1) + react-hook-form: 7.62.0(react@19.1.1) + + '@hookform/resolvers@5.2.1(react-hook-form@7.62.0(react@19.1.1))': + dependencies: + '@standard-schema/utils': 0.3.0 + react-hook-form: 7.62.0(react@19.1.1) + + '@isaacs/fs-minipass@4.0.1': + dependencies: + minipass: 7.1.2 + + '@jridgewell/gen-mapping@0.3.13': + dependencies: + '@jridgewell/sourcemap-codec': 1.5.5 + '@jridgewell/trace-mapping': 0.3.31 + + '@jridgewell/remapping@2.3.5': + dependencies: + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 + + '@jridgewell/resolve-uri@3.1.2': {} + + '@jridgewell/sourcemap-codec@1.5.5': {} + + '@jridgewell/trace-mapping@0.3.31': + dependencies: + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.5.5 + + '@js-sdsl/ordered-map@4.4.2': {} + + '@levischuck/tiny-cbor@0.2.11': {} + + '@noble/ciphers@2.0.0': {} + + '@noble/hashes@2.0.0': {} + + '@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.19.1 + + '@peculiar/asn1-android@2.5.0': + dependencies: + '@peculiar/asn1-schema': 2.5.0 + asn1js: 3.0.6 + tslib: 2.8.1 + + '@peculiar/asn1-ecc@2.5.0': + dependencies: + '@peculiar/asn1-schema': 2.5.0 + '@peculiar/asn1-x509': 2.5.0 + asn1js: 3.0.6 + tslib: 2.8.1 + + '@peculiar/asn1-rsa@2.5.0': + dependencies: + '@peculiar/asn1-schema': 2.5.0 + '@peculiar/asn1-x509': 2.5.0 + asn1js: 3.0.6 + tslib: 2.8.1 + + '@peculiar/asn1-schema@2.5.0': + dependencies: + asn1js: 3.0.6 + pvtsutils: 1.3.6 + tslib: 2.8.1 + + '@peculiar/asn1-x509@2.5.0': + dependencies: + '@peculiar/asn1-schema': 2.5.0 + asn1js: 3.0.6 + pvtsutils: 1.3.6 + tslib: 2.8.1 + + '@protobufjs/aspromise@1.1.2': {} + + '@protobufjs/base64@1.1.2': {} + + '@protobufjs/codegen@2.0.4': {} + + '@protobufjs/eventemitter@1.1.0': {} + + '@protobufjs/fetch@1.1.0': + dependencies: + '@protobufjs/aspromise': 1.1.2 + '@protobufjs/inquire': 1.1.0 + + '@protobufjs/float@1.0.2': {} + + '@protobufjs/inquire@1.1.0': {} + + '@protobufjs/path@1.1.2': {} + + '@protobufjs/pool@1.1.0': {} + + '@protobufjs/utf8@1.1.0': {} + + '@react-aria/focus@3.21.1(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': + dependencies: + '@react-aria/interactions': 3.25.5(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-aria/utils': 3.30.1(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-types/shared': 3.32.0(react@19.1.1) + '@swc/helpers': 0.5.17 + clsx: 2.1.1 + react: 19.1.1 + react-dom: 19.1.1(react@19.1.1) + + '@react-aria/interactions@3.25.5(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': + dependencies: + '@react-aria/ssr': 3.9.10(react@19.1.1) + '@react-aria/utils': 3.30.1(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-stately/flags': 3.1.2 + '@react-types/shared': 3.32.0(react@19.1.1) + '@swc/helpers': 0.5.17 + react: 19.1.1 + react-dom: 19.1.1(react@19.1.1) + + '@react-aria/ssr@3.9.10(react@19.1.1)': + dependencies: + '@swc/helpers': 0.5.17 + react: 19.1.1 + + '@react-aria/utils@3.30.1(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': + dependencies: + '@react-aria/ssr': 3.9.10(react@19.1.1) + '@react-stately/flags': 3.1.2 + '@react-stately/utils': 3.10.8(react@19.1.1) + '@react-types/shared': 3.32.0(react@19.1.1) + '@swc/helpers': 0.5.17 + clsx: 2.1.1 + react: 19.1.1 + react-dom: 19.1.1(react@19.1.1) + + '@react-stately/flags@3.1.2': + dependencies: + '@swc/helpers': 0.5.17 + + '@react-stately/utils@3.10.8(react@19.1.1)': + dependencies: + '@swc/helpers': 0.5.17 + react: 19.1.1 + + '@react-types/shared@3.32.0(react@19.1.1)': + dependencies: + react: 19.1.1 + + '@reduxjs/toolkit@2.9.0(react-redux@9.2.0(@types/react@19.1.12)(react@19.1.1)(redux@5.0.1))(react@19.1.1)': + dependencies: + '@standard-schema/spec': 1.0.0 + '@standard-schema/utils': 0.3.0 + immer: 10.1.3 + redux: 5.0.1 + redux-thunk: 3.1.0(redux@5.0.1) + reselect: 5.1.1 + optionalDependencies: + react: 19.1.1 + react-redux: 9.2.0(@types/react@19.1.12)(react@19.1.1)(redux@5.0.1) + + '@rolldown/pluginutils@1.0.0-beta.32': {} + + '@rolldown/pluginutils@1.0.0-beta.34': {} + + '@rollup/rollup-android-arm-eabi@4.50.1': + optional: true + + '@rollup/rollup-android-arm64@4.50.1': + optional: true + + '@rollup/rollup-darwin-arm64@4.50.1': + optional: true + + '@rollup/rollup-darwin-x64@4.50.1': + optional: true + + '@rollup/rollup-freebsd-arm64@4.50.1': + optional: true + + '@rollup/rollup-freebsd-x64@4.50.1': + optional: true + + '@rollup/rollup-linux-arm-gnueabihf@4.50.1': + optional: true + + '@rollup/rollup-linux-arm-musleabihf@4.50.1': + optional: true + + '@rollup/rollup-linux-arm64-gnu@4.50.1': + optional: true + + '@rollup/rollup-linux-arm64-musl@4.50.1': + optional: true + + '@rollup/rollup-linux-loongarch64-gnu@4.50.1': + optional: true + + '@rollup/rollup-linux-ppc64-gnu@4.50.1': + optional: true + + '@rollup/rollup-linux-riscv64-gnu@4.50.1': + optional: true + + '@rollup/rollup-linux-riscv64-musl@4.50.1': + optional: true + + '@rollup/rollup-linux-s390x-gnu@4.50.1': + optional: true + + '@rollup/rollup-linux-x64-gnu@4.50.1': + optional: true + + '@rollup/rollup-linux-x64-musl@4.50.1': + optional: true + + '@rollup/rollup-openharmony-arm64@4.50.1': + optional: true + + '@rollup/rollup-win32-arm64-msvc@4.50.1': + optional: true + + '@rollup/rollup-win32-ia32-msvc@4.50.1': + optional: true + + '@rollup/rollup-win32-x64-msvc@4.50.1': + optional: true + + '@sec-ant/readable-stream@0.4.1': {} + + '@simplewebauthn/browser@13.1.2': {} + + '@simplewebauthn/server@13.1.2': + dependencies: + '@hexagon/base64': 1.1.28 + '@levischuck/tiny-cbor': 0.2.11 + '@peculiar/asn1-android': 2.5.0 + '@peculiar/asn1-ecc': 2.5.0 + '@peculiar/asn1-rsa': 2.5.0 + '@peculiar/asn1-schema': 2.5.0 + '@peculiar/asn1-x509': 2.5.0 + + '@sindresorhus/merge-streams@2.3.0': {} + + '@sindresorhus/merge-streams@4.0.0': {} + + '@standard-schema/spec@1.0.0': {} + + '@standard-schema/utils@0.3.0': {} + + '@swc/core-darwin-arm64@1.13.5': + optional: true + + '@swc/core-darwin-x64@1.13.5': + optional: true + + '@swc/core-linux-arm-gnueabihf@1.13.5': + optional: true + + '@swc/core-linux-arm64-gnu@1.13.5': + optional: true + + '@swc/core-linux-arm64-musl@1.13.5': + optional: true + + '@swc/core-linux-x64-gnu@1.13.5': + optional: true + + '@swc/core-linux-x64-musl@1.13.5': + optional: true + + '@swc/core-win32-arm64-msvc@1.13.5': + optional: true + + '@swc/core-win32-ia32-msvc@1.13.5': + optional: true + + '@swc/core-win32-x64-msvc@1.13.5': + optional: true + + '@swc/core@1.13.5(@swc/helpers@0.5.17)': + dependencies: + '@swc/counter': 0.1.3 + '@swc/types': 0.1.25 + optionalDependencies: + '@swc/core-darwin-arm64': 1.13.5 + '@swc/core-darwin-x64': 1.13.5 + '@swc/core-linux-arm-gnueabihf': 1.13.5 + '@swc/core-linux-arm64-gnu': 1.13.5 + '@swc/core-linux-arm64-musl': 1.13.5 + '@swc/core-linux-x64-gnu': 1.13.5 + '@swc/core-linux-x64-musl': 1.13.5 + '@swc/core-win32-arm64-msvc': 1.13.5 + '@swc/core-win32-ia32-msvc': 1.13.5 + '@swc/core-win32-x64-msvc': 1.13.5 + '@swc/helpers': 0.5.17 + + '@swc/counter@0.1.3': {} + + '@swc/helpers@0.5.17': + dependencies: + tslib: 2.8.1 + + '@swc/types@0.1.25': + dependencies: + '@swc/counter': 0.1.3 + + '@tailwindcss/node@4.1.13': + dependencies: + '@jridgewell/remapping': 2.3.5 + enhanced-resolve: 5.18.3 + jiti: 2.5.1 + lightningcss: 1.30.1 + magic-string: 0.30.19 + source-map-js: 1.2.1 + tailwindcss: 4.1.13 + + '@tailwindcss/oxide-android-arm64@4.1.13': + optional: true + + '@tailwindcss/oxide-darwin-arm64@4.1.13': + optional: true + + '@tailwindcss/oxide-darwin-x64@4.1.13': + optional: true + + '@tailwindcss/oxide-freebsd-x64@4.1.13': + optional: true + + '@tailwindcss/oxide-linux-arm-gnueabihf@4.1.13': + optional: true + + '@tailwindcss/oxide-linux-arm64-gnu@4.1.13': + optional: true + + '@tailwindcss/oxide-linux-arm64-musl@4.1.13': + optional: true + + '@tailwindcss/oxide-linux-x64-gnu@4.1.13': + optional: true + + '@tailwindcss/oxide-linux-x64-musl@4.1.13': + optional: true + + '@tailwindcss/oxide-wasm32-wasi@4.1.13': + optional: true + + '@tailwindcss/oxide-win32-arm64-msvc@4.1.13': + optional: true + + '@tailwindcss/oxide-win32-x64-msvc@4.1.13': + optional: true + + '@tailwindcss/oxide@4.1.13': + dependencies: + detect-libc: 2.0.4 + tar: 7.4.3 + optionalDependencies: + '@tailwindcss/oxide-android-arm64': 4.1.13 + '@tailwindcss/oxide-darwin-arm64': 4.1.13 + '@tailwindcss/oxide-darwin-x64': 4.1.13 + '@tailwindcss/oxide-freebsd-x64': 4.1.13 + '@tailwindcss/oxide-linux-arm-gnueabihf': 4.1.13 + '@tailwindcss/oxide-linux-arm64-gnu': 4.1.13 + '@tailwindcss/oxide-linux-arm64-musl': 4.1.13 + '@tailwindcss/oxide-linux-x64-gnu': 4.1.13 + '@tailwindcss/oxide-linux-x64-musl': 4.1.13 + '@tailwindcss/oxide-wasm32-wasi': 4.1.13 + '@tailwindcss/oxide-win32-arm64-msvc': 4.1.13 + '@tailwindcss/oxide-win32-x64-msvc': 4.1.13 + + '@tailwindcss/postcss@4.1.13': + dependencies: + '@alloc/quick-lru': 5.2.0 + '@tailwindcss/node': 4.1.13 + '@tailwindcss/oxide': 4.1.13 + postcss: 8.5.6 + tailwindcss: 4.1.13 + + '@tanstack/react-virtual@3.13.12(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': + dependencies: + '@tanstack/virtual-core': 3.13.12 + react: 19.1.1 + react-dom: 19.1.1(react@19.1.1) + + '@tanstack/virtual-core@3.13.12': {} + + '@tootallnate/once@2.0.0': {} + + '@types/babel__core@7.20.5': + dependencies: + '@babel/parser': 7.28.4 + '@babel/types': 7.28.4 + '@types/babel__generator': 7.27.0 + '@types/babel__template': 7.4.4 + '@types/babel__traverse': 7.28.0 + + '@types/babel__generator@7.27.0': + dependencies: + '@babel/types': 7.28.4 + + '@types/babel__template@7.4.4': + dependencies: + '@babel/parser': 7.28.4 + '@babel/types': 7.28.4 + + '@types/babel__traverse@7.28.0': + dependencies: + '@babel/types': 7.28.4 + + '@types/caseless@0.12.5': {} + + '@types/chai@5.2.2': + dependencies: + '@types/deep-eql': 4.0.2 + + '@types/deep-eql@4.0.2': {} + + '@types/estree@1.0.8': {} + + '@types/js-cookie@3.0.6': {} + + '@types/long@4.0.2': {} + + '@types/node@20.19.13': + dependencies: + undici-types: 6.21.0 + + '@types/node@24.3.1': + dependencies: + undici-types: 7.10.0 + + '@types/normalize-package-data@2.4.4': {} + + '@types/qs@6.14.0': {} + + '@types/react-dom@19.1.9(@types/react@19.1.12)': + dependencies: + '@types/react': 19.1.12 + + '@types/react@19.1.12': + dependencies: + csstype: 3.1.3 + + '@types/request@2.48.13': + dependencies: + '@types/caseless': 0.12.5 + '@types/node': 24.3.1 + '@types/tough-cookie': 4.0.5 + form-data: 2.5.5 + + '@types/tough-cookie@4.0.5': {} + + '@types/use-sync-external-store@0.0.6': {} + + '@types/whatwg-mimetype@3.0.2': {} + + '@vitejs/plugin-react-swc@4.0.1(@swc/helpers@0.5.17)(vite@7.1.5(@types/node@24.3.1)(jiti@2.5.1)(lightningcss@1.30.1)(tsx@4.20.5))': + dependencies: + '@rolldown/pluginutils': 1.0.0-beta.32 + '@swc/core': 1.13.5(@swc/helpers@0.5.17) + vite: 7.1.5(@types/node@24.3.1)(jiti@2.5.1)(lightningcss@1.30.1)(tsx@4.20.5) + transitivePeerDependencies: + - '@swc/helpers' + + '@vitejs/plugin-react@5.0.2(vite@7.1.5(@types/node@24.3.1)(jiti@2.5.1)(lightningcss@1.30.1)(tsx@4.20.5))': + dependencies: + '@babel/core': 7.28.4 + '@babel/plugin-transform-react-jsx-self': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-react-jsx-source': 7.27.1(@babel/core@7.28.4) + '@rolldown/pluginutils': 1.0.0-beta.34 + '@types/babel__core': 7.20.5 + react-refresh: 0.17.0 + vite: 7.1.5(@types/node@24.3.1)(jiti@2.5.1)(lightningcss@1.30.1)(tsx@4.20.5) + transitivePeerDependencies: + - supports-color + + '@vitest/expect@3.2.4': + dependencies: + '@types/chai': 5.2.2 + '@vitest/spy': 3.2.4 + '@vitest/utils': 3.2.4 + chai: 5.3.3 + tinyrainbow: 2.0.0 + + '@vitest/mocker@3.2.4(vite@7.1.5(@types/node@24.3.1)(jiti@2.5.1)(lightningcss@1.30.1)(tsx@4.20.5))': + dependencies: + '@vitest/spy': 3.2.4 + estree-walker: 3.0.3 + magic-string: 0.30.19 + optionalDependencies: + vite: 7.1.5(@types/node@24.3.1)(jiti@2.5.1)(lightningcss@1.30.1)(tsx@4.20.5) + + '@vitest/pretty-format@3.2.4': + dependencies: + tinyrainbow: 2.0.0 + + '@vitest/runner@3.2.4': + dependencies: + '@vitest/utils': 3.2.4 + pathe: 2.0.3 + strip-literal: 3.0.0 + + '@vitest/snapshot@3.2.4': + dependencies: + '@vitest/pretty-format': 3.2.4 + magic-string: 0.30.19 + pathe: 2.0.3 + + '@vitest/spy@3.2.4': + dependencies: + tinyspy: 4.0.3 + + '@vitest/utils@3.2.4': + dependencies: + '@vitest/pretty-format': 3.2.4 + loupe: 3.2.1 + tinyrainbow: 2.0.0 + + abort-controller@3.0.0: + dependencies: + event-target-shim: 5.0.1 + + adler-32@1.3.1: {} + + agent-base@6.0.2: + dependencies: + debug: 4.4.1 + transitivePeerDependencies: + - supports-color + + agent-base@7.1.4: {} + + ansi-regex@5.0.1: {} + + ansi-styles@4.3.0: + dependencies: + color-convert: 2.0.1 + + asn1js@3.0.6: + dependencies: + pvtsutils: 1.3.6 + pvutils: 1.1.3 + tslib: 2.8.1 + + assertion-error@2.0.1: {} + + asynckit@0.4.0: {} + + autoprefixer@10.4.21(postcss@8.5.6): + dependencies: + browserslist: 4.25.4 + caniuse-lite: 1.0.30001741 + fraction.js: 4.3.7 + normalize-range: 0.1.2 + picocolors: 1.1.1 + postcss: 8.5.6 + postcss-value-parser: 4.2.0 + + base64-js@1.5.1: {} + + better-auth@1.3.9(react-dom@19.1.1(react@19.1.1))(react@19.1.1): + dependencies: + '@better-auth/utils': 0.2.6 + '@better-fetch/fetch': 1.1.18 + '@noble/ciphers': 2.0.0 + '@noble/hashes': 2.0.0 + '@simplewebauthn/browser': 13.1.2 + '@simplewebauthn/server': 13.1.2 + better-call: 1.0.18 + defu: 6.1.4 + jose: 6.1.0 + kysely: 0.28.5 + nanostores: 0.11.4 + zod: 4.1.8 + optionalDependencies: + react: 19.1.1 + react-dom: 19.1.1(react@19.1.1) + + better-call@1.0.18: + dependencies: + '@better-fetch/fetch': 1.1.18 + rou3: 0.5.1 + set-cookie-parser: 2.7.1 + uncrypto: 0.1.3 + + bignumber.js@9.3.1: {} + + braces@3.0.3: + dependencies: + fill-range: 7.1.1 + + browserslist@4.25.4: + dependencies: + caniuse-lite: 1.0.30001741 + electron-to-chromium: 1.5.218 + node-releases: 2.0.20 + update-browserslist-db: 1.1.3(browserslist@4.25.4) + + buffer-equal-constant-time@1.0.1: {} + + cac@6.7.14: {} + + call-bind-apply-helpers@1.0.2: + dependencies: + es-errors: 1.3.0 + function-bind: 1.1.2 + + call-bound@1.0.4: + dependencies: + call-bind-apply-helpers: 1.0.2 + get-intrinsic: 1.3.0 + + callsites@4.2.0: {} + + caniuse-lite@1.0.30001741: {} + + cfb@1.2.2: + dependencies: + adler-32: 1.3.1 + crc-32: 1.2.2 + + chai@5.3.3: + dependencies: + assertion-error: 2.0.1 + check-error: 2.1.1 + deep-eql: 5.0.2 + loupe: 3.2.1 + pathval: 2.0.1 + + check-error@2.1.1: {} + + chownr@3.0.0: {} + + class-variance-authority@0.7.1: + dependencies: + clsx: 2.1.1 + + cliui@8.0.1: + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 7.0.0 + + clsx@1.2.1: {} + + clsx@2.1.1: {} + + codepage@1.15.0: {} + + color-convert@2.0.1: + dependencies: + color-name: 1.1.4 + + color-name@1.1.4: {} + + combined-stream@1.0.8: + dependencies: + delayed-stream: 1.0.0 + + convert-source-map@2.0.0: {} + + cookie@1.0.2: {} + + core-js@3.45.1: {} + + crc-32@1.2.2: {} + + cross-spawn@7.0.6: + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + + csstype@3.1.3: {} + + debug@4.4.1: + dependencies: + ms: 2.1.3 + + deep-eql@5.0.2: {} + + defu@6.1.4: {} + + delayed-stream@1.0.0: {} + + detect-libc@2.0.4: {} + + dotenv-expand@12.0.3: + dependencies: + dotenv: 16.6.1 + + dotenv@16.6.1: {} + + dunder-proto@1.0.1: + dependencies: + call-bind-apply-helpers: 1.0.2 + es-errors: 1.3.0 + gopd: 1.2.0 + + duplexify@4.1.3: + dependencies: + end-of-stream: 1.4.5 + inherits: 2.0.4 + readable-stream: 3.6.2 + stream-shift: 1.0.3 + + ecdsa-sig-formatter@1.0.11: + dependencies: + safe-buffer: 5.2.1 + + electron-to-chromium@1.5.218: {} + + emoji-regex@8.0.0: {} + + end-of-stream@1.4.5: + dependencies: + once: 1.4.0 + + enhanced-resolve@5.18.3: + dependencies: + graceful-fs: 4.2.11 + tapable: 2.2.3 + + envars@1.1.1: + dependencies: + '@google-cloud/secret-manager': 5.6.0 + dotenv: 16.6.1 + dotenv-expand: 12.0.3 + esbuild: 0.24.2 + module-from-string: 3.3.1 + parent-module: 3.1.0 + read-pkg-up: 11.0.0 + transitivePeerDependencies: + - encoding + - supports-color + + es-define-property@1.0.1: {} + + es-errors@1.3.0: {} + + es-module-lexer@1.7.0: {} + + es-object-atoms@1.1.1: + dependencies: + es-errors: 1.3.0 + + es-set-tostringtag@2.1.0: + dependencies: + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + has-tostringtag: 1.0.2 + hasown: 2.0.2 + + 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 + + esbuild@0.24.2: + optionalDependencies: + '@esbuild/aix-ppc64': 0.24.2 + '@esbuild/android-arm': 0.24.2 + '@esbuild/android-arm64': 0.24.2 + '@esbuild/android-x64': 0.24.2 + '@esbuild/darwin-arm64': 0.24.2 + '@esbuild/darwin-x64': 0.24.2 + '@esbuild/freebsd-arm64': 0.24.2 + '@esbuild/freebsd-x64': 0.24.2 + '@esbuild/linux-arm': 0.24.2 + '@esbuild/linux-arm64': 0.24.2 + '@esbuild/linux-ia32': 0.24.2 + '@esbuild/linux-loong64': 0.24.2 + '@esbuild/linux-mips64el': 0.24.2 + '@esbuild/linux-ppc64': 0.24.2 + '@esbuild/linux-riscv64': 0.24.2 + '@esbuild/linux-s390x': 0.24.2 + '@esbuild/linux-x64': 0.24.2 + '@esbuild/netbsd-arm64': 0.24.2 + '@esbuild/netbsd-x64': 0.24.2 + '@esbuild/openbsd-arm64': 0.24.2 + '@esbuild/openbsd-x64': 0.24.2 + '@esbuild/sunos-x64': 0.24.2 + '@esbuild/win32-arm64': 0.24.2 + '@esbuild/win32-ia32': 0.24.2 + '@esbuild/win32-x64': 0.24.2 + + esbuild@0.25.9: + 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 + + escalade@3.2.0: {} + + estree-walker@3.0.3: + dependencies: + '@types/estree': 1.0.8 + + event-target-shim@5.0.1: {} + + execa@9.6.0: + dependencies: + '@sindresorhus/merge-streams': 4.0.0 + cross-spawn: 7.0.6 + figures: 6.1.0 + get-stream: 9.0.1 + human-signals: 8.0.1 + is-plain-obj: 4.1.0 + is-stream: 4.0.1 + npm-run-path: 6.0.0 + pretty-ms: 9.2.0 + signal-exit: 4.1.0 + strip-final-newline: 4.0.0 + yoctocolors: 2.1.2 + + expect-type@1.2.2: {} + + extend@3.0.2: {} + + fast-glob@3.3.3: + 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 + + fastq@1.19.1: + dependencies: + reusify: 1.1.0 + + fdir@6.5.0(picomatch@4.0.3): + optionalDependencies: + picomatch: 4.0.3 + + figures@6.1.0: + dependencies: + is-unicode-supported: 2.1.0 + + fill-range@7.1.1: + dependencies: + to-regex-range: 5.0.1 + + find-up-simple@1.0.1: {} + + form-data@2.5.5: + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + es-set-tostringtag: 2.1.0 + hasown: 2.0.2 + mime-types: 2.1.35 + safe-buffer: 5.2.1 + + frac@1.1.2: {} + + fraction.js@4.3.7: {} + + fsevents@2.3.3: + optional: true + + function-bind@1.1.2: {} + + gaxios@6.7.1: + dependencies: + extend: 3.0.2 + https-proxy-agent: 7.0.6 + is-stream: 2.0.1 + node-fetch: 2.7.0 + uuid: 9.0.1 + transitivePeerDependencies: + - encoding + - supports-color + + gcp-metadata@6.1.1: + dependencies: + gaxios: 6.7.1 + google-logging-utils: 0.0.2 + json-bigint: 1.0.0 + transitivePeerDependencies: + - encoding + - supports-color + + gensync@1.0.0-beta.2: {} + + get-caller-file@2.0.5: {} + + get-intrinsic@1.3.0: + 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 + + get-proto@1.0.1: + dependencies: + dunder-proto: 1.0.1 + es-object-atoms: 1.1.1 + + get-stream@9.0.1: + dependencies: + '@sec-ant/readable-stream': 0.4.1 + is-stream: 4.0.1 + + get-tsconfig@4.10.1: + dependencies: + resolve-pkg-maps: 1.0.0 + optional: true + + glob-parent@5.1.2: + dependencies: + is-glob: 4.0.3 + + globby@14.1.0: + dependencies: + '@sindresorhus/merge-streams': 2.3.0 + fast-glob: 3.3.3 + ignore: 7.0.5 + path-type: 6.0.0 + slash: 5.1.0 + unicorn-magic: 0.3.0 + + globrex@0.1.2: {} + + google-auth-library@9.15.1: + dependencies: + base64-js: 1.5.1 + ecdsa-sig-formatter: 1.0.11 + gaxios: 6.7.1 + gcp-metadata: 6.1.1 + gtoken: 7.1.0 + jws: 4.0.0 + transitivePeerDependencies: + - encoding + - supports-color + + google-gax@4.6.1: + dependencies: + '@grpc/grpc-js': 1.13.4 + '@grpc/proto-loader': 0.7.15 + '@types/long': 4.0.2 + abort-controller: 3.0.0 + duplexify: 4.1.3 + google-auth-library: 9.15.1 + node-fetch: 2.7.0 + object-hash: 3.0.0 + proto3-json-serializer: 2.0.2 + protobufjs: 7.5.4 + retry-request: 7.0.2 + uuid: 9.0.1 + transitivePeerDependencies: + - encoding + - supports-color + + google-logging-utils@0.0.2: {} + + gopd@1.2.0: {} + + graceful-fs@4.2.11: {} + + gtoken@7.1.0: + dependencies: + gaxios: 6.7.1 + jws: 4.0.0 + transitivePeerDependencies: + - encoding + - supports-color + + happy-dom@18.0.1: + dependencies: + '@types/node': 20.19.13 + '@types/whatwg-mimetype': 3.0.2 + whatwg-mimetype: 3.0.0 + + has-symbols@1.1.0: {} + + has-tostringtag@1.0.2: + dependencies: + has-symbols: 1.1.0 + + hasown@2.0.2: + dependencies: + function-bind: 1.1.2 + + hosted-git-info@7.0.2: + dependencies: + lru-cache: 10.4.3 + + http-proxy-agent@5.0.0: + dependencies: + '@tootallnate/once': 2.0.0 + agent-base: 6.0.2 + debug: 4.4.1 + transitivePeerDependencies: + - supports-color + + https-proxy-agent@5.0.1: + dependencies: + agent-base: 6.0.2 + debug: 4.4.1 + transitivePeerDependencies: + - supports-color + + https-proxy-agent@7.0.6: + dependencies: + agent-base: 7.1.4 + debug: 4.4.1 + transitivePeerDependencies: + - supports-color + + human-signals@8.0.1: {} + + ignore@7.0.5: {} + + immediate@3.0.6: {} + + immer@10.1.3: {} + + index-to-position@1.1.0: {} + + inherits@2.0.4: {} + + is-extglob@2.1.1: {} + + is-fullwidth-code-point@3.0.0: {} + + is-glob@4.0.3: + dependencies: + is-extglob: 2.1.1 + + is-number@7.0.0: {} + + is-plain-obj@4.1.0: {} + + is-stream@2.0.1: {} + + is-stream@4.0.1: {} + + is-unicode-supported@2.1.0: {} + + isexe@2.0.0: {} + + jiti@2.5.1: {} + + jose@6.1.0: {} + + jotai-effect@2.1.1(jotai@2.14.0(@babel/core@7.28.4)(@babel/template@7.27.2)(@types/react@19.1.12)(react@19.1.1)): + dependencies: + jotai: 2.14.0(@babel/core@7.28.4)(@babel/template@7.27.2)(@types/react@19.1.12)(react@19.1.1) + + jotai@2.14.0(@babel/core@7.28.4)(@babel/template@7.27.2)(@types/react@19.1.12)(react@19.1.1): + optionalDependencies: + '@babel/core': 7.28.4 + '@babel/template': 7.27.2 + '@types/react': 19.1.12 + react: 19.1.1 + + js-cookie@3.0.5: {} + + js-tokens@4.0.0: {} + + js-tokens@9.0.1: {} + + jsesc@3.1.0: {} + + json-bigint@1.0.0: + dependencies: + bignumber.js: 9.3.1 + + json5@2.2.3: {} + + jwa@2.0.1: + dependencies: + buffer-equal-constant-time: 1.0.1 + ecdsa-sig-formatter: 1.0.11 + safe-buffer: 5.2.1 + + jws@4.0.0: + dependencies: + jwa: 2.0.1 + safe-buffer: 5.2.1 + + kysely@0.28.5: {} + + lie@3.1.1: + dependencies: + immediate: 3.0.6 + + lightningcss-darwin-arm64@1.30.1: + optional: true + + lightningcss-darwin-x64@1.30.1: + optional: true + + lightningcss-freebsd-x64@1.30.1: + optional: true + + lightningcss-linux-arm-gnueabihf@1.30.1: + optional: true + + lightningcss-linux-arm64-gnu@1.30.1: + optional: true + + lightningcss-linux-arm64-musl@1.30.1: + optional: true + + lightningcss-linux-x64-gnu@1.30.1: + optional: true + + lightningcss-linux-x64-musl@1.30.1: + optional: true + + lightningcss-win32-arm64-msvc@1.30.1: + optional: true + + lightningcss-win32-x64-msvc@1.30.1: + optional: true + + lightningcss@1.30.1: + dependencies: + detect-libc: 2.0.4 + optionalDependencies: + lightningcss-darwin-arm64: 1.30.1 + lightningcss-darwin-x64: 1.30.1 + lightningcss-freebsd-x64: 1.30.1 + lightningcss-linux-arm-gnueabihf: 1.30.1 + lightningcss-linux-arm64-gnu: 1.30.1 + lightningcss-linux-arm64-musl: 1.30.1 + lightningcss-linux-x64-gnu: 1.30.1 + lightningcss-linux-x64-musl: 1.30.1 + lightningcss-win32-arm64-msvc: 1.30.1 + lightningcss-win32-x64-msvc: 1.30.1 + + localforage@1.10.0: + dependencies: + lie: 3.1.1 + + lodash.camelcase@4.3.0: {} + + long@5.3.2: {} + + loupe@3.2.1: {} + + lru-cache@10.4.3: {} + + lru-cache@5.1.1: + dependencies: + yallist: 3.1.1 + + lucide-react@0.543.0(react@19.1.1): + dependencies: + react: 19.1.1 + + magic-string@0.30.19: + dependencies: + '@jridgewell/sourcemap-codec': 1.5.5 + + math-intrinsics@1.1.0: {} + + merge2@1.4.1: {} + + 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 + + minipass@7.1.2: {} + + minizlib@3.0.2: + dependencies: + minipass: 7.1.2 + + mkdirp@3.0.1: {} + + module-from-string@3.3.1: + dependencies: + esbuild: 0.23.1 + nanoid: 3.3.11 + + ms@2.1.3: {} + + nanoid@3.3.11: {} + + nanostores@0.11.4: {} + + node-fetch@2.7.0: + dependencies: + whatwg-url: 5.0.0 + + node-releases@2.0.20: {} + + normalize-package-data@6.0.2: + dependencies: + hosted-git-info: 7.0.2 + semver: 7.7.2 + validate-npm-package-license: 3.0.4 + + normalize-range@0.1.2: {} + + npm-run-path@6.0.0: + dependencies: + path-key: 4.0.0 + unicorn-magic: 0.3.0 + + object-hash@3.0.0: {} + + object-inspect@1.13.4: {} + + once@1.4.0: + dependencies: + wrappy: 1.0.2 + + parent-module@3.1.0: + dependencies: + callsites: 4.2.0 + + parse-json@8.3.0: + dependencies: + '@babel/code-frame': 7.27.1 + index-to-position: 1.1.0 + type-fest: 4.41.0 + + parse-ms@4.0.0: {} + + path-key@3.1.1: {} + + path-key@4.0.0: {} + + path-type@6.0.0: {} + + pathe@2.0.3: {} + + pathval@2.0.1: {} + + picocolors@1.1.1: {} + + picomatch@2.3.1: {} + + picomatch@4.0.3: {} + + postcss-value-parser@4.2.0: {} + + postcss@8.5.6: + dependencies: + nanoid: 3.3.11 + picocolors: 1.1.1 + source-map-js: 1.2.1 + + pretty-ms@9.2.0: + dependencies: + parse-ms: 4.0.0 + + proto3-json-serializer@2.0.2: + dependencies: + protobufjs: 7.5.4 + + protobufjs@7.5.4: + dependencies: + '@protobufjs/aspromise': 1.1.2 + '@protobufjs/base64': 1.1.2 + '@protobufjs/codegen': 2.0.4 + '@protobufjs/eventemitter': 1.1.0 + '@protobufjs/fetch': 1.1.0 + '@protobufjs/float': 1.0.2 + '@protobufjs/inquire': 1.1.0 + '@protobufjs/path': 1.1.2 + '@protobufjs/pool': 1.1.0 + '@protobufjs/utf8': 1.1.0 + '@types/node': 24.3.1 + long: 5.3.2 + + pvtsutils@1.3.6: + dependencies: + tslib: 2.8.1 + + pvutils@1.1.3: {} + + qs@6.14.0: + dependencies: + side-channel: 1.1.0 + + queue-microtask@1.2.3: {} + + react-circle-chart@1.0.4(react-dom@19.1.1(react@19.1.1))(react@19.1.1): + dependencies: + react: 19.1.1 + react-dom: 19.1.1(react@19.1.1) + + react-dom@19.1.1(react@19.1.1): + dependencies: + react: 19.1.1 + scheduler: 0.26.0 + + react-error-boundary@6.0.0(react@19.1.1): + dependencies: + '@babel/runtime': 7.28.4 + react: 19.1.1 + + react-export-table-to-excel@1.0.6: {} + + react-hook-form@7.62.0(react@19.1.1): + dependencies: + react: 19.1.1 + + react-range-slider-input@3.2.1: + dependencies: + clsx: 1.2.1 + core-js: 3.45.1 + + react-redux@9.2.0(@types/react@19.1.12)(react@19.1.1)(redux@5.0.1): + dependencies: + '@types/use-sync-external-store': 0.0.6 + react: 19.1.1 + use-sync-external-store: 1.5.0(react@19.1.1) + optionalDependencies: + '@types/react': 19.1.12 + redux: 5.0.1 + + react-refresh@0.17.0: {} + + react-router-dom@7.8.2(react-dom@19.1.1(react@19.1.1))(react@19.1.1): + dependencies: + react: 19.1.1 + react-dom: 19.1.1(react@19.1.1) + react-router: 7.8.2(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + + react-router@7.8.2(react-dom@19.1.1(react@19.1.1))(react@19.1.1): + dependencies: + cookie: 1.0.2 + react: 19.1.1 + set-cookie-parser: 2.7.1 + optionalDependencies: + react-dom: 19.1.1(react@19.1.1) + + react-toastify@11.0.5(react-dom@19.1.1(react@19.1.1))(react@19.1.1): + dependencies: + clsx: 2.1.1 + react: 19.1.1 + react-dom: 19.1.1(react@19.1.1) + + react@19.1.1: {} + + read-pkg-up@11.0.0: + dependencies: + find-up-simple: 1.0.1 + read-pkg: 9.0.1 + type-fest: 4.41.0 + + read-pkg@9.0.1: + dependencies: + '@types/normalize-package-data': 2.4.4 + normalize-package-data: 6.0.2 + parse-json: 8.3.0 + type-fest: 4.41.0 + unicorn-magic: 0.1.0 + + readable-stream@3.6.2: + dependencies: + inherits: 2.0.4 + string_decoder: 1.3.0 + util-deprecate: 1.0.2 + + redux-thunk@3.1.0(redux@5.0.1): + dependencies: + redux: 5.0.1 + + redux@5.0.1: {} + + require-directory@2.1.1: {} + + reselect@5.1.1: {} + + resolve-pkg-maps@1.0.0: + optional: true + + retry-request@7.0.2: + dependencies: + '@types/request': 2.48.13 + extend: 3.0.2 + teeny-request: 9.0.0 + transitivePeerDependencies: + - encoding + - supports-color + + reusify@1.1.0: {} + + rollup@4.50.1: + dependencies: + '@types/estree': 1.0.8 + 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.3 + + rou3@0.5.1: {} + + run-parallel@1.2.0: + dependencies: + queue-microtask: 1.2.3 + + safe-buffer@5.2.1: {} + + scheduler@0.26.0: {} + + semver@6.3.1: {} + + semver@7.7.2: {} + + set-cookie-parser@2.7.1: {} + + shebang-command@2.0.0: + dependencies: + shebang-regex: 3.0.0 + + shebang-regex@3.0.0: {} + + side-channel-list@1.0.0: + dependencies: + es-errors: 1.3.0 + object-inspect: 1.13.4 + + side-channel-map@1.0.1: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + object-inspect: 1.13.4 + + side-channel-weakmap@1.0.2: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + object-inspect: 1.13.4 + side-channel-map: 1.0.1 + + side-channel@1.1.0: + dependencies: + es-errors: 1.3.0 + object-inspect: 1.13.4 + side-channel-list: 1.0.0 + side-channel-map: 1.0.1 + side-channel-weakmap: 1.0.2 + + siginfo@2.0.0: {} + + signal-exit@4.1.0: {} + + slash@5.1.0: {} + + source-map-js@1.2.1: {} + + spdx-correct@3.2.0: + dependencies: + spdx-expression-parse: 3.0.1 + spdx-license-ids: 3.0.22 + + spdx-exceptions@2.5.0: {} + + spdx-expression-parse@3.0.1: + dependencies: + spdx-exceptions: 2.5.0 + spdx-license-ids: 3.0.22 + + spdx-license-ids@3.0.22: {} + + ssf@0.11.2: + dependencies: + frac: 1.1.2 + + stackback@0.0.2: {} + + std-env@3.9.0: {} + + stream-events@1.0.5: + dependencies: + stubs: 3.0.0 + + stream-shift@1.0.3: {} + + string-width@4.2.3: + dependencies: + emoji-regex: 8.0.0 + is-fullwidth-code-point: 3.0.0 + strip-ansi: 6.0.1 + + string_decoder@1.3.0: + dependencies: + safe-buffer: 5.2.1 + + strip-ansi@6.0.1: + dependencies: + ansi-regex: 5.0.1 + + strip-final-newline@4.0.0: {} + + strip-literal@3.0.0: + dependencies: + js-tokens: 9.0.1 + + stubs@3.0.0: {} + + tabbable@6.2.0: {} + + tailwind-merge@3.3.1: {} + + tailwindcss@4.1.13: {} + + tapable@2.2.3: {} + + tar@7.4.3: + dependencies: + '@isaacs/fs-minipass': 4.0.1 + chownr: 3.0.0 + minipass: 7.1.2 + minizlib: 3.0.2 + mkdirp: 3.0.1 + yallist: 5.0.0 + + teeny-request@9.0.0: + dependencies: + http-proxy-agent: 5.0.0 + https-proxy-agent: 5.0.1 + node-fetch: 2.7.0 + stream-events: 1.0.5 + uuid: 9.0.1 + transitivePeerDependencies: + - encoding + - supports-color + + tinybench@2.9.0: {} + + tinyexec@0.3.2: {} + + tinyglobby@0.2.15: + dependencies: + fdir: 6.5.0(picomatch@4.0.3) + picomatch: 4.0.3 + + tinypool@1.1.1: {} + + tinyrainbow@2.0.0: {} + + tinyspy@4.0.3: {} + + to-regex-range@5.0.1: + dependencies: + is-number: 7.0.0 + + tr46@0.0.3: {} + + tsconfck@3.1.6(typescript@5.9.2): + optionalDependencies: + typescript: 5.9.2 + + tslib@2.8.1: {} + + tsx@4.20.5: + dependencies: + esbuild: 0.25.9 + get-tsconfig: 4.10.1 + optionalDependencies: + fsevents: 2.3.3 + optional: true + + tw-animate-css@1.3.8: {} + + type-fest@4.41.0: {} + + typescript@5.9.2: {} + + uncrypto@0.1.3: {} + + undici-types@6.21.0: {} + + undici-types@7.10.0: {} + + unicorn-magic@0.1.0: {} + + unicorn-magic@0.3.0: {} + + update-browserslist-db@1.1.3(browserslist@4.25.4): + dependencies: + browserslist: 4.25.4 + escalade: 3.2.0 + picocolors: 1.1.1 + + use-sync-external-store@1.5.0(react@19.1.1): + dependencies: + react: 19.1.1 + + util-deprecate@1.0.2: {} + + uuid@9.0.1: {} + + validate-npm-package-license@3.0.4: + dependencies: + spdx-correct: 3.2.0 + spdx-expression-parse: 3.0.1 + + vite-node@3.2.4(@types/node@24.3.1)(jiti@2.5.1)(lightningcss@1.30.1)(tsx@4.20.5): + dependencies: + cac: 6.7.14 + debug: 4.4.1 + es-module-lexer: 1.7.0 + pathe: 2.0.3 + vite: 7.1.5(@types/node@24.3.1)(jiti@2.5.1)(lightningcss@1.30.1)(tsx@4.20.5) + transitivePeerDependencies: + - '@types/node' + - jiti + - less + - lightningcss + - sass + - sass-embedded + - stylus + - sugarss + - supports-color + - terser + - tsx + - yaml + + vite-tsconfig-paths@5.1.4(typescript@5.9.2)(vite@7.1.5(@types/node@24.3.1)(jiti@2.5.1)(lightningcss@1.30.1)(tsx@4.20.5)): + dependencies: + debug: 4.4.1 + globrex: 0.1.2 + tsconfck: 3.1.6(typescript@5.9.2) + optionalDependencies: + vite: 7.1.5(@types/node@24.3.1)(jiti@2.5.1)(lightningcss@1.30.1)(tsx@4.20.5) + transitivePeerDependencies: + - supports-color + - typescript + + vite@7.1.5(@types/node@24.3.1)(jiti@2.5.1)(lightningcss@1.30.1)(tsx@4.20.5): + dependencies: + esbuild: 0.25.9 + fdir: 6.5.0(picomatch@4.0.3) + picomatch: 4.0.3 + postcss: 8.5.6 + rollup: 4.50.1 + tinyglobby: 0.2.15 + optionalDependencies: + '@types/node': 24.3.1 + fsevents: 2.3.3 + jiti: 2.5.1 + lightningcss: 1.30.1 + tsx: 4.20.5 + + vitest@3.2.4(@types/node@24.3.1)(happy-dom@18.0.1)(jiti@2.5.1)(lightningcss@1.30.1)(tsx@4.20.5): + dependencies: + '@types/chai': 5.2.2 + '@vitest/expect': 3.2.4 + '@vitest/mocker': 3.2.4(vite@7.1.5(@types/node@24.3.1)(jiti@2.5.1)(lightningcss@1.30.1)(tsx@4.20.5)) + '@vitest/pretty-format': 3.2.4 + '@vitest/runner': 3.2.4 + '@vitest/snapshot': 3.2.4 + '@vitest/spy': 3.2.4 + '@vitest/utils': 3.2.4 + chai: 5.3.3 + debug: 4.4.1 + expect-type: 1.2.2 + magic-string: 0.30.19 + pathe: 2.0.3 + picomatch: 4.0.3 + std-env: 3.9.0 + tinybench: 2.9.0 + tinyexec: 0.3.2 + tinyglobby: 0.2.15 + tinypool: 1.1.1 + tinyrainbow: 2.0.0 + vite: 7.1.5(@types/node@24.3.1)(jiti@2.5.1)(lightningcss@1.30.1)(tsx@4.20.5) + vite-node: 3.2.4(@types/node@24.3.1)(jiti@2.5.1)(lightningcss@1.30.1)(tsx@4.20.5) + why-is-node-running: 2.3.0 + optionalDependencies: + '@types/node': 24.3.1 + happy-dom: 18.0.1 + transitivePeerDependencies: + - jiti + - less + - lightningcss + - msw + - sass + - sass-embedded + - stylus + - sugarss + - supports-color + - terser + - tsx + - yaml + + webidl-conversions@3.0.1: {} + + whatwg-mimetype@3.0.0: {} + + whatwg-url@5.0.0: + dependencies: + tr46: 0.0.3 + webidl-conversions: 3.0.1 + + which@2.0.2: + dependencies: + isexe: 2.0.0 + + why-is-node-running@2.3.0: + dependencies: + siginfo: 2.0.0 + stackback: 0.0.2 + + wmf@1.0.2: {} + + word@0.3.0: {} + + wrap-ansi@7.0.0: + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + + wrappy@1.0.2: {} + + xlsx@0.18.5: + dependencies: + adler-32: 1.3.1 + cfb: 1.2.2 + codepage: 1.15.0 + crc-32: 1.2.2 + ssf: 0.11.2 + wmf: 1.0.2 + word: 0.3.0 + + y18n@5.0.8: {} + + yallist@3.1.1: {} + + yallist@5.0.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 + + yoctocolors@2.1.2: {} + + zod@4.1.8: {} diff --git a/client2/postcss.config.js b/client2/postcss.config.js new file mode 100644 index 00000000..cb0e591f --- /dev/null +++ b/client2/postcss.config.js @@ -0,0 +1,9 @@ +/* SPDX-FileCopyrightText: 2014-present Kriasoft */ +/* SPDX-License-Identifier: MIT */ + +export default { + plugins: { + "@tailwindcss/postcss": {}, + autoprefixer: {}, + }, +}; diff --git a/client2/public/apple-touch-icon.png b/client2/public/apple-touch-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..e559370cecc461be8291fe20858407a3d0bd3f29 GIT binary patch literal 3481 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 literal 0 HcmV?d00001 diff --git a/client2/public/favicon-96x96.png b/client2/public/favicon-96x96.png new file mode 100644 index 0000000000000000000000000000000000000000..a4bca88811eef82c7797bdc461c2eb5b1ecbbd31 GIT binary patch literal 2319 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 literal 0 HcmV?d00001 diff --git a/client2/public/favicon.ico b/client2/public/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..4dbae49f8ede916cb4cbe1e86803d6d4d4200915 GIT binary patch literal 15086 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 literal 0 HcmV?d00001 diff --git a/client2/public/site.webmanifest b/client2/public/site.webmanifest new file mode 100644 index 00000000..f8734253 --- /dev/null +++ b/client2/public/site.webmanifest @@ -0,0 +1,21 @@ +{ + "name": "Creștem.ONG", + "short_name": "Creștem.ONG", + "icons": [ + { + "src": "/web-app-manifest-192x192.png", + "sizes": "192x192", + "type": "image/png", + "purpose": "maskable" + }, + { + "src": "/web-app-manifest-512x512.png", + "sizes": "512x512", + "type": "image/png", + "purpose": "maskable" + } + ], + "theme_color": "#ffffff", + "background_color": "#ffffff", + "display": "standalone" +} \ No newline at end of file diff --git a/client2/public/web-app-manifest-192x192.png b/client2/public/web-app-manifest-192x192.png new file mode 100644 index 0000000000000000000000000000000000000000..252c58aab1cd0b6e8a8165c84243507598cff08c GIT binary patch literal 3761 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 KXa0`p9{nHo?%ja^ literal 0 HcmV?d00001 diff --git a/client2/public/web-app-manifest-512x512.png b/client2/public/web-app-manifest-512x512.png new file mode 100644 index 0000000000000000000000000000000000000000..b68eca9cd9d3872946a07d36366eabe8972669a8 GIT binary patch literal 9974 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 literal 0 HcmV?d00001 diff --git a/client2/src/assets/bad.svg b/client2/src/assets/bad.svg new file mode 100644 index 00000000..bba149a1 --- /dev/null +++ b/client2/src/assets/bad.svg @@ -0,0 +1,3 @@ + + + diff --git a/client2/src/assets/empty.svg b/client2/src/assets/empty.svg new file mode 100644 index 00000000..c187898b --- /dev/null +++ b/client2/src/assets/empty.svg @@ -0,0 +1,3 @@ + + + diff --git a/client2/src/assets/envelope.svg b/client2/src/assets/envelope.svg new file mode 100644 index 00000000..05c8625e --- /dev/null +++ b/client2/src/assets/envelope.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/client2/src/assets/good.svg b/client2/src/assets/good.svg new file mode 100644 index 00000000..824f6b05 --- /dev/null +++ b/client2/src/assets/good.svg @@ -0,0 +1,3 @@ + + + diff --git a/client2/src/assets/illustration.svg b/client2/src/assets/illustration.svg new file mode 100644 index 00000000..328921ff --- /dev/null +++ b/client2/src/assets/illustration.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/client2/src/assets/logo-fdsc.jpg b/client2/src/assets/logo-fdsc.jpg new file mode 100644 index 0000000000000000000000000000000000000000..579cbc0e13724d847e89f5b1bd57c2a6a121f12f GIT binary patch literal 32822 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 z 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 aew>c6!V}O4aJ69OM%VFOV0m;n@c#fC1NMgi literal 0 HcmV?d00001 diff --git a/client2/src/assets/screenshot-start.jpg b/client2/src/assets/screenshot-start.jpg new file mode 100644 index 0000000000000000000000000000000000000000..25b2225e3ce96a9e55bb710cf5fd8f22ff0c055b GIT binary patch literal 342196 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

H>5!uT81ALIfZlD;dVOP9H%zbrZXW2 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 z

<@D$!d^QcBs+@qc=NO-7}8V1K)M@?)S5ML0+Ny67&93mtn>r~q^W@4WYqua?P- zS4M}#vxI%P=lD@!c^he@?+vr7RTs6MfPl(7`$q3AQBx87*Rq--WsY+KrG;w~ndwIq z0Ix1w0drWj84lyY9mPJp+Vz5_;}aDBUk96vwUaDk?bVz!j#Dvp))iGl#QwLhuQly_ zaxc3$I?ked2@`xqu@l*4(L00tZ(!{&#ZOr8MKB)U05jlnh}2=rPE_d4381SXzj_m{ z!EUR1jChU@JY>dg%^$((k&_}FL~2@iB5EB5G~~(k zaHUQd%}2I_vI|`!gX#bJpXc=+D(~hzDh{M9lrcVZ_VES|{xk9C(M%J4O) zxRYs|(BwJcjEZN|)#j%pNuAyn!0l3jXLPELBY!5G9}qX8D}xX_`}Z=3^Gqx)W z>w)+LA7*6I3?3M0(k;|r>b14Mno!WxMM-(9h30gjvE+Rw)OHD46Qt3p8(@p}JVSB{ z{ZxL)@k_%C!U4)stw{Ij`We#5`ALPYX<=zF$<1%rn(i0sWop`Uy%9%j-i8_LjGZSk z@N=#oh!#N0InHTP7uH2T$IHg4$qRB_VTgaLCrkTjB3-E4FYL7zxA2WPmIV%ND_6#x zZ&j59ue#<(m-#yCph9p*cDZhLYNcAgx4PCWyW2QMYAYap{X&XgaugA%!nhc53lP%5 znd34bQ;^kIs`3MC1$H>7PPDPGL8cG0Ma$gQKHfe{@@qpC^g{7 z9!u&7F>do-D6MY0eBJ7NzdVXZ5j?9Lor_osExq98g39hTx%&8`vu80I=$p)uJg1RqytI5p#(&mSyhgR#4khZV;$Si9pyu-+$~YL3A5e$-nC ziOT&P!LE}wh%82my@6g#I14*Ty1#NnnQ{$BsR!&SB*SMEYWS7TS0i#y*o}qEZ5M2_ z`@L{af211h$=Ywtx9vASG9?*-Cgb;aRdyNG?qs^GI{Z68SvXj#8NATFaPUbUH?9W2 zfqLK4O~Bwn)6=9u1d5!#Ioj=GM>g&SgLgXVIv|MAV#X!Yez8mBQj3mef9|+ym zpKc!-X%Nrf53v(0VFC%_h}`lT9`|`4$Feqa=y6JJbZ1z8Cc&112Z1uZ4hw#10R+ex+g?kO=Gy|w@GC;4 zmJ@(osRz1+yx`bCwPd*xG}&|cC}#D2xzP0K;!=oK>*7f>x*NxzmeV~Gs`}&;I2iG> zr2Sal+j5J9@AdR=%`~=4?-#jdS-lT#jdV#~08&SiG$1g7rmemf^cK0YK{~-gDUlt} z^S30|VJ*Y%oXm#c00YH-v-~1+5Db-6B}$-#jghn@PS+`a$kLi&*cb#sHEBXnFI)l- z$b=MD)}4XxM_1LQCKO|f@Qb-=6@5ED-6|TS;LFXjnrYD?b!4AY=(4hOFn({M1)8$B!#V+}! zM))_ofN|xrthO9)AB>*~U`B6hJScL;9vN~g&@I(HY54^aRl|sO&PKa6R#6Y2Z5X-B z{8w(K{Vx}a+GeU<1n>zI7=kfqws zWtkId$}oZi#s?}vS~2AJ5l<2q+k46}p3H~(+RbS$-3*(-5R>j7>%5pZ-qNZ$S#!5J z&XYV_?5MuOwUM&Z^(j?&olysqq+I)D=Tua&QpN@6bOY zd4f0w?-P!N^0?Q*Fy^|Y@2NA8XYwsDxa0oXz>x>oJj$7MIrF}&h4HLcCH9~=x>t*n zmzt5u$40O4q+4X9H|%c)`q$-$;Gt;Q(O@laa+^g;I6h-Su{i`fE~IxPa39Fe@IJFO zmcTWX7w7Zlnzv&)?JJ(&sk~6eg5F)Jr(pNIwah8nT^#;#_NuhUJ>Vbr!ntu8$!C=9 zpxG4tV_gJxDk_GwU|J3`SE6uvh&evaBS4kgvpT9P#`k}h$ zyWm)esdE8;g}-XK?Azga&dZB^*IH0d=6=^zs7MOSA#ai%e~zT0IF4`SNHf47HcZjQ z*M;q4A%+n3NO1rI%sS+@%p}2{BX%z1y^dZ`VP;$rY~%fq@GC@FE8$x;dl>Q)XMU_}?w`A8%^^iVjcAb6g)WgdEcZQn ziLYwqZ{Q-w^U1GlTFJ_0U~b?m!tvhg*|hUDpz<`fFkEglXa^X5yo@?1zr&mUzG8fi zaz@qp*MSf_V!hPcees!UBv7@02IHlFiz0$|7GM$Dlmj8I^}2c0j4jpJr2q8`{y^I$s4@6&yCuE z`pN}e2_wjHT(Z?dwDe#-oC%RTR=X1HG-W`ZX}KVG{zA9}BaP!J5qbyO`3D9gNr{NP z!-VzbDFH&k&kiEZMxCw)OU0!hXQVjGE7K`@U-A}aDOW6T^OYrIdn~#eP&6VP%He3)aq4}AzI^kb{3v8J)e4;FQ*ur51Um)X^&H@E z>vWNshEP-7MdqPe`3A%9qMBCjAgnv-HHBTz_62!}16@Qt!e+@WVDk`wb7M-Lpd-X$A~92T zYYweRts&^jcJ@}{A4~?ZEN1y;uizpQ7Qoi~TGtE3DXcv`N{RB*(P5&@1-MD?#jJrU z4XjEx&^+&;#6WN44yW?dXWp0Qwr1UEVxFoJPldJI9Sq|-Aqts-+SLS^UQi6`KEj$f z%G%rrM_1#Icj!c<pmL1LdzCM_RG^NWdf2^a112>{qgyIA#1DS^$DP*5QR0G4J zS_et{bPYaJgiZ`KBWM+BN%&-0;Is~_ZoF?JvCr=?dixAZhYr`7KN6_R10{Tze|6ssPUALk~bDNjbnc3|nkE2~@I=y9$ zD_`@8e6V(lEm&zTJ`0Mt1hC_?w_3FHJwmJ5or5wv3JTR~L)*|}s%tg2^F)yF z3A%|A;MBpntcbSv$gO9LXe5V41f1&+ZK~DrMK2il65kSaK-sB?eF&LRUAAcp^g_EOUoO0y1d{?$}kIH5-iH58b(@GQX zz03J>(|pXr-@}A7@;Ya1;4^WcEPb9<=duvdl{|1NF(fCD~U%9vyQ+T z6JwcwKPR=S7GW+#nytSmQ3)nv21@c@SJM#Im zd(uOqA@?1p~UU@7$uVYCN%%<9`l zf74QDjd@ekx4*d$)hwJ5_j;8SGHd%wrcBV+i@0px<*{DgTxB%q5VG_SLMSD*prER& z5_X%~4lH>COJDB4R&(T93zKwzSpYh9{ifOt)Ww;tYf_wvPjX!~taq+I30lZ9UFmr~UpPKA_wo^UlOxkvkw6+<5$UNrHxJz8;2 zc4COStJ$}x+)xSIoRhym^(mCe)Kt~)urUpw2?Gnrr7&?yS|ah~rwJ*Jm$DohIT3Sx z31F00LvffszWECz_Y8Yy5kfostS;ZNo|)Jx>TJau*2N#`u!Q~{xSBgS6MoUQY_QTu zJVeQ#?eCAr$gsYSyq;`C+H=V~Nj0*EtqH^kNk(JMv_Q*BjpunyLP_sRV&9I#wkvFM zMgif12@X|qpHf1Y;v>CZ2;D&_XF7ANRMM*EoPCwr)cNo=nOS+FsdA%lq)tTTc~#D8 zNl@eOzZbtN?y;P?J7&H3-A^V6SNnZ5zj3$`TLm`?aIn1^38Kc^If6AA_lCoV{k;_L zP@|^O;$iXarhZ&UDn8l=_7(N$9rt*h<8z*&=o+dCe9+y!8s%*Iy=I5Xz0&9{BW_hL zH)kz^8(75;oP3cn$D-54#pwzk9TWE_TwI7JYLQ;vL$WX}V9b}-!2Uv;)>}}()C0nm z=Wrfpf}BavpkkOdZOH8%`-A<=04O#tu+^LLWhm!Sj%T4(W~)t}`zTy#+DK7z9QaJD zXExLSatuBhR-1jv(Y9*$dAEr}49mra{bbL;h#`iBO0UkIIyl?ee&sIv3+}%qHZQh~ z%R11o_AkY3$%hi!IVybuxi7L+Sq0XmA=qaY4-tF4XSHKqId1LunK{{*IIuV=?x7oC zGn5UE7a{P6Wmak7*`>=-6;{PlQkwVo5vOI|hps|JZxe zu%^;AZIn_=MTDp*CHde2`zqeBsJBC! z?ti;<2SH=m+hvMRJ}4aW*GB5?s(4zITyS}Rx%&uqn@d9l`A`_0C29EUk$1M=xuLfv z>(S<1tmQd1dH6l51+y{S;2q{!PwVf@HL_hGx!1<-t~EZz3QJlc^G^t0{FB&JAgVxijk>RsfGX-ys*;je=9ISkLIy~_8X=YLP9{ZPL zd!B}wJL)b`t{lCJ)$}+wni+kru+hf#i$=O)p_e5kk1rT+1{KLFY#zDwk0_W?7-s|C zzoU_6Z1}uZW|NakRa!$&8bwg;!ujLnoh1THed?;oD&#fn)kft0`^;kW%DVb>HLf>FTnu7p4+~yk~VATBMnKrEDb1vypzQnstF&`o3lkH8?=JSA39Hy$xfJjI?CHS^^srZ6 zjwK#pcrxGhwW@N#F<)NVXHAAqkuSlv6OvkRBDfC0Tx|QuECqpM?u-^|6~NuNBz@)4 z-l*gc1GH|0_t5Hmv(!Zd%z1Y&k3}z;9szS;TJiy;=}jP~n2a9(-q{2(^+Q%Bl0F ziv@-kAmX&W%~ET|CIVax(p$?u@_?Py!V`V zR~Jc#-DBDfdS=6?!?@g>EQBkV|bHoCdT&mO`_KpRY&%BwJCcS zpH!P_YLEEd+u7l3>BmgIXdd=D&vT-@D;{^PzZM%87XPii(=2x2J=wQRVi#9Y#dy=I zDpP8f5S-v((0U5G?wH#;h9i#`EbV(l@IPwclq+KW1m`&e>D}3~k1oO5IR#{qVbwZr z3(rPrn;HM4jb}t3IbJw$wH3{aKjAbI=XC)0mPgFJechk6z~VRQro2x)^<#W$RAvhg zw62-n)*!eUe+tSr>+F(@^a$%&#n6wWSL~fqa@Pv@JBh^+n@!&A>#8K)orz?1Z|vP?%U%JV1JRad=minJ1x*Yvq}FE7ij@ zhyAXgvT>v-LO1Ptg-5}@tCdy(Uhj$vs!A*H7S|l$n+X))aVXOdY#LCS$jXr#f|{Oo z!D=k8J-1b`89LjRQ8CRnm6`|$F)cZ4^Zuw(w(Jt+BKC>}t0BeBeDuNS$jc`O^lRG6 z2cmwFfmipwOV&SA=q^*m^t_ncaDU!tonKaD#pwM85AQl_a#|Qa#k>pNDcj)IKYzZdmPCaDsmapT%Cp#yL&#G|leVpHDL}_$7--5Ae$^TD<#{&wfmsmu|#v1#&C0#P^oX7WzNEww$BTaG@esFEG>E--jea=X=@vAu1e@% zg*hiHOJW*{;akUuXJ|~Rs%m+ZK=sD2|I7_Elal_ZeEW9l*MP3apX-cVM|+;yeB6^1 zIpG<7WjHMa8+o?0TrHzUN6w$8_p45}U7QF5>XvA9#H*|9T;-N~A!nfIFp=OJb#Ei% z)*Kzb&5w}Zf&upHm7#n+RY7!5Lf|^CC9NmL)*y*;vFHNdoh$;jT7bBhn8P6l6<6BY zBXjiTr#$4Skh(I=$Z*R%DkN<1x9hSEZ7zZNKJU+D9Qb*00{^;s#;AffB`d29i<&jZ zl--}fY*K3wPGI09Zh|{>SOAM&rVOrm!7m7TR809RbAk>z5bDz-S%sHdPYPhN6cNW+U5~^ zC(r>!Piu5+g4PxGFAK$8P4(qYO@ig#C6tCzyMGaJ*UlEc5oz{B`2)R|d{J_Py_zON zw2{{~o0dJ9)?22wzabvcdt}rjuP+D@AD%_kn#zo_a~{RSVXs6rm1Sy*asutM8$vsC zNZm-{M6iwNP!403R9`pnCtW9YAVTL_%W>>jNm&JBF{l9Y5^^ACC0elxs_0~|9dZ|{ zaxID z$7b@(G9G?~+}hL@(!yL-$vAv-SSjcco3WMk1AD55F9wi@R;(Z*K->kE)1R{j@nCBKwLK{LD+=Z{BbyN$H0Q3i{u1|2mdzrZx8>j8q~6E{$V?+m6~L%1Dz52 zBDah??g%9r)DI(ls7K1Qx~5fm)O4m#6(ne5V8R9?BIe#qIho4zsO4Mv*Y2&nhMUba z4}FxZ;gIq#3d9v%&rYv8d(5cqQ1hXr6as(W=}bH4UB5;Dxg)LIWXCQ0TiO~|1lnpN z=$O##263mf^M$>S9Da+bDOB0DsP+5QL)YU~`H#c&UWQ!^k#`@Bs~Dy1T04Xstw=5< z2EPmH*0?tK?X7UGlE0YXu8hs!B5Rqu^mJPP_-fC-xAx&lbEQx`kZ#Xg^o(v<&>XNga;z-RiJJnE&0(C z%z1z@h5Xb#uCMPDYHs=G+}>@Qd)u$9AD%abLQ+l!pUM_&f8u%kZHaG$x5@rv>)&m- z{_sE~@ZiQLf>m;BC9RTrrvun;Ep+Vo00>lJt$T6uz(Rq(3;kXX`Wa(B@O+*_Txd}m zvcJpv_O?BlF54d5h#J)R=^smUpy}Ihg5P{yq^}>l#+mnj|M= z*?l%D`wy-|m;aLYACJ^%tZ6EQ+4Fr%Ge}Ue%NE~nes*Y48}>1QC#eqP+&WCT*o!oO z6lQGLJCinW!O#(Y>=|Rgy6dcCYu6Rj$V}DWZg(Ry-7UL6H8mXg!7lV47qJzbvDS|jaA50)15O`c&Vky}KwcAZY!cfEfnk{wIUAcc1$6_MS85BS09qFr$Z#YEmi+qEX+~u3PcvS2)WSkXopK>@~YU zU>>(iK48goc=Gb;N59V7M1K+H+v!HHh5G)H9*b(KFdgm28i@=+4l`^&by?7)CtvQ~ zt?T1a;u_(8b!5q9>{?jqAL)LlD=SCcui>ztER=@4xfTa6A)V8zUB zq`B;-K6ZV%r}}RHhI7KL7LPOMuX#63jR;Pk{>RdOU18t9zipnKUb9DxUj>pj^%6km z&P}N-{G#Ek9+gt>y4PMnhj*TnVp5{;+aMCzo_BI$G)$zu@>CNc;d6}E$|HxEhfb!Q zs3>vzd1j_RPNJ`mclb`wqh8&4-jmMlrvLJcegxc`|N4;a_{YQcFF*c|U;f=UUS#!0 z^2}HdpnSG9orWuH{z=+g_Ep*(X>7}qIpvS{=!ZLL_E*{nw!I+)1+t{~lAn&b0m8en z8NI*yL$7s}tNh#Rl`}TlUKSPz%SX;Re16!T^z*$d`rV5c+=~Ucn9rI`rV982E=TH_ zp_Q?oXd;vUA>3!F)UQ-`epN|k+_R$pB^ZUTBW@cHfVmF(15mi z1XpokQa0*74%4@CHhFWw&?EOwOdj6L+nSpnJGOk{b(b2hA8>vdgP(4gz-V#CpYW2B ziC$)jL=R4#eo8cAGjTJ-kYSts$TLeaDbaUOX;i5+m%f5p#KO)FL#v0OpC)~lt8d|r zyV_${#rSP+EWBA27Wm^?BPah_Uw>1Bl!e9=%c<#yW?;G{Z(WxYptIHj?jMITi_Xcn_@_4D6 zY)xBZSt1EeKmdAA99c7CJE60Uv8_L~EC!Ph54@>|te0l*ADn_kp7Q)xN3t9SYEs{2?Bh=%i+Q!!{ zY4UUNlZV+qX6L!(Ns2sp)Vz7q#U?Bl>tFsJh}jrr9o$r*b1TbmJmW^^tgeW{O8`9k z+Ojs(x^Te;dMF4Z0-K!ya(C0?6^A2{kvFuiP*M~S?7FKahiOKpQL0F;OA+`80 zi+iFT;w{bOmO%EMoqlbYHSYoWowUiUQ-u))a8u`)w!|~I@dESlm$_{|v8PBz4YKXa z3umCKBW@R}A8lHuTjEnNKJxuBVUgI!fw(TW<>k~-OWthFd_7f06$h8yfJhWP~XWZSY1*PM3knmOO?|7TMNqG^xDO%?Vxi8c^0B#d#S}$d@ff9&HC~98L zPE5gauQhTKnLjq>9SYiIzqS#{R7g%g~C+xB!QWj$wC+#7QA@+UHA#QsN%1@*NoHug22VJoL| za@|I$pUIeH!0?ft!EYz7m)dnSAu{-@A?Jt6OHh!kP6%&C!_wg*Qqd#j2AR5Nz~8PFFoc0&hq8l=QNC3uFU6J9&!g0ecN(F7`+i zfl`;z?zBg0BWT4ZFO%EN{f+Q0m<^DDkt^b^vF@;XBh=CFXyV&fjYK_l)5#+5mhu8z zE;C#cx1DR{yLUuh39C3?N{gK}p9WKi-x?PeUH0Hu_6vd!^Ab6u6`xMtgdiOvpvO^d z936t~XuFlVyM`Dpvt^Bs1^Ep|o#O^Wx7k`r$NIQ_pd6iCkj#9t(OlH(io@ozVs1J3 zj=T4Cd2SqPXM1_O+VQ)*;{1yi?9bxNKl0p18$NX=p(4;cxTp`(2G92`!5X!0j|dFg zFe}*R%Fw|%_AbIwyS-ha(risDEXCLuB3jdND_a`h*HqLq8{eU|_Rtw`@J7J}{8#)S z(@(8uQ!32N6y*cyxjx=VezFB_689$V9F0M4^#JB@XWis6ss<-J<$0OeOwChJ0*wn= z1uKdBRn;`Kk@L8wHSDgvBw4+K5Y$eAA@wVuF3+S6J$=%KKB9wZlE@ID1^xOly(rwy zr~b5asnMDCp~2y2_RnKaC;FDVyv{!p#_P7jma(`L|0Z9@+IYK9;F?JJ*v8C{jmA}# z)`u>bW|au0aCn_l0{|goxUc_VwW-UG$8~SHeK)>Py|>w=#XNX7d)8upyP$zI^+h8K zWlCC00=T0x4-8!8b@VyDAVY+>+(aV3$4z3SXL@vwk4v^FPsu2^;jMwI^5sCd zqqs`kN03}%agotNl)*<{Dxv8G5E=IK(R#qFRUcSNtV;E;B8R?|S+xkOW+xhwX7^p3 z8-G0NK`ZBv`gJ>8Z)aTkqOn8XwK%GV-G5J}^(Z$xfE#;;D|B~gH~vn_n4t^fI6BI2 zfjANvmOv{-u-WyXhbz~ zted}EoG)TgD+aCgdZOz!*XqJ6yA;NGyAn!p)$+4} zLffPYS5-F2G}Qi!M(P4$!$7^Zimidf|X_wW^pL zj!x49_T5ev0-^>)E+uu7w-Ft|__mqXks)*Xq!4j#F^y13b4+*Xhj#KNqTN#ne^NRl z2a9d}rcy6nzd3f8@sx0M{=$Hei3{9{n5#-YTVz;bJ7I|5(q-Y*KV7;MbR4uglzQ7H zF((P!F%&RQ0>J>)DBSE(E!2iL%})c-u$y|Akr1)j>^jVeJh!NL-*mJvo|1Ghw*Jkt zp$I%mELwZNq~F!+a0Eycr*Y229XB-lOzinxZKUP{BZLoa@o+hyp5!VVmFsK!$=GBj zUPw*6r1-j@XfGuy&y2_Gwi)kbaY?(H!=&=5&C+yrf)J+b5`0mZUvL%^a8%p)wUk#~ z9%-A~D_!8kP8>EnasvJ1LYA9*JuX}^7ENm$GQ3dZ9ft=!)ko$Lpyb#HWeGV6>~&nC z+c^3*3g%=2+Cg%A#z+~cAdzITWYZ*Qo-nNlUF9yO%!0+eOQ*p7AV2qOf)ld7UfgA+ zu1;M^Xqai$(`rh2_^;jg6;ry~?T~q?R|8*qx!PXMj6H9GU>tF!{id7gdSRIRV}>h~ zq4^!w=#5Bk0Kyvn5gG&;5DZyp`d-uS9-WNf?s zO)|bG9d1N)RG1)M2oeO^)kuuOov=nukvY{|5og@>o8a7ZG8T~j0?5BH(V8oMZe&HMz8^KQdQsbSPV8RSh}F95ImLJQEqj%B@spvbAj{ycZKeu$GkmAa z(&p#!x7m3(lJke$7CdAg_y_2&*0h|z9IPrZgS=#;qRl96Bup5;Qk-4SP`E>&bO^vs zgOagRxgQ-xJP0ptM1s)O6d!M`v zM2x(&d+IsY7}d}J{lIa7GqpQ*D&7v=fnBb}5b!c7dX?URHWj8YH||Aw|d!L5vazA&Q_^ zDvxm&1RxGTT1;81)+Tz%Ov}d6uo1}rOm7EAh%*=c#<=Q7$ha_Yfd1T~(t6hMaZ_As z>zPL$gM;q|%H3bt2SkV(8b_Y9*tlImXLIwGr{a>@FuZwRsdFM{{2|{Yp*atyP`8ud z?jgtMx#t>h5@XB(UCj{U^-g70(UMN4&NhDT{f6e2tFS2>MGd=6l>YLtXl4_LU!TJu z;$X$v7j_k~x3Ud$(8ZUF}^h-)7?IPs18Z4zo zA#{n3gQT5UwUN}DQcQ4e(>n-dcDnU}h^1=!sKU`Wti6Oa-D0WzmtU*)iSH81_mz7^ zpF5D{(%}*yC>bkYrWN_k`PAnqJp^rJI;N9y*U6rXG*p->cYp+=-__fRRuEQZB?9lX zc8W39X-&?uSTvkbPRMVjtXHnVJtBm(okokdF|A5~#$}qco7K;>D1KS-@f!NdFY|o& zkd3VaW$vz(#SL$>9sC1*!s_|;?!}qhi8wpYtB_t7rtr^Yn7C(FvxL+`u8T?Igi_#8 z1ouHNxND55WSts~_@+JMe z}_wL+I&K*zxnJSGf}Uz5+jV18&p&$&@8nC zD;(WrCdX9woGggHNY}LCN3_HR;7W}gT6%;IaTbQ41xJ%39}%!VQcfDpp=Z-a`_jax zenpe~9kpQUSZixF8KWm=7wYCzZF_ZS;@+-}S1Pn318iwnUs_>Cqq9{T)}o$WU_)ZT z0-?{~E$V=|ZR`Zp=O|4Ksk?-v0aVUBO2z^?U0|#)q_kxu2kshDngxp;D65qQ(#bxX zP#Yt^f!3JDQ1_6w+??1;Wuo+-296~Ev@u}n%!lm=qzNicko{vrQ1NwKW#KSxAr?`P zfn%qlx$m$0%#syHzk;8F^Pe}K6yz=mhU0JG9?tEwt_BbGke#^%u#5im|2Ko z;TYPlh{gzdLtuU+H zMUNRXuV>0lOPu#d*5^!&b}y-OkFjMRW?RciUG_s6GaTVHRTdH0xZLEdLF$Smck9VU zsIVSTU3$n&IpTfM)7>Z`wK*Q!(P)>9j1ae?B1 z5)NIdo;3I{6C(|hvr@gGE-_^z!O7Q}ni?b6_&1QBGHkq6%1JIJZ~7d#o|fXU6c-Oi z7Y2B`ji%nzE}%_bEN>2EmKY9Z+q?oc$*kDua4zF_Vc_g!2~`!2hhpTt5Jxtu-rSL| zKqwDD@lU7uNYx)|WA$L6BR*Aa2LdImfuWF(=vL2~TgWX%fLhi)4h{S*Uta2OnB+)3 z;D!XQ$ZjT1I?#dHXgd5(RtWOE(lMj=2^n4n@9CvIWyBchkCG!Go9t{8`S?l1qT1igyrA+ z@?W05fGN~J9a%5n#=i~#{zt_B>qPHA@Voy5$J5OPv!&x8eL*7s2HH3NJqN38FA5;H zv*D^LDiVzq&8`e=tXG&N5Vb^#9uV{C2VuuuDsffSv3OC;J2nvH?=C{CW&F;}g zwS9n6cmpS#l8V`k+(Fs`QHAg%qRmr6oUrH4?92jYOW2i6Q-QPc;mQ&6H}LR1DE&upPL(vi}H!x#kwU?#dn?-)GXbsex%BowZTRD z4FSk|Bt|GnaWee49NlIgdma)Tlf|_7<8K?($dFe?lkWKRR&~F_mbhWJHWh}B_`Q94 zK!Hx_I`6Q2Uhp0j%wR5jM_NyMNjd}_sUocFQXAk!xhd+6O49-A0yzn;8EvHXA~u+2 z@MGS&Je`{*kfbBe`z9>aX~zfw;T%Pmz6#fmjVcxOcb=84YE+kn8TB#lHZn}y=jLWV z`P2e$+PH581IzWr{7tG9Fe8K~3TiklT^M~RN8+kVqf>OSPO!lUi-lsgj99oG@)6^2 zOOJ@WZVi8LQPkMSjC>+^y?oT~Btt$dGW9h$7bbr_e+{aNUv^N+VL{;R=aH$xGNtZg zRFWU}#afQ=p^{vsv{vORW1d0-GlHmkk-1i8`W^}fS#iVBBz$6W<<%)Og4WF`Q1KRL`g z$PM}z6pqfVXpny4!`DFb>RLcqPfcK&#S{~K-Nq@~CQ)0cKn|4EG90U_&j*e`U!_sD z?B@-ki;p5JKH45~2`UZ0qnGh#H#f%b{PXW^3#VR^j?563-=-+!yErnt4pb6l6MH9+ z<$w(Uv0k|oqE;z`fTBO042}gW8va_g1`f2@);C&k+szTMW^onz1s`}8gkK3|>)%`Q za31Jyb>SkSt8BY1-pISM+mCX+S!1~ri&^qP#g-@uL$LH_QILVEtAUzDh(rLL6U}9C zU=Fa>2|?WcT=o;B+o?7fSg;@=X5et&uvqdv4Xe%TY1VFrah&9&0R%# zGBO>wt=A^N%B%Ky&90vcj=Q^jUw*>HG#~3#hmOAViY`}IUyrCz=ui8^;#+z)g7%S? z+unuF07-c^_`7+9*)p*gLt2(><9MxAG&BMB@C>E42(e-+7Ny)dPqZ1dv<4!{M4|S6 zt_zr#xG)b2Cuv5W!&4n$b3I|4#)bge!pK_+&{`E@$RAyV@Has%PKHAyAQSZjQ6c~f znHN$!DcjY3d^1^T-RhghMPKI>8ESpt7UWcAclYv)br%kGqAyCao{%}rZC!Rwx>%Fs zLX*yA{4K-U{OY{%&{WmW;x25{UcOuq5Iq>!9#+9ub8f=YP#4i!gcRUQ$v@Cb+D+&I z`pRf3&l|=odO_K+;E&P?3`c1@nK(-mT2U({Q7Q+Qp@pt7leWN(Ts8co{hefyyDo-N zKzBgthEHlwq_@S!59NCmrf|I{u#KvfZ>pkWCMTfnLlmX1#J!0IfqsUX4&E-xIFTeB zu7|oLNh4Xwyh}rrKxBe)^x+yoI5#0HC-+0RT%L`Cx zp@SmbdusX&#VZw?m9uZ}i7Re@%zARUfcSoK#*Q0Df}3!LP(M*uPZes(5VwAoB_%(u zl_6$Bf)p3fgkQrfu3$ye@Z@Fv_RUh-L3&xHdV7{v@1uct*`4yTH`S)mjr!m0-m37< zi+}WzIlku#jMl;@<9y9~UjJ?f9fvHYZ4Qd|L`PwF+{wX( z>9};mHqz$$0m}pLD4qx`(uaL&%j{#SqIe+2b#`P~a9WPx$N4Y!4ntcM0Gt_jDv~Ch z?nB}L{;=VtGzQ4UVK-wP2uX@Vaq0M@&`sHzR>}rR^lZcw@3rP`ZY3S2(;T!tM`Vs| zic2m7kfPy9vw-e%sV;Hn2MQ(VU}G;lXZhoPM|?en{AZ0+EVlrBHyliUqR(2el|VV2 zDnCl;v@_mV_(^-$VdOcr18`YpYLVEx{Nr}tTRT(9#Kgq?+~_w7qx<<)@_+UpO7@QY z?Onf0?5>U_`=!2_trl>DK1%L5!MI9opqOhhwtx~vh*ZD1T)jtnC1Sx=UnsV<&Dcb7 zsXRV@W%xBG{eD`&3dFPXW6edQsYaG>+=4IS_w?q?xuqswjhJQ8CwoWCcQb0;=A3rr zt2JejIN_|@xCFcu!+O$wqb5G>H|4A6w}Jts@yZqGHi|=%1!oZQ5&Q-+hdZ6<{+C9 zWJchV)HdW*yh;A%L7UnABKfewtuM-@xR2{KkmdQSSCmf*kukxVqf$SVTi&DcVDq9I(IOE+o$Ei+A#Zsgm8Mgs#__|`V^6-%I zjOg=%;7#2TKyA_1nbYr|eGg1RD0i0etpjUrsdxLQn$drCGv^dyCx;r`!(O zHjT3mZ7p4h?*qHD$gmzvE?Oc8yh#H5t`3+M6V%%&g<+ zGtYy~(I1SNIy1H__xEzbQQw>=z{C+rLW-smHEfgqQ;*x%anr2*bW5PM%rx-{mahXu z$Tm!ajttGgg?N|Q_k~*Sw)1BPtE*iJxocYvrDP@GoG#^5FIVNWyJsI=E%|HIgUcAN zj9TW*>>E%23A4csGAfLuzF_VL~Du1gqv@=XTj^BYQiSi#*Uev z8L3zLOX_!jo0O85lZp?+Ue5NP-?Q{4@b9k>M3-VGHr6;ph`LP}2CC);RJ8 zP+91(S7LYse{^3IYvqN0$$~#(4aDd$IFTI!0we>qrKIfgF<*kiQJGO!z7`>>t|Abd zHECeIsm1P$Fx-7 z@MtJVdh|Uo7qU$+{1w|_KAO~S5(BS+m&<<07C$lZWDRzT_ z&M?s|I&Sr^xyI)C9V8tYHGvu=+i|PgBoT*0;^VKc408+Z58(N0GJYH|G4qG=h%WoE z@w(`Rky}MrY>np!`4MiEyMCK3WgRLMW~{UtQo6_nM1l@g-~{pTIA<$_4agE3&2|I- z3*aI|Sxv}wrJUjt9ZCW&?2+85?iYJ-qnZ@HrZ`s-&wtvy&zmP>J77g3oZDh>EgyK=wAl2O^wZ-Hyu_NOZpzHeHt%qE2z2en zJY`9S9F>VPWEN<>Dv0Y<$w(9Fp`~#z^;h+_Ayhj*js^=Dj?f8<;qSAz<|U+dnZdUVG;~uyVnEG$!vY_F&Mih9jR|$n_h!dZLTW z>3Tk7=+BQOaZKK_*AeylfIa-#cH@oxbeuD$1~?O=(%@Sx-w*#(cm8jKq=QOlz~U~z zo=mscnX=7#%*s>d_?}Wmd&1r1+p5`k{n83nfR8P-h17VETy4euE)HP5sAg;|i5iJPKvEMHDmY%bqtgR}V5FoRjC z)+l??vq6bz=w-%4Xht2Q4ZID>N*V4=jz0NSR2K@ZW#?6jOy7m z?L*br?6>G{L6QH`u@CbNG3hSTV7!E&E5S&Vwq z)y%em@QR;_HcS~l8E4%y>d@hro2CqT;@4VCU%HLAK_zfB)!ObM!o<9Ox3H?BKK76U6-KYgKbcht}E}0QMW^FD(sGgrK>v^YGLUP3drS3939mFB7vCRcj zLSHCgoXX2@_IBC~38jh_d-6>@IPWO~)GdxsqaTSbnl9Wa9WDc+m?>>xT)eppcV;2| z_yOdR;G&V^*4~->-ZFa;Af@v4>`0? zT_W<_KU!e!6ZbjmjN*b8c@@cT?KaU9 zIpZ`9_vZvw;NO+sHSiay9b2s~EXc5tt(iIVbQFsd!4fbubQ|?%Y+16C9zj>A->yZ` z{772I#dO-kTGLJEk4Y)XU`7eKM#Z}j^=0}l{d5awG))$fR`*SqO>vBU!02S`<@&*z zgAXnQe|z>m!^m&qY7^FdAa?Y~ldG4PRItbFJxVQUNIUhG{f8ImZ5N+8lb@i)DM?myZdLVY&hFrHjgoMN_;>`66@2*qIBjd8*&+6JK3G{Z38WPq*8n zmlsbPUbeVae?$1XQn0uLw-2Y(WTYeGrSoF_)}C|}UB8W*%)_^n6P74U*DW%ltN)-a^iXJaf9l@ytG?Y!C}W=31F-}5lb#3 zg5~FNa1_R~vkmhmwVAR}ta?~9$i#`YY*mk#hEiB_ph-g_h#OjngWoV+ba)E9_8voo zPv-B37}8X6S(K+aNuR~bJ6eLlH`n}{h6kGu*&JQSk$mLZJ^nKL(h9gKjrl^%Y zhpN)*jv2MHN}76pp;}UHWeN`r5Sj0s@ge0P^^dD=!CJ>m#-A#6A%#p==$y*lL|h@I z&h%A4wVg+#J}D+puC%VXWgpYNaPQYclaRq6xaPVV9okBc185PI=^lC+9Tlg#`lv2g!EKwtjpWvblOfh^{Y{rW(8lNptYf&># z2rEGxLAPmLm2y94agMy~W=ZLU$vWqq6;|92Aw!A(*+cyQp5YoJk>K-fGIy*~eZR{G zmMYm?e>nEdUjW_JT#$U$2^B0Z+Ntv;PeY`f-1kXF+{NC-{V#g|x8QH8<%|FIlKB1u zGk)Cl?0-I`Gta)&bNd-62lU(?{?l*I1hf865omCpFqt#8A9ml-d7P}w0i+xGIpjBA zG|De!odC~~ zn9tWu0ebVrNzQx+Ua8FniK}@UsAmg;&tg0EY61C^y9WGCEM6(g2l*;^&S%pbuo*`? zH33veHyHwD)(>ms#^6^-z|?s$Dp9*UT&aM$1F*}AJdRuXqOrU88&y*27mc269I371 zi$-RshPrit{2@&M8O8(e4r>ka|2_2oUGV?@+iYcy%(Niv((;8IS);?-w6JhHyJC_5;OOXo`-1t8O`iU}KmV^<;`}$C`S%jQg8Iuu&7MOo-1B=*#1Kkqx`sP0 z0x=l6jQnTh2|)fW=PU@~&!Q5Q9P97D!ZhXHt8e~YEcQ=hy8rea;qMBre;x$>XO8gS zG<*Ed9P)p4s#o|HUo?JqR>i+1Pj09G0U4s3Wz2pQ+LgD9;S&+}Lk910eX;hkBxcjgQLjlTI)!Q|2z zO)v2w|FO~5{nzhKHmqI@{?lgFgYm-GXVCpqUo>tM&*abKqY5Q&Qq}8HWp{eingz0^ zb_xxoY6@*tmFkUz$QJvu))D-jg4GSOd#&;^sXRf183D7FfrTz3r`KxnX&EA&`@-kh zWRB(*s&dzEfwkw$D~FbUf3Q0!rMSF3PV-ZPHOV4)97Vl=cmZ{QnLs`s^b<$QJg zX5ACWzXNd2J!PykY38QF5egF3-xQH~V!03!$RzT6kh>7E>ijf+lhkAyD?Qu6-a(f| z(5oP@t-1Fr4+;gE1T*Iv`c1lFy5rnjUflO4civyhJNLj_C#&jAhik!B&$N6We!$~G z>T*DG>rdh5N>+>J-iu>+3c<3Ze4(QXfRYjQ{Z9IXV}ZGVD5nICHWhW*$Xsp)B`6#^ z0Zgq$Zt)rCq%OZse>&~=Qy6LAevmZNt?N&t4eaTSz546BRc1%yJ9^iOL5I*620A!eH4k^*XyM!qPateat}wYmuZ= z!1%I*Gx9;sP~|!SW||ZM#=5D-t68#dIZBI+?U2=3Y5W{T21iRJ$wctCcI~k`Wq@;O zo4z`0%b5Jv`N@}LoRKo-)}w@|5|{FUignLp2U35#&fZF!E1~6jlndNfe19+2^EcMZ zj*{Q-!^@W4s0IP4j0FMazL$8KlY-KZ!rT(n#B^XXI4j8^J!#hj-;k`7q0sfJ(3se{ zT$%9@?R#ZpnbHwDxP>KXgMko1ZA_azk!0D_8+22YWAtNKFW))jeOF$~vHPyRDZe~; zICTQ%UtFCPXJ(NZ%eq|f`+-w$GvD=3+Lh*w7RAMGMunrH{l-;_eae$VGsGB$E%pjg zQ_4wUt`P>rh*wi(F+xfr(x=kyUW9c%dKR!HIV+=6g|d|*{UoGabmb9zC4a=S;Ho6} zDJ!wytsk-9v*dPmXv1;-h1%@jF61^ANcPNCMGZ;loo6?O?WR_^(dW2s*FPIcl$*b3 zhy?A_8>rPzn@N2fEoJaiVDKQ&M1^MDYUFkr8Fy$oq@uPF*U6mItbw3F>^AhMX<%;7 zgjSmrP&1U?L9t0+WL{(FWJ!arzc{*O%B$#%Us+xGOGf9`24|8wARXJ4^Igou1=)L& zj}NQSpKLOY(^9X)$b5hw>uEesv?Q|R$f<97T%`K5hC{$y0uWBxApM1Oxz_u}-@1N~+=Pa;=HVQJ*?LjHEy9!?vAM-ibqd)~N- z$~rT)5>1lMLeb-Ek;lZ;P0Am8kzV6f#{y*Dtg?@dn1m=w62Lo|Kd6n?Wn788azM}4 z#AC=tD}CDQ*_)X4KR@dF_L#0mCbmR0n4PfwG0FC6>)o#(>`M?>~VI6^zPkMqxfO^qW{O& zxp#evu!@&sF$1!XSKxJJ$}J30N2mspl@BZ>q0 z2iiP`62MarK+3gEIaBlKUgo!WsmyxS0MJLQY~%KRj4es5T1q+a_|xf;`k|{I-8QZx zgaM&^-HBpa7Jcd3SpBjE{gcV`*>mUKBB=~P+40fHg=2DaRYOz;uOHlWlACnODu1A* zYn3{jmC}rzq=C6I{br7y(#keb%sM3T27*{79HdXh_!t|@Y%?nSCwV2=Ggmr8$dAL9 zgNN=t3NPQ2-7U~DgB?KCHsR1-gy%MmVdc9Oj`#Asiq6N?4|JpcRP;A=AN@ZsL;k%I z=Su1BV$taAh$<&S%cR7ZIEHI0vBlk~0+j z(AqgYN-@#U|IRffs$|c#A>U?fzpFdxNX*+s*liTx^Nvi5I+JZAT7hAhtxnogvFMh9 zNHP1qStlp4a2Is`qB!GL;kHIPh%E&m{OZ7Ix83#`cNSbE3$hCT@HMV7y#k#_L6O%V z9m7R#?$$};hEOfj9b6X3LkYajWzJ{#p-F+%tH4myGYePfDy;xbiJEMWx`7Jq*+jhf ze8`5HhWVC>8^5kL0nU~fz$gGTz!ttEWK$jeDnvmcG-dLlv?uEE@ zEv>%&bcgOocRUKhT*JO^xBjhQ03TACcWqt=yX4d;r7AaT$*;@GZlQt^Mudp@4*Trf z*=%w8F`=ZHrGr}cwk##-F4D1>(0N`~E-UWA*Yj@{WG6d&-}}11*XR0vW3-z(xmHN7RP$%CHYITmU+~08!@fs- zvy1!e3)cyWVcimRJ&RRXbDs(QE_ri^xEa(8kEDugdD5_A$dJp3mYJenK$&>8A*m(Q zTrP!)1Cm9TctnoE+^kX8F5uj`w<|#6dTc6$o^i*+3!7dePmWDz-Xd0PdVM0^NTe0lGF!r$X~LjuewR=Dr*y@RMambRtY3N}=@l=W9@vNemAO z5||swa?*QbfGvYk%oh*F2SqdN!U~#bp^2>G%~@5yGB87-I{G*!U)W~NO}umkwAsql z(S5;N?S%OnYH{A;Zm)`x&_Fp_@)BuYZwe;5Y%mz+4rLcek${@;fP7j=%9M!B1W&#! zAEXV?kySB|5y!u9I8(=^MxSNy&TU`{@YJ1BOlWj+(P-C3MznFFe~*{4op|FcrLwi_ znlr2JUagn&EbC~P8!$!y&a72*@MR(aBTJIE)DfGHPPA2e5IQ7jHET~6$(wW@&BEHn z(tEviq%x^Rzw`i!`=|zk`z8Jrf#f<6?09mxKARDBc&KH)9b7B^qgBFpVQ|3-@;t3x zLSkJQZ+N*HS!Lw8_ut;0Zpadc&;28y%VSj|)# zZ;3EN(=9Wa{54u2!Qv1rb2G2))6+9l;X9mq97}7D6m*<>UlIG=mFp_hc{N1b-EVnE z{P$Fb_u<|MBcd&Yyje&*CYohf=D=BX2K+TrQ>f+>E>giuphhnbFY({zH}4onxhP*x zYs(K=Bjfk*Gz8trw2MWH5`U*Tn{dyF=-;z*?^~=6SSUs^VMiK{09)-Y?x96M%CV8n zIA!knH-4jsMC18f%I+!ez2XFf*;^KMZX0`axD$V8&pozER7k-H=DMSKn8SGH(1pGO zX*c3e^nSer9R%QyC8;c4KSkX*~D_o+TR<#qF7`yTi}c|2wmD z;*UCc-?AgC`d!7^odY-}zv#H+P+p z3`*2!rlQoE*QJR50`bvEg~i%%AKonnS5Zz7u}?JD9B(nAOY7Jujwtn4v2f_<+-v(v z9?@iVR?>C8n%cKyb~tGIuZqmH6Gl0i!h30JnF<21e{eyja+a}saV?dydP6}9x5(#U)r)!qJVdZJ3er4319ytD~9Jquco=f0K3 zv@SpP+*5!17LZMUUI~%L7~xk|fK2GP+;0e>I~J^yrdK9I(|+^Y@lzYoRul_piDr%l zv~4ueh`?%W&=Ec9^B5Aw|7K~IhxQv^9Q;1O!K&mfbeS+QjMbCL?-#h7aroJ*l?mk$ z?m7XI>rXG|@kUZzY8H^%md8M=`gf5+GJo!ia{EeGtA)^iT5=R}9qWqGJl+kLY9CC^ zjrg2_-s00|411V!Kn#y0G|X~Nlev@xT4z{ms7?8d=Ft>8e10#tp?56mTh`~2XHFMd z8c*4{zAUN^d4$89HL>pw_0oqUWWkS$0T`pDElf&f+GwS~+knJvfiFx&ggopoBH=N^DRgbaBfX5RbhAZ5)x88NIlrdeb&@ zmAnj(+o6T!<&TFuixa*jO+5czV$&AH-)#HA{2(wH2I6bQA206~eh~T=rl3nGV2Ovc z9b1dCM0`&%O88SSkCdQ>7cPv=4bAZlTI?Fs-PvwLlsG2JsI+_wEGB10%o8^|tN!#7_>|}Ul~w1GUA-3{z3$C_m!0ycENf^q^x#}Q?b=e< z;8gGtT>7-<95ZJe*g8Yn3&acHsA%3zs4sKhS~1BFISAudS0WXnzKeXN$6FbX;I>g7 zb24R5L*90Nl&CI+gez}|(TVne&eq(jq0jVA*}~NBesZdosupo(rN=0+$Aos#) zrZV-PQm?ifFVhAEN(t0`hqq=`r<^Z!sO^S-8-NERH$X+WofWi$-8xZATcb}LJ_A?P zJNA^jbH_-vhsP1W`9# z#{#&+IlkcZmSf|IC94)^1CG(kKk}$|XGTXhE(Lwf`gRX9y@SIEo9!WS1pFcTwwp$|Q#O@4>3J&zWA z*sifeeGqVfUwE;nRP7CvuYGV1I~2sZ1!m=_W3NtM_$R-;f?h-G`ap_hiq3TXBDGnI zir5g*uFBLj9%9=2)7esJ0zeS)35lzOO8KFoQoQyf5xpHI7g}_*a7=lIF@b0bcb( zLpFu0*xZ(3QX}kU9|DZKjU9X=UTJn0jmNAycCB8H_?VeqD)Kqq9{^khrY`~_K_ignc#~@50Td!KN)u+Ul7}FZthwnePe!TO6k#TXDZ8om3bD#6}uNhSm=dS^# zk^SzaWw=BbkgD)zDbSrfQT(7dWoE}`9s;L z_6Fr7&P5S9_O??gNXe`CTIC71Z_djOC3dH#*#|zh7rWeba9r%4Vp&^k9-~0oUG1ny z70yP>6CzvQ=)>F*q6S#j{A3{1q7n#a!9COVtQn>sK9Rh=VK*?TC1Sw>zh#i^Wm5=Q zJFzTHc@~rX#!nkQ!!MnAQx$U|+k0G{5Ziz)*Y+^{Hsx0W4~A$SAp+Yf@`6?Q0%*G_ zw<44QkfaZ|V=&)p(^q#&T-+#=gHC|=Rf_=FK9w|+C06(7VPZ(}WGbr#R6H!6lq4^N zH)td3#TK?bxew3Pn8V_N^+^g-m6%Gug&BuI+6kIXhT~m|20R2)qJQK{04I=Ddt+6# zg2@^U|4Ec3@d01!0U??1D^;enAgOXufC-nATCP1DgPw4+eXoE`5J#Di+``i?g!4Jb1!`g@g~; z1;d#xSKoUdbGWrw|6^T6z9g_ArILx7uU>K$;#aqfM)Y&2=%_ktUf<^<2)U7nHWE!| z<{SU7TlLQ@-Elm0BH|Ea2&OwcL=v)OH{5e|gKV2T$~D;q=QJ>9H!!nkCxnmx`CU@& zOzD7ye1Dobxrm`u(jBL6x<*pD4K@+~MEArG7iGd_D& z6H){d?iTDRk8Uqo!;o8s4ddP{%e8cMHgs<0;VMGLAy-Psq6~>`&mtHf0_e(3(nAD7 z98ti8EoqQi*kFc|5=)X>!fz+kwwf#c!Q$@y98?Z#f+?k55W^E=ViEg0_}L+6vG9X} zWt3=`QPa?IB3SqR2Nd~Pc@4T=NdGj-)VoMe_XrTOUNS3PXI59kBR+zzl|1RD{8rRj z_P4ck#13F(ksK@6E<~fnN2n5v@+@G z8u4gxA&8g7Fw~-Qq7a28n}qG=IC}N$K)k2UsALHDOCG&)HCe8QIhONd9ep$8Gp6`O z(TxrrA-|bxHejP2pphb3w@S`&@y{GJP!caUBlpaL+ZDEzXinzd$k`cxzMF_wjVq#w z8fy7(>+Xm9gmG6-1aEabzIE-CP{^^wcj9mX-WfCsW3f5y9{TR_hz(Nh?gl`FH2TP_ zut)_xp!XWldgMX8`L1+Cm^k)9$$Nwn9w?yzTr) zkNfwezMuDMGA9y92TleMcQC8kTdg+yU4sLS9@L{bAe1OdN}&>PNi}7v6uuhufbcCK z&72jF*sD*#yA0&@R0IUUofjIt&1=)QLP4F*@;WUh1Mym}^hn?GT(dxj9HIRlhJfZs zte_h{Ka%3&5;7#)wa9re3Ucs@r7qB**oRk?!Btdbw#ut>5!o*Y_$IcH6?^kDPP!S- zj}Pn6K)bx{Ui4d1Pe<&ls&-h#20ix886Sj?J^rBjR?lAHXu^s5Q7mIXGI)>kF}AUl zJ}Tf06n`XB$usTZ3Ep@Ka06rXE-LQv10mZ%k7BsKah9Iqhwa`PpAkEzrp87L&((?A zrF!A&s9KS%>XkPkhjp2CSbF8~GkAqoX2D(g^`Aa0yIm>XW#fJ@YusMDYV>Aeuviu62*y`j~W^vhBgySI511|^CD2DO8J2swHLY8F2k(y!9y~C-iQeXH~-2Sz1kiWJ%^a zl#975NO3In@(aHyvgS4u4}bx6P*GDeQv}PJ3Zk~`{1L&OCLFf`^q!8(1fwI*66?zt zDW7og4&{y2Ne0~3o6i21!iS`)i}Aqv-pb`g{=e9j4#4I$KG)AqbTOq4G)?B8(*Fnp znFAQ;C&dj$zXHl9;-CoSc%Dh_R}@bo+Q>*A`Wv>551k0%-|RzHDn`x7 zjO@5KA z*9r*?``7i6BR+Z(<|Z8Rd{7;x@t(~!Qx^8U368?4jv_>eJFW+!>24?3+&V} zGphwN!V#Sp8VV=(h9G-E>oN!9`R>#c0n*%9xE9`c&F?3(Jw5km<;A}(2=0?wyAr^f z*szgcj?w^qm&4v_B2m9l{g(IX9nJ&B;UO)d-`-VqTN-kc75rR6Gh&GsdARFezngo5 z;L*&a^3eCXk=;F;M=hdGT)7t+@V?%pa-<B-}b6>U3|Q|vtVJ@!A-9& zr8pE{9w?ndA6I4t4r39n#r1SHsqwJ4UQ@@LHgCe5^&7D)O2h^!Bc`!+HeAwnLPOIy zr&)7vwW!4d6>V&wI2HO7khpt$3q);cWe&kSuM^aIxeNWcr9|%mtFsG^mDRMKxo>}L zsQS0nwg2Qy@xQZPZjfG_UVQi!brFL7Sf^dgm0L?wTt^bP7Yqb5qg-Y6T|d^@-Ry<9 zGBX)iZ*GN3XI5T=&;6^S{XZ7TKb_ok((0tqmX1n&_Tb=`mc5lUdet9>X3+zi%6SSC zN1Dviwi#-=@ekiWVPq9DFmzSP;l`6&(W%{n=p88zH~!ps^dFC2VA1;!xD{V7FHcN+ z{4U)keIU-L=c+yZwaxkt%i^G_cW?CMGF`qGq&)};aE}|0sYt%8l`^R1@!}r<aaG(4@dKew~Iv$aeabvy9+P^T77OUH8D z*6_dVasp-0+z^Z&JM8#r)UM$q>ENTUn@8bvci z9A+a%#>$k57evdE_@oTJRTy_7F$lj&aP6b7lNeFLt+($u*`Tz(2wCZ0#lDLFwUAgp zxU2KBM?&66SwU6<8&U8+@T>#2h>ASgutU~IdgGF~x*51adh$__we(bY0WiS0Df01N zdy)c|bA>>=W=9a*;FM^fT$Dq4WXecqe{DF@3re|T^pC#WAvO5*6fZsS*uA0sc3n405mbi%_j5 zVkLj1T%BqOfgWzqzLm>Sj`+abcv}h&6HVB7zFSKF3~Mvd)b9kb(7EAy&2ClVpIN3R z%PPxrFdMzAOGiyEV%iq$Iky69GaT3>oYVgA+n%#=M%kI6U|T1KW;}kLW>fG$`zm?%vrDB_ear_>XRa>Wih;eFjXfPMRBr zO^*B84`SUNUioi#FHrGMxf^M(g1ge+YOmBiyL`1F^vK7|)Xd+PGwZG|)9F&;+}$pa zK&1#$0m1iV5|YQptAMYPBre)Oo{(`a-VSW9gE_J0u1#}0K*z=Kr4$9FjWO2?GTRCm zy?!1K2{D(uiKmMFT;q!g@%Gfuhl`>|cl2l!JLff?CML-b9!#TVxukMFjJTfmvSYhE zt;o1{gLs(*YzxgApvF8|3u%|}k9E6=#skbTU{^((YoR1AKw*4?$A}|-IXlGB4}gQC zyy=WstZnI7PN-^`Cs^rD$1Fzm#vsU3JJc;_5ekdak_EX;%0l z75~i39S^fGe*5Z!zuj4!cS24wMXze9_VyxLPWDmuOCJ-E2b`_JXl3HfKBAl$E!or8 za9HZ_IY4Gk^i+`@g9^D_+lh#7DmhlI@T2#!_zMrcX;d+t7E7%i(%99pmSs5QxtMsY zToCM8=po4F$6i3Cn_f)KFmfR))?`ReT<&-BGd*E6HBz*E&n4U#;X?)UmO8w94_1{R zU*22-QSqhJ98~DnEF4gS^o;k+(d)h6FIBe0)|)^t(3aHr@r zi+dA9yzX{wL})|NmT+#kt>f!t?*S^bSL`+ZJa{OUrta`H{kDINy>T_B&46vAUl>$Y zkzQ_)+B=WAB6*5G;a>DLb!3iW3z5hiB!dXsnDsYvGYp8SU_N(S>Un62tKq{%wvBB0 zFzRT^CACglZEgLNfW9h@C@IH;G9FUV@&Yza!sKp^Pu|mxWFl(peO*L@hS;`=6l21kh+CrUB$x=6W!rwN z`xWXWqKYAsbv^x0*PG@$1TJ}nTb|}?o8;=wX=OR-Il+qtdT1-gK_5?it0)(~vSguA z$`E=CFJxjxb9~z-p?ae-Q66#(mWyQiQrIE93E@WMA5v@u(H48CLCa5u5Klxewu=&3 z@lu1s^pF)mAqe0lS10dzjI@z=Ro};B^iYE3qT%|w)TbqFd%9&VsUcO(8F}{DC?mQGGJ)Q zh%*jHx28({MT{t^IcFHWoq52eSDd#pjgvercT$G(W>PCL7DiN;5JrXz z-or`PNVsO$yrhp}Um7!&>Z28=ytTxrc%)xE9?~|D?%2RT@}{8km49d_owka?l6Hbk zC}qzu$|rwxWW%e=JJh1qVf9D$P!WD4u4=3X#2NEP^;d7FsIGZ)3n?VKGzwSN7%^i>NH1xC@b~E+S@gPEq56$LvP|%H)WqAhCOAJ-KbpB1;NCf^3(D>m#h)>mATYs;%h^8c<>?<{_tGyTLyTRa zCuH6RJ9C`;bJioD%`|mm=lAo63cqG%)Mc{Hta7RfPnecfl&vtr8~DpEZ=L=rLH^zS z;QtkW`Jcl{Dj`R4m!uo|#!pUAmF*O_&m@95VWvFE-yj|hbShom+q~BLIP!2Tq^;bOTO5hdy6Q2-3N?5H z{9g>tid1sP5)ZhG?FBVN&7IV@EX$F*v&$%ImFwGnYU~{M;>(_U9;JoB_iBg!vML}^ zAfJlQBs^)5=>a^xTzOWrG_hP`jc=os=b3JV7C?c}TcwDFtjKcaE(LP@H6W0;5@(h=rbw;kQhB94r(u-QS2{ ziHob8*ihg2@^VXgzDe|4lZh%T|8ifakRDg|#q)VeFYXd%ayDHus~X-Fu$Cb+gJSrJ z$?cw$ZBrg+({w-_c^E(B@3nnF$@JSyaPc-9Y;Vt>Tq(+xyr0l-uEI zh&0-zck$vkhFdGsr2@R$F%e0+BUy4m%t|621Ey_IaXa21Az~kt!Ig`VVoQi>P<1}> zU_DgNb@cW8OhZLk^JYuOYEdzp#XrqSEy`@Kaf`%<8tPMeXZ|edyTzz{D!FSfb6sGB z1!xXfvGC;K00E2vgt6vA;>Bvn^(C+xPR}s$MpQv|;bJvZ6nY1Vd*%z#tIq(wxQdJd zz`-z~XBfeJTtS7DDHejvD|3^wVb< zQX0Be67lmFVCVjf>j`d8kk-z8h~(;ub()!R=CG(buiKWeF|W`S2~vrW+GwsAec0Hw zzYc8~p($FT*OsE8(#CWb^md~IA>43h{kL(}X*MHa9UUtSfog=WyVzCI2jGs)lSry< ztV|mk=?;{{D~6lV%6y!oEmlpEY5H;2A0`@?O0SAotp<-^I}vK& z33~PcA8u#VwS|!73}N}GO_L2qwW6+Az)sq;78BJk_Egy9CaD6Hh^dTtzjhItWE3%gNwG zHPJ?TiAkIo<|OKukbxh_IVi3a>tdc$lJ7Z;J!YN9!8l1wF_NbxwN^vp-zul_6|e%j ziPU!Wcj*aH1hWKMZ5_3UX(DYfGWaraX{{uf`6~fefp0(SGp|jE_9^nYk!={xIwvQR@93z0rsd4C6In&%|KDjz#A^| zR{^^TvoNJw3e52`!b^(Mf;0kxTA4Mp^r@iLv~-)CkM{5)C9@P0g~7C0YJYE1r)ltH zV?lqWqg8(_g(x=`?%>@cz48(=ZK{chTQrkqE4PF+X!abT2{rd@|Aq-|k=*rHBf4F; ztaXTW{W;;ce%<%_x^_q2Q)wI&BJcNj8ZSF7J?nr?ohf%<00?mhadKzzN~BwMd8DS3 zY_B-*+MA*r{by9N(B~(n>|^@)rU0$itG0vQgzIT}$ImA09L=mZVc}1HO`gv;JtI8`(dKFygA81ky$kb?X`r;os~;cWHNLQGsBo{$+F>BV+8$-)Mur%wmsiY?B}UBjCt zILN2gZL{!b>)2p)>{!BIpW{Z{XGVk*9M(q)gn#m&6x#52&facZohgN&-{irGxt(+3 z@S;4rITKNs$F|#iE7}34H~$H{OY`6@z!`1-vufww)GM9(oM)rU^&@kmYtr}NJ5k<_ z#GmW=EvH8yZ-|N(G__J|)&D9h&(G;NfA0auiTZ56lBZiOd&tn^^!tEL{7=VHcig-( zT2mh!5s_b6bFbfzd@a~Z$DS3mT7ST^*J#bho*7j>N9}a}#JSK5@X5JTAvZ(z46u&U zf0-;w?0)kh)4?`4fA&Gavfauvux{fYSso~WDMF~G26a)}A0D^NVKG!IL!0i7tB2gb zOl9KAX-_bH8~^&g`^ibgw_5_7Q=Oj{um|Zw($@E|Z|FNH8z^iHCO?%?V-Q1BRSMjf$tLVV>1t?%qC z?30*W8XhW$|8>Eg{a(*-sOg>8Q2JcD;A;Je{3<%j^G|F>-uVTT#5Z9 zhGpRqFQ1P?G^$Gj8#9SI90ou0xlVD6xs~J3E{-Pd(0L`hy4%! z2hwA!h(C#O0^|lT>PeOE1uf^?F~v0pqs&hX5g6}h0XTi?a1Ch>vK`h5o9RMllU=|^ zmE&eKCl79IAt^){ORtOZ3Cyv-kX5L5vJ#*E2q>p-1p#m)53WJPPvt3V5j_24bz7^H#p? z=r@!$)HdSYwQ|edK1C32iJ5>DT|mdcsQ8BmGQ1f{qonB3-TyQjr+FGKa~GM3cX;#Bx zDiCn*h&Ik(x1Xj(%-<2FK&|L{xQsAL=4bpNHRV4nz{-niTmK;qnJQ1X25Pk2Fo){Q zbH?&J`-8)F?rtA(^nO1_8>;z@YlS<~{(i-EX5*?IA+lK#+aJ^1!P(F##`5Q+%Ie^$ zR(DK{0;bPQAx!)WY_seGnd+1+hVkkrk{Yz7=li8sN}GB6xTT))BU_t7otUMBTLad< zg@g#m%Z?}*IX7yB>kQLMf5rBEQJ?J?E);$zmy#s`%D3|kV$h-siH4FSv6dZW2>u8u4<}(cdx*Dk1fRZN+Z2Suml4X)=x{Yk^RFBwG{3R`&wg9>h>X!Yg!=$CYp2 zmLCzV0(VYBr^n|l6nBpha^7>vXRbM!UaDp4El0SFuHIM0V!o_qjQKVrLCwPSpBs{M zXIbhLcms<<(BdR*ApR!uZNVX1>GJ~fTTCwV5owD|(Vr>51n_~Y82UP&`DGsz$ICAkf)j=bIV2S+*RuR4Q3(FSyP zke806Q6#A{F*Z;cl6_(?KStH4+DONyI7n-vWP**Blo0}3j}A}%Scj|X{l-XQ zd6?fS`Rz1iKi12;A$@LG<3xRS#+mzgp~32*2o{>A7%4Nvjvf^0G|z1&UVz?!pSlH# zT0J6YQ17V=`=yY31)8gn+R6rPx|cjljcU;Auxi1zf)$sN(leRSS-vlA3Z_l+FVf$p zoGIRs;@U&(=owi3P&Hj&)`ec9B5#0&Dquir_i7rU^_lpSh>nMJY=w4UG_kpz9o1qg z*Ep&T#gr3ati^Kw=`-v~fA8JBMwFijF&9`~T1kdjKl%-Ped5z72TZ`NBJwy{`jc7F zEX%Pgvq4#kgHpvql0k6FLW<*fYky6=5$QCc*vQKcoWWi`UTW}2Y?AR(YA7PbT!)^r zOhAU?Ba#9_-G3#vvX^))A1miNumne62vg50^~qyM5*@Ye^And+I8Jj84APaM*QZhB zjG4kb+quNRtpCJg=3i9KnazoTr`yBcHv;+~;03Aaf2*1`|L1tT|A!uZ|K4HcpnTSp z+`F875mM%WYEoR)(_HssU0;=5*)(YjWi5;>OX(;UH%sqGyJa7jz7H<_)7v^ISBTOI zLjq9euW-)q|HKR)TOpCVI1K*DP3vG2!{l+tb?|jN$|^XnZ#O?cU31@h@*hs({FaS3 zzj*wzV`Frh%SLx={q?)HZQ7f#?bKML*u}B=baH4u`R?iDyBp8TROh9i`88I~ zuZ{jsAMO9%fA~+SgY$|H0nb4}9CRn1tgY+CQQJiLRt`WRo?)!Rn0JJ#LOKr&c zug*QUEV3r^m4{F5^1Jrr@!8oI#|G*RZcItiHeHUWvUgaLJxSEHcPf{4Vou%HzUgxi zxGSYX@Ir_ip}~Q8Jwq+FUNlku2Z*bf0KNwM-z^ixA=0PzHfiZ{D4J# zyiun5eJ^x>>HO)^#5B)CX9YqAJ{XS9Nq6-SJeG9V+mIe$mho$(XW4nOKG@I3!VPUQ z?MiW;=M+hy&NvMC-Tqj2+YeA&F>`?L`sE9IWE2^HttWT{>>v!JrdG7XK6+?pVqt6I z=h!ks!%BVAhpjqxcd^b+dhDVBG1Kly$q?lh%sn5w5LEr?s%#KlRsXX8QO=2)l!>#^ zY}xdAhA25<);KOmpPD@;_KHph-6H2c;;s(t-7em$y1Vp*;^0?h|BHX-(pI9i4>9ER z5N@m8mDxSt0)X;XIuiP9?QXJB|F_xFnH7Kb{DM_-i?>N-G8aVgsy3~3#Z&}M*2%ww zI!=qhK6Qi@b?bG!b%sYTfa0l9nJeL&h3WboaYlXV0tcl|KZ@?j`~4=RddD3d$WJO5 z&6snx>{ZMEb8v1G&2)ct4gnH!}8Sf zuJ-MYqYC*Gk9JJl>@Hp76nl>tB$5CX@GxRs{OPx1#e^{|X*)!On2s5zdX33Db)@@B zzwWm5C64aurQPhQJD@b&(#3N;&-UXw2X|-{Ub0rTI!^z6(A7@;`tMgp zo74C2`CL_ZBemNqvwkJJoZQ0MAW)SZ>@6eO+`JzMdY@YfVQo44JbkppUm%~>dn>|; z7#hi3%dY}Xb3n^a8xE=are#`~T+ja)9})1B-=P!Xe&W=T`NY)Kth2-7@jF8G9Cw}p zn>D5wmHYbb05Sa6ivqv`b+wqa79~;yc-$CDC2MYmv`cVtD$|QU6``hEG>XVA_uq;u zp3+y#why~xwB9M|QAID+=u(hOTTH2>^>eVh!>^MqoKWYyO8uDNQ=XqDZWb?dOn0vYrK$F9^%xKiuMeC(|=gFl&o0)VbC@JyBIe$K5=(YHwSX=a(HXK(x{ z5x>7%#8Wg>gNQcTAGsYJ2)mM?u=)D$Uh#z<%H0-{@b|I<#5<6$DDTI*vpsbRP~}ZL|5CodGJucu2sJO;Riu5<4VrW* zy?<8sl-=27m%CxM&!`ov_ePsboR4Bgm*a`0=x5(@J+?y_{&Q1~-t*kuoo}nrHecCm3MqKDV)F{UUZkS9 z{^}HnKw-4ul?Yv@Q_+ukyv;@==!~U0PjS1~>DvX-C&v17`xejk7+V=$O6r+&d;(HW zA}wD2>VqulPq?E;<2omr-?h6v{OZuuh*`bbt;bZfj($y=t@?MZ(IQS1)357cj-fb| zaG*KIh{j|E-0X)_6IUWAzWKng-C9}WZdX&p{`y|wB5bF(-+TO>gC!X5n#0AnmC>WT z`}uCTi4?QaXv&tmnbEIUj-_p@f$)AQYx2yUqrvz0JP!&h)$#2f^1QFcRA?|G8bej# z6>dZX>zi0ddLRXbFY{NaF`=o%W5cl}qf@4#*Fg*`QO$9n)HkenxIL_h?Tre%6{#DL z`}hRcH^%Ar$`Va?cdyV=O1=8oJ1KSAo$54_tuOR67|mAX9!%u-LD-iB+CCtx(^I+A z1&#*pZ@Y~sN`y%Ez}!jEKs7Hc+#Ido7qOp(n_K)Il&I{|e|QOgDpz;0!?^}A zIlF4b$%)3L;d0Fb=o{{o*_8WRQ6x(jx=Q*$y4W%7J}Erd(q!PC34Ot9c=+6(&0A}K zx@webo}S=p#I*3^ufhifE}cPT2lsWJa;^>fcG11) z`GK;`kSbd3U#p=m6M-1-VP-#v7x<^_3mD6%wwVpJ1KZK;;L`97uGBuj+Giu?nmnRr z((ho%qUS^2ey=;n;^8-G8kUna$&XX*UibH`upQ0Ed8UUcf?dzFo|+a3S{H0bAB9id zwO~7H^**k33Eg7$mz|eMdg&Ehy;E~LlIq*o6+OCNQ&mh(5K@a*|oMgJp`vwwJLlstmX7SZ}w! z+8C!@o1Wu8q{4oT%h@-EVxz_wE!hEH8yZK=s`?F*vR_V{-|qS1&%Tw)b5ylW-x}`Y zE=sC?<>o#qgZCIco5k__f?*0Af0y)}AZIX^xc?lxOVN9CSNilbn|6oRT6YVtRaVcm zYwmOGso9wy>rUltSu1SVB0a;>21_3ihc6Kz2Q#B-MZ1kUu}-hWCh-Mz7X>xUhcri& zQ&n%>wIWQV@gk)N`p#TnY5}u`alm zVlNpFyZ?Rd8+tvUx;7xRrfU>qh`afmsA9e8-g?Rc++d?fbsQbuoJvt12lPa zmhFJChF)jXr}Dz7WtLh})|L;;>7Qc{&d<7?cQpHODW>tm#9F_p-w50}>|nQEy{YIu zZGO!WCKu67ma7Zr`HC_gNw2Aty!vYibNHaS3+-m!^fdQ-g63Y$UE-axY-}#!8FlxA zWLGtnT#`g-R~OCs>=oCov4uNzFVWxB;JkZW0WuK$s;1As4vp@RHvbK7D|{m}R;C4v z5L_D@jA#SK7~$OPVzgQW&fC->46Cxdobhfap@Et4{aL1g&_QI_;vt-i2}16%edTXLAKhD1 zmC|biqBwkG+aGb?z7=aT9vY|hFe{1J@O&H0-DSGw&iekjZKrh4?K%4ub692nW_vqr z-BWj~&x*&py}ZQ@H6J(+b*3-(R^hpKyU{qw34An%1_*JohEy|#f3Wxt;2W&N?=Cds zi>EV98jN+9-qAeQEKogEi%WS!BM^A}UUo3fVRM@4p&4^G(%)HhVeY&cXmp8kwMQ)2 znecC=RN^{ZJFrWPh`i$X!b7?y1LgkZQvoaY_K8`-L=m}(q-cbXT{*MDjHf1E;-R7t zYF=NaLKWlo4^ZWOTg)Y?1)O%C{LV$);B2)Y>ujj~K7C0~USS48YI0ZMNjaK4SzrBy z4)M-cX6Uq6cT48X3J(>GCco+p63%btG z#lPqI)k}8ES35eqi$1?9nkam_19XQOPsx*krK_i;hcf;__QG*I-v*GRK&2>P*)B1~ zel_E{L2SjxFY4ZQ2Y0ZldW#?0cLyAJ{Z`4p<~cpxq&K$QH^-uc8`V|X7lpV_3CXRN)3IvKXh&8<>g1iDfK+schHANzLjLYd-2~PApc@ZdFsv{$}a4^`PpkJ7Fn31 zZrUxsYQ;S}rOvwhhk$THOHHk&>Whg9Tz0^%QLVkgO<-c`zy2Mrthj-i_V>8MeO$WT z&$zzB-R=9=26pfH%Edi)4mnI}`Y2*Z7yFSShms%b=8aK@YmYa}RD7eD6Gh;KNH5Ul zd-C#I#;u<~!D`sVS?IkCWQ!xkKi0kLyW3F(cK=b&xcKi=uSjDVmw;;Sf8yrgAOHI| z-BUU9HEW)eq%KErfS+r~KrX%5apdEM|N4~wbuRy(y)JcCVmu84D*o8x2pyR0al=a zKi2iQ2g%GxNytp(U=Gs)Q3lj$#W;l0F!2`TUID-?+QiHf-z)5l*tdNyF2bm{E;ygi zJN7jcWGf~SuN}$1R*EVVaJDaUcAhnlw6AUw=zQ=i7aq(`HyrZ5tgnZk-d=Z< zn(w=N#LPOKBcH?cmp1rrNk4eRC9i&}+BAG9?EBRPc^|HA8wkT~hgBJqo4V+j2t$a* zOWrvo4MZssoE3k?01h;!)gn30negyp&#iv0xS4oLG!w%7LazzVc>vEI%`N^SFj-kt zarcafvNU{phvZh7Xsmixw)*s1$BlvKiPN2V-=EA(yK~o`-yT^j9rE(7?=N4&u%Q^> ze#Lnlp&0QcXTv;h5su}}wK8`=%)ggyovYkv<@>$lxC>MJWwT8V)zqPIPiN71VgA)Z z>Hhf-BOvW2r~idA@6FMbwqHVPf^?g6%xNF98ZunH=kGan9+~XFur`9Tnh3KBHJD!U zO_@gj6rl|*H^Qju2F;}Sm5@YZzzc@(NR4y93`?&=BV6PzZ_v#Ww`C@=6&~Eo^A9bG zFNTPMOz%`ZAWo`{CmyTS_URUutBrp**VNlFVWWGkFZ|W3{zG=|{uKT94Oj~^0MplU zvaik3(}ewuaQwGr@+C&IqKabj@~Da9{*9tCX63iy=0gTioam-c4P3? z(jSPfFZ1pdD*lZc%xYRmBENv*8$-{QTGd9M6rs2l)!es{Kh|C9 zF<5dK+FaJ-M#Y^S0DvjZ^=yUu)-LxRl1EE_sw<|kzXk&@NdM50xk7!?vGGuU>1yr! z?nisdnTI3z7MCG;u_t#TGGgZxLP_KbY#ex|Q4MnLgoDU9VEu(S2pu>%Uw0vcu~IF< zCrGu$_E^09G+BX~?JT-F>CueIInbx{OCQcDt?2M13 zTV$H@FRRszm&sWULyxMSH@(^Q>e5rMgFS8^mPSEsT_}eNXWM&YOD_A>?@4hE`Yk7( zXUD;RTm+4R&6amw5V|C;{Y&yn`c@WP%1j5al|&dlF^21*XOdO@LD9ZRg>~KyH+Lia zly+)U=A`M$^-;G2?vcxS43|z*tMh04t+#)i6|g2;nfFH|t9Bu)(J$X$DeRbSy|gSG za5c6JECkctu=WmSe1kHCDIvObTV4}UPCPLJ~uy2MAmF=)H6qRpvCCR!|`T_urBfTWY$ z3f<3t)-rvk|4}3u=f$9%{^p^^1+O%h`Op*xJef;Em3zfw&hE$&lagEz?_7Pf;i%#G zh1D0O=Eq>Q4#9;g)*VGmH(}beyv<0ttIewYLDVsu*D7k4UNn+v~bsW05`WCB#n*ibL+<_^Dza&n|x>)U+G%yk7eJ9?z=;C1D;g_ zK||c7tl}~hwKqR7wa=$|!dAmZQI*+Py7cxA;lM|WfG(+q@%7R4F7@odjK+OcMEeYa zN=?)2Ep2WcakO%$@r;oKw{Ln6I|lIm0f_=<`EEF+djbP&O-t59BhOO%DBp6kRq+Cu zkDnUHTxXu=nq?CfYOrKqVIYOqUFo_=1AXpD#DtfPSOvVzQ?sHtmVmOQV$;1r0E8CagrU=qy+3J8moI$ z4~b5*Ctx>%yl_hKZSZ4FE*!%Hk%OM#o(fV>$wFO--O{VCNfueE8)N6DX=!KDs7a;r(qrbhlCOTuzI9G;sc>C@Z30`Ob<{Md>1xSc4ggK zy(O%XpBwI14klR}@bUM$J^WG#*NZ%5qzN_^#VSW!Oi3XVcDUv8tL9}Cw8+X1(Ye$I5 zp=Wk+7|CI*p)JoldkO`Tj=u=H-7w&L`iX~Z%8+Pi!3vf3wZ-60xr(id%z+CkJ>9*m z#-1)FB_hK560)MyOmcL#DYU_^(ZjW9<7k0aD5a$P%BVR)a!;)>j8jgUbyc4F#x>N8FbZWvEO;* z(w)Qsufuw3*&BW{$zZ3I(XKuh!$zWwL7-ZD-OBW`s=AdE$^<>Q8nXE)jMAR>gnrz} z`c3479(7;L6qU{&F2ri}P1TE7{b-x!fC8cB=O+EY^BJ?-=NOS6i6ic=<%{B;vl{oY zvda^yP)&{7$GZ#lW)2&vca#mSj@*5nQ3^){u2y!s!_d?fRZXRClzKQ-WUvsr*`D_Y zoo_Yl zYk*wGjCVUz&ZN*JPcdDwcsC-npxyLy;l8DTw*l&1nq9qa-7iZr-R)hAKhI!84a%%7 zI&2e{3E^zfudboFn?-zkz!`hcmyu~V53yHm5y`w$MDa+@AB~ zRRyOB^v5NXP1&;zWWw2;iIilpU~@|`U23LpSxTVayqr@>m^4gIgzwiXVlI4 zw!tHPdW5%b*totA6ocR#1fsap`|X6q#hS$+Rc2P3K~L%ZvpZQ-e@kTKW=NS;F*D40 zE)J+%>JIgKFkr;M87Ei7rb)Y|d<*;}K)1q+1+q`zE#Mw2tJ=Rv2mHXiDhF6+zobNHhQpv|{RRGF6&fdJ2P7?VRHs1Gc+k z)WTfUUW>l7U%6uRtAqC}pI=tPCCNBhF2H<=#Z<%>d@JS&`xwrUTfQO5oghp#TA>3b zGxEJ4ZLXI~zg3q!kL3n%_B~%IN}3(|j*4)2z&p}VGHSh(s4T1|GRK!v_E#z=4zx3Z zE-hPsABvk{d)XaNWLcSMjlw=60!%HfP05th<*&dFaEy@v_}bVbx_qqyBnISoco^}u zxh=rX1(0}NE1}?Ha)uu@*#}584(oREpfT$?kQP?nFJ94{IgUpPj~^#u!WzhfnIE=| zOX4WoD4){Ep?Hjc8#8m&`@&!z_=v@D2l|?N*-O4+?75{;#!_$bL5f?ZW$$7MJ=T6o zdufaJtH5eXCQ2AENl!4iEL7ocP`m*ZMO_20wRL;7wOQU3K%%l+%N4AqVxHH!kb-tB z#jT*cy>Bvx6wfe)veM6rKJmt_BJc>b_f?N(`2mvbbu|Yi0a;en^82i>ja_=ysA>7& zSx>Vv2Cj!l71^5CNA_*xoy4h3tpe-Jy-oI9d5h0$?B|gutGK|=YT=LbErABue2Im& zbha9pP`I79ncCVo=d8@Q93`Oo(G~`Z##hyLH{11czHcl~S-ti%>98bXIr9D~c{Me& zP9aDn&|r=)s|V5Kp3;tj;0;R)bI0vKM<&Vsz5S$2M*uf`N+nuLD9c$k^w`Ov>G3<; zKwiKyRr?ShZ_m$}T$Kd9xN{9yLQR};cR$^~?ry^F$dD;C=QTy13XiP-TdU4RtJi~n zWiG!hTUR;w^7SR%{Nh{V*KI9%DGWz6>S1NYa!Gw}BJxkdO1S>swfJ#E)L_`7KnAb^ zjDfV|omvdjZ%vlJHXY$T-T46$7e57LJxd88oS$L}Sf(l8ltbFJkQ5{iQz!9n7-^D_ za**iC+U3i)70(Y;2(yi~tnHm^vJje&a*P}m8Ma%Q*5#q>)QH{lwUor zZ>&r!Th@nmoJWaXHw4&VRb4~iB<*Z*i-X$AUV5dO?>?wj}i^GyHQPXFP0 z!7zm!v2Vuyfe$_b9QhOnr1kvUd>g;qPtWus*SQ9-eg9(eQ>^*r-=ABez6K>-`on!p zEwOD^#(go3_TN5!{nJ==_#=YldXBj1Y^gRz9qnn{*`#yyRF??|hV0aK-o2scDalP-4cUwzmBPeew;!lF+M)LCfHh+vA_?3hQAU0dN zu2#E}319dTt6*`wC7A)#Qk`90t?gmVf?EBs0v}Qc#tV&qJF1-%MztSfUqef^F%F&2 zn!PZj^Ia8Dn`R%J2qYWR1nkGdl;VlRVfmAw%!VTM)4(d>+~#aL8CvGJm$c~`T)Pz+ z9=%6;(4=f*YXw{~E=4o7k9bhs`m6is0YZikpwv1V>zy_3vT`2vYkbm&1*z((fclo8$0}uw?jOn3wN@3udzSiE*A6ji+Hwb}Wx>GaIF*WhyGZE~Vn1La*I^ zsa}LWtC13YA?lBi15alpU%#_{Uv($=tGC#|1yzDNI9#PX%(PK+ZJ^mgFJZ2J6C4H` z*T(0qGw+8w>FYZbuM6v>pZpYa|0#CqBIKiP1-T!|j4We+eLD37DkOdvZ}m|q1qY_i z*O5v__qnbgmVo}~{3#gA@_DDf0Y&Hf!S0 zU&T*3C+D7GCuH+qN#81oHhqwy>iO92*0}7;{=xM0xIeF*&F!(!%Nm6*-U(}OUzDLL zNM5>j>hXu;Hx6GavNb(k;b$s|l)f^Z_}k5!cchN}=5R++OiVJ1_EW5<=f}uot)=?S zx*K)LePchx5~ba#>^YR1^?4$*8~XSCrt{{p?uXw>eNDKcbN1t(3G+E!AkRk{VrU}e zita=mrexvYtw<+nBd7RlQ1zv+U~!{{9Q|cc9x`om*Vw4+hcQ>6L$o?HV2B zt`&v=32Zwzh}+Tq^X6O5Ze>Gtne=z)! zVe4!Xc2fx2+NZVz`X}c%HwqU?2%n_~ODwtDi*SHKI7s#b1fLb4hjIZ zl>X3~`o~aeLI8%+6L|I_Tx4vnv+|F@+j9Z`V@iKV1Z-_g4+Q+bJZ$x!4C2NA>&NQ< zXwUuMFjy7GA zNd(-S77bkUc0hf(M`*K?0OXMZd5;T`dzhM&ja*iTc527%)) z0-38_V7b?7Dxm@PVc}rKvgPt-T`#j{ctyCrc1TW9gJan?lH9<+sq&nbckygk*ZA!K zoNU(@{vi(@`$b?K-}WumB_9Qe8G!;>b%#C#)AXNiEIOugH0Z;BB2z}7_j45x-l;bQ z;hVKl+@LBre9K*wI(`z zevHSC_Aus`a<0;j;f(kJ6*)F2Vz9Z(4zD*I^FVQ zm?atSt;&otGMX~ab!x^240q{eQd6xO5pMNPM6j8@?Q4SLiS&%hY(FX#1!za0!{wd$ zqe4$m$G8l~rsmD!HVe3@B!j+IYlstf<4>wWNq+vk$8LTI$z{TQzF1`ql0uaGAcBdm*2O_AH0MO{rtSNrA{%&>A=U2r4~Klkje}zLb%*LBR|FQAyj(Tsjj@5 z=E}N|&Fn!R|2`>~yR}|H%WhXgr7DUsaigQ~%i$m7(potoF>8Mjb!Dh5$fMPfM(e5} zGWs~vWv~ehCbZ%uk&oegRNVeM|FSrf&WzHu7R%>(1*Be}dpVMN4qWBE_9Q$mO6 zmN`2ndTFJ05v|1OOsb7NjVj7Q#eb=MP$Mv{aMCz&t5$E@ICs(Tf=dIhE6wjzZE3yo zN%(|+1{m`E|cnK9m#+uYG8 zu*N|E%pWL5+oRRxGx-9**;?#TcY62ArlX#*?&_*}-4OLWV`zRks`(Ricaqxotuo9p zRb}ugjhx(`1}1dXdMorqQpxPwE0n(FG~YZc;A!SMl;9kBGI4kxiQ%~x(N$Mt!)ck8 z=6xG!+|4#?y`igT-qC@LbI@e$8c60# zlFTs=P)p8jeXT~--hwm`!aNgxR~YNC*wK8@E_bc!cvkgbi)#BaWAle`VGHOKE`W%& z-_RJ+T3O3%;?E&;a}B=N@^3ob&f9}?ntpOVE%t(__YmpZhSqH}XWFL+WTg{Il{&5V zb{*wc%1$+9H(qs2&|o`qW@uD5M(%k#LKM0(jMfjef@d6oX=Ma|3+-&dC%{1%T|n%F z;b!zGKKeUL8NfcV=W1pGxPQfZzHSAY7g;TJVya=>j z&RL{?XNhKhwN-qMpX9~y7jWB^Pr$ z0{!euEe6unEbq865{p$^6y%02x7Qtgg39g&shYhW1TRZ^VF|rNfL*4UKbfntQ!2XR z#_!~45hktWJE)bfxQm>UVy@se->*pc3lAP=1Oe1rEn$O|iJbTzb56(WWyL7c0)(eS z{T$gTj|jW^v_sstYsdHeD?`V1%Z3WsfR`E&)IAuTX z&IH?5mKJyAaB9OwD>vDn$9QuceItr}A{ka9@QOh8&*y^pHw3?7<)HN}CbZXpEO3m`| z>-5)mixnNnOBJgnBPxD2m8#70D|Zt@Q60x@jzun3Bj)F57367P?}`pGk#+`%)z4{{ z0Bdp+d{P{`VKLC8z}a#7@R=VD74`1qn_TMVu6lfKx>1P8DjNDR{H@<7tb!U$K!7Xr z6{5?1Gj+z1a(?uNyWj2=y-Qa<;6I2>cRXl^*|fN#yN0M+9v&UAC&ea|+i$#_jd|yn zr|~G=da!~yT3JE@s^IqUoJCG?ssGy-@EQ=NIB`HgMss%@7OT z-g5n=9-cPGEHl!tIFZh35SN?S?Vn|)s9fM;|wdZ+-i8NbLW*volok3 z&An*SpT;XrEGjBhb5{~c<5>9){Qe+`=K!`+-7g>{)T^{dA$zQ^ke~V?z^%BsB)xQ= zft1k;`RsNBU%`%VgsWB6BAArw=g0li94v#}oh<@~V5M4R-ObeaLmouf>zeePzq`iD zH1&Y}Ug4Ti>NI>=mKVw9bhg8P5$a;3=heB%=3K`75KWQ4j{}b%QZ(QJVfmN#CD?Vh zhlySqUBWuGqCDSz+rBAHb*W>G%&bRvxSOIimzHLj;?D_cl4=f*Q_B_tt~zYEy?i!f ztyQ@h?()5u_f~{0k6?2M?z0|$C()O8{d1V@uzrZtd^0a^l7-HP-Q2+ zHXd{kX<$~$k?-4&P32(XP0sk}5LcsXrw|p3nI5uvt{I`a@|V0KD#qt|^KnBdZn8>@ z=)E~!rUBPHu)T}#Gq!M>|iVak~pF}DFvLD$Bp{gxl1;$-t0`aNZ`;j7r#&DEE*ocD3 z2JCULf1Z@13)}uE~>8;|?>245RrIXZDf}`YOL+M*akmR(M_l5Cq%LNE+ zr{(gucYTr8*N?}4jjKtuAQb0jj?0TQfq7 zb?pfyv-!?GBC)}xDc(Wn)~Rk(UW`l>IKo67bG*5Pj5z_%&M~km|M>i|PLdqlDQAJB z9FrDN+gL)7CeO~KSmX5Lnf5Ms%fouCm2DEdrMf|}gpi4m$n%&aI#MET8+hS;jSMH1 zIC%$M`QcOWR*-xn7Cs4$H34^WB&3Aq46<>gf=ZiA*zG^fr`Y@FhxGL7b}e}*ggZ1+ z2MCk_jr)w}A>hN}YLB0lcVE5R=0sR^xZC_%)hgX5x4LlxhNz=lol7X2k&>QXX>a^s z@^Db#(+v6=tOq%P_hHB7UWhmS9Mp4pGOC@j)W}VpK2MqI!N0%5&-7r>&R|FF`7x+6 zENndpwfHN#(7Ai+))H7UWmlQ@aE-TS!jHbQb4wQoJZ0}DQ|#KP>KR1^4Gz@G%5B`{ zXFBFZ+DJl*<+GdyPoBywT|5E)D*%ZKX@@4VtM!x3leLU47vOI0q_6)Jdy%WmRm>@J zb^j)l`5g&4fC;jK>MYFlf>4;F8ezWqYS6deUc%fuy&vBn)K>B`!1~oTxt!nKM%yOGCJ@^_?zOn>~>1z*?ystbXk@$u_K>zD7)G6 z`|xtnyA$jM2?Xj9YxAK8y^?h&konXmuiAg(@m%1tuak)fx@mP&DRbfOsfIDHNIZhq z)#c7;Zdx+ukcJOU_9bZJOwZSNac28*_LUOSD8<7}VJN3Z>3t3MJ=}Fcn^Vgz$u1j3 z9IAxAb*(HknjL?WX^SAsP-GYpZ>U(IsfmZnjjW4-136bLEhUzIT%r76e^P#yZ}>yi zr7tht#?okfDTjVTW;$evUMMtAZH>=w$*@J@Ya!1fb%a(~5dkh$P4whe#ocr+Y>Xeg z@^NC?Vu(m2HtB6YewPW2GmMwTB+NhVW&Gv#;9IXfT3=4;0@Fs#)-r6k{oCM-`ovD6 zS4^?)K*30ml7pZpoY!v*O6ga~NnUE^7K~mW3ba~;pTNce5ecmK?4w2&9PJbQ?zY@B zyoZe(Xf$;rnFIOt<6CU9{ea3qQs&e+^g44C`k6RG=`VQVyDVz+9MEq6WaRFBq323x z%H;&fdnY?CWg#8o95+)37ldod_vSBj>7gy!yO!(5+^2~v72BEz9`3xNopj?58X z?uB{s-tu2cJl8e~;$-K=JjU)kl=0(NOYF8TGl^0xmo9+W^CG1Xzc=gCVwh#O%mfoXICXz!awq=q7TMQfv6M~}EeMw?%c<^lz)BAC7DN>vs zjNgKP;picbk;A?g8oc9;57dnHaT?*jh~LHrfjuLFf=WAj9&Y@Jr04*7k5wKo=B{zd zulVcBVBcQ#H_vH5*APk!chS~~BwD?)VNf%{4aMESCXeeV{^cOwbuy$iZ|_2`{7|6y z*#*`e?rZ$gEfO8@HY*|ah72>CbIh$BdH9^P9NyNg5pSdsZR(jnp8Gsyz$C7z2jv_ z@!un1uA}JKX-2dbBb8+L*yd;qcj^k*+W*59t8v7+Mq}Y8l&$|vHQ%j>SZL$>JuCz* z>`mT)0pvE^Np4Ickvxh9Sq;)o3vaV%O72+vjiL2C$uHQTAY++Uk5jcwPzBf{oDE5{#C!=nIef1Uf?Py!KRVsd>VqsV3gd$g4DN@T+OI^gLdIEFs$& zoRus*N0~UtTz5qupSzQNH!%oRn=NBXvQA# zQL|}ntn{8wgL}KsjV+ndyc&K!2!{V45d-sRF5zeNSx}Rm7$&E&eVm|#<#ME*IViyh zU+D48M1}67__b9-hWao+=&;^#C70pGilKMyYDxz(&Q`pc{Mz7d5STR+x2cLdxIrav z!f3^6lFWp(poBSaIm5w3>&J+duVH zRbJI4sd%B9O`+nJuiZ`;6^y1gd|gLV(1C1p@^xOwAGpiYuW)DdUo6cwroN}?Fpa{e zYNTcc3ByL#g~P~TX_=IGgs05oc2ott&}D2ZqxzM@*VwEJT{E&>r-YSb+^-q&&UHCW zWGjbK!a2C+;Fi}Xa+t~NUH~3C)j{Ujx8}(ONgTPR(uP0C_jcn(r*lru)<3;5wR-d~ z*E>w|A)g0UXq(gbJs)BUaw;PGgVDFmIM;o_3oQw6&8+Rx3iUy&*M*gn0e1xxXQz#mdW+H*?XMaThE9un|Hg%( zw#~{57P0^cp<(Hw3`{S!V9a?@|1H%k=XLPA`r3;HhYTI!LuXHBr7hT{#%Mb1u^T8Y zg{HXm`=`XEBGzf;=J~H5r=6WA%Y^ybD6ZA|C#x@()pb7zp+Y}^VqoW=acf#(!Kp#g z$y}5}GK?$Uh#W~Hl^|`uh0VpJa27(fU=g?RUi@UI7p?enTv;t?PeuOeOFyWC@}(-8 z$V!(+O$TP(2r^?lQA!SR&1EFJ$zdW2ZlYIOK zmZB~X+}BDH=Qp;Q-$A3=vi3bWKakx@eOMf-MJyX5qZLOKti$-3E z4=py@Sr?xdf0RI6_yAMw9qaw5OsgCEdgGAUasRj!bc1V_TPY>PXJVvrXD*y4KLvkI zyD-8JmN;>qB;NVF$sEn0iz6pMEHLy4Dol@p@xm9Ady$Ld>hI+g7@x5zI>dO=6P;NpgYL4AW#uH3${^C`*c@rENyF04ilrK^N&Z^ zOa0t#cb@xZ+?_@yem`*qqYXZEuAZ8Rp3G&t>8af%ST|nj->A&;vtg9(%~|Ck3!52L z(JF__OuuV~`JP%?S-w^Yw?b{^IK~45q#9!x7qGY3n*)`11NhVRTu2-k`oiNP50nUw zPu^WHu^*@8S&E`YjrXSJUsK*0XN=4fAN_z^@8pMo+rOJWPStR5F~E$)726IzO}t{J zh6&Zppe5g|(@m02v7@F25SC_o&hM~L#UUl5g(|K1YUqbP@t$(`9U!nli9RGeR3QXB za}ZhF4IU+K{i=~TaU4O(R8$0%z_6i}%13ClH-iYW4p-Hz)HvC@@#9?P@fw8v#kPT` zCF9^dcHq!6map$Gm~Et58c;&QS6TNeG*8wIxQ{7YPuN9%O|jMt>{ka@4dbrxPfR99 z!-k4EXth<~r+H?CLT4-zdYmulm{8{RQV>&#It$^8pd*M(+SvhZS8K*uT0`!JYq)9b zDoNIte4uhRPC8lcuekL4`C6t@s?dz1K)??%)KJqs1@?`4w)8W>;>R`Jt-HRXVVcKT z(1C7%$$J%N$WP=bn73^giNK%9?)aOvTvj~%gQ5}7=_yf&m=XY4OfaXoWt?G|^NsRO zgw*;vkv#S`D?v{tQ}5UW@pZ}3c@C19@O#6l`=fEMl}sEr5g+yEMz&W}r%G+yzC&NF zBEWdp%l6LvUEFea#Y^tc)`t&xebG&_Q`Tsu0kYve#Z>P1Y5OLwCqe=fBAKN{m=Y|* zW`Bx7hjc$`lCNOw7+>8(>;BYHeo-#9JIkZjJ`H`6h&)G#09%`$tAmZOa!;ODGA|g)jVC|kgSMzwS-is86R)p6I=XG3=`gsxnAmT$8n{Bl_ z@(|ad?}cxZVet)&aa&d4uoWi}9yBi={R>6%dP$1txk&e7iu(MH94+Ml1GZv8>FZ*$13vu+oJmJV!sR zYr=urtI_6Rvc38S}x!iS+zmk%8G(X4SP9J8Lr1u_ zYKSlY!9c&2eFVmL{Vf}oXI@SI<@!Zyv+Yf^$lKk{8DI(i^RU?eK@#kLWhf+X z3GzZjhX8HX_TXhcy!*$Eq{Z!TVL8A1{0mk2zdZf_%0ob$WOxziY*;d&0o>Ar?1wD9 z#R3vsyPoqkM4=jeeFeX5rIpty!R!2CF1XB^^B(+f>OXZ&+@@H`f4Q5#P6_&dUQxs+1}3nDQ3O- zfA7cX|7Snm*9{bXAxQde+)@6xKwWr{cm4^7Xy3*rlM-mBu`2JWB{6%G&qqz|+?Znh zp)ER#-1N}Mv>nnF@HHyea!jnOuY4PlYwu=LiS5nJ^_K@*PVuto?@0>@Gy1X}#>?UIyd@O3#)YwWya57CNxY)}9*b>;?s z*%%6C(pVQLWI@DCbKZ!z@1LVP1-FFrP@n0sxoSpjR`A5=$i@+`KvF|~?qyb-h2>Bx ztC@bCnwJCI4}KB=TZ@VIh(s7HE&X}tqQm*Gk zWj@hOR$SDF4d#e4%dwlbT14?+Hm21OL*%0eg(~QsweD zZ-bW!X_#`89s1B3S{=WUODsXq+$%B}5wz{0KCd+GQ}*tZ5#?lbt&WwXf3Ke;MgzGd zcXOYXi*ahiT7z5v$_sWDcXR1C%Y6<;fz|AEYSSwsnYuS;ry3xg=+kKg&AT;>fV=}WtCPDh^O}^ z!^z<3wIfwUu87F<4EOc%t8Gs-hM3vq$Qg4Cf|(F2AA(rtvOvTQ9F$LS|JmZMM*(Zv~{Y5@T91e`0>Q{6iVw zKe9NLLL*2m*Jg#aA2^GUTUXZWK4t2BYxd6DyDLh2bMk(lb#JR3szqO4nC)tHWMVLn z7^+&!n%YEPU!rII9j-+H<}gX)fX>l=-M8gu|NPteRKNF^tC{}lc}KrV2aJu3FJ_q% zd(x@y6Ru+mj*p=Tgi-|}DBy67#-FZDNiT~SWoEry`SBNb&qU;no$6ol=?TD~57gJ^ zo;>Z|kcBvYCHlM6Wu@vjW1q?zj8eoto_(GjoJ1nP-`k~mDk5|X$4r>MD$*rb)9#zz zt^sF5XQj~5wntVkwt;4J_I#0_>BScGvH&7TU8ceygWBk1MQqk`LfhLoIHAqjZD~w$ z&)6>4rQfo9iatKu_>Hi9?!;HI+l`?gKB@$!tyHk78{wMNwFQ+6MI`0&nJwb>%5h}Y zBP-`zl=Sql#}JRg`F&ipXn%ABBo z`azc!dU5ytVT9mLzc*1GlDFZhw4-(~x4CG_uy@AD%4+M#P3lB}Hp$bG!r(|B{Tof7 zVee7v?NNtn`8UW$#$kV!+Z}CEJvZvKNSNDHy6Q+!bf&CYI#wH>MG54+pQ>kfTZQ^& zd)3;H-H^dP$YY!9Kjad`%frtO+j+Fl`B)sr< zqh%8nEJ`GeX1BN|FCUVSZk>|HpK{jRDfm!=eb(CdmX?n9dxQMN+e(ml5CC_4M%9^J z@eLdtsBMf@LZJkq*-$TS&*f=^d3HuOw$VL6-6zjFXw=_rO5xm+0HB!i%cr2RVTuF} zM!XwKQ(y`mI1&e7i?E_&^BZ#O>}ay8uDki&&&uI3sGWn>9uu2T=DLbi&_HojeSJ-w zt4wWU!z;Ve1E$6pDSh;Ggk2bhU3IVm?oqd6m>Xl<-due^%R72pb_g6gbL(YM!1Dy% zgg1@3QrE^h{}8v%9<{emtLLpoY2y6uaRJQrNg<*X>n~`pgPox?=|JBgMxrv(LnF2K zR54S#fS~3{>FNpdaP6GAYv^;Ay3Ylc4n7XL3#v&-^U_{5&h$-u+1p%nFK88r`zC!K zTNs)hpG_H8iCQ`1fcV|Twj|bdrS|1stvGgz%WuXtmVH&8rsL(haTL9og5=)xoBbI{ z$K4J**j4>9_0+TQd;Uq6)30a^lV1I}K`SmI_+d z@*Ktd>72{0eV(|~E7W>@xCHLHcER^T>Hc_?<5n9LW;Qv_%!IX_uVeRu7)BIFJO{SO zs!A!BUeGk|j)ZQDUJiGLd+Xl!sa!68(fu{nGgl>{hu;1DM!A&ER-Q^`jzHw*%ZWE> z|DpAD;?ct!M_(F!erlHdc;Z;BgMY)A)GKH8W6^5wy%8<76-61DH3F){s}QB|a-ZV3 z3D>`r>R+EYETML;W>3eo^&<;E#dL2XRUKYK(p50<%YBjOgpV?(XeArs++;wgh(5!Vx!b^#c+v#UN9Kaa z@%oBE&Fw1$4pG{9g{V}ASow40uY%}X@Lu#+O}qSM$jtJUx;495sC!E71NsTI`eg5L zGn)x_nh#|PlMFx71pNoqtbbq@NLq+~z*P}yWG_OFo9~Hvv4+|Em)43sY;a8-mA%;L z>hh+Fnlj=n4Ykths+a?GkuIVHt*ii=?e@&oAC_D3XX!$ zfxKI{6mJFQ*z|62oTGZGtuD6?B`G*jZF9^|>JPCPTV z!ivxD*X6F+Tc$1aN_zT+4yzhVjasgDmoLSY+UXYd8IE>4ZRK9$kVXoppwH;u*^rR{ z$Ht+reE0BTEXu`VDKNO6^`@3*Qhcun)*e)l{bDA1qvNO8og}tn&5tZ#A7y2FRO8(i zx_@1*PfA0MLW$AIpu~T*rpTbPtcfPmS2?PJ3qw&`u1>;=9Rnavav0wtm)oeyHKARwC?KLDl2 z=Uq7=f-LCHP7|OU*A?@27tI1@A3O%a?-7$_;Twv6im^xgM3;Zt`=9^xpAGTv>Jk1T zB~ibMl>j-c7T+MGS2wM6?i|5o{wVzIjo+rl)$*A3?+>~?kJp_B78?g@SGSJ%Owb?w z6$u)qbVBl^{@J(xu8;i9jxb1T@~=SYN9IMUeQK*{H<$1N=T+HRFdssleYXvX){Sq* z*t@HkGVkZv4uO@tJg-zS*7z#40WDm))h)034BdyRK*)5kM}_sU{;-=+kv|QnBMxS_*o}e^FI-h(+ zdpnc4OH_R9(pqD^k@?)W)K0}hjAs2(q0QZI9A!uG@KV!7)W@AZLf}2s>u8@Ws5F{SJTN^++(e{>n5O;NI z=*38dhZ++nIdUpeqQ4fu|C=0^TUkD(aN|xxZr8l8ub12fi~CCZyv;t=5q&*e8?E4A zwCH=p>qpCxzFF%cvT@Bc5GdrtBW!H%6gNQx?mqOYBSh_gz@vugcle%D_|Z&`Q?hW^ z6h@p6X@iI>51MFVTPM9}Pj+YhipmOU-%l2Rr1{l--toGJfIx(k;6qmDp6n9TGZW?k zpWJcF`SZk2%b&7n6F0y2n0TW#)+5M}Fvw))F@C1a&L4R1lTBVgb`+4eKzPSBU4ub8 z#D7_Ar@-{%apDM$rk{~`SQa6+mwdE(c5U3VrtT|@7#37 zs_i^#6q>R=_U-xW{1DXeRtS)PyH&~ajsY-F+M`xe-plI(r102Inl9)COrmoYfDXWA z@ee^GfDaPT*u?;9Iyykc+4-Z%DijdbKRW?1tQ^=+$Y@WPL38Kx$kU6y8b+=q_?Bw{ z)172W)L{wZ)kp3ZuGpm&dmqxRn=O@M6*T9;jTK)r2&&;dkG3ewWg^mNL3}%5(n%=U zDmr)ohz@JyWwt>M!}vb{=VAu{deZM;$BktE0ahR73$KA zQuO*(7bSydwqDHL0(>!LAjs-j&>OBH&X3dBE zqw4IwlNz}TcL(snK6}=5Z+bOmL-8yN;=K&{jn0=33XLcO_{s-UVO-LZ%M|pO5A7UR z?pnm|NJX9kt?&&tBB}A=3EQkb^BU${L&^t_;o0Mjt?kC=8F{^7qQeST7HRQo#!8c{ z4?wHof5kr{@y|%KgQ7>2`=Xj61Wu7X_}aZh0hCYevu9}wukl9j!iOcy`0uEFZG!B^ z?$P9vi@_6+=6cprkg>HES=}{Osir2&@D`EiS=W%C;IX<=W_Gb(T^rF&FIe3k`x=)f zOP259VTq_K@;e8F)xJj+}4d2{uv&Cw{L}vjsUYh z`*@T2^k75YMjqe3;)XN{h^{g@lH9}HOk7j2YIDq$Wz_B*G8+!}o!_VN_wDeW>A?z~g7 zhS`sh^P&M*fuCaLe1$Sm5B>=5dX-Ps{id+7$X{r@T2@w}$LMb(52!-MtxXUzZEwlf znP-E@{0QAa;u_n7ZhYWtV!0tsbCf6O=}X9~VZUcTVOJA`$0K_;uVZ#ae!`Pw01@Ue zO&~fbJ1xySLVskU3S7$j`E^XpMVucms^hJ;H&+1&;zFA#7`kOT4xnqXx>fgzJ*e|9 zO)>V;V>~(2t~~wo@m}f(Uy{w{qpM0`mOZMZ(4S(X6j4)>{&aeBi}o%Ao$J~cMXyp= ziIQ0g%Ex~ISKw|;LyzDt4xJsO9l;*js2oJoPLGVcV0X_`Sh~AHXf*^7Xp|-GGsDF zbeX?rYFPLykhn5p-U3%NQV?9jru4b6w8@wx124i7(UYgsg^$zU&e>U_sShsW{0P@7 zM^OgJuijoezv%PO>IzzOxq8+v(bqfDNztJs_Xm{wuHkHRIw^EwdkdchQK6|xd?{NM z9ncn-;!OE{oJ13r=pdaV@d7WU+ZRu9qFopOLjMtmR%88yXj;4z_hE5KjMQdP~dLB&M zv-6kGbE@tKAW&SP9bX7xA6ws7jV7JT$U6n@JA~j`-Zdnqy;XRh9MTUxWPLZoIS0a~ zxI@c;7)PZ~^oBy}JUR^9-|q0(dBP=fM$K29q*jB_FJnd$C#kf{*0CK%l zNgm_@iRTEsBF?tI5`!TYvV`s&_8xvX2mc~)88>2$*2=#p6T9xBv9czJ7HF;)6TVd5 zOX;79;%*O2omwEPnq4Y-#}A8Kf>X=F)!WgLrsr#^RE#I-3pIIPh@pc$QMt#v=UnkZ zM%lMTAl+)IyBrs|L&WI|?AoUk^sV_`Z?L~!=bw4Q2Nv=B%(?InKq%4>qq7vJS=Z29 zO{p4yOew|Oab32*Ax^v&PMGJBTeM%wc1ii!7XFdDZz2alalg<3Yal9Sd1w-&tsu&6I%QnskfP~ z+=#qrBdZ8*8M{5Jvi`J-ZzXYWUO8g!PMVwb+dktl-ydVQSI1QaSG@x-GG{F%k@g98 zO~{WQILE7p`d;}^Lk8N*cPxv2eKClxk$x}(Xkr%>C+Qgmn2D0`bvi<4NX@;>maxRc zvr0^)AaQ2WAZyEhT$Ogj`R)+_>?$ab?SqQ15j0 z-T!lCLhRpsh;8`)LEF2>Gu{9H<6U)iDJ7LtC@bZVjH{f=X;%ltLMV%wRT8ttRV<6y zt`d@PMYtkXImfKnET^r^p_0gHnV3yE&$ckHY$TVG`FuPc_Y-#Hth4D_gF<($PC`2^%}Byi!_nIn`V(lC8PZN^RMO~ksX=C`!b2LI zC=qww^sjmOHT4>vylHOr&ggN+ot%x|iyl`!%~*7&zfNiT<@||~2^$@cb5ka|2ZU3b zJYq(h%W@0-!UY}uPi9=tEtI`Dj%Oaq^8I|vY6`}4c&i7dM4E%adiBkutpvYuyJTmT zlY*WUZN5I(hZc0gw$lGyr;Xtaj@C4UYz>4wXf`SdS6bw8QU!@+Xl$!&WVlz zkQ$4ZT6#&ut?H?%(h1+@`m_KLg1!BW7%06Cq*l%#3{;13!h8qVjyWZ`U*0|bJ(FXf zk{nVW+n-~9*y7HG6t72X6qAN-|AJDjLpNRJcLKMFg+dEad{1}-Z$VWz-lu?}m zBlts8QR*CTHA1v3SmOO)p?OcVL8>q+ldD6av&uutW;Fmx8(9U%I!u`F4i#>O3iD6{ z#LeY=yX44as-Cg^71CBuRC{Ir_okiSo&+0H4|U9KZAqGcUL`kmvX8c%%vl|F(y(ok zdEf?G)9){_(M%^LV0=Fs^J0*7a zoFR%sF9Eh7YNz7NfC5%IeTXcC>=+>=2GkFL*1lEh8rW6O(PqTU5sSRokUgVGtwYOB zIc7)o>JmN53`_0D`bxr%`4O3o4-kg#O^0l$G4D&wauRBTUVVe-d0H-#+=kh;#x2p( z$Bwt;UJ>><<=@U`LDM8%N%F%A^Orp(07UTp5f76(p8eY~OGR|T1ak87iz~N9r+0mC zo+pMTJ^DSh!$a+pZ{VB_{sr^P_n+*C{Yh)fb_b^yhVsdeL4)E-8b)W8EwZ@Dl&W)~f3YkC`%$Z#sl? za~Wj7cDkquun5sx*Uf?_UqMsRm?v7+w5y<}sd1wTek3HH5w;EM624kCvLu>JXaSSc ziMA59s72Z_i{46zb(M0{op&n^NmY_;`~-5OCmMbGfK*i8<}kWHK>PGcwZ$dL7wL(S zG55nErS7DEur~;^pGwbcRE@luWR?@9KRo*SXgU8>AL~71VD|3r>l#^Tt)oppN6?*~ zUURbS*F()1lRNCNOf{Q9D!&5`B8`C8a#Q&C5dl9jSXVn1vb|jHtCq{lyPx~-IuD8V zgDsm+v5cDsE`jbVXa1SwnEK>+j5K2N56(}HrB?-Z`LC%~eHuN=b6%v=XSm|&7@mm# z7fF8(+^)2nBxQTlTgTLZLl=3J_J8PwsnEw>eHYj;Pcwr+==$QloQO`jBx8p z>&MoW{pT|dnPkcQZ;yPB_(ihC^k9Pm0d9I;&p<_#EY`G`fAmt-_ zBMFM3=r+4gkRR}L?ll_;Vd+pwPkS61#Mti~o--VSYy=!W(g#IQ$4eEQUwZ=yRh@CN zLV>H4x`ewPCMZC9I-Kfnmc1G}nvTM5+v|W`)UTug@@6^+(ik?s99s6ijouA1dz~E% zI)inGyi*&MPFAzv*) zMAuc)iQqgH0_cwK*?(#%O5r1XE4AzRolqve(C=tURFmA1yKyxD<&29(xcF9I5NUb;AIr+gXC)ZF z*+%Dr*y~ZxfDTUQ_F3CJ?Hy~0UM>BctDl8AExQm&XRbnYHoJQr^>`F&a^<^kp>D^K zEJRTM3jSEBtH<3LMyMGR6EleW9>%O(wo^FF$-o}#sWGUNO+>Pl77b)NsPs37Np^vA zQM6wQ*v*Xl!rs-g2Bhjf0Oa3wM&$yPwH)O2 z{kyI|VfnwZZk3G&r5E%zuG?=`n{!e3f>!87)!K)5HaTv0`_*96c(2MsV1tYdXi3V^ zQpkPfE}|ZQl!)7umJds%h{xDL>fzMd9I zv&Z?MO8kDeU?#oeF35Oy+zgh}&Y6et4=HEJ+cEix0Xh$NeAAw^dH7J5qqS@QvGxED zcc;Onkhrpk@T#j@)s#&(45V_H!K1q%)}f`Nw<1`fj$zf?qZl+yY%P9uDIdK*R&j74@ zpJYOA=h;i|!lEoX-fTXw{?pLVp+CV|Aa-$g`7L+%dfws^zmKOjOa1yC+zim;D~VA= zhYH}N0Kv&roi$MZ%<$eu@RD7qwpY~1pfpck_!-|xZ6#R@Cnx*0)u%<-4;@=W2MBT{2K zNqzEr>1MCoMqTvogRc$=U&fq5?M^446H8yrOs#F-6yCIgCy6;VLtl>hH%2-rwP+l+ zNd4CczT`GwCr1cM3nvRDQ@-F{A96}g{wrq9&BJq>lJho}d`a$>R4tCVP~2xBiaBO} z@pb=x_~wTqpUdkTr&dbkowu;uRq^#3Rp6>-Rtqko*MlKz1>`WAD$!*?X-Nnf4{L>O zQ=A_P{LTR5%S<@5%^1?rf#4M-EVN1LlAFD)&XLLf@$=A_u0^d2$35HY2RQ;wm~YZs z&3nVY!|S>4=suBv7C<qaH5=PJMW|WW$f5Y0vlB(Y)>fDl%834R3uzlz;RLK-n z(P{(J(lvZvH}r>TOU&y(zH-%^%$X3wq6LWFpcj4Uj|-pDE&#FPknO->Ob8;25H5ZIm?^abrvu*er2)3yKvi@3M9P4iYv8y#-%kDPqu4^dNsJEXxS` z0nEX(?Ui66s&79$?d0ITfy>5+rp47^@Yn3vKM#24rUpksKLpP|%56cA_YL2)@1mqA ze{C5c>Q)C6EI~##lateePT`euQ|JZhZg09OF(*$9AX;_$1D&|ZLm=q0;dG0hb^YbJ zGwVCZN4{*jt>CfA!hxWwQRO5bpV>*vfJopp-j<1Fe!Jx_z>2I6h>Dk3O<1O>i8GgX zkweutVE7D!D#<&btgC&qB$VV3&NAwwUr-zjkC}rS^dRyCjLuXIPv%M6XEtv!>K<(; zY$J|LdhiYM7&H)PqFKSNJh>Hz=LWB3@~~>o+%qq0`>##>pjyivu=*EPw10@G`!Y7| z|JwFySTnpS)%<#v`(#5P+rN6Ddf7J60>ypY#pFb#L-X5Zh&bnB5f+mNACsA6 zX@CEgV)^4oRYHddyl7iQ-flzU7*AvI1<5Sm`1XshGegm{fqD_(CmsPWLBqF|#;gR|591ijx$Dt)k!g)L(V6}cK=B*a7HNGZ=xiP$fT;mhCz7%8_hO>9Pv=Lz zDs6WvSHyK|B|pPm$L`LZxQ8k)c6=^yLg z>k~hhoT*4(G)wFbI;=I*nN=9^()(waX;aHsdc^Aea|b<0edmPVv8Ym7<@ApB-KSr* zrR@%Xaqr&x=Z0Gi4Ilh^YPXrGYVlv|sw2m!^<&hQk$C20x37CZcy8*=lhgmj;rQR& zBLCM!l9IuG)ZkxdRIzZ25B#UGivw5w?lhav(RMkor{)=V@3-B*@8A1l+fm29``>P0 zz?=+l7&@P1S{bRXd1GCz;kyloD)3vi@^V6d-LC7sH^VLD6ynegFkfMnSzdlc&6pZ` zDPTu^?)l3PbnVvNeEI8dK}#1mugmz;+jILBfS-M%7v-XFDhM@My#Vamk~M}1oE z{P^YCmA~BgYTPa|6;}=N$z3lGxR|JOIBF2SUoNv7=)vY_#_uwTx=&w9V!8 zv#u3YyHEvMf1qB!K|Ku#SGoNl{_KKS3=hWn4IaY>V~e*yQF$%w$K3>G>nj3{69~@# z1EuOo!U0j=Fe7tQ1pGNxcKE>O5B%Z$tdXz!x<=>14Z@!<`fm>1-t2qi9m6a5lZU5S zeV!c@`N?jnvEQZiU8RSOhL?2GpP2a{9qr+-#dyAtZ4j>J`!J$dZ0)cmW3&~b>*rB)&2aVa=Tmbn{02d+a8Zh-=5H6 z7L~hRN~L@}{45*e`Q3Hx?j66IR`kC&2aW%|S+~-&Dxk&j!=wFBA?2O#y$grWURba7 z($3W6zy=U#*6j@1x>T7p8N|c{ufl*E)ihE){9BS)$+z1Ndsp@x?J4^McGl@&iyvyR zxvlSJRB@xu`bU?GwX~jR@FfXxiSDC}_$t_O+YE=0GFVZmfLLRV?Jyn6hHNrgfkw4>~o zBq~3o`~_P!@59>jTftH^cnajt*3KyY1l?Q6*5o=T(#?eb5yScaMZf*u9di9I2+|aA z_4#`;9lRud4#1xDmJkT}nVBl*2&b1j?$-o}ChN>{E8w zt+l+U_z(duBETjAKHqr$S^c@jrlj(_$2NV4j1RQKD$Mwk?47qV!`^|0t)*mi19)i{ z689@6(^l7d6nCbN98BuHTA1{aC;(@}J>za18qW#@^X5w@AiDpqyR3);76m;zgknKh z($r^0CDhToj9@T^WN$Aa?Mv?P{H@EUo^eMg#D&fVnr%tgsuw!YW$0JA=)P|piiMv?p!5w zI-yjyewgs;g+fJ!PXcG61-qpwD zyk}X$1=$b5MDixXKj03pbz2|2T9@kKdp{F_jpRQq5oyc!X97Obs5fjq#Xd-ea!&+P zuP6EH;PU7;hY>0yptoGvCz-6mKcAI}%jSmkBFi_|5123P8?`C9>{*a)7E!*rpJJXv z_ZlU?`^P)qZUm{{7?!R$R!!ivlYV{Ka;w>MoNCv)%Dh*dPW^a&_yW)+k5=yZxpU!k zF7Nw7XA0g|itIAaZQa$~+BwzU5+MFsRfeahynL*wIvu!vCTWA}y8nar^8auZ`oH_< zDnK!JM&(^mu>_`sd$+2~%?#H4yKbP)y?TzUN?VJkD6_iCr5wd|#b@Qm<)6dLmp~l} z*%?xg5M7s8$=(29;ri<`0F_v_TM^PGVq5uuS?BF#ekyyTm|i8a6y|YyR23T~J)IDB zg^RR2-BI5$?7T#r2sIh7ju%1N?H~Oa&Qs>pOmlgt!M4~JRsEYjQ0S3EIkq%*dsrE7 zIy72fsYU!lG9zK86G{KB(|0xmMaW^7)>sVC7zHLc0Mk_b>3GJ`3cO2hgpX+g*mB~I zG*l)B0jYC+CbxD8qoQZUf}6cHqJ@QK_X;eA=5Wht_p2$Uxl^V|+p3&78TFIaIK!LV zT`Qu>i>JM{z=29K7z6?vr}OFTR+P6;#+G|3Y}Sfl;ZZ3tm8s9o@e`xIQR|4#pgB(K zA#j8%X?n9`4kxJc-U(5U0JS=0L4n~}vx$h8{Saj5Q=;NaLH_D%r8`8~ovdnDkk z)`VtRo|Suz|A24c5@xiFJ~P>P2<2qs1d=fdCGZY3I5vu+C4sxR?<*o{jY7U;3A*di z*>5%{o~iYgI)DQ$BZ&i=A?dPqTuT$0B=@8`>(BbU6CN}tqF@EPKUW!<*%*ROmP1dL z$ruxT%%aDn)!nZ@8J}aYjX(cg_ZXzpwL-K#qIsZkT4La)B@xZ z=`wpKe4=Ob3@@w=&9l|+Bbk}^LAz_xDu>6ycZA<$?QOt9Nt>u69?TYIUu071e9LM# zGRNmens@=~d^2HNj@^}NS}6zyTO|T{<6j&>V&bncYYlAdE=8;~m2`9t&G2qRCyS-3 zd|_;x6CzMT=6G&Us!|0a`;k`4Hb>Z6lWn>HfKsjNUni^SyQ19AH#9f))52Q%7CQdX zgqkhQ{HVH7wlv6ck6ihA?UL!3MQm*J_n*-tt3UVHwXc!KuX)RF0^TwmfF`8ehtz!n zYp-8RL2FPnFBB=HWH>_s7>7dNAF&FhwN{NHFGyJ}!h?>7rR4T8jTRusE}iIr#b2uQ z4tpMe!tz|GZQBoH;9sNN;k-Zx+>iQv(k9=#*;yG~{fZ&>{+Xz)$}VS3NnR)a3piFR zzeB`G<6R^@A~tx`Dd69A#YCbGTZd!_+=uN1XdHtbz`lfWTB@!8DnHc{*K9M9smdqR z1t{MS5f2&M`;6&Nx4EqSck9EjgX}RoZ0mEl7(;7NAEw&GV*Pr-BmBeOp|l_kQ4EMq zG{yO5sY?l8;zb_*&c2eF>Ys<_&4v z7gpy6rWaDzo^)72OGV8H|Gs}h-GxVv+dFz)&OiD+^G0EoYsTwPUp<_|Gn*K0^p6{S zzxsY>)lQHK06xs>#QlS?C|X9NTL&tl)2HDxZr)MtmegDL_+=VusJfg^IVCA7o(NYM zl>%u#$TY&Gep;|YQ(FAN8e^~eCof`d$PSjsXP&cB31`B#95>|)n})cG%qwdTGdZ{A ze~<Mmse61u*lwFg)i=;rzE2xA+|!FuO2YFGw7##Xa#B} zH}Gy_Qc~i{jW6p{?B7@T-56cG`GX<)zPOY?~4 zju0tid@cDlMz9Cb!Pj%dW2HNB!Th(YZVzG-!p37;p__OZ+trN&tJ#6GabNSe{(6(8 zrG&?hKG?N~C8!bAXPZoP-9PksU!k)7>!mTTkh6Aw zjksN^rq(C@>VC?P)br3pTLjvCaV3GI7p*bZ*J_&w8{K6Fam*K?RZVTr!vUpx{pWk%SyHw1mX3!;Nlj@# z0|viGT}LglBAJ7{S)L^f*w}9BFgi9gxJoja)|nry0Q&s_6-lNqaF2Jl$hsL!b(`eY z*n~f@Z~5L8;PxGj-Cp}F4Z)&ouf&yvo}((b>s}Q7W(5>B!4=S`;U;V$qJa79H5~L1y@}3Rx#Z4+ z$`Fndps?x%e>ZEL0+ilaJYeZXJ%Fev^%Uo_L20Di#d?Eu!`nE^G_lh`kFPJUmwJya$-6KNw1>RTQ9!FkMvXaaAK#qVHi}dw88U2U%fzivL~r_5|$m z8fm39?q;_9B(Qz~WJ2ci2-s6~a@X>x>+1JHho&T>H7UZQHS}rp+x+@xw7{U?jF~YKMg-f1QNdICITO#l!KA|-i>wGJy3wsPM6n`q;vn4N~N^MHU z*hcgoZ{Y~InHTO@5N{6v_+CR|;xW6s43tlGNBVQ%{zOp!0$pV3He|C!e=P!kcUppW z!($FC&zn_@cH+Asl7&KAY*`KGJjTYjRMJEa)MxEot6^W|t12!qfIULk1B2~-q=Uf` zN{D2Mq}9;SxQJ7@2)~F*CFLnLPQDKA)=)?r$rwJeL9n*r{Gd4_A)G%m;aS&!JJEfW z5@vDU!NHkTFfvuHIE+Aj`ZO`o*}BDBm5|tJ=j_z`Op=%6yqDcd*)c~odRyB^GVGiv zfFwr=4n2o{OslfY#5<^O`H9tUUn|FJUiQCQSO;#U> zC*^qMJLjEJhL}UsQ1-&MEvfIq#3?HUD742QBj8%dXCl0Kqz51WbS|!1_P#j0u@1@m z+I8vDi&^bh``VF@))nGF6V2UOfkrl@tlj zfJG2`Y_dxxp5g^GGh2G`(@-4kQyvv#U&u(NmX5;9$A%+p(-K10^D*4q{G@E}u;{H~ zt%HLp`@efwA)02J$_iWjshdwrEP3%V#TtmsUBy9!tU{0-Sft(pG)N`{vG+;)cnWh0 z;&mNsfVRZmGz%_~v}Bu>h!O7rYqrX)vqQm|v@?>AflHwK;z#Zf`^%91lm3yBZmPLc z#Nff!Cw_i6W8+q7p8VNUb0<_2Ciu!8Ur$A4T`B<~#)q{BEm;NLg+qlF@R$c72ju**Ska|;mr)$4 zr0BP`T97)O>Z}RQUecR2qy??^Q^`v0@FN78P)+Dwabc8zXni#tJbO@>4tE=vzsAUs zjE?3ORD7LjT(T$fysEU)KlevjC{j;wiv5@RGU{$3W@WXpj5T<3d{HK-qC&U!WE$u< zOEX*5b!SM95^4tXmSC88{5f<2V>Mf^Eknc}p5Ze6>w6=HF7waQbN3+N@!e*kP}r50 zC!MD5nD*f+o7Js9*3@O~YlRBD5TZ*^5zyMjzkqMiF3H+kHzJWEs^kaEaQg_m)6hE; z(t?%U1>Rh9N1GSjxJ$wjn(BL6w_y0dLrYPX(D)AhTo_@|rQO3PeW`Jh>AF(?LS}_G zEIb?%tqQh8&fFn z$7IimUV56R8*<2qPWNwW(Ys0cv)-R0(sA8&4`gT=*@c(M^F2JwR+KH<^xG))Df0}0 zr3yj4b9JSoXCn`A6DAi_&$72Ir^Od^dpd?;1vA&4a*HLRvb@lEa^gKI(e+xXFkfM#WgA5m=WYQ4}l5%cilD-G=AR5lwP=k7=B35kqxgs0#nDitz>nO zITR~VPXj6HR1~EZx?RA_J9qYB$`!kRHaR3xfV8z3fb3jwH1mX?!j2E!eZpM|$5@CtY z1`c2;!0DwXm}rk*Yws+{O}2-7f2nH^H!w4aig#~58KMd|8Y)n2-{<}xsKvwH22ZM5 zom<>e19ozWa%&~n2B?rD(h)*ss-)-a0H}l5s&L^tLkL;@zF;`)%-V67C&dRQ5r8fQbKF)AHI1STN=wBa)C12$zwY8gW*~q{t^roP=syF$lp46D` zh%V6WCJpK>`u%-5dJH2C;Quix?7Q{U?V(@sc^jQQp|xYOMK6A;hfl-|SkQ!nw+9O( z+8_8rbQ^Tkl~%oJtf5F!y!5zjRSnB0i%)`+R`r$^(N_bL!GfR^&tU<)DZ$Dom(%|H z=4K~Sy$JkKz9q8K=BNso~gql-?RCm@Wd5={Q|_FtE+2z-G`sKsOMUxMde_)%oDn{ zS*5;KKGz2oqYCPujSIm*l>CD76HHrSIRTm#ZkSL>WYD%MY-{z(+tj=!Ww>96y2UI? zY}N4^LheXg?yAc|`qN;{O`X*Y3Jr}sSrTFEZ^s0`w(~wodk%=h^ilNY`FT*)P5|?u z$4e-+UMUjTgnDO`8u4tOavz9!(~{j%iQdl%frq9Q@aU*`9NsPk;nlZX;B@4cxuc&= zNqwVE>VZ>|mXYc@wTsB(j<4oawM=}sGa5!|#r5@KK=%XPuuM#XqrGOQo?_8V^?6Wg zngUUGHX|^F3%3QCn~8q4EiB2IMn(-izn-xztAQKJl+5b|fxXc%(Ro;J?D^{D8D7M# zSRKT5UeB+6+mc)ky5%r+!kEi70@0;nZ`W)@3;1dIZRmh7Df3bRBn?u>Y)uq?v5|uY z5+{a0*DG;5NjCs5-rQ3bVDY4JPuFZ?klmjsB=F+L+I-ANny$(H4y?QJ5Yn5TtDmf; zTBB8#(~^_z9p9w%m)CzG4dwsoIp@IROT43D2F^Rw)h*Lt0!Ofy7U)N%?H|7|xbk%i z8bFo{V-*K)j~kx(rK6E_klem=zbW+Jb@l9+$X{Ws3R(0pEk3)5i&mrIzXQ3YzdgzR zY|FxWb+{$MFyz~?9nQuC%J|f6r4fPL4$*MbSYxq%mlUPThw zf7gZ0AY_4UuXr_-_*-hrJUbrf8+k3KX8oT}&IJuNJTGa1;G!e@ztaG;4U~p-c1uPCU{151vcuq)wQ9%H z`IK}9xL)rj7!gBbLuF0zB3TK6LHd*e?mL?{Ro$AJbxJC1$VHxB-cp+U zi8ytFddzen6Z$PL-)m%cP${;$;OUOO>JYd_Cx?NYZOArrXKO_;fE$PD6U1+wHKb`X zw!E?O7t{X!1_zN?q!Vs=CI+cKpSf{X?_=$k@L*GEdU=w_#?o{F8Gmm9D#-JSjW|dz zKrqj*=6!4`v}|MZ7G)UV*aQ?JSZNbK0Ldy*5Aa=1R=)JlHmDP5+kW^E4ej-LIU#PA zHx>`s8otU<_yx?wF;gw*g$`#M?htSmSF<*s-yJ@f746f!Kc2-zEG&;azdV&bKUU9v z_jZsR!A~h#C)MeA1aKxONu&)DZ;tnFg}ub}AuUs9HZQ+8!r2)}C&T;Qr0It-5d|9+^|~AM zl170Rj|NPHD?fz{Znov^=&i&kX`U<4J)Q@IN%~|{pn6=`;-ySj-~ZM=z4~Sriz38& z#*KImEFphR48(9>*0NvSnL3AZeM_HSV2xm>4*I-!a{0L!8ZtB!IoO2fdX+VQ#+Aqz z%B$s|$c&dguF@$wdA`qCop@HVl3_ztIbF-ei!{7Yu3Tg@~m@VU|41FZF;o@nU_J%M##&OXs`hIgxalFZA2K(#o4>IrIBuE;Y!JOwyblUP^ zcb$J%T#|%=>c5&VoT>nf-r&4&l7H&;z_uLqdw6#3NKmJMt=3if+e_~qgw!Rf8qM%E zQ}1@x7(V@kmQie1sYtuA3H98__izMsme(jE&z=0hG9+t^@=E^Ta?^a5#F>` z2&zTXA$zVl9tMGmQgJIeg=8dcFTcyClWRdtq@g$FXVl)$u9Y$*|E29SLul=20sQus z)4N;8cU=nd15m#^09mqfq)yAIJuW9ean4@p)yZ~uHr zNIMVQ7OF6M=}~uU=6EWq ztxjK^WOiZ+}eG z4gmg#)b>@hd7N|Jb)uu4Ak_vix3Sco)gu)=Kk@cTQv*HhuyN#rL63(X(z{xV?x z{-C%*-}UqJ=sI6+!AQIbM1FG>-?H>F{`@E|;cs??sX4Jd?ophG_4o+Ef0Ea_iuKlL z-`%Lj3mDbMoj@CUzMMJd-yBTKxy2eQbu9@k1^a3Ck@CA_9C|pUlcXmNOH&+_R<-Jt z-5w86SgEAdbj|u}Ov5KozI$|9!3HC;w0wA$GVE+RXp+(O$I$cIywiiFi_V;cBOEK& z_=Ah4KblziWD49NryG>mCORS8__`!*f|bA2IaMe&AVhKOGw-krGVd#)nLz{l`^F_= zPV#^a%9PNFU^oA$Hm9RSYU&6E_HoU*>RcWDzYUXrFE*y(b~hkK$*i~duZuk(EXJ6c zACyKPmv*KqevziM+J6Gi-aQj7U0(a%&QC$K2Jb2QB=@P8S}@g9sn*y6OEuINOn&+( zHmZ>klM$#+P?FcY4tG!L69ww5q7ux>r_DF6kJ{924KLC1)*fleI}l0hqwM z6|D_~bp{)7owYz1tN^s`&&m@| zH!yl5OZvYLT+-;ml@CrRqJ?~>?;AI?-}OEg$o z-3a0WMuRc;CYx*BTKsO|CWSKt_b0E@qp&|^KWwJFf|y+Nn?8UmKTBM{R){>FHsRJL zRtK~f+qchhgCTw5Jf8tP)t_@5jiZ8(nW!?T&nYibf9;< zVaU;hTx_(Gh;uZ{UF|4{!s9B)t2HRuGE)U-sYGzdtB|Kz1Ksxcj?3NXY$k)pP!t{((}{PwuD_+@CW)XPy<`e1wQs zs`Q|Dz_93F2`Aers*VnVm43w~%tRDVqa9Mm&#=*lgTA@WyMcmMn2PgWB5H^=e8qYs zl>whS1pDp6uxDB8#nIndw3c*yf36=(&^q}3944US$yHjN?~@Q}y?@U8=!l?taqNhj z(rtsJT&a3oZl>@8U@wT*KnIj^qO;^`s?@R#rn-#m*_}o;(1&Tv1Y3flHTvo9Z}n*y zLqaRR)hbA<`k4p&SZ4#}1s_}i6S zejO~y*$k=BkU~15Hez5J3pP-bQy}3vcy{%oEMLafw3>D{7__;?mXAx_y7Er#16&!$J$#aFGGE~$id63eqKi_ zS+wP_UC&F`OvIsf+Gz!TD6OhP^khU%*XTMnBNYYlrM1nuB#%q zxaCYb@w|kTCWLCM-vh0o!I3xTZGP^nTU4ZrAYR`oq-{&Zj8z~y0-@(Adf#v8^yu46 zg$oOBEFVQjS$vP4a~L-LbQrl@|L;0du04AbX^3AJmg%eyy3|c2J0Bq!iv?VcyBJ3@ zB;?C|5>&ZwnDzk@s=ZM)qb=dW>tx-A(n+9;$_$KonTebOyHTynVMX8VN1wFP|dnM<~ z(qln9QT;A)UkIk6m8ChTfR_V_NV@ctr$h9bfEsl4jOWl1 zXzi(o3xTj-+$cPx=R3YJ=bIJ1hSFpmcNjuf=%VzCn<` zq76c(?#BeubkrW{N#d);h=U}L{?yUg~^2}_WjT->%Jm`78jje=*RCPbAHC7s6>_^ zJ`lmQWpf`EM#-_n9k17_B4HuRLy<5+811hmOZ}NeqnvN61~scwGLaA&pv$BCDwbrsrj<^gcMxLmM%SA5=8Xkxw+_(a*^{lwp;M zu(fBbEu>KbxK_Ey{PR&(S}YH`Je>g-tcawNOi&K1@2pSi&X*OJ^AwlS zDlXjx{5`|kNWU~SNm2JBOgKgQQs}3olCcPXaKPdwCwp)id-k91UslsQJ@L=*oV#c*!_*lschZr1gIzd;OJ+bnZKfHLnzu8@y-N`e# zZA}gHL+PBd&l|B|s73pSUunR>PJWK5LY)j8iWD&JBfI{I>2{tGnG14%OuOJTvudv2 zEff7Z%KTyTWMbn@PzR8wIJ{Wi4g*Y?^PQ5qvulqHo23kPY7C55-WHdeCXu%nX}K@6 z)kkJ{QFoiYg#pbcD}pY(y>4Ego*-zKRQ8)+e$9n4M83Z^_v1v@81OXcvm~mK|6Ja1 zWKkZk3(>-0@o#0f`3Co(g(L{~Tf)$$i<_qZ*w0jX_;zZsCM0?iBn17pb^i|OPylhe zGz?t#r(v431$x@1=7SZ%J(|4{!FwOTpUwp4mO%?n_1Ppu8fIbiK-c@>2>UGfmVl8n z#`jqFAAP;`2t|$mX;J^Ri+4bTC%c9KOxf64wqo-{gR?HsG?90QZn+ytXzY0tmz)@X zooMt~5m1SoM%Z7?q>Z_R7#9j=Y>qa2J_AekQEY5}LdG+Tr@69NzaW?Enuf*at16mo z@MUvi?&?DNv0}c2{7o-UI;P!UkId zC_(1E+(7TlYD$&LC zwSaSo4OBU@a1le6oJD`(1U5>Natq}r6|j79XW+18Dg}3?VE|{LkFtN+`?PPlf@Up` zm4KY)TGz*=Zo<;fWQO>3;u(3+T~$(RUEuNAhTJy z_`2#+H(H%JZH`0VaMHuRWeyteb5G zc_vfi5=xQ?KSI+SAw(Z%N^O=KdBH%28pJCF)yz0^t-f(^q8@cZIQpk82g>Pqz02pe zN8d=1|IaNss>FkW=$cGTirTbEn{Z@4q%F*?Kcf+PM1P*m13v;~ul(p6G`_z#C0 z8)5Nzc}2m@HCx^E3Gek7vQJ}1^BZ19Ux1v<|(4OXW=D%$(m zM!re;`I7LE%a8B1gEzaZ{f=+GWVqJ@Ll>@mm#2Prdk6Uic2Q&}Q13umW|AC%Wofo7 z8ORZ^lX*R@-YLAywrS<==~cvEU=Cga_9Rykl<%A>>3>tSsdhjC7p}Q+4D`u63CuRi zi2dMFpwW}Vp4ZZEnD7XxUfU?*yITG9&Vd1%x#-zz*5BJV#a9|dsyO;X>#IT7*%F@f zAwBxi<*47D58b3zY(c!znHc!noy*ZfLT8n8-zLLD(RB0p{6>hbP*(`JHz`rv|6^H${d6;^rM|kIS&X&l;=; zo(W+0W!~W{aS6+Jz>plsreRJM9Qvp(C@>g(#2$4zZ}ZtovuMA-_lL04+*$aY2;RtJ z_#}woT73om7E}mucgCPOoxKH!^{nGs7&i@xu338?`NY4_^m^Cp#=(nBMh5i6R z6|6O=dDFLnKPqT?MC(VjY|#}$wzgN#=*Z%56F^vC_KCq5)Ry*q&*X=;4FcPNYTlrY z+7>wi1b~65SAQc%k7Hv)qsw}rB|FB3zm8PiOJz(^M^{(Vatt7HD5+~~%i1HwMjGJI zI%X)%%V6~ECLWhYwNp~rJC%mBdXbeAJ*lvr&DUeqI`0vY!uW28M=u@Ukh{gx!Q*BB zQi49bFNO+%_b+X0^Yvqu8^*~co`OSR) z#)NgD$=RhdKKEi;Y&o8(my$;>zpP`{rC((7WrX#}PQ7~<7q9#X*>EK|Wd8ivFe2(E zziK^|pR8~q6KxzsTijX({D-hw?52M6$SD60-%MZEAuFHWYOfZY^Nc*O!$VWW^-X!~ zm6|@U)g#BWMrN0ktO*Y5An_MAP*5>f<9vkZDalMB20T|+Cls{it0?xZcR36o`E2I?p0q|E_u;_Fh}KP{5MUU8OBT%och; zL?bGRx|F`*xbkh^LJV!o@QloUBXuo@^|Uca4^{2&54nPUH$^CA*55JB!e6r0-1+U> z5b=|UpCBp|e8_mT&fZtgU;Flx*fjFw4sbXg3t4r8202?c`+oU87xFuJy^UY~M?a7R z{x168bu&#qm6TQ`I)8U8ntO6!Zo?l>x1l>^I)UYP6sWQbtz4bP%w(InE%2Bth@#m= zk4EMlEsSo6e^$T_%_g(;$FFWUa8%*b1V3LjjOD(2Jf~|kO!Dc|v+E`Oh6FTcC9}>NK!eay3yxc3Upvre zLYHtn_y4ps3$&Qgc0vs6bxR+^aj$KHt92VEM|;9|4m$Ao1}4 z7V=8xHbn+Hs=m2LzOn`9HPuP7m2RBk0L1-{_EB%d+QhvK;JW0_1joR5kkO;{|8Vx^ zQAy^1{Ag2CR%TYFmX1=HnVHh!QZ6tp=BT5lrk12kQ)WoWlp86+q`5DA)6_{*awSt_ zaw9j$y>d(wmBbW*(p-6-QhbtS?lbqVd(J)Qp5M8D`KQ~5&*$}izqT)^6QlNL7*Hl& z-fz^I@0gn*8rL1slHdL1D3fkWs}Bt!%W4;&M}7C7d~mmad?NbZcM4-~rRptKKV14D zOts~+Xb}OAwDz#JaxA_ZmT-rGcCQdyYdCw_LE}#}5i3)n&H4!aO8UyX3gIiE&QAZ; zjQ!wkv&wsPVzx({t#2i<$_+=VuR`Ly+!zD821Gn6-*S=h^B;w|wEh69|1MG#yr<6* zYuI(7tkOgSy<-tbEo%E2D%?DeI))V(b)h#(?eA5R5ODVop&m1klFvw>=-~V{AJ`)Z zIGL;6LEESCHeT7Ki{ zYqS>mbOkLj-y{Qd1giDe_2$0>JC4l|d8a6*CBW`i;H>qt$s+*$ffZgK|EamsYSZOcH*h5b>*{rs> zvyA*(J&5d_$0oA5TNF<6t7J=PB_=FLHn7`K%m-;nmU1`m^CJrL2vNZ=+TnzASJSS> zoC_kv{1M(%IWm*_sjT$v>deJEi+BQ4(WZNJ@zj|7>on1QRmH7Z^MLj0K?5na{C2Lu zsgnv+CoHvqu;}{w6go5CAzcX2>?ij@xDs+0w6|u0^cH8rJyzg~+yZ%b*?5iz^yxec zSDt46&KsLfoxH7lKFyGh=jI*x8W}Q9Ezo<=f==V+e?#@d4(OR4!#&C>>TROo+$18; z4Ip;CLr;13kj}mGSEY#`8?hUkvc8%w_l?~)w+I?GC**(j7cLB4J*V?~ zPuO(1%TI!KkC8B!f7gv<)?8jiZG}L9FG-9C=2cr=0nKyDJh&W>?Wg=ZRAokL5#@Ce zbmSrhWm8jHFa1Y*hbae>bI`*oQeL;7b(?77y67E4M6V^?RS(eePgT8j*dRYJJtV3r z;)Qs779L40Nvdt^pBNK*nBG>@AItgtt}TC+#r$_&|M%Hd!#tu$n1-&K=@O;~9^xqT z6cKXAS+t?*M_9ANP3paG0^K92;6~w2#5%Y`64Y$xCVN8T-IIH1os(Netjt|iyO?%e zksi!jCq6>i-Qe6sOn~5WhX1|n&-LH$1)1=xo3aBIbo1e-uJkM0mki#KZ&AI^g#!w# z1`@+?qm)B@OB!UNwh#+Y+}sHvZ_!&6XQ5&ME1`8slP6J-v$Fi&i8-?pyb96GQ^sJsy7TQyRIH89!?%#E{uwxPzfZui6eglKlB4%`9Q`1D_QcY6WFMk8vG{w0J z`WEPr$2KhH^8DIlCF647T;Nga0_j3g-fBkrkt3lxu-WvNVZX5}!a)9l-_eO>ylW^+ zNgfy#uK%(q60V1Aezx9$W0sISI@iw4{_p7V@ekI8rGhIB>1KrH$y0=Ut*x7F&h9$) zBFKe*GK#QDP%h2{Xu`#Ev59|8Cb&GB zepGHtUajE8Wj(4cq1R)#eh!F=9O^rl!pl2Z8`-iL+7jVlB#VS|O$w%ZY5%VKZ6dgf zx<%prY}VgqLHjACAH6fQUZ1r!fSy3zc^f9ANGa3c6D?BW&=q_1XAR*Wkda>_DDSke$QW_%WWIl^(IQ75`^{~ z#jt^ZS(Hs0q%PrOO>2UFopssCJ(1p6TaZOlx$yG>;!2({OEHVVuo1-{ah&o7UFXyT z|4~USncXO5KiLK}{2y!_hf%^tZO|ljiHsE^wm|eipdPJ{GHq-EhUPJ&mag2t=kleg z;bwg)OUQ6_k9{tyEC){E?l+qS4OE;S=ypyZ*SJ>Rmc?!^TqvxO#)Ka_mjBr|Itu@p zxk5>TXJ1(`#1aV;5HFSo|P~O4S2z}MoCmAfiMGn^(accVKmQ^`L$`Y(;ClVOXYzD-Tx zOF3;3zh5jGjaeOBleD9Ev^vUv!eJYGQ&2|~#?XCq(jjF9QgsAU>oPPTZVmDG=vp+B z)U-@tH$i@#MLW#Jw<1opUV#fM?*xlAOuF=ZlZdx#yQ8khRQ4W!BtZ*p1Lcur#lf|o z-Np%=pw4{y2~Y0H>5-LK8;5VQX$UK!rXhat{squYG$-GyfxN|xc62Hmv5mE2rg5lG zoR|jC#jFRa{dlaVg_VXU@0SFH>ow6V;V8EuD9yRR3v()Buc$Wbp0};Wg}`s0eIH%Q zom1Y%RS7AKf9U$lu!N?*H?H-%n5(XOt=D^>Mb-d~WL}_>lLES4gzKmWl3|M!Ck-$Y z&yn3hkB$i^xAzU`owLz?NtXI%QD{wz)?hJrVS?BbUB2KoYis?WHe@Zc@|k7Z^C&Mr zzYrVW=4f=waPGuJW%u{CF)^aPx1FAeZHP>g`zu@k;eu2`PufA^!!XPfFoBIxny7v3 z`_=aMKzz5YW)B^@oG(qba)5WOH(N?RkcjR127M&znHK)a%Ls=XbAcvuR8js7y)fa! z{G=l@ZRMr`4%(8?iC+Z;glFRfOV@$Q<<&(axdYzN7HR>reGnUip#p&4gZ-OQ1rRR+ z?;eUX5U;`@Ngy#LdrqeMk*9Dp+Pmx!h~DlI7EwIMj!Y}R{Ly*$p|AXZa&j*%`xP?n zRw8*Z)Vw>V`s&8H#b0$(RO=~x`d-d<)gVIic0DWOD{1R!uPlVm(d(0+`Jft@L?}z_ zF)XqX)QJZ-^dkNX2i!?=(YW3rSdF816d4XJbGOc8buC+xgTcTT&y>#%FrD85`%&+i zo8RsFoWOTj9C-UZ`|1Ej7?`{L%6uuizz>P%)=IkvGEut9QnEL0iYv%m?e%AOu;K%^ zzt@$$1pQtiH61~s2Sfz9E>M3Bd7sBtg&r`{ssoo|1i?kY?QRm{-nmsh!U(sk@NUO| zv+aREp}XzhpC9qGD+)dmbI1R z*#4Ya^owOv=047d?(UJ(9WLdIX0tKI6D!=jN@v$xPZ{2)C3+3>8jz-NH7O3HcyUrY zTJZb8D|AC|oMj3%=sRZ%Dd`n;lheZd9grrPNn6J1H`W~kH>H3lRa%H`Sdvrk=*`2^ zBXB*MX5$%?#N{n3RrhX(8et4(M;=^1Lh#Px4%}<1YGk(h6RL0&dG=u!g59YvIXTVI zg|yCr`-okfZ7?78<1%QS1`x#+Rd7rFDEihoIt8_J1lA&r_rOvy{g0F(|L6Ef)IQKb zmImLp=(q+A#LuH}i(#wdwJ8ifjk@&%EI+sjQTUiTp4YuMqv^$|SKqjVWXGjud3}O% z*-_&)jo;VDyKD3)nB&1MbN7mv0AKc3?NBH+SRXM~)$3oFkf+cN?nE?Pg6BT1F07^z zgue&abs>O@25Pd(w$bHBR2|yh08&9G%5c=8-XW}G)lj=OR~J}%QF%p(?Xdh{rK|1S zeJNs!u>z-jH<*1pd}gkA91Wr5dewdhh&r%CUxg zez@Etr=s-2lkhgy%})(;1yPN8R^_^T>ZR2M{Dx)JIwhB4KpBCf!mU_>mREs00h?Yo zVkdf+YRfpub&AP;6@&c~WdL|&NG%i_t3N=Q1Mn6u3Es*;X?WB_an<~@dNIYI;i0;~@+-7X|fcoTYp6yH= z(YHe-yP4l3P>U(3I#mNSzb4FJvm5O*6O2Vl~DfSoPf-(0aV#J<#UzJ0IbxB;QvX0c`^w$9kq3kY&IoL zplk3t4UdfQE(7kgFi~F{Wu_~C5Likv7z4WWuI_RUd+y8#JKb|4itaFX;p)UtR0}UE zHu@vEPUTx43*YQdkUhi)^m@$)ToK|wee^zPwnA}xm>Wcek*7vpSK#(G$XLSq6RTzK zI8}JkClQ^c6b}M{1;JX$aRfJr3%YP;v6zK#SzAFeGJ^{ zahLL%oL|bTM@kb}o5$?Fz4NNgU2B;@rA|bgd}63b39Lr)&vVZr1vXQ<-FsC>C~#cx zZcFKwTl^y3Y&Z%12N2W2fk%~Og_S5nOG1#g6D~j`M*FeAIYD9D14Co_r6%AbMGtkz z)c}1Nyh#@^tt`qj{9Qwe{fB4Is#fc|&U_IbDQM1`>^D}$WR?Z>Tjv%@OWzCE;21EN z0;)?&Yju=Jp~J#ObunwF0x?X{z~yZW$gNX+=DTCYLc}4`_674&IWi$8$^u zE&D1DWWRpD{7r0d&Xb@sIr?>$uxncXvbfr-!#g$aWP}MT?+8a(fQ@b5>6Gtdd^)DJ z@?iFa!??Wut9^ki3)%?M-IOJ8Ecd{k54Y$IHko8ixih3DT1pZv+Q{yfUrTzNJ)8W8FE`0Zu>wD(tPJN{EnwnKLcXzKGdfS@{`ptjW%|HlW zlD|h9^+%OGWfEoT@h5c$#Rx~=iL}=Q8KTJ2seY&S<2Z_Kb_aSrN?T#hfpGXcVuUs> z>(p~3pxN^{oT zIe{JvYLefoJ<2>7rD6C}w`q*+@aOVuVnDreYbC`ut8Mu^Vq=K##cIze^jR!S&{64} zRQ39MBrER8Z$KyjA5D>S1-d(_Dwwl}(B~ zZ0uTf!s*7H9jUUnZhm=7`HiXhxF&3ie}v-Qy$}8THyaD<_Go34n`I5i88QBHTlY2P(6&Kwwo&cj0qpptK zQn+3EYCeoH@C=>7g7Ypp^@9gq{^g#{#VV1e{b(@^*&s+r#* z{m}`C>4*$VN{2!xSAT)klL21*^Y2&GGKH=$!nw_@FWyEBrC--}LAS~BXm+y%O!oVl zf+Z_=XZFoyJcG%ddXiWQq{&)fl$<2X0o=2v=;>?h_+khLgh)j`tVK5*aPntpT#QWS zYEVoB(9A^$Ukb5Bm&6YESH6>agVoE0HeKi)va4{>^cCb$D~+=~vF>wr>0i1#LN89= z%?hF097!)3nUDtmGn)4FdvFa+>NmKIMqE+xsk)SXs`peqvby{@sX$aNO-5hWOrolz z489=t9D-cM4q;t^Chs{`q~5N{Q!h|jY%n;5ti7p@Aky45=`oe2xi_Tu{Ak4M@Jf3p z!vcou9m2)7^h^8ZD%z?Zm1XlL>dAuUk(#A(wWBMMF_^H<2I^RnEEk$!s)qf`C_9x; zrS&XB%3J!j)}5llbF%7Disr5SnJ(6DNKKN_+eN^O$~b!=Zyc_KWY!V5A5cVbw46q& zjqz2m8OzV_uH$dluE+{QLM%%Pt=@QYKUM~qs0X}t{~9&IS(?~Xii`%^MjG(T!S5#z z{jDrTolp&~dGrXA=(UMlAa@mpA}@j$O#tqh5tNN)(y^L4Fshr+Rd2wqhtNKQ4v9uI^C>1uy^@_C&;s;M~AjdbO z72@J|pCr;ruh6x*`q^&=hn+7?M?wA*7zS~8bwDuJD@%R}&59BMdLqaAqvAjdWro*v!~1 zop0C9@X{?lJyMoL<_J7p#i<@wOoYV^m%p8TD`zspdSTqnjYk-uwtV3NE`9JLO5O*C zGLRj_F;{pqQpf668l4?(HGUStRVRB&Ucw5S`3!wuaMuJWvx9dLXoTPMt=s_KN}*Gy zpKX6P?QzJcKY7sO#q)^$R>^UdL8d)-+W0nR&9g217YVk=e0zSayPP<<)*|bM*_SRn zT3_`Rt>5|sz=IhZT_$CNA`lGZO3>>`I+D&8q{(lcfu|v~M4C8XMG777_Ln9u2e=1l zT>&j}qMpt2=B-b@DKBU#@XK=bIB*qMG91|HemBGBRN$_h#r`c}2N&z|JO;ny3-EsW zRng;LQRkrm04+-xfjxGT-bo~6S54Xpt9;{%;hVk`7SVh1TTQD1N!LY)RB8}a4^r!F zR#n|Ao!1paboURWSh<-vw(*wJ(&PmJ?$gwRS8=1gUX;|#^h=VhKz{D_)c1Bx-`d|= zv)wT*%ZlTnp;tdP3l$1Q4-`Cw?!nL#=vz_hczC@;b~YGjr$eR>gnL)aiQe>fK4%B$ z*TK@F4088yj*XG#JH8>4Em)yP$u=dV-m~$Tzenl|Phx6E-^9DU;9k!7c(3`b_ml6{ zpU;iW#?0={bDQ8Sp8bZ4;o{IuLN0aQwa{eIRDO~i3`%AnR*=;s1dmQ?ttM=Roy!27 zWcK+3SWwy9$wZ2KyBzdkskYh_%aFuhTr){p>5n*SuM2$pxqi4NT%8G%zk>X33Czii z8UDnscSFrzxtPT`s4U5DaI?Cz`cx9L8a1xywzzkwDJEJK{7;~T@{#IfW1IX8SsV0A zLgR({r0bI4MSU?XMbAgtF|eD`4|fghWRgzyPM)d-eG=;=Xg$(+hb_CCyAkenWF}4= zQ4RfrZ*CX_8nf)TU2klyt>>{X|D{@dIpn_k`|0vU{dv}rJPS@y+qT$84Zb-AOVu&h zOp2i*1`sap7gy2$ghwNk6?7MCKp8@)E21QLh7 zPTj~v;m&&L#xJ_1odR@xnfwOI3Sd2G*jz0ogob`*XGY(xC^a3b^$4=^q29s29a)6Y z&p$7{vYrH1VGnVFKcLxuaf&E-zI;GY=Rh%2{aCS16EGu-Q_?x+ldw*euV=+gZV+ma zt)NN~SDRGCgQ=zQwOm@+$9ba*f4Ag!^nCOAJ9CYc%U|@gyx(iJ_wd^&oatFlx79m1 z%F!=X8!d}C5-(>A28}-V2?0mS40QjyE}6QMbDC6yP7st889*8G>(q8z&XHLiz2QlH zTseU5h}9C=kv%xW)$Vmsp=xo{?;~8@-1#wWBh&P|&9))QFZyg8Z72I353%$jieu@V z$;#EmugA%Y9urXc-ssCb}Q93V&EioE) zl3$ch?1@$IhMstTOLGh6R)mAcFGKYKdRtnZH5wnshOb$bts)uimbuRhgZ6mE<3BR| z>Ge^esG(Ws@#;_koB7ycS5#|g{g8as$qCGMg&1-dNVCg7FA05vwVQmHLlo%BejNR6 zq%{KFsWcIDyEM0x_bIDXdlbJyX;t`qWYWq+h&j5QyG>zI9L;(R*Njl^jeG_uf~Tj|mkhY$B}aNko|`0-B%~Pv@Jb8>*qk-flf24W)N0 z??2vT!Ey`P%ChzC!iJ(OV8$DRLX z#}XK|Q|pV8OccA5L@fB|-emoxxI~k208|>IQv z+z}&nX8o6Fm6t;%w`6+`WqS-ZBsaWX!Rz1p+@Ky7vHro-=d)f}E>FgBjOSs~a_&@I zSn8cmZG0+Z@|>{%g1cs^Q>8qi!p=2CWkVT&ACsNHEW`F-9n|Ry%q&dQkj{AyUcZOD zdNw~QU3%e3+Vh6;zgi2IN**r0X{yX|wY7&O70*6>k2yW5@+U98Y{GDxnt1`fMGQwE z?-f=DwU@#Zs@XfS6i6_VC8F)2baB-oX~vQh{8g1KHwbVSQ3Ni>BI)K&+tEV2`q9moNdfpRLRu>^P!cw-VGIUdEscVcj^V;){9ZyX3h>v@mJsvy0 zWR#0}^L*FubI-%SPkhg3<745&&{|tH9WMCn;qEKNH!gF-P|kwU=!&8?{=)_IkE*@!$#e#LWv<|MHbC!=W+z#2 zf5Rpr>Zlo3T+IN;UCa~tb>J+wGn3@>A>%GkPjTZOJhcB- z(p9DkO8~uq1+`$d3EmB5QWLq2y*-*V;ck=xoFIeU3{z0~JlL2HN7(!cSoNk>q;-HK zEm4^t8+91Uc?xm6P?|v7wEfB8s(Bq5U+_^tXwPR{are<4z9iW*+fR%fWuGKgNL2{r zjeplgen%%R`(bH}JTc`N`54q)LcRp5^_Z)j8;U5{4+M)nAq+DlI_m>7kuBb1uPcJF zyZ0^g;Fzd`0!khtonUGACUj`%8go{_Z2oz0yx0C?77c09Ql&DdB*mcjkg0N0@~r|G zTh+5+;H(8pIk@0J0{Rw0px#A64@ps4B)aS-ob0S|y`5q=vRvpgB=0pm2@2y^=xHc* zK1zS=oHB`&`^S8A!3Q{y2DRZ-mOkF&?5V%}pESYm##S2&@9`D?(e$jSiI#{{0j2@c zD&mFax(SsTEXzJkZNI88EmPPPc!8`%O$l8ekKVK>Agl|a*r%XxqT?uAfeHp8 z)?BeA_$cZWP|+65;4o2-%`-kf${T%uX4{~f4Z7j#u+XZyVe;+2>-e7|QO;wtv#hhU zZrWHL{1&FFPAOc$pAg$a8>ri0bOm@5Kky`pg%J(|N#!p%kRJ@?v5@POa1W`Q8M?Cn za04JsZ#`W-d%}NUeMnZ|2geA;hpXdzYHmCm@l5w?SsJR^$oZB{jpp3%vw6SNTtZD3 z)|qr;caly2gNitc0faXmNa37@6%^aZ!9bB2&hjve98^leh=Lb-8GSWZ`YlTJ1T_WX zfz6Qct!(IGOE* z@_P}YzSs7SLFJQgp5b^O{m(e0KXfN$me(#jQGfnVcM2=v{(tFJzhV;+1{5uFFf2JM zCm#oUGQ^ACQ~a*jFp){OhK&dQ0T;k_d2DyYp_n3O$h#%|nB>r6HmANRPGpqTvo;x& z-!nITY@x>U5usvD(UScSfqWDyo$|=QYPOn!-lDu@bA|U5LVwnCo}vqCFxwWZ^=cj; z&FaYW9G}w}&HKADckjjW{`wP}&OPecQsC_F8S=4lrNw|BhR1;P2MU`ilHVCnEydDJ z*B^XW6;%wKbQxZO#q{t%GjFZusN%+y-_l{9=(T1(6WoFyx9Y1`E|>9-%A%I#__Q2bX`d92ZL!#YRid50PC7rSr1U zp*I#el~o<;8IhzSi-%(M z7$Gddu}4p#cSGZyxQ*hgU;Nd&#>iN;`zw2wjM=WHV*WIsn|7V;>ROO;ji5(u=p{~L zzV}y@?hVhb{ccI0PK;W9uzTIj`vF_>BXw(|+SGwgZ~N(Y9Y^^m%1mw~=Y>ze4j zSR_I(nt4FKcqC+&gj1nk68{$@kGa+9i(TLk=We)__fIbK@Z%AekgLq{x>{jiY4cL} zW5%_x$Wv%Tg&W}1sZUj(Ak75C|I7v%nXSeEuk*wJG3JkEMusBdxl;+`cZRkQxq4{t zO04_k#r;K}&f&Bg=hKp}Z+ulUPJz3bn5>T$*V}fd`aga8U-;?&c^>QkM}BmHhve!Y zIJrcYQ@ffK|E@dpeRx1bMfPvEW6c-OMcjW1_pxpMWy5KNH}6}qIduy8^@kHwm_Vq> z%F1e%-fY1?Th=W2?+jJ_%zN4TlSGX*eFFX0fr`FHu@?P|Q}blj$RVb3f6L{o-rtqu zSy{hMw;qS_);5v_@8aJ;QG7WR-RBE#;=-aPh#I?-lCP=L;Mh#TcWp;ay4<8cv(p06tp|KURV`oFg1r?{EiOf+Ox5L^vnvb3=?wq?k-FF`uDzvK04yz(o*-?`$Kna z!&d%XcOW;Pvk)Djo6S#sd_is4~Bfvejef?x;Ii zdN$X8D*vb4xV*Yv2(G9zs1EOJL^g004S<>Qsi_MF;zf)H9E6kDtN`Cn!EVQ06kzdD zI=F+rCqmY;@8xHf96gYGdBLc)Ip1v0=bWQM8y|LhKPe9~wJwdp{*&N-ysf@z9;%G~ zcik^#)#he+YMwh6xj$jc6-*!tdu;1(+V)kzBkNzoZlZV=-iMwW57kJO_K~)o+do~@%2hsevAWKd+?4bdgybs zMcPY6rx7E%>K+{Hyh+;}R{;z7zy5H#TpAE?C1PY<1AIKa*ei_h>%8FZ!@zpT0(KTj|yeY+TmyOl%-GF?Vp&R5Z`!t$^zl3-inTkG65?ZAjSYgI@fh z6lZ%gTgiMLFrWX7cbjmVTHjFkb1`RxrRv{}y*%|}Aq5P;? z_M0CnUHbmsqKbX)&B?G_|0#M|mGkre^RhvRY1lHvfoR&Rf7g9CM{hrDy#>qr@14jW0ZFSryfF-Pa{~7RB^=!#Q=%2h_>OCfnB6ijzkNF7!5-zJBX|| zz4WaUG1g{YdANOcsWV5Gcf<{CLYzN`JlV&+K0$0Ra)3_5to=L48=R47rlWSL`eCCo zT*d(!bvTQ-85A4kljVUlwBAva(H9x^gK8g?GKJJ7qd~`SkeNtUGHE)f*k&&hgBcY%M9-vHldnJ- zVnouUz7o#D3GsLUZ?3K8g$RlXw3V7n-Oy?$LJIWyrf8{Fa6ROI=5noC@Is6DumUYo z!i};t@>f`@WSACOd51aI9GtdtE8^a?^Ju*nrQgoDB(J6aOGC87Uw5hZ=q%W*Xb{yc z)S#$C=VU1WBPBw)zE}1e^d9JyM0Kk>AbhwlUVz9~Zn_xwNsE!l^27$Hp-b@ryn60~ zKx2@aemh+LCG>Y17U+2x`y)D}AtA~BK)G2UzpX9WD3ECM6*)!g))ct*Qgu)}RPQ)P zpoieE0ji0A*X>2=!aU2b%dsx=U6jKwhBfwq7y9$5x;<9)GPgQYPA~0d?*4#yrLDNpt-!%0X(%F3KQk*RTm(XHT(IID_GpQ#2jQ zJ8IoPav69Otw|1$6cR5q*1iM_=55_`#C;yy+wYXmjyg{T7+tCZrgLz`m>~bqKgvr2 z=lz_`>IGaTC%~=Q+&soEP^sw#8T`A>)CT_D;x*UU9*{|;0^PtRtkWF)A9aUQ$XnOd zaDFhdy;qS)xuN<%v4uLtG(nnd;62#`)M^)MgiGU!5Kt8Il{vl#3wZv!E}i6x_3zWRj!6?W8GE2G78&ely@uCQEJ3nP07wSgX;XkCgfr0ENR;t4dY#gN8x>m2@F zr`TN}Ms~u_T()W_a;!)0Ic&M8+a72IT^I9P2Z^fPmnppF`e^ojGR7jQbXK=WA22BA zcAs9bG<%P#GJEj5#CoAz4f%Uvn{tUBLkape5t8*D`+5+n5+m=g345{75kCczHf|)* zY;VI%Im~pn;iqoqh@^sGF|s3#m}u>Xt(A5f5LyXX=Hm9ILLP3PEk?jgVOMc) z=6)Xf)&#Z_tzkvqs_H=3a=Y;wC%c7!rzR}w_E3YXTM@~I8%M3^aNL?ss|`%ZAk@f2 zIE|?bF07(g42a;n@g8e}L>2Y362l93p*No`vKy(1;P2@^$a8LbV_CwetIb%dW-`|j zKGoMnVpNPlJ*Sj#X=h@3`AJhZJW) zOO#!jWT2O&0kJ#$^EwQi#M_yow0`|pgpx0l`+3vvTTRMIaYE0Rz)_;OHF?zhYq!-v zXvUfqGjCui$gFMImb;A}R|EKFR$& zT<^MCX_*ybmNTLF>xqRllKe)#8Inu*8E}iJ4%vMaWuZ6@e^Z4YUvUmzFKU(jH%)sE zWMFme@nGQfDXNZ8;R@mI$ag{UQ-=3}-YI?>XBVk)$c%|N5BRc0oDqv ze~ztr5n-em6LYZo(QX1;z-^0}XB6fn+%wg)L9A>=`J_x)jMAB>{-nT)s~l{^+aH5>S2%~r$6Fz_YEt62cJ7vC?4OfnjY;j3 z1{{EP-(LIK?E5bQ-<--hK^4^NW&5d2dga2F?lbjr3rwJ@KpKNRn+vBYbA%_?o*J0_ zZ{#)%eE*w?|8MKp|G}3HnIKWofu3KIz!2(lRZ{nAD(0uQ+c#kd@Z;!D_sG&JSSc`G0Cz@d}sswL05tEHOjr37h|D|NBy<#{aCJh@b0(rG~zF zYs%(bI$cWXMv3*8%QCVV1K&tlY%kVF#nS9|c^i5}l%^jR> z5^C>R`^Z5YwLW&WyQzLL)L1XIYf_D<-LDN~uAaxRi+&Jp4ZoIt#|Jn3xzf0=&$vHk zwxNDygt;xqH^lra=H1LNy@9_t4#Jh%DI8=7Wdn2{80ZQ_K-wix@FhNFC+r`&p)6Hd zL%9oXrL(Z&bb(?{CIj26%E(5_!idw$ef%b1!SLwcqs4W+gS-f3wCE`};Pi>kYqP_5 zXl89rW~f^|L!%#GgnlI~M-t0r2O`S%T2?P^G#BReo$vGaEtdO*U>lqiyUl!{jS|`e zL%kt;vluy=l&PUBmd2B>NmfAjMwpchj&C>*WIPe5b%oY= z5ZeNwMe2No2Z8hmcX-fexAgQ|^X^+&IW=s~fZJACmd}w3!u9cf9CjUBOqPP3vOG8q z9~p;eWc3o`B2{}}F;<(mYKwy$rFt)*cEu17U3&Cxbu*+cEDW#bCWp4}A)hIR#yjHP zVl_HNeA+A2;UO`GwS8Vt#9(>gSnV>0Ll()N4~}?yk!OErxQzNgyKA|~9G{NzWBLYhDLz&*TyIAoT`Zqys0KK9=DB zY6#~kkf|lSjWi#QfH>v9oA5r zeAg{R{Xm-4fPn%HGGJ2#T4Dwx8h?^MRpSe4Pc4)N$nJ%kHBIM``>$UK@IHV4$L!9^ zfY;{Y=Z_8#d58KKzex_ys`r^HDO{5a)(9V8UJ843{YKN%vX!y%>v1se+dCi#ldyY; z&>^+-dTfeH3%Xva@CT@i$0%mxQ@qx_V&P5_wrkP|a#d!OL5*Kd!EDxLsb!(}LLEIR zjrk?IzxPj8XxZqYX3%URHp7%xtVd!+5_q5f2<3-_zOge2#VkY2p|$fNO)jpfuJ#CpZfY!STr=iZ_Twtt(Fv1-UpgH}Qf`{K+M$a$fsr4JHu)8I_DS=|2!ZoCfKAXJjxwo%0g_88I>!JjfEd|ux9mpD~Eg* zgTS5;dv-&UIX~ucPaXWb-*s~uL2-+T5|70&aHf-D4)Ld`iMePE{VQ;*bL@W-HPqHt zFfxsWogE}mCDQw-Jy3j?fRXb1kixUiyP|lw@ecohIz&A z&Zpm&c^7*zhcF$Xre@2L{C^zkR6flZ4%bNQsuIQ}IAp>LG7)l=?1eRc=OK}ZmVvI* z?a+Kcad_XVD`u@D+YMJJpDz(CrQ7EbJM1^!0kwLfCu$Y;&GB6}f`;693A|(Lwzki0Q=ra6@jz11evsIOiPf7q(-!x7R&O#} zvgnK0c_rko`DEJDkFy(BLa*48|HjiF3m;pREV3nGf!C2TCe#!QcucX9$;2{a^hKC=k~tg; z$-k}Tc2BDmfw$RIlm`)Fk&1rfZ@*Wf&KI&MGc&r0+^J%;enF>jH+h2$tx4(?%johm zly~$WRJ)*WJ=i)p7v5ux{_`+KM&r533dKT0g(g%fHi1&`*QUbXEBqoE9^m$ecyPUd zcY!?=H2AsoWs^H2Ayr1`7hGa^`PS!uBHU#d=<@>K%`OBj(!Z)qvJ@1Uav-jQSgNgO zg@#1R4#gkMK$Jp@Ked`1UZC%>5o+l`Y_|_!aJxKcd73!!Kw=)e4EK(ym@r;x&9!0s z+t40Iw83?lFU>04b~g@7w%)zukY6}s`w%xao@*9NAdarSD5~*^z&|u8bx~bia-#=>fVd!&b<6M|;wpXohs`qF2BaXac-bI}b{5A+bkNO~7O19qM8YZw*Q1UreuJ{*Zt!dx z0R*QQL#|-h)IZd1HTF(Z1iaXS8v{yZG2lQdLX1dMxQbZYAapl75CMpx7DueU6EZOv zlc8f)FkLCz(afz+{q&^hAyqx{b94Z%3QuiyXjy286@E9M^|X0NSPux?;6fu=<`6en zn3kuDWe2}PXev-(ZxR_HL8v2T?rg?9UlWcFM1&Msf(J-8V)TQEw3u-N%}b3SKi$&Y zy+`ceLeO$=LjIO|jA3Ho)#_2Pad`^(tC1qw({M)rkSp5tGViKlT>07Vpb{!_n8HPOA9y?JUj@VQgqgX2;O0d+ zuPDdL%guVo^HBjtUdbICVmi4W&+=6#AD2(Ls;*Z zXdiPAz=~O2^!1efQFOgu2UedH_KI>8ZmA0JGNY#Gd34frNG83gO)XFc+(DigaPlI* z-b}fnE7~co*v)^yt0hkA*!c2&S;57Nr56}=e?;sK^13t=p)-<=>n_VCm_!f|zBz&% zoRa|MbIUt@l!aL;qSK~g(Ev?MUDPO{4EswLRzYDGb}RV~fkjr2moVZQq=|t)fF_;2 zK+7!0E~(wn3_!7Qa3~&qM?tssL$~TLFqH;g(iHU-Bun6~;_y=e%*N}d+Rysz`!rOL z>eaA#lNUK(+6)H>TBeWF&0IxZ+=9lWKB{3jA*5He^=IxL`>;xdH3&Cgj}6F>pkFUS zgLJNox+#?GBj#>xFN2Ea#=C8>nu;JQctFFbgSxY!YGS9wb?`GS&b?SI@p^oF|FtkJ zH)c^jnWesmY3$V;pR?@pc7Wj5_Pn_%y=MOI#CQ(3g|YJDoGerc|0K7lDHI#X>W&z@ zeUen#j{d1$BgzM+yftMSpRzJOyM1G{c&6Q@mHxZVZfEt7%bTU0@La)B5dh43!>i^cRN-FgF z?0@HC$Z@g^Ue$iGo|jcA>s$AiD1Ha&sR~cI-8^TnGM9@d!l@B;eqH7#9U)gq8{8AY zFC)A1IUDuqdv58ja`&v@(eZ2aMDlU@8B(OWo1S<;oRG_gU7UD78~@Cl@_8NW$Yaku zpUjq<_E;T$SJN13aU}X4V_{tS{6NHvw$1A{!QTx0Qu&@n1@oU93J-V>l%NQ&gAeXo zY61r_Y(?7!w`el&0X@8_cX@Jc_-@f{bpnf9jg)Dyc|@sXEE)j=?k^!Uz`I-&>*QSr zgeFm+LKTy*XLbCFtVS%qkbk~5NPFIWcGum!w(U20ah`-PO_=GBajsQ`#OKo|vA8~R zV)exbg^#kDiVrv-gkuC5Qvt41p?NTkZ3*6tHzK3pLr2vQ;hcsZiyWad0AI{XTgC|Y zj*)+b6Zn3>kIGQyBS#f>m5x(ftyh9n!68;fH-1~o>%phW2SM*6L%x@M2zW6EbR=yS~+Tp_5lUs6o z2Xrtpy0zFgExf5(5D?nvuHeLE_~sq_Btb+TaSm9)P_cLBRR@(!&Y>@BQ46$tcm~Pg z6Eq_~Ob&%6BuMnHBino_NGJ?QgR`!e4_l&XpFs`kUoVGSNDAPzus)~Z-~KPw&OV;${g3;dU#CwvY73Z5Mn2{Ct?*NH?zbncU$gHN$w|eGn-Ow##YQXo1N=(u79t8uYY+w zJnZKC`MhslujdQ0l^C3dZK;+kJ(ZhsR~_~0)}S6*r^L%b^MoY8<*xmkWraR?9AYj% zN9j>ha6wZ%ru2BU&ikN|#$yj~OEmLqT*l&98FP7!wxh*mQM8RmvqjcVJ!YeCfEmc* z4M{;K2Zjjk+fH{Y^pt04y`%}u2D}*4^CcMfN7{UBRIslIGdRkT3t=L3q8M$mO z_ETRX?0nr2K3Z2sw=)%lSbgeweT`_^W;uVnOf(mPPny%OfXx@d(%O5c`&1Sbo1qgz z3l%7#-QW1Z`(nmKIAV8nL4$*p;2)yZM&Yd&d~B}vui52Y&vHI3oBG?hzHt=A^A?%% zHgHLC{Wz=r-&sO6kw|iM%^x}5NEK2SjCc*4C>4mX0_t6|s)MGW zZ>yr0uNmEUx5xx^gqaI7E^U;QqMvonf{?KS>b-SPas48$43ZePl661KDQre9TY@_) z=>*QXmm@?+fnmQ0ePWoYcXjH*?_a!2DqI`RJqYi5ybnj8c{h>YQWtAZhv!%1xEf{F zk4~&2Afv8Y;iQZ74@pp&WJ{G=+Ww6aPBIH64WS)Qwx%zYM?U1ma7)2(#5+lyr9)H!^{m9Vtcqs$#RsQBxJ@?&r?P-Qw13%N< z*|!@w%MywqZy$+T8$XS&ZRVh2(Ym25HQT7JTBU4~TaPw-M^1}iLi(r(S3XxZZIeoE z|3;&vHs81$@)T3FC*ijO|3OO&4Kx<6Z=;jmqq64^%l=@itLrO&lzVkh#8rANtDv89 z{ohSF_oq#8j68P`61ATppsylS0`gYk>&7<0P!b(7ilZ;l6d+4Dp?uw z;&%)JB}IxDM6|R>&~g(z&*1E6RJ!hI$!H2_lFW{^vvg2NtLU9`-t+k$HG=IQIg!O~ zkM|WDU%1(Jae(=Z-?`l-ddw<@+-2zHg$?0E_H(B5)<1UvjR)!d`se#>Yx((FsOI?u zz{EVOLn@!u-#tonti)Ic?c8{x0KkFSE}8czdq1R@xiH9@yCosGwe2cy7g+qn!zgr5 zRCI^xtp=xkOg!`4xnySR()wGIfB>X?nd9wm_Vw+Olsroa1?ATGjL`2-xOKQzk&a}o z?cYr>g7R-0&)9p3YCtPRP?FxLJaj16GWuemZuv40Q zj{O^#nA%&iz7O(M>E3GdsTjGLBGh>m`x3Rx`3_4bYjg076w(jS(DQZyRbPG>%{&V5|WL4-Sv=PN&VlInK1$~`rKh00s*|FrN z?i{uG%?iW%puKs%jU%g%%tRsVE*q64BgaDUfzRdO+mbO2TZMw!!teyoxq3@P8+F+>j(`( zS_fHGeoR983}ho|B*Sjm`LKLT>gFiwE{sJPmb?og*r%^IEI$$~X!*tA2py{EK@aPC zzZkhR>?KXF4mZD%XSv&}HuEBVvb3tvzC|+&YjZ&glrD~x63!Jmc1GGDa{~X#2@%{# zerd?z_B7>xiXm>0nmGC1(CexF1EJy)8+0un2oz@AmGP?c>#UAttuYLH4|7QFAx0Bo zP~z2lI@Gi!2d5cBcD>y~825v3`thM>Li!<>e2?{rk$S#6i|me#E3+{+Rggz#W7Xsu z@7KQ}Hxf9QxJmfZe4CUnfa2nsbSu+LpYL1XnJgzQ4W2i@e5LAK^U-c2?$5vWdT1W< zE7LaAWmSGnBWHAFl;;!T}0+=g(gJ5m?$^*=vo=UwP z%U#sn4j2I=8NQ3WD~NZ1^@2be>VTVoJ9X~xs3@Hl5J;=-{zLNiQJZ=6ZM}y0&x8dt zoBq_Ci-6-k$?U~9p*o<@nKID@nXlrlzCN`4M2_Mrw#oe@)emJmN&N^W89aV_pko3? z8cFwyKRJcH36ZeE*CeQS!?zDBOo&b`BP*r_%PH`mMjUK~Nc&EI&CW?03uGI3w3+^W zoe?@$oLqLnx!mK>X!_njGmUKO(OB$~D0E@U#5ddE-81Ua#A*aD0M$KAov{$P%YG;7 zN)T5%$CyOqKR7qXip_%_@5{}diyp1>`3Apy?#tPTI?T5+4+_&O%U^DhQ;EZbEr0#+ zi|tuH+Mz3%t7x$rxE1+3$G%YOsEda#8{Z=uR!=QZcfsw)F-5d|9(xn2ye;`}&fjo0BHDpjpD+bDXTXSZc_gWl|$cN47kt#odb@2JI9qe8FJ z84kli8(Fu$nN&?^4kE`|@B_DDhZVixC6h&1VY-@PyGY_aqhBdL<}0=l^*+PIMuQ@E zvzXsiv{wRa$L|g&*Dj~At>^4Es2QuARDI(b$>~SWyQdw!+I{+~n|D1yme#XE^fJnC zZxkHP&PlnCn_}#i8Hp5AT&fw_EUBrF>ak8vm zu78iZ1$@kuE`*B14SFDNQU%*KEh|F0P!0KUWwuO8U~}jzWei zmSiZ2Uk6>SMdWuFCk*G2>Hzys=BKjz&Iz_3a?b`0C`i%uEzoy&fLwRTuxk zdBG}fY<=9R7P>5H654c8c_0ED+%4q$B<)eTlCUyeSt=FxrK|*iLjDvKTt+BX>~!ZO z@>CON#$n0m-HR&>-7q_~2X%jgpzJ4MY|9~jfOy4jVeZ-5+4BYGhWFEs4Sv#28PQE zTcVC3yQ-cQ4(~5w#LaDx+aE`NmTS}sLp#k-f?E_ZdmCHbx=D6~_$w$>&}56nEZJGb zSR_&iOSK^x)eOS*&Vxgwb~si8uHL^g)~r{phw3UiIIOegjj3zGZT{_H`tZz!>G=Gt ztSlx7PJg3!n0m}Brpe3KeRd$cb}=`7HFj*SbX=b!=1VI!D%cLhYe4Y7?~9K19rh3Y zgm$SXfCz+f9@yD*A`&?}nN--9d_|5V7M9F56dNZs+g3uAf{bE;40lVTDc;miQj}v< z{$#ABlolhH^qLJW>wNIsJJBxd^UXi1%biXAJ#XCf!UetWp{)+}?yCAYS83SiIvgts z1yI$adH29T4#gwM1l_G<-ZHuYGADH9wA-44E9K9x>lap;Ej?5%Bg5Yoepc>v`*jvc z3q4Rh6hIsI-BBAg{N4BEC+2z(|F$$#WGYGSLi}h9;!`)^qfQObwrN4dO%CX>ObWt2e8? za5XImbv_F@Vu2IXW~zjo+*uan%DI(j_qY)e>+Rafj1Gz8lV*G#KlU>j;Vpb(%z)xL zo+1k&_3Iym9Am`AZER(zOgt*!+$R}?>zl$+_t`(mLpEsegV^<$#Fa_A*)Wp2{C|)E zyg*3Z+k=Uz0OQ&=zp6>BuRr*`tYAC4yL=*iS2w=LBhMk!)b(ri;|j-^?0nHnWZt2# zZ%umq@ICTArHw*z1U?lADcogRVg8Ccg2E%D<17*92@#2hoaAVMinlCAdQMWEGaaww z+uv*|?7f2CDMz5yJ)%|6f#T4#tc%MYl@xmh_0zUEfO+?=!%UKh~NjuyNdJ%FJhPVNc|Z#D1upULH4)X1|aS(W(kVfB7%N%}&MS z)>Fh|vi;at{$07f5O?g%C`mt@TAPt3i9l&$ctPbeD%X~OlXyI>oKLYIyEyOvDJePZ z+CbX;U_iQ0L3?{~dA08NBHKJ70R26df1|5197$X1bs?oMAtejab+Gs@>wwk45~4)9 zP6dAb9Bkhm^2@b0v!EeCStl&j?CCfW1-OaovfrTMPPQ2oBYr*)xP|Gr1u{%?R3j|e zVK44UU&TaOvSnq@!X6bxmEJzn=TAOPTzo!KG5Auk@9{bBEHDYXEGqEPNnJaTIkGyx z0>8WQfD@*c%GYMF%?T)gGh@tq%I$`Uh878mU#AqkXgy9yyteRGny~liIym=HU`VPj zf_3=XErYqQ(K3?Duq5xquItl+pMSASY|baH*=V^Yx)C2Y%H2eP*3^nY?r1}a@jC_< zW}z5Du+W|4dmw)6mmpx91&hDn>ApnrPPjh7{UYQ!%^#ymGoZrf=2XUfkY(7l+z>dq_Df0gttP~1ec6)!z{I^QVBX!jd75O=(Q5;uaVb#%AY z+j9evLG!hbgWm~P2I1jL{EX__pdM#gcPIdIaPS?{mS6ylczRieAR?iss?_NrAzDc> zkxyA1FByMBn@@JjdtFauPEo{0_Od3=YO{A!hHw@3D>n8E)K>y8fTFsBBKpvIlACUP{7~JSUk}G1%UJe{W^+vf=Om^ z2U+Vsbqu18zPCpg`bTbf2%b0wO~+iRz5GQIfX)e(1!snkHsfn7;_H09xYQhU&&u zEIjkaJMyC`_vlKg&8X-|VXJwG*Zag97oVmDszfWj)AV*Ke-flfHF6 zS>bCpN&aT5uUaZ+%k_O^ugc~pSLAAii0J~dZgX@zaAWI3PUU*m3r?Wja1v6}@)b0P z(Z=rkuuirPlrxQ2zRX>dE1Cqhttq)Cf>gM{ndc2h1Rpi155FeIv+47I}(o zF=Scj#SiRX;Ux0w%I>gr=kks2L|Qk*;Bh4j>yGrqwbWl4>)H9T3q#kJsv<0VqVfkr z{O^{`8ybB#_Ar^l_Mr+{b1zK_UA(hSH54231-FKVH!f74TgqC>lJ%ba`~Mnjl%V3# zIi-J!ip2GyV^)|VKuJ~w7 zq{fSjCk#3d<8@!=7NCFre;5y;LB;;Dp+_TssLa65}+ynb6i z%VyUW_mGC6x`0PfbaVG~^Y`bkUyHYH{dgyTaH5M@>vt$U!t0++n@LCB&l z^NacdLzq%$>tJ8ZerSOQ(m#yNjwP!h!?v3*An^f#9Zc#+7?1&MoLoQkA`>gopdTAF{EpbmM;IEIhec z{F$Pn=z?vj>r3VD0ekbxHj+9-p%Xo!bO9p8&We*xR1@IBh`)|B8;hG>bCjR3#EzoX z#7SygWaql>A4|BcUY3|`)c}G|``wO$HSN-_w-zhnJ8WF91_elB@HbY`@ z0uWu6PXR~CkAzh|3i^+B?RhZ=L}}Cu$;LB*P_y`TTSAl_1pS?`2S}^+&gNC zl16++6crLpLdBfC*(8=rId|)w-!!ZO?fB;hSIzb>zthU6CC(N`f8^v@j4jhY))&0} zYx7H#IY<_^4^T-+#f+6UTCR?Sy%wvuNH0JaDoF2ij2F|QVfPV&vk+MTt_k%yad*{A z=r4kcK$MhF3dPzo+avnSpO_JC%gjU)mfB5W=!bNRp75%X(7>DJwzgv~?oE6~Q6XoS zYov2Gwo>0wf>vyo05rmzE`VE5-P|`a3D2m-ysGI&p6l=6TD#R zQ~v*M3J%2H@&_t#Tfvv*>ruV8dfM~fHCjE+pGtn7)aYJ#=t}76v)LNApNv1qZ}Q{x zRB}fHt%kdzGzy5lK@RmpG^Sj6%5LK>dk-|!jaDc9d>&*2h{S6bprJAX`UF&q0Svrz zQ#u3k7y)$~k~$`g7P|q#?zMJ+@T;Qt0i+&?tbEnw6mn% zH=VB*ZriiI#;FW=L{g764||U|KI07!5YQhGiIj!Vl!&1N^$5=n;@?*S7lhv+BJ zHFFbo|AtC{Z>xh6${_NIfh%=i@paf9972drxt>vuA+b(cEYAJ%>%^E@JMI2++FtZj zqTdA@`O+xIJ$ee262#op3Wkdt`FvS1RVRW!Tq1F+*CF`U}6 zL{2@}x}Bw}Mlp6d3)9Z8Zq5BM6C_S5hEslOY-Y^%Y&udG_oyVqtHtf{1b3~%E~BS1 zH7!6C^3_CRc%MJ+Yj+;V$LN%)$@dS{k^hXvC#_QNvv&<6u7OE-J0KJM1O#<`TJc#O zzGAu42*V1k5BUYXY8+aQ+K6i-nahIDhpz`N}Di)Fxg3Ki+=W&(t?GPne;{H0ljL$4= zB$R#=tYwh)zT?&X&vt8Z8TBV%-`JsSedGrsH|FH;)bY-n4Cloblo zvNhr$JqclxcQI=bfekJ5E!XUoMKR##@O(RGd%WAWSVISX%y zGao9EfgsR;ogYw>CP06%ndT%0kML!|LVQXzWvBcm!M$W*c$S1sH|M>4Ly}8O;?oq#@BlQq^S}g_a zubKk|{2hp7OGndF14gf)>uhVWlybQ^EcSq15?zQ{X7(ayGu@daKL1`zq5VneT}tCP z$}f%|7~N=**ITq9;ZLIy5Mih-V+5Nn8!#MwpCaU_5Z2n@hs306o^~2hdxoln2HIt? z-X-lDey4p)JRci4@Yi8Ksa;aRZJc9o;YQ*Jy`#qZT*;j48$;8nxy7N$utTlL1LMA; zZy;Cc^KxdKySn-coE;kL=167$+=zSoVe`ZC`_ZMg&*~QBUGv>;wt;rM4o-RWe-WvaDo{V zV{G0OE)C3@(A0R$KejeP%}pNUtu5XW7x;lU>)!fBg{9c4uft*oQA12*@zsca@dD+( z?HFq9R54?os;t}UjlsgC$G*gn4A|PfS=CRA7koWiY2mz(+1!ZhOE;shisI~T9b+2; z@)b`P{bJVQyMH2ILMQlvR0Vdrkh)8LUXu5K7(c_=LPT=mM;D45Ue!SjWze#KmhF#k zr|u#IbQI~-h!uqbSGi`Hi(%5k5Kx8M1$Gun={WlN`4DMZW$T^Jb9%~6f| z9!1&K9ix{~0KESorsrDDu@4l0Sv@fjHRn?_d&=ged(^kplrm$@J>R@@tTS(Y%5)2; zUlP5V)DRZG+Zg*+Mq9_sm6i7+z`J(`tUkzs*i2GT3OEA+v;oOZ*&wYZLub!xoS@r{9Ki(B(&8!zA4s1ch+ zQ1%hZgc%Ik@t%@^Kvq}0f4mmNN{;#x!G?wFTehI}`B>Mg@1wg{y*f>ZFK^C_`e@tGcLwiVu$rk&0KyvQ=LrS!YOs!YggLv1I9^hd!|p(|h`<+c)Qpp92)9=!kY+x23uWs^&Dor%`cWYE?SKciOy&!H@gG2yM9G!vr; zJvApgbNcAudkbW=|A%j=6a+X2scHVnos%xzc0tT?cS%_rRat&W*jEE3cny4dL7AT7 z2=N+ndx_FLrixL3qhFiC6vW6kd&g9bVb^_tA1hqT&Zi?NU@XftJ@&7UXLGXm71HCr zmE^~K^x@Uw#3Zbsl8Y>%1c`FjKzNW{ z^6Mbo5hLyjVjC2`<~C4=Q*ZZoE@DJRR$NRsJ#qKjh2iQ0!&W_XH_4@Zt;*rFvVVp( zZ5zJQig8wqfCa3yKkuX&GSZ!Y?-D;7MS}^9@9}5M7~Ot44<#eicGKm1FJ815oB>h_ zl&8d_U`F|`b$lLk)u0OFTWY^-xkp6oxv^`vcGW~dLSoM2hUVpKY!On!%+R#y>sN)p z;zw=%R-#%3(VGpmlwX+OL&YFj717!xb8otHLm=zhJV{8!s|Q}V820s4KQc1cbuT#eS_utDr^yc)h9&e9*M$tw1f%rBlmKW#V^!3$vX<3TgWFt+!U7U7NEc%?R zI3Nchs0PzWZGa1FM9PK&?L8M3oUkZ3uOUT$sOethew0rq%S{tV(d+g z*4zWNX)7)NM0pn!PBk)z*83ObPO?MtgA$uW4hF3>e-=uR=}PHE!Uf^W6LeS2cX`^t ze{C;*@9N+f{c$fq!IU2&U*gv7}LU zRVHYiL1_HD>1z18PuIiPa{6RzoT2E&-97#cD^(YOii#5jo5l^~`DhO~T1@1*S{dHT ze)dce2sY1g;06^!zlf!>w$TAX&rIF}wLeL^#NR-y)7L(sQm3O|XKc)$|7DH!uTa#m z`pV*#9MQ{mOxcIIe61YSEb>hYs}H$dgSw)Cv&`B$R)Xu5c>w#{(tCV3r})|@?I?cS z>XMwousII^z1+GH0(DrYiI6zX7_&yRZ zpBeE(t8BCDD!mSp!Y>8z?N5AsYw_vpqw3_G>`ITIQLJxvh`o6YZth#o*xAx2Pgoz* zQsalFq{kUQD&E`i+sONf+JnFoUh6l&-U1jsI>wzrmg3H}`^!sAKrLFEF;2VQ?DMR% zoM)KrPofEyRm1(4DNOgRjfD|)O${pqv*JfvI)tIN=khFB7>kDUuR2egm|o3T22l02 zGGg!u;Op)o9RxZnPa$3zvo1};R?7_}FQEt|>V)LT(D?a*RT0c*Q0^os3^Fcot7#Zw znilR{Xw-X$GEb=l8{F{bfaDz+JKS@RdevtJSk)rKo!!D|%L7GD4&7^6mnvhM|H< zo0wlm-(S`9^Bss*vHt8ctn!|+%QiCd<{LMn$g0dLv(asGcM$fb-WCG;T7wsb&S5+R zp7swEK~Z_IxLC1^v5y!IMG83yY)vjvSwKl4sX&h^-6gPdVsuK#%Vvp9vO}4N+8n{dY zqo+i3E4u%>-~c;+_T%BEkXL`Ff3_Pb3#zJkKhf*#Z}R45Ne(l9=gbz(tGBfi5LaNy zFf}>47#p-pvewn2{yIoUl0gTDjS6vF4U`gz6{CNXTw}#N54Ty%CxgU3D0=9bUV!iL zY8?K@NvLSyb-jPi${G+jCi-rBT7Jd&;9K)wn~UFmdfSjMXOz}62lT<&2@~)?WC`9U zO0?V94$Tr^OzYDInxf`t(CTtj6ng;t+N>`HzK^iEn{8SraZI8K9sk$1^qP=4?{2EL zmr&H*9*e#&M^%3zX)w9wm&LP>N)PyAuTSldI7&IJebf`@Y&3l9EB8%{6$X7tYWn@r zJbE+04|BFEz(p)WiB)T6Y{a7!hZrI1J{Cyec0!4(92MvoT2jK#avq3j_vc4ebi_w zWQ=a52M2M@!IfYGjg~^D{|yyL1H0wF3@U!!pbF9%UGA`bbJShc;EPb=THH(D#-wOt zZY=1OB}EWVL<$VzqT^#OKm8Cm5&zWke9D2$2NBN%@e#ry-`MXhJ}mC+%_lS|wX^r- z)EYby0=C|iDXkH<4Hl;Ea8Y5P?*QUxAgW*~U6m1EF&DH23dRfilnJ42Q+tOp*WY%` z4NbD|loJ>iU(~xUPLDRbKJUiG#OS1@9La8Ih#zk7sbfDL?gY2I-D1t;r7tn_K-jQ6xYmLttxWwZGTnC&0TE%&{ z+Z6rWBz^>f#RC@fRJ+gR4k~&G!V2dL2Pa#HZnBz%BdnIX0Q(sBY((lUVxMal`S?_i zWOx;)B!xrv0=~uvsIiUTaWp)i+`XKNu6ulB3X6=q3c^i*nBT@9EZzKtBlI@p6W1pT z>-S=BJ?L-=y*YsT?EYynOuA|tqA}=IwgZK#-G0cTP?%JH@Xg!h3m#}lr#2}0E!zex z1a4h`BE2^r&qB5{u#`N78gxYF0UQg|Cvsy+UPovXgcH}kZgiZjo-(O}Vv3QaG8(%a^0f2uN#vJiyyJeM51x;N^!&ImD2>byT0`Q$8q7<4>u4p9nIqxL zSbfmzJ?3oI?)n2NRns7bB{&T!9K%38-E~J?12+y|7E{~Nd!zWeEbC;u% zEOru#bSpQ|&JFCQf#N(ruDNBLp3&FUYHzF5a{BjxsFti-wSRp2#N1Gh0_)!|(PBjh zOr`GMO?rGnWjpAK#{`J&SlDjA8PyhXKpTHIeg$QKlGfn$1dD=t-+sJuyB=!T#NtEk_s9W z-B{{k{Ioq4z^97ngYm>qtZW0A7c<_c8q75Rko7w~Z5>#o6`slnR1( zcUfDJns_Zagd0V7Grb)(zQu2-x1HJg*8ApzE7HWl_-ONAJ#kZOj())OhE^iRfR6`t zhizAY2AdXs5+#w@R0um?)ZUR2To9A7)N?Vau}IJB5dG4tfVtpTF@?(SUM~O9X_86v z(lod>J?`cuUs*RE6VE zbby|h|Gfe^M$p~;O>)4=%UYOUFwZV0Y0d|!AoCFc6>ugci_QR^MwpB@ML z{R5LTNOSDeyzeA-UEMDH#wVQIfs-1u+CPgB{7F)uSLi~mPvxg1qg~WA9;1tr0RMTT zNPc1lcn2Jj*e*B>LI}f*Dd)v8cNvxE%*!6nSH##Q3?~SJs&$X8MqLeQ65*qo8(>3 zecSC~Pq!@4b+j^Dyc9`4RFRguOPZnbwQHie;9%t!D*D|oNav}w0XlKj1Z<&SBHA3) z+BiQE^@3q3TPb47Oa=!yw;bH*bu3Sy$mwAJECKd`W6$4n`E%>0XaHZ`-(K4IOVZ?G zaX>mZ6(k(G*k$1m822$(tHC#cSa#Y!)jrtk)zn`5qP!V$f?_9hX9l0Bj~E^G0xeGR z^!pm2D5mx1g`hO-8HOA;jf@j;>v=gfNzR;mP-I7bCa+DT(@MlG_5FQm+cix?k7M_6 z;g9q1(Qgb5@%et+o!!ZwZphY)A_e#{Kxez>per*aXrD>zKzu;g@TInpojEhNXvyFy zIC>DR1?s|phxomt=Lt5QjW7QGCs%Q+0=KHv(-s_KGL&86%9IUf=QP>VN$yLAL&y`@ zrR&kKI={tLutRPAH$~n50%lW7(W4M-nIW^VDdz$bX{GsIIGL0AY0NnaO*oyI<{<)l z#*F-I_AwCaxSeE=4LUk1k19G~N68?E^7oN?b;iG}kI&VR+kh&mVr)Twf5v+&R(8Nb z-|b+$)C_ITeW-NmPFn63lfjZ_03+sk&M(mS&3DzP?8&83r#^X{ObL)rS(N5@$uSQo zQPM78rI8Ln__m@QP|9s_pU?mT`2?hG;-q^D{Xw}!TnId;ycHX9{aV8!b%TzTE>M3YUUD$LT`oV^KSmoMs(@{%J92ad7u4?DkURVBq?Unn;;v@WF~Fc>o$*1Bk&4*M%kgFQ6HXt7!^dN_?AqY7B< zd>D`yolXGBmk!A3zB~0`#+DV$fGYhY1`~w;^>yTuOkJZ3S|Z{^-u@CxUT=0}AR*av z*tn&^)yOriE^%J(!f`iMZjQ4jo8?-0i&-#7K2l*~ZoWL3P&Qx4Tq-Ufsy&aMcB83dcwr_D4h0cy96(2QFXFFfAt{EYDXdFOH~_Cq1gP1d2% z5wpvMD()bTNAlB~3W(gk9^F}(;E!2Nk?~G{yL*oo@=n;qUV6J6ul-k!#*?S-7E3;@ zt+0aUEFPe@19AMQASQ#PCjX7u)C}T!VXAxxA4u_N$@_ieQhf_*a$W~sj#p%rEW`#5 zo+$sqqn8KJkDaTlW7mfiOs+C0S$R#kKy#o@|ZGv{-#dA?(9~z`8~} zG|g|1*8$0XKj6o{I@%~SMkz#~SX#8W5Au3z#GktFEiEmsjvZdUzIsIHxK+B|-Pw4p zrDVPlmXiAwV}&yp`mhN2@xJ_#zeuQca?xgw?L+|E)t?`&XB%QJw-644c~+lVqu@qTIgz z`=n=8WxYd;a5=>a~e7%R99>0OXIG$ve5=IlBE z05E+?h~4nL81}FI4rVj_#2_Q4Sjy2(WdDpv`Xr$yGPf}U4LWr6%ZeAWAeZ)->lRVB z8Fk~L{oJ)P%`X~uyBZ|=ZF}oblO2LBH;=YI(7q_8|+b+4uFaO1_LO=9b(icXz=5WKj^Uz*5|M_Yf+ zk$Y|=M^TdzJAkUqZ(6&ZqDgdOi(R^acj`hKKtE;B`%q5LI^N!-I%J;{?6G`8(|XFB;n(`g z>b5u=Zh5!y#?2jAA~PqtAT@B4e+RIi>9tO(svMWrN!lcVbuf5I_ zG;u+PLRSpfFuw>WyWU9d&i5l3a;ITxYitHb*u!NGujnQSCsFMcRw{e7>?%H#A95LE z9_*sLh)K_WHmT6_pQEkE3!gnJX`r?kTDV*G#e$9fG!?zslE01UD(-0HbUKFmg3ZgZ zHkb~RlcMvv!_50EM5PhYVw*&u!h@*->rD59pFAhO1R2x~HCtR-tgj(oMew2>k3_wa z+s7NF9wFpYvd(26dYh9u(1oj~^6{sd{`V|1ziI8$JN~)8IOv$z9R=B7g}2c6VVZCw zD51-rUP>1Nn&f#&_S7M6#MPlXsIJAj2U$~BJ0Ld`6qbq{X)WTvu;*tooHUrhr!-k-_;Ar2i$yNIVo!1%v>rZ0URb(dsH5cUYk z=|DyiBLwZ*zHs#J>(x=Zf*FmWtq-khHG8L?3JSHohU?TBt^(za(|w{^D7xC{)$Qn{ z{bxUh{~EEqL_{xKiCtkA?6NaK!mqWMH9DUD3>Ks=(ZVmyxWl9aig6J9M3Gjf=Uu!3 z9JhS z_d)E@QYo_qq5ct2a>O2i@G!Uzr`ekPLBKA)4x`{&&-C-&F}puFje!rx62%_+9hxgHSK-2~-B2eYWG2 z+Lo;x zY!;yYR2&F|LIu=xhiI(f0~YDPa9xl4R)DjK6z;9-g_E_$2&j%Jy+NX1bi`UCAQQ&N zJ)f9z>pymz0(CoLH-FLpb&zf)^6f@R zG+St6DdC!*wsl!Q$TsZN4~etEu|@U9W9FE*%lwOs{%@Z^&l@M#8geie!`h~{OVC~D zByZCDDJ3pxFG0Bz2%-(9AP|a$P;GXBXGIIuwn9`NEk93etVenDQ;f|uzgpJt%J_mV z>~9<@kr(X*9PYs5o4WheVd2p0kRglRZzTQj8cA51us-vlI`%@V6m?`3d~ZOK|Or z1TEO^4w4!u75eTrYvk8+Zd7h_Ku8L@dFT$Z_V~QlZ*gC+#GUofRu7X!*#{0LX{DF!ArEmE1r?25g2hOOb{$ z-uG1ks^4a%6Oz++g!h@Ya>t6Xc}W;=sYX!f>uyWztQnOfZW~eQ7#pR{A+rVX8o8sM z-(H?GFs7Tj-i&m~%Lj&qyzeQlaIF2;rem>xw_7%0UTqB%l`g$D63m<2p5cqhAGHHV zrykH_E)L3%J)Kt=jG7O&JNHM8i-LXG4~;VI9c_^HnM=~S8CJ%HNi)&YOy4tCGJVhe zva4Xzur00F7dJQCsBU|(vnML&O;mgUYP7D<;^JV0*P0u*Zow?z_vZAgr<#UVb;B5k zt33_Rd^%Ue3#0kuT0V68^Gnq>l}c->3%+piI6JI7#&u(UHY3b`<;BX9QT(f!RjYj) zIA8(clkU((pUCfimw9J}JG=?}LSIlg)u*JYhBN1@%q*~#Pi=@FL=R>&n<9FgX>!@_ zkJ(kSpjquCqPJjqFJ{-ml=eu~YKuO$*AGQGTa)#U6*sBo)6&0+z0`5&+jT3P-Flng z#@9Za$;Uspm!I~GIGUdSWqH(RsA9{(H%3Jdkba#(umLNyYFKP_WoU3Ep>cf;Dek@Z zRkMMMj}jeSxWKM|`J37!!|J@?=y+?l#Jk$pKW}=N=-PGjUPO67;fiNG{(G#t-HXz> zu88*~4VPy{k;Hup&eKlh3cG%87Q;XM1UR+AoN=ynSPO!B&!&+|gS_h#j#Q99v%1-6N{LmT9lq;LECi z^(tj*k6~2Vj)(qje$w#L)cM{(wR~%jIpb%m!=lLVS85;39AMVvqjKi3>0_p84@KWc z7QXF{@k7s=hwVAL^=3HlYGYwnn(EVFb4Dl@OTJC(j@dkKooh2V;S_p1`sz#Fzs({( z)itJah39j1Q_QM&8{fM78}se=+xg)(82d1u-^=)p#{uE%H1b!=@RPC?bxZ8XdGn^H z;IIFuDEsBOyw>H7oT-k%k8xf-rOorMu|l+pi|4icOR2}){^Das&jyXX<9>6++jT}> z|LXKhlJL-_Y=f+Q18;N%1AkhLfjG^??T0!ojmj!9`Ifsb&hrv;3-DHxxzwN5*3MpN zHx5r~01J;HY^H==Jpec0=A z^kwWk&y6?tY6!_3Gg8F-yXoh?@4egKY!nbdxuH6@xQtsgJNy4o`G4ppuoRbJt7|v@ z-BfaOq+KZMG|LF8KL(!N|Ha!Yobqip;*tMuDwWMYl3RTG{`CJ8ciurwr+vG3*Mf?O z2#A7!g|dLay3)a*vWUO}(uEN6V1p1NO9=@OU=``@p+8bZN@xLv6lx-bA|ld>BoatM zkrI+9B|^x)zvrFv$2;?$IWzB>IdlF?W-^(~FZtcM@9%Y8pKAcQA9mgDjlsX~?V(O( zLC5@Duca)ys2c!P;sBadsXpIlyqnDfYKr?yRcM_zSubC;MQL#W#DM5zCFsJ0!SL;+@3!|gE~C}pU;Si0rpsns&~bFD>$~mpBKJ{C3vJ@& zED9Pim`NYlhUzr^3eW+L%JWHy>lU8u+t3t{q)s{7-!=b}vN?3>U+{Zx$Mvfx4TQS- z8x|d~WpZh|U>xITz5>*ZwOvBW-{msg$k z+ua(5-N{wjoIN*M0y%rETnso+e!@5b(MX{JwM-Fo1}?rPKqYWReypJ50nF?CPgpi^ zZCo}cxZC8*V_~Vfc5tq}b=w-5ow&v*$X zmMsNX3x?(a$H8fJp}9m~X5uxBSHjH3qR?L<-Qv1t2CzbYneA*wJ0lM^UaER!?9~2V zo_HkuXZ_Md$A*8@*%h}vYJij!2f?w37;pLNLL6ply7;kOrhAih_(NoRK4N z$|)e!JhO&UmB3S!guZiZ$8va7&C2wt{UT~XDsC6E)!EQ%Ku^hZY8w{ ztb%jK(czAnZ8!h;-_T~8*Z*gJ(f`Vv|8FpU0B}_hNIH#t zZ9;ri=*pobbt(fC9-`nJk&nq2s|cI);{aGp#&=e|1Yxq#0y-~zvZZC%c4a}J+t*K0 zNCGx-N{2}Ck?zN1=yF|gVd{zQ>K@E({EsSwjj3EblOCyl62D(mhQ|yN28WibHbc?&cE=x6;iJHcu^CYzgpIkn&}<+!4o#q zNE~~)hp}4rB&o@foW6bDWRx91XLC4DDg1tDIv_JxvJ@#m+8d}S&ugqu?KKbp z43?>B{IJK-`;+*REA%I&LC5a-Focdv8_aS0bouEcDW2M6@xM&odt#p5KX9DZ;_VWS z=pYtB#Jc-y#4r8w>gJ|{zNxtA81;#0!u1Ynsigpw6zivK$quh-@KHSvX#RtOJX(_O zb8kqQtUbSN3pIW5Opgh7BLiDB_3IVb`OjCiwQJ6YVvjC4W|La(B}y_Jp>RY8xa!j< zn8oEB-*4FFX|DQ@(w|ssD`a(yt1$i*dX2;Dl|HmmdV0SUbO8O`b{sFQVhiYlZ&wSK z6EV(~$(X3?lP=a874o>ggtC3?qnhi}aR%d7dQI4oB`XTC>lf{_5w6tlZJev8mKI}n z)4{hCQ4qs#tDzG(O)XcXkJ~T(QHYIM+-~fh1;Zd!jJJS71!l{oAb~UxSgKhW+%u)4 z8T~4z!8L2&`s`GujlzA0UfKx)9jezE9#aM%kOgWQiyDiEHT@COdqBAM!6?XL zhLl7$Uv0;*bD#c%xa87rqLL#0$psp>ZQ z5QRp;u3FhEtiwhY)Xkepl7I>L^csTR8^)thJ>?A5WCtAU(RhYJ;V!B`XP>5j1Cj0&-44of2Av!nS z8O>toO9-2TejaAe$p)6{2vl;|%C2{(xhE6~2~E$!hE;Do92HN7B`pfBc1=Ig&%zzL zdi!{(0{vD2u|{Cg-1#&&45nj=XOKS)>e5?q>SiBK`lNm)(!XwOf;{)jw%{YOLY-}2 zp?fV*DxjYTM8d}z+eAV7P8voRmw9;2QV!$AlFk^Bh!|p>09o`grm|6Spib421 zDH%KN>O6(uWavKLv7gf8bzau!dNW*~eiX{I4UPy74%WVlJ$m1jpx`Q*u$)dl=hmd+ z|1{Y;)SG$J)UNU?zT{4Sm#3p=3tnsXddbFY({}^0qLA8~PuE;85rCb9RF3pH;Ove~ z-HcXc$37!KWlB7$3W@-3cjVNn?{9C$F{i3<7BVP)f!CV^8C2!X2N6%&9hg~cub>5T z$V|QfTUaSX&0Nv_2dQ<^ zp|hPJOn3RV#VscgiHrRqw_D;3a^+x#8iOM=6uEJCq!!lpj4 z6d#l#{%H!YEYaJZfn)35mxM#KFwX2JFkdD7RKC`ermdxX$u$%I2UUNxR}%d?J1x|; zKdqjB>*%}b(@;^5(8Lk%%*nXlDn>rthES?8@(94~lJX{?Og`rP00(+Tcvl#@owuKD zak1J#qEAL(-zSzEBWt5Odcw(9NBxD*kbZJI{Ts}vIE^BVp~kqkcy(C6@xr$kzCBfm z1TKtfwaPzAAV*q^UXp;Q~q2`HMTd(>AX<- z)_yZVS%Kr(50l;Yk3EboV>vXIbGmNrKjCc!B{I(oh%Nr?qWa4Gy#a5dsyd%9bfB

r>AlsA(}9RLD$5-iUacEDF)0Jqw(iw+^op2~ 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 literal 0 HcmV?d00001 diff --git a/client2/src/assets/screenshot.jpg b/client2/src/assets/screenshot.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a1d7fb60e28093d283ef972374c5af2d046e4627 GIT binary patch literal 346088 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∈LYgs-Y*#+kGJ#5r@-a+1t*Tye)Vn}i2k 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 z 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

J~>5>Too{Cx*Pob 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%0D!%&PRSh#4 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 + +const AddMentorInProgram = ({ open, setOpen, onSave, mentors }) => { + const cancelButtonRef = useRef(null); + const methods = useForm({ + resolver: zodResolver(userIdSchema), + }); + const onSubmitHandler = useCallback((data: UserIdSchema) => { + onSave(data, setOpen); + }, []); + + return ( + +

+ +
+ + +
+
+
+ + +
+
+ + Adaugă persoană resursă în program + +
+
+ ({ + name: user.id, + label: user.ongName, + })) || [] + } + /> +
+
+
+ + +
+
+
+
+
+
+
+
+ + ); +}; + +export default AddUserInProgram; diff --git a/client2/src/components/AuthMiddleware/index.tsx b/client2/src/components/AuthMiddleware/index.tsx new file mode 100644 index 00000000..21fb6318 --- /dev/null +++ b/client2/src/components/AuthMiddleware/index.tsx @@ -0,0 +1,36 @@ +import React, { useEffect } from "react"; +import FullScreenLoader from "@/components/FullScreenLoader"; +import { userApi } from "@/redux/api/userApi"; +import { useAppSelector } from "@/redux/store"; +import Cookies from "js-cookie"; + +type IAuthMiddleware = { + children: React.ReactElement; +}; + +const AuthMiddleware: React.FC = ({ children }) => { + const token = useAppSelector((state) => state.userState.token); + const user = useAppSelector((state) => state.userState.user); + const { isLoading, isError } = userApi.endpoints.getMe.useQuery(null, { + skip: !token, + refetchOnMountOrArgChange: true, + }); + + useEffect(() => { + if (isError) { + Cookies.remove("jwt"); + } + }, [isError]); + + if ((token && !user) || isLoading) { + return ( +
+ +
+ ); + } + + return children; +}; + +export default AuthMiddleware; diff --git a/client2/src/components/Avatar/index.tsx b/client2/src/components/Avatar/index.tsx new file mode 100644 index 00000000..d6496808 --- /dev/null +++ b/client2/src/components/Avatar/index.tsx @@ -0,0 +1,37 @@ +const Avatar = ({ + src, + alt, + width, + height, + size = "8", +}: { + src: string; + alt: string; + size?: string | number; + width?: number; + height?: number; +}) => { + return src ? ( + {alt} + ) : ( +
+ + + +
+ ); +}; + +export default Avatar; diff --git a/client2/src/components/Breadcrumbs/index.tsx b/client2/src/components/Breadcrumbs/index.tsx new file mode 100644 index 00000000..b415c927 --- /dev/null +++ b/client2/src/components/Breadcrumbs/index.tsx @@ -0,0 +1,40 @@ +import { ChevronRightIcon, HomeIcon } from "@heroicons/react/20/solid"; +import { Link } from "react-router-dom"; + +export default function Example({ + pages, +}: { + pages: Array<{ name: string; href: string; current: boolean }>; +}) { + return ( + + ); +} diff --git a/client2/src/components/Button/index.tsx b/client2/src/components/Button/index.tsx new file mode 100644 index 00000000..2856d5e9 --- /dev/null +++ b/client2/src/components/Button/index.tsx @@ -0,0 +1,50 @@ +import React, { ReactNode } from "react"; +import { Link } from "react-router-dom"; + +interface IButton { + children: ReactNode; + to?: string; + openInNewTab?: boolean; + onClick?: () => void; + type?: "submit" | "button"; + color?: "teal" | "white"; + disabled?: boolean; +} + +const variation = { + teal: "whitespace-nowrap rounded bg-teal-600 py-2 px-4 font-medium text-white shadow-sm hover:bg-teal-500 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-teal-600", + white: + "whitespace-nowrap rounded bg-white py-2 px-4 font-medium text-gray-900 shadow-sm ring-1 ring-inset ring-gray-300 hover:bg-gray-50", +}; + +const Button = ({ + children, + to, + openInNewTab, + onClick, + type, + color = "teal", + disabled, +}: IButton) => { + const className = variation[color]; + const linkProps = openInNewTab + ? { target: "_blank", rel: "noopener noreferrer" } + : { onClick }; + + return to ? ( + + {children} + + ) : ( + + ); +}; + +export default Button; diff --git a/client2/src/components/Confirm/index.tsx b/client2/src/components/Confirm/index.tsx new file mode 100644 index 00000000..4bd8fa07 --- /dev/null +++ b/client2/src/components/Confirm/index.tsx @@ -0,0 +1,115 @@ +import { + Dialog, + DialogPanel, + DialogTitle, + Transition, + TransitionChild, +} from "@headlessui/react"; +import { Fragment, useRef, type ReactNode } from "react"; +export interface ConfirmProps { + header: string | ReactNode; + body: string | ReactNode; + footer?: string | ReactNode | undefined; + buttonText: string; + open: boolean; + destructive?: boolean | undefined; + setOpen: (value: boolean) => void; + handleComplete: () => void; +} +const Confirm = ({ + header, + body, + footer, + buttonText, + open, + setOpen, + handleComplete, + destructive = false, +}: ConfirmProps) => { + const cancelButtonRef = useRef(null); + + return ( + + + +
+ + +
+
+ + +
+
+ + {header} + +
+

{body}

+
+
+
+
+ {footer ? ( + footer + ) : ( + <> + + + + )} +
+
+
+
+
+
+
+ ); +}; + +export default Confirm; diff --git a/client2/src/components/CreateEvaluation/index.tsx b/client2/src/components/CreateEvaluation/index.tsx new file mode 100644 index 00000000..b1ad9a6a --- /dev/null +++ b/client2/src/components/CreateEvaluation/index.tsx @@ -0,0 +1,70 @@ +import React, { useCallback, useEffect } from "react"; +import Button from "@/components/Button"; +import { useCreateEvaluationMutation } from "@/redux/api/userApi"; +import { object, string, TypeOf } from "zod"; +import { useForm } from "react-hook-form"; +import { zodResolver } from "@hookform/resolvers/zod"; +import { toast } from "react-toastify"; +import { ErrorMessage } from "@hookform/error-message"; + +const evaluationSchema = object({ + email: string() + .min(1, "Vă rugăm introduceți adresa de email") + .email("Adresa de email este invalidă"), +}); +export type EvaluationInput = TypeOf; + +const CreateEvaluation = ({ reportId }: { reportId: string }) => { + const [createEvaluation, { isSuccess, isError }] = + useCreateEvaluationMutation(); + const { register, formState, handleSubmit, reset } = useForm( + { + resolver: zodResolver(evaluationSchema), + } + ); + const onSubmitHandler = useCallback( + ({ email }: EvaluationInput) => { + createEvaluation({ id: reportId, email }); + reset(); + }, + [createEvaluation, reset] + ); + useEffect(() => { + if (isSuccess) { + toast.success("Invitația a fost transmisă."); + } + }, [isSuccess]); + + useEffect(() => { + if (isError) { + toast.error("Ceva nu a funcționat. Încearcă din nou."); + } + }, [isError]); + + return ( +
+
+ +
+ {" "} +
+ +
+
+ + +
+
+ ); +}; + +export default CreateEvaluation; diff --git a/client2/src/components/DeleteEvaluation/index.tsx b/client2/src/components/DeleteEvaluation/index.tsx new file mode 100644 index 00000000..aa044327 --- /dev/null +++ b/client2/src/components/DeleteEvaluation/index.tsx @@ -0,0 +1,57 @@ +import Confirm from "@/components/Confirm"; +import { useDeleteEvaluationMutation } from "@/redux/api/userApi"; +import { TrashIcon } from "@heroicons/react/20/solid"; +import { useCallback, useEffect, useState } from "react"; +import { toast } from "react-toastify"; + +const DeleteEvaluation = ({ id }: { id: number }) => { + const [deleteEvaluation, { isSuccess, isError, error }] = + useDeleteEvaluationMutation(); + const [open, setOpen] = useState(false); + + const handleComplete = useCallback(() => { + deleteEvaluation({ id: id }); + }, [id]); + + useEffect(() => { + if (isSuccess) { + toast.success("Invitația a fost ștearsă."); + } + }, [isSuccess]); + + useEffect(() => { + if (!isError) { + return; + } + + if (error?.data?.error?.details?.id !== id) { + return; + } + + toast.error(error.data.error.message); + }, [isError]); + + return ( + <> + + + + ); +}; + +export default DeleteEvaluation; diff --git a/client2/src/components/EmptyScreen/index.tsx b/client2/src/components/EmptyScreen/index.tsx new file mode 100644 index 00000000..3df0493a --- /dev/null +++ b/client2/src/components/EmptyScreen/index.tsx @@ -0,0 +1,22 @@ +import empty from "@/assets/empty.svg"; +import Heading from "@/components/Heading"; +import type { ReactNode } from "react"; + +const EmptyScreen = ({ + title, + description, + button, +}: { + title: string; + description?: string; + button?: ReactNode; +}) => ( +
+ {title} + {title} + {description &&

{description}

} + {button &&
{button}
} +
+); + +export default EmptyScreen; diff --git a/client2/src/components/EvaluationFinished/index.tsx b/client2/src/components/EvaluationFinished/index.tsx new file mode 100644 index 00000000..10919b9f --- /dev/null +++ b/client2/src/components/EvaluationFinished/index.tsx @@ -0,0 +1,42 @@ +import screenshot from "@/assets/illustration.svg"; +import Button from "@/components/Button"; +import Heading from "@/components/Heading"; +import Section from "@/components/Section"; + +const EvaluationFinished = () => ( +
+
+
+ Felicitări! + + Răspunsurile tale au fost trimise cu succes! + +

+ Le vei primi în scurt timp și pe mail. Până la procesarea rezultatelor + la nivel de organizație, poți deja accesa Biblioteca noastră de + resurse, organizate în funcție de cele 10 dimensiuni ale analizei. +

+ +
+
+ {"Screenshot"} +
+
+ {/*
*/} + {/* */} + {/* Vrei sa fii la curent cu cele mai noi resurse de pe platformă?*/} + {/* */} + {/*
*/} + {/* Abonează-te la newsletter. */} + {/*
*/} + {/*
*/} + {/* */} + {/* */} + {/*
*/} + {/*
*/} +
+); + +export default EvaluationFinished; diff --git a/client2/src/components/EvaluationResults/index.jsx b/client2/src/components/EvaluationResults/index.jsx new file mode 100644 index 00000000..16bd9cd5 --- /dev/null +++ b/client2/src/components/EvaluationResults/index.jsx @@ -0,0 +1,90 @@ +import Section from "@/components/Section"; +import { useSelector } from "react-redux"; + +const rate = ["Nu există", "Limitat", "Parțial", "Clar", "Cuprinzător"]; + +const EvaluationResults = ({ evaluationData }) => { + const matrix = useSelector((state) => state.userState.matrix); + const dimensions = evaluationData.dimensions; + return ( +
+
+ {matrix.map((dimension, dimensionIndex) => ( +
+
+
+
+

+ {dimensionIndex + 1}. {dimension.name} +

+
+
+ {dimension.quiz.reduce( + (acc, quiz, quizIndex) => + acc + + dimensions[dimensionIndex].quiz[quizIndex].answer + + 1, + 0 + )}{" "} + / 25 +
+
+
+ + + {dimension.quiz.map((quiz, quizIndex) => ( + + + + + ))} + +
+ + {dimensionIndex + 1}.{quizIndex + 1}. + {" "} + {quiz.question} + + + {dimensions[dimensionIndex].quiz[quizIndex].answer + + 1}{" "} + / 5 -{" "} + { + rate[ + dimensions[dimensionIndex].quiz[quizIndex] + .answer + ] + } + {" "} + + ( + { + quiz[ + `option_${ + dimensions[dimensionIndex].quiz[quizIndex] + .answer + 1 + }` + ] + } + ) + +
+
+ {dimensions[dimensionIndex].comment && ( +
+ Argumentare: {dimensions[dimensionIndex].comment} +
+ )} +
+
+
+ ))} +
+
+ ); +}; + +export default EvaluationResults; diff --git a/client2/src/components/ExportXLSX/index.tsx b/client2/src/components/ExportXLSX/index.tsx new file mode 100644 index 00000000..5d567f3f --- /dev/null +++ b/client2/src/components/ExportXLSX/index.tsx @@ -0,0 +1,42 @@ +import Button from "@/components/Button"; +import { utils, writeFile } from "xlsx"; + +export interface Sheet { + name: string; + rows: any[]; + cols?: any[]; +} + +interface ExportProps { + label?: string; + className?: string; + fileName: string; + sheets: Sheet[]; +} + +const downloadExport = (fileName: string, sheets: Sheet[]) => { + const workbook = utils.book_new(); + + + sheets.forEach((sheet) => { + const ws = utils.json_to_sheet(sheet.rows); + + if (sheet.cols) { + ws['!cols'] = sheet.cols; + } + + utils.book_append_sheet(workbook, ws, sheet.name); + }); + + writeFile(workbook, fileName, { compression: true }); +} + +const ExportXLSX = ({ label = 'Exportă', className, fileName, sheets }: ExportProps) => { + return ( +
+ +
+ ); +} + +export default ExportXLSX; diff --git a/client2/src/components/ExternalLinkItem/index.tsx b/client2/src/components/ExternalLinkItem/index.tsx new file mode 100644 index 00000000..f76c5057 --- /dev/null +++ b/client2/src/components/ExternalLinkItem/index.tsx @@ -0,0 +1,51 @@ +import Select from "@/components/Select"; +import React, { useCallback, useMemo, useState } from "react"; +import { useFormContext } from "react-hook-form"; + +const ExternalLinkItem = ({ options, defaultValue }) => { + const optionsLabels = useMemo( + () => options.map(({ label }) => label), + [options] + ); + const [name, setName] = useState(defaultValue); + const { register } = useFormContext(); + const handleChangeLinkType = useCallback( + (ev: React.ChangeEvent) => { + const value = ev.target.value; + if (value) setName(value); + }, + [] + ); + + return ( +
+
+ +
+
+ + ); +}; + +export default ExternalLinkItem; diff --git a/client2/src/components/Feed/index.tsx b/client2/src/components/Feed/index.tsx new file mode 100644 index 00000000..d7bd03c7 --- /dev/null +++ b/client2/src/components/Feed/index.tsx @@ -0,0 +1,72 @@ +import { UserCircleIcon } from "@heroicons/react/20/solid"; + +const Feed = ({ activity }) => ( +
+
    + {activity.map((activityItem, activityItemIdx) => ( +
  • +
    + {activityItemIdx !== activity.length - 1 ? ( +
    +
  • + ))} +
+
+); + +export default Feed; diff --git a/client2/src/components/Footer/index.tsx b/client2/src/components/Footer/index.tsx new file mode 100644 index 00000000..32b0132e --- /dev/null +++ b/client2/src/components/Footer/index.tsx @@ -0,0 +1,139 @@ +import MadeBy from "@/components/MadeBy"; +import Section from "@/components/Section"; +import { Link } from "react-router-dom"; + +const Footer = () => ( + <> +
+ +
+
+ +); + +export default Footer; diff --git a/client2/src/components/Form/Password.tsx b/client2/src/components/Form/Password.tsx new file mode 100644 index 00000000..83e8fd15 --- /dev/null +++ b/client2/src/components/Form/Password.tsx @@ -0,0 +1,84 @@ +import { ErrorMessage } from "@hookform/error-message"; +import { type ReactNode, useState } from "react"; +import type { UseFormRegister } from "react-hook-form"; + +export default function PasswordInput({ + register, + name, + label, + placeholder, +}: { + register: UseFormRegister; + name: string; + label?: string | ReactNode; + placeholder?: string; +}) { + const [isPasswordVisible, setIsPasswordVisible] = useState(false); + + function togglePasswordVisibility() { + setIsPasswordVisible((prevState) => !prevState); + } + + return ( +
+ {label && ( + + )} +
+ + +
+
+ +
+
+ ); +} diff --git a/client2/src/components/Form/Textarea.tsx b/client2/src/components/Form/Textarea.tsx new file mode 100644 index 00000000..819ae24e --- /dev/null +++ b/client2/src/components/Form/Textarea.tsx @@ -0,0 +1,35 @@ +import { ErrorMessage } from "@hookform/error-message"; +import type { UseFormRegister } from "react-hook-form"; + +const Textarea = ({ + name, + label, + register, +}: { + name: string; + label: string; + register: UseFormRegister; +}) => { + return ( +
+ +
+ + +
+ +
+
+ )} + /> + +
+ ); +} diff --git a/client2/src/pages/Evaluation/ExpiredEvaluation.tsx b/client2/src/pages/Evaluation/ExpiredEvaluation.tsx new file mode 100644 index 00000000..c96695db --- /dev/null +++ b/client2/src/pages/Evaluation/ExpiredEvaluation.tsx @@ -0,0 +1,11 @@ +import React from "react"; + +const ExpiredEvaluation = ({ error }: any) => { + return ( +
+ {error.data.error.message} +
+ ); +}; + +export default ExpiredEvaluation; diff --git a/client2/src/pages/Evaluation/RadioQuestion.tsx b/client2/src/pages/Evaluation/RadioQuestion.tsx new file mode 100644 index 00000000..1f257d29 --- /dev/null +++ b/client2/src/pages/Evaluation/RadioQuestion.tsx @@ -0,0 +1,64 @@ +import { QuizQuestion } from "@/redux/api/types"; +import { ErrorMessage } from "@hookform/error-message"; +import { useFormContext } from "react-hook-form"; +import { EvaluationForm } from "."; + +interface RadioQuestionProps { + stepIndex: number; + questionIndex: number; + question: QuizQuestion; +} + +export function RadioQuestion({ + stepIndex, + question, + questionIndex, +}: RadioQuestionProps) { + const { + control, + register, + formState: { errors }, + } = useFormContext(); + + return ( +
+ +
+
+ {[0, 1, 2, 3, 4].map((index) => ( +
+ + +
+ ))} +
+ +
+
+
+
+ ); +} diff --git a/client2/src/pages/Evaluation/index.tsx b/client2/src/pages/Evaluation/index.tsx new file mode 100644 index 00000000..bb122cf3 --- /dev/null +++ b/client2/src/pages/Evaluation/index.tsx @@ -0,0 +1,347 @@ +import Button from "@/components/Button"; +import EvaluationFinished from "@/components/EvaluationFinished"; +import EvaluationResults from "@/components/EvaluationResults"; +import FullScreenLoader from "@/components/FullScreenLoader"; +import Pagination from "@/components/Pagination"; +import Section from "@/components/Section"; +import StartEvaluation from "@/components/StartEvaluation"; +import { + EvaluationDimension, + UpsertEvaluationDimensionRequest, +} from "@/redux/api/types"; +import { + useGetEvaluationQuery, + userApi, + useSubmitEvaluationMutation, +} from "@/redux/api/userApi"; +import { useAppSelector } from "@/redux/store"; +import { zodResolver } from "@hookform/resolvers/zod"; +import { useCallback, useEffect, useMemo, useRef, useState } from "react"; +import { FormProvider, useForm } from "react-hook-form"; +import { Navigate, useParams, useSearchParams } from "react-router-dom"; +import { array, enum as enum_, object, string, TypeOf } from "zod"; +import { EvaluationStep } from "./EvaluationStep"; +import ExpiredEvaluation from "./ExpiredEvaluation"; + +const invalid_type_error = "Vă rugăm alegeți o opțiune"; +const min_message = "Acest câmp este obligatoriu"; + +const answerSchema = enum_(["0", "1", "2", "3", "4"], { + required_error: invalid_type_error, + invalid_type_error: invalid_type_error, +}); + +const dimensionSchema = object({ + question_1: answerSchema, + question_2: answerSchema, + question_3: answerSchema, + question_4: answerSchema, + question_5: answerSchema, + comment: string({ + required_error: min_message, + invalid_type_error: min_message, + }) + .min(1, { message: min_message }) + .max(1000), +}); + +export type DimensionType = TypeOf; + +const evaluationSchema = object({ + dimensions: array(dimensionSchema), +}); + +const evaluationSchema_old = object({ + question_1: string({ invalid_type_error }), + question_2: string({ invalid_type_error }), + question_3: string({ invalid_type_error }), + question_4: string({ invalid_type_error }), + question_5: string({ invalid_type_error }), + comment: string().min(1, { message: min_message }).max(1000), +}); + +export type EvaluationForm = TypeOf; + +export type EvaluationInput = TypeOf & { + evaluationId: string; + dimensionIndex: string; +}; + +const mapToEvaluationDimension = ( + data: DimensionType +): UpsertEvaluationDimensionRequest => ({ + quiz: [ + { + answer: +data.question_1, + }, + { + answer: +data.question_2, + }, + { + answer: +data.question_3, + }, + { + answer: +data.question_4, + }, + { + answer: +data.question_5, + }, + ], + comment: data.comment, +}); + +const mergeEvaluations = ( + serverEvaluation: EvaluationDimension[], + localEvaluation: UpsertEvaluationDimensionRequest[] +): UpsertEvaluationDimensionRequest[] => { + const mergedList: UpsertEvaluationDimensionRequest[] = [...serverEvaluation]; // Start with original data + + localEvaluation.forEach((userItem, index) => { + if (index < mergedList.length) { + // If index exists, merge the data + mergedList[index] = { + ...mergedList[index], + ...userItem, + }; + } else { + // If index is beyond original list, append new element + mergedList.push(userItem); + } + }); + + return mergedList; +}; + +const Evaluation = () => { + const user = useAppSelector((state) => state.userState.user); + + const { evaluationId } = useParams(); + const [searchParams] = useSearchParams(); + const emailParam = searchParams.get("email"); + + const [currentStepIndex, setCurrentStepIndex] = useState(0); + const [hasStarted, setHasStarted] = useState(false); + const formRef = useRef(null); + + const methods = useForm({ + resolver: zodResolver(evaluationSchema), + shouldFocusError: true, + }); + + const { + formState: { errors }, + handleSubmit, + trigger, + setValue, + getValues, + watch, + } = methods; + + const userFilledInDimensions = watch("dimensions", []); + + const { data: matrixData, isLoading: isMatrixLoading } = + userApi.endpoints.getMatrix.useQuery(undefined, { + skip: false, + refetchOnMountOrArgChange: true, + }); + + const { + isLoading: isEvaluationLoading, + data: evaluationData, + error: evaluationError, + } = useGetEvaluationQuery({ + evaluationId: evaluationId ?? "", + email: emailParam ?? "", + }); + + const [ + submitEvaluation, + { isLoading: isSubmitLoading, isSuccess: isSubmitSuccess }, + ] = useSubmitEvaluationMutation(); + + const isFDSC = user?.role?.type === "fdsc"; + + useEffect(() => { + const userAnswers = evaluationData?.dimensions?.map((dimension) => { + const mappedQuestionAnswers = dimension.quiz.reduce( + (acc, curr, index) => { + acc[`question_${index + 1}` as keyof DimensionType] = + curr.answer.toString() as "0" | "1" | "2" | "3" | "4"; + + return acc; + }, + {} as DimensionType + ); + + return { + ...mappedQuestionAnswers, + comment: dimension.comment ?? "", + }; + }); + + setValue("dimensions", userAnswers ?? []); + }, [evaluationData, setValue]); + + function incrementStep() { + if (currentStepIndex < matrixData?.length - 1) { + setCurrentStepIndex((prev) => prev + 1); + window.scrollTo(0, 0); + } + } + + const handleNext = async () => { + // Trigger validation for the current step + const isStepValid = await trigger(`dimensions.${currentStepIndex}`); + + // If step is invalid, find the first error and scroll to it + if (!isStepValid) { + const firstErrorField = Object.keys( + errors.dimensions?.[currentStepIndex] || {} + )[0]; + + if (firstErrorField) { + const errorElement = formRef.current?.querySelector( + `[name="dimensions.${currentStepIndex}.${firstErrorField}"]` + ); + + if (errorElement) { + errorElement.scrollIntoView({ behavior: "smooth", block: "center" }); + // @ts-ignore + errorElement.focus(); + } + } + return; // Stop execution if validation fails + } + + const isFormValid = await trigger(`dimensions`); + // submit to server only if whole form is valid + if (isFormValid) { + await onSubmit(getValues()); + } else { + incrementStep(); + } + }; + + const handleBack = () => { + if (currentStepIndex > 0) { + setCurrentStepIndex((prev) => prev - 1); + } + }; + + const onSubmit = async (data: EvaluationForm) => { + const evaluation = mergeEvaluations( + evaluationData?.dimensions ?? [], + data.dimensions.map(mapToEvaluationDimension) + ); + + submitEvaluation({ + evaluationId: evaluationId ?? "", + dimensions: evaluation, + }); + + incrementStep(); + }; + + const handleClickStart = useCallback(() => { + setHasStarted(true); + window.scrollTo(0, 0); + }, []); + + const validFilledInDimensions = useMemo(() => { + const validCount = userFilledInDimensions.filter( + (dimension) => dimensionSchema.safeParse(dimension).success + ).length; + + return validCount; + }, [userFilledInDimensions]); + + if (isMatrixLoading || isEvaluationLoading) { + return ; + } + if ((evaluationError as any)?.status === 403) { + return ; + } + + if (isFDSC && evaluationData?.dimensions?.length === 10) { + return ; + } + + if ((evaluationError as any)?.status === 401) { + return ; + } + + if (!hasStarted && evaluationData?.dimensions?.length === 0) { + return ; + } + + if ( + evaluationData?.dimensions?.length && + matrixData?.length && + evaluationData?.dimensions?.length === matrixData?.length + ) { + return ; + } + + if (!matrixData) { + return ; + } + + if (methods.formState.isSubmitting) { + return ; + } + + if (isSubmitLoading) { + return ; + } + + return ( + +
+ {matrixData?.length ? ( +
+ + +
+ +
+
+
+ + +
+
+
+ ) : ( +
+

No form data available. Please try again later.

+
+ )} +
+
+ ); +}; + +export default Evaluation; diff --git a/client2/src/pages/Home/UsersTable.tsx b/client2/src/pages/Home/UsersTable.tsx new file mode 100644 index 00000000..80f3b853 --- /dev/null +++ b/client2/src/pages/Home/UsersTable.tsx @@ -0,0 +1,373 @@ +import { + ChangeEvent, + useCallback, + useEffect, + useMemo, + useRef, + useState, +} from "react"; +import { Link } from "react-router-dom"; +import { downloadExcel } from "react-export-table-to-excel"; +import Input from "@/components/Input"; +import { useGetDomainsQuery, useGetProgramsQuery, useGetUsersQuery } from "@/redux/api/userApi"; +import Button from "@/components/Button"; +import { object, string, TypeOf } from "zod"; +import citiesByCounty from "@/lib/orase-dupa-judet.json"; +import formatDate from "@/lib/formatDate"; + +const filtersSchema = object({ + search: string(), + createdAtDateFrom: string(), + createdAtDateUntil: string(), + latestEvaluationDateFrom: string(), + latestEvaluationDateUntil: string(), +}); +export type FiltersInput = TypeOf; + +const UsersTable = () => { + const counties = [...Object.keys(citiesByCounty) + .sort() + .map((county: string) => ({ + label: county, + name: county, + }))]; + + const tableRef = useRef(null); + const { data } = useGetUsersQuery(null); + const [filtered, setFilterd] = useState([]); + + const [searchTerm, setSearchTerm] = useState(""); + const [createdAtDateFrom, setCreatedAtDateFrom] = useState(""); + const [createdAtDateUntil, setCreatedAtDateUntil] = useState(""); + const [latestEvaluationDateFrom, setLatestEvaluationDateFrom] = useState(""); + const [latestEvaluationDateUntil, setLatestEvaluationDateUntil] = useState(""); + const [county, setCounty] = useState(""); + const [locality, setLocality] = useState(""); + const [domain, setDomain] = useState(-1); + const [program, setProgram] = useState(-1); + + const { data: domains } = useGetDomainsQuery(null); + const { data: programs } = useGetProgramsQuery(); + + const localities = useMemo( + () => + county + ? [ + ...citiesByCounty[county].map((city) => city.nume) + .filter((value, index, array) => array.indexOf(value) === index) + .sort() + .map((city) => ({ + name: city, + label: city, + })) + ] + : [], + [citiesByCounty, county] + ); + + + const header = [ + "NUME ONG", + "DATĂ ÎNREGISTRARE", + "PROGRAM", + "JUDEȚ", + "LOCALITATE", + "DOMENIU DE ACTIVITATE", + "ULTIMA EVALUARE", + ]; + + const body = filtered.map(({ ongName, createdAt, reports, program, county, city, domains }) => ({ + ongName, + createdAt: formatDate(createdAt), + program: program || "-", + county, + city, + domains: domains?.length ? domains.map(d => d.name).join(",") : "-", + lastEvaluationDate: reports?.length + ? formatDate(reports[reports?.length - 1].createdAt) + : "-", + })); + + const handleChangeSearch = (event: ChangeEvent) => { + setSearchTerm(event.target.value); + }; + const handleChangeCreatedAtDateFrom = (event: ChangeEvent) => { + setCreatedAtDateFrom(event.target.value); + }; + const HandleChangeCreatedAtDateUntil = (event: ChangeEvent) => { + setCreatedAtDateUntil(event.target.value); + }; + const handleChangeLatestEvaluationDateFrom = (event: ChangeEvent) => { + setLatestEvaluationDateFrom(event.target.value); + }; + const handleChangeLatestEvaluationDateUntil = (event: ChangeEvent) => { + setLatestEvaluationDateUntil(event.target.value); + }; + + const handleChangeDomain = (event: ChangeEvent) => { + setDomain(+event.target.value); + }; + const handleChangeProgram = (event: ChangeEvent) => { + setProgram(+event.target.value); + }; + const handleChangeCounty = (event: ChangeEvent) => { + setCounty(event.target.value); + }; + const handleChangeLocality = (event: ChangeEvent) => { + setLocality(event.target.value); + }; + + const handleClearFilters = () => { + setSearchTerm(""); + setCreatedAtDateFrom(""); + setCreatedAtDateUntil(""); + setLatestEvaluationDateFrom(""); + setLatestEvaluationDateUntil(""); + setDomain(-1); + setProgram(-1); + setCounty(""); + setLocality(""); + }; + const handleDownloadExcel = useCallback(() => { + downloadExcel({ + fileName: "organizații", + sheet: "Organizații", + tablePayload: { + header, + body, + }, + }); + }, [header, body]); + + useEffect(() => { + const results = data?.filter((res) => { + const registeredDate = new Date(res.createdAt).setHours(0, 0, 0, 0); + const lastEvaluationDate = res.reports?.length + ? new Date(res.reports[res.reports?.length - 1].createdAt).setHours(0, 0, 0, 0) + : null; + + return res.ongName?.toLowerCase().includes(searchTerm) && + (createdAtDateFrom ? registeredDate >= new Date(createdAtDateFrom).setHours(0, 0, 0, 0) : true) && + (createdAtDateUntil ? registeredDate <= new Date(createdAtDateUntil).setHours(0, 0, 0, 0) : true) && + + (lastEvaluationDate && latestEvaluationDateFrom ? lastEvaluationDate >= new Date(latestEvaluationDateFrom).setHours(0, 0, 0, 0) : true) && + (lastEvaluationDate && latestEvaluationDateUntil ? lastEvaluationDate <= new Date(latestEvaluationDateUntil).setHours(0, 0, 0, 0) : true) && + + (!county || res.county === county) && + (!locality || res.city === locality) && + (domain === -1 || res.domains?.some(d => d.id === domain)) && + (program === -1 || res.program?.id === program) + }); + if (results) { + setFilterd(results); + } + }, [data, searchTerm, createdAtDateFrom, createdAtDateUntil, latestEvaluationDateFrom, latestEvaluationDateUntil, county, locality, domain, program]); + + if (!data) { + return <>; + } + + return ( + <> +
+
+
+ + +
+
+
+
+ +
+ + + +
+
+
+ +
+ + + + +
+
+ {programs?.length &&
+ +
+ +
+
} + {domains?.length &&
+ +
+ +
+
} +
+ +
+ +
+
+
+ +
+ +
+
+
+
+ + + + +
+
+ + + + {header.map((th) => ( + + ))} + + + + + {body.map( + ({ ongName, createdAt, program, county, city, domains, lastEvaluationDate }, index) => ( + + + + + + + + + + + ) + )} + +
+ {th} +
+ {ongName} + + {createdAt} + + {program.name || "-"} + + {county} + + {city} + + {domains} + + {lastEvaluationDate} + + Vezi +
+ + ); +}; + +export default UsersTable; diff --git a/client2/src/pages/Home/index.tsx b/client2/src/pages/Home/index.tsx new file mode 100644 index 00000000..725cd76d --- /dev/null +++ b/client2/src/pages/Home/index.tsx @@ -0,0 +1,129 @@ +import React, { useMemo } from "react"; +import Button from "@/components/Button"; +import Section from "@/components/Section"; +import Heading from "@/components/Heading"; +import screenshot from "@/assets/illustration.svg"; +import { useAppSelector } from "@/redux/store"; +import empty from "@/assets/empty.svg"; +import TableHeadReports from "@/components/index/TableHeadReports"; +import TableRowReport from "@/components/TableRowReport"; +import EmptyScreen from "@/components/EmptyScreen"; +import { deadlineHasPassed } from "@/lib/reports"; + +const Home = () => { + const user = useAppSelector((state) => state.userState.user); + const reports = user?.reports?.map((report) => ({ + ...report, + finished: deadlineHasPassed(report.deadline) || report.finished + })); + + const hasReports = !!reports?.length; + const hasReportsInProgress = useMemo( + () => + hasReports && + reports.filter((report) => !report.finished).length > 0, + [hasReports, reports] + ); + + return ( +
+
+
+ Evaluare organizațională + +
+
+ {!hasReports && ( +
+
+
+ +
+
+

+ Matricea de dezvoltare organizațională sprijină organizațiile în + procesul de management, în gestionarea provocărilor legate de + îndeplinirea misiunii, sustenabilitate și creșterea impactului + social. Chestionarul te ajută să identifici nevoi, punctele tari + și cele de îmbunătățit ale organizației tale din 10 perspective: + Guvernanță, Aspecte financiare, Managementul informației, + Monitorizare și evaluare, Structură organizațională, Leadership, + Managementul resurselor umane, Implicarea persoanelor + beneficiare, Advocacy și parteneriate, Comunicare externă. +

+
+
+
+ )} + {user ? ( + hasReports ? ( + <> +
+
+ + + + {reports?.map((report) => { + return ( + + ); + })} + +
+
+
+ {!hasReportsInProgress && ( +
+
+
+ + Pregătit să reevaluezi organizația ? + +
+ + Începe o evaluare nouă pentru a vedea progresul! + +
+
+
+
+ +
+
+
+
+ )} + + ) : ( +
+ Începe prima evaluare + } + /> +
+ ) + ) : ( +
+ Înscrie-te acum +
+ +
+
+ )} +
+ ); +}; + +export default Home; diff --git a/client2/src/pages/Mentors/index.tsx b/client2/src/pages/Mentors/index.tsx new file mode 100644 index 00000000..2247ceb1 --- /dev/null +++ b/client2/src/pages/Mentors/index.tsx @@ -0,0 +1,69 @@ +import React from "react"; +import Heading from "@/components/Heading"; +import Section from "@/components/Section"; +import Table from "@/components/Table"; +import Button from "@/components/Button"; +import { useGetMentorsQuery } from "@/redux/api/userApi"; +import FullScreenLoader from "@/components/FullScreenLoader"; +import empty from "@/assets/empty.svg"; +import EmptyScreen from "@/components/EmptyScreen"; + +const Mentors = () => { + const { data: mentors, isLoading } = useGetMentorsQuery(); + + if (isLoading) { + return ; + } + + return ( +
+
+ Persoane resursă + {mentors?.length ? ( + [ + `${mentor.firstName} ${mentor.lastName}`, + `${mentor.dimensions?.map((dimension) => dimension.name)}`, + `${mentor.available ? "Disponibil" : "Indisponibil"}`, + `${mentor?.programs.map((program) => program.name).join(",")}`, + + `${ + mentor.mentorActivities?.length + ? new Date( + mentor.mentorActivities && + mentor.mentorActivities[ + mentor.mentorActivities?.length - 1 + ]?.createdAt + ).toLocaleString("ro-RO", { + month: "short", + day: "numeric", + year: "numeric", + }) + : "-" + }`, + ])} + button={ + + } + /> + ) : ( + Adaugă persoană resursă + } + /> + )} + + + ); +}; + +export default Mentors; diff --git a/client2/src/pages/NewReport/index.tsx b/client2/src/pages/NewReport/index.tsx new file mode 100644 index 00000000..bf3bc63a --- /dev/null +++ b/client2/src/pages/NewReport/index.tsx @@ -0,0 +1,159 @@ +import React, { useCallback, useEffect } from "react"; +import Section from "@/components/Section"; +import { useCreateReportMutation } from "@/redux/api/userApi"; +import { useNavigate } from "react-router-dom"; +import Button from "@/components/Button"; +import { useForm } from "react-hook-form"; +import { object, string, date, preprocess, array, TypeOf } from "zod"; +import { zodResolver } from "@hookform/resolvers/zod"; +import { ErrorMessage } from "@hookform/error-message"; +import { toast } from "react-toastify"; + +const emailListSchema = array( + string().email("Adresa de email este invalidă") +).nonempty(); +const validateEmails = (input: string) => { + const emails = input.trim().split(/\r?\n/); // split input by new line + const emailList = emailListSchema.safeParse(emails); + + return emailList.success; +}; + +const reportSchema = object({ + deadline: preprocess((arg) => { + if (typeof arg == "string" || arg instanceof Date) return new Date(arg); + }, date().min(new Date(), { message: "Alegeti o data in viitor" })), + evaluations: string().refine(validateEmails, { + message: + "Ne pare rău, nu am putut procesa informațiile introduse. Vă rugăm să verificați informațiile și să încercați din nou.", + }), +}); + +export type ReportInput = TypeOf; + +const ButtonGroup = ({ className }: { className?: string }) => ( +
+ + +
+); + +const NewReport = () => { + const navigate = useNavigate(); + const { register, handleSubmit, formState } = useForm({ + resolver: zodResolver(reportSchema), + }); + + const [createReport, { data, isSuccess, error }] = useCreateReportMutation(); + useEffect(() => { + if (isSuccess && data) { + navigate(`/reports/${data.id}`); + } + }, [navigate, isSuccess, data?.id]); + + useEffect(() => { + if (error?.data?.error?.message) { + toast.error(error.data.error.message); + } + }, [error?.data?.error?.message]); + + const onSubmitHandler = useCallback((form: ReportInput) => { + createReport({ + deadline: form.deadline, + evaluations: form.evaluations, + }); + }, []); + + const handleTextareaChange = (e) => { + const value = e.target.value.replace(/ /g, ""); + e.target.value = value; + }; + + const maxDate = new Date(); + maxDate.setDate(maxDate.getDate() + 30); + const max = maxDate.toISOString().substring(0, 10); + const today = new Date().toISOString().substring(0, 10); + + return ( +
+
+
+
+
Setează detalii evaluare
+
+
+
+ Setează perioada de evaluare +
+
+
+
+ Dată început +
+ +
+
+
+ Dată final +
+ +
+ +
+
+
+
+
+
+
+
Invită membrii organizației
+

+ Pentru a putea păstra confidențialitatea răspunsurilor individuale + este necesar ca și tu, ca administrator al organizației să îți + trimiți o invitație de completare a matricei de evaluare. +

+

+ Adaugă aici toate adresele de email ale colegilor pe care îi + inviți să completeze și adaugă și adresa ta de email. Această + adresă trebuie să fie diferită de adresa pe care ai completat-o ca + email al organizației la crearea contului. +

+
+
+

+ Adaugă adresele de email către care vrei să trimiți invitațiile, + inclusiv a ta, separate de tasta [Enter]. +

+
+ +
+

+ Numărul maxim de caractere: 1000 +

+
+
+ +
+
+

+ Comunicare și social media +

+
+
Link-uri către social media
+ +
Persoana de contact a organizației
+
+
+ +
+ +
+
+ +
+ +
+ +
+
+
+ +
+ +
+
+ +
+ +
+ +
+
+
+
+ + +
+
+ + +
+
+ + +
+ + ); +}; +export default CreateUser; diff --git a/client2/src/pages/admin/Program/ExportProgram.tsx b/client2/src/pages/admin/Program/ExportProgram.tsx new file mode 100644 index 00000000..6bdbb613 --- /dev/null +++ b/client2/src/pages/admin/Program/ExportProgram.tsx @@ -0,0 +1,125 @@ +import ExportXLSX, { type Sheet } from "@/components/ExportXLSX"; +import formatDate from "@/lib/formatDate"; +import { evaluationsCompletedFilter } from "@/lib/filters"; +import { calcScore, calcScoreByDimension } from "@/lib/score"; +import { useAppSelector } from "@/redux/store"; +import { userApi } from "@/redux/api/userApi"; +import FullScreenLoader from "@/components/FullScreenLoader"; +import type { Matrix } from "@/redux/api/types"; + +export interface Program { + name: string; + sponsorName: string; + createdAt: string; + updatedAt: string; + publishedAt: string; + startDate: string; + endDate: string; + users: unknown[]; + mentors: unknown[]; +} + +const getSheets = (data: Program, matrix: Matrix): Sheet[] => { + const coverRow = { + "Denumire program": data.name, + "Data de început": formatDate(data.startDate), + "Data de final": formatDate(data.endDate), + "Nume finanțator": data.sponsorName || "-", + "Număr ONG-uri înscrise în program": data.users?.length, + }; + + const sheets = [ + { + name: "Informații despre program", + rows: [coverRow], + cols: Object.keys(coverRow).map((key) => ({ width: key.length + 3 })), + }, + ]; + + data.users.forEach((user: any) => { + const ongName: string = + user.ongName.length > 23 + ? user.ongName.slice(0, 23) + "..." + : user.ongName; + + const rows = []; + + user.reports.forEach((report: any) => { + const evaluationsCompleted = evaluationsCompletedFilter( + report?.evaluations + ); + + const scoreByEvaluation = + matrix && evaluationsCompleted.length + ? calcScoreByDimension({ evaluationsCompleted, matrix, sort: false }) + : []; + + if (!scoreByEvaluation.length) { + return; + } + + const totalScore = calcScore(evaluationsCompleted); + + const row = { + // NGO + "Nume ONG": user.ongName, + "Domeniu de activitate": "–", // TODO: get from relationship + "Nume reprezentant": `${user.contactFirstName} ${user.contactLastName}`, + "Email reprezentant": user.contactEmail, + + // Report + "Dată intrare program": "-", // TODO: add created_at to up_users_program_links table + "Dată început evaluare": formatDate(report.createdAt), + "Dată final evaluare": formatDate(report.deadline), + "Număr de completări": evaluationsCompleted.length, + + // Evaluation + "ID evaluare": report.id, // TODO: CHECK + "Scor total obținut": totalScore, + }; + + scoreByEvaluation.forEach(({ name, score }, index) => { + row[`Scor ${name}`] = score; + row[`Comentariu ${name}`] = evaluationsCompleted + .map((evaluation: any) => evaluation.dimensions[index].comment) + .join("\n---\n"); + }); + + rows.push(row); + }); + + if (!rows.length) { + return; + } + + sheets.push({ + name: `Date ${ongName}`, + rows, + cols: Object.keys(rows[0]).map((key) => ({ width: key.length + 3 })), + }); + }); + + return sheets; +}; + +const ExportProgram = ({ data }: { data: Program }) => { + const matrix = useAppSelector((state) => state.userState.matrix); + const { isLoading } = userApi.endpoints.getMatrix.useQuery(null, { + skip: !!matrix, + refetchOnMountOrArgChange: true, + }); + + if (isLoading) { + return ; + } + + return ( + + ); +}; + +export default ExportProgram; diff --git a/client2/src/pages/admin/Program/index.tsx b/client2/src/pages/admin/Program/index.tsx new file mode 100644 index 00000000..31d925c1 --- /dev/null +++ b/client2/src/pages/admin/Program/index.tsx @@ -0,0 +1,203 @@ +import React, { useCallback, useEffect, useMemo, useState } from "react"; +import Heading from "@/components/Heading"; +import Section from "@/components/Section"; +import { + useFindProgramQuery, + useGetMentorsQuery, + useGetUsersQuery, + useUpdateProgramMutation, +} from "@/redux/api/userApi"; +import { NavLink, useParams } from "react-router-dom"; +import FullScreenLoader from "@/components/FullScreenLoader"; +import Table from "@/components/Table"; +import Button from "@/components/Button"; +import AddUserInProgram from "@/components/AddUserInProgram"; +import AddMentorInProgram from "@/components/AddMentorInProgram"; +import EmptyScreen from "@/components/EmptyScreen"; +import ExportProgram from "./ExportProgram"; +import formatDate from "@/lib/formatDate"; + +const Program = () => { + const { programId = "" } = useParams(); + const [openUserInProgram, setOpenUserInProgram] = useState(false); + const [openMentorInProgram, setOpenMentorInProgram] = useState(false); + + const [updateProgram, { isSuccess: isUpdateSuccess, isError }] = + useUpdateProgramMutation(); + const { isLoading, data } = useFindProgramQuery({ programId }); + const programUserIds = data?.users?.map(({ id }) => id) || []; + const programMentorIds = data?.mentors?.map(({ id }) => id) || []; + const { data: users } = useGetUsersQuery(); + const { data: mentors } = useGetMentorsQuery(); + const availableUsers = useMemo( + () => users?.filter(({ id }) => !programUserIds.includes(id)), + [users, programUserIds] + ); + const availableMentors = useMemo( + () => mentors?.filter(({ id }) => !programMentorIds.includes(id)), + [mentors, programMentorIds] + ); + + const handleOnAddUserInProgram = useCallback( + ({ user }, setModalOpen) => { + updateProgram({ + id: programId, + users: data.users?.map(({ id }) => id).concat(+user), + }); + setModalOpen(false); + }, + [data?.users] + ); + + const handleOnAddUMentorInProgram = useCallback( + ({ mentor }, setModalOpen) => { + updateProgram({ + id: programId, + mentors: data.mentors?.map(({ id }) => id).concat(+mentor), + }); + setModalOpen(false); + }, + [data?.mentors] + ); + + useEffect(() => { + if (isUpdateSuccess) { + setOpenUserInProgram(false); + } + }, [isUpdateSuccess]); + + if (!data || isLoading) return ; + + return ( + <> +
+
+
+ {data.name} +
+ + +
+
+
+
+ + ( +
+
0 && ( + <> + + + + ) + } + head={ + data.users?.length > 0 + ? [ + "Nume ONG", + "Nume reprezentant", + "Data intrare program", + "Ultima evaluare", + ] + : [] + } + body={data.users.map((user) => [ + user.ongName, + `${user.contactFirstName} ${user.contactLastName}`, + "-", + user.reports?.length + ? new Date(user.reports[user.reports.length - 1].createdAt).toLocaleString( + "ro-RO", + { + month: "short", + day: "numeric", + year: "numeric", + } + ) + : "-", + Vezi, + ])} + /> + {data?.users?.length === 0 && ( + + )} + + ) +
+
0 && ( + <> + + + + ) + } + head={ + data?.mentors?.length > 0 && [ + "Nume", + "Specializare", + "Disponibilitate", + "Ultima activitate", + "", + ] + } + body={data.mentors.map((mentor) => [ + `${mentor.firstName} ${mentor.lastName}`, + mentor.dimensions?.map((dimension) => dimension.name).join(", "), + `${mentor.available ? "Disponibil" : "Indisponibil"}`, + `${ + mentor.mentorActivities?.length + ? new Date( + mentor.mentorActivities[0]?.createdAt + )?.toLocaleString("ro-RO", { + month: "short", + day: "numeric", + year: "numeric", + }) + : "-" + }`, + Vezi, + ])} + /> + {data?.mentors?.length === 0 && ( + + )} + + + ); +}; + +export default Program; diff --git a/client2/src/pages/admin/ProgramsList/ProgramsTable.tsx b/client2/src/pages/admin/ProgramsList/ProgramsTable.tsx new file mode 100644 index 00000000..e322bb04 --- /dev/null +++ b/client2/src/pages/admin/ProgramsList/ProgramsTable.tsx @@ -0,0 +1,146 @@ +import Button from "@/components/Button"; +import Input from "@/components/Input"; +import { useGetProgramsQuery } from "@/redux/api/userApi"; +import { + type ChangeEvent, + useCallback, + useEffect, + useRef, + useState, +} from "react"; +import { downloadExcel } from "react-export-table-to-excel"; +import { Link } from "react-router-dom"; +import { object, string, TypeOf } from "zod"; + +const filtersSchema = object({ + search: string(), + startDate: string(), + endDate: string(), +}); +export type FiltersInput = TypeOf; + +const UsersTable = () => { + const tableRef = useRef(null); + const { data, isLoading: isLoadingPrograms } = useGetProgramsQuery(); + const [filtered, setFilterd] = useState([]); + const [searchTerm, setSearchTerm] = useState(""); + const [startDate, setStartDate] = useState(""); + const [endDate, setEndDate] = useState(""); + + const header = [ + "DENUMIRE", + "STATUS", + "ONG-uri În PROGRAM", + "PERSOANE RESURSĂ ÎN PROGRAM", + ]; + + const body = data?.map(({ name, mentors, users }) => ({ + name, + status: new Date() < new Date(endDate) ? "In desfasurare" : "Incheiat", + usersCount: users?.length || "-", + mentorsCount: mentors?.length || "-", + })); + const handleChangeSearch = (event: ChangeEvent) => { + setSearchTerm(event.target.value); + }; + const handleChangeStartDate = (event: ChangeEvent) => { + setStartDate(event.target.value); + }; + const handleChangeEndDate = (event: ChangeEvent) => { + setEndDate(event.target.value); + }; + const handleDownloadExcel = useCallback(() => { + downloadExcel({ + fileName: "organizații", + sheet: "Organizații", + tablePayload: { + header, + body, + }, + }); + }, [header, body]); + + useEffect(() => { + const results = data?.filter( + (res) => + res.ongName?.toLowerCase().includes(searchTerm) && + (startDate ? new Date(res.createdAt) > new Date(startDate) : true) && + (endDate && res.reports?.length > 0 + ? new Date(res.reports[res.reports?.length - 1].createdAt) > + new Date(endDate) + : true) + ); + if (results) { + setFilterd(results); + } + }, [data, searchTerm, startDate, endDate]); + + if (!data) { + return <>; + } + + return ( + <> +
+
+
+ +
+
+
+ +
+ +
+ + + {header.map((th) => ( + + ))} + + + + + {body.map(({ name, status, usersCount, mentorsCount }, index) => ( + + + + + + + + ))} + +
+ {th} +
+ {name} + + {status} + + {usersCount} + + {mentorsCount} + + Vezi +
+ + ); +}; + +export default UsersTable; diff --git a/client2/src/pages/admin/ProgramsList/index.tsx b/client2/src/pages/admin/ProgramsList/index.tsx new file mode 100644 index 00000000..9b83ec34 --- /dev/null +++ b/client2/src/pages/admin/ProgramsList/index.tsx @@ -0,0 +1,19 @@ +import React from "react"; +import Section from "@/components/Section"; +import Heading from "@/components/Heading"; +import ProgramsTable from "./ProgramsTable"; + +const ProgramsList = () => { + return ( +
+
+ Programe +
+
+ +
+
+ ); +}; + +export default ProgramsList; diff --git a/client2/src/pages/admin/Report/ReportDetails.tsx b/client2/src/pages/admin/Report/ReportDetails.tsx new file mode 100644 index 00000000..53b58443 --- /dev/null +++ b/client2/src/pages/admin/Report/ReportDetails.tsx @@ -0,0 +1,91 @@ +import React from "react"; +import { calcScore } from "@/lib/score"; + +export default ({ report, evaluationsCompleted, scoreByEvaluation }) => { + return ( + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ ID + + {report.id} +
+ Organizație + + {report.user?.ongName} +
+ Dată început + + {new Date(report.createdAt).toLocaleString("ro-RO", { + month: "short", + day: "numeric", + year: "numeric", + })} +
+ Dată final + + {new Date(report.deadline).toLocaleString("ro-RO", { + month: "short", + day: "numeric", + year: "numeric", + })} +
+ Scor obținut + + {calcScore(evaluationsCompleted) || 0}% +
+ Număr completări + + {evaluationsCompleted.length} +
+ Cel mai mare scor + + {scoreByEvaluation[0]?.score + ? `${scoreByEvaluation[0]?.name} (${ + (scoreByEvaluation && scoreByEvaluation[0]?.score) || 0 + }%)` + : "-"} +
+ Cel mai mic scor + + {scoreByEvaluation[9]?.score + ? `${scoreByEvaluation[9]?.name} (${ + (scoreByEvaluation && scoreByEvaluation[9]?.score) || 0 + }%)` + : "-"} +
+ ); +}; diff --git a/client2/src/pages/admin/Report/ReportResults.tsx b/client2/src/pages/admin/Report/ReportResults.tsx new file mode 100644 index 00000000..117043a7 --- /dev/null +++ b/client2/src/pages/admin/Report/ReportResults.tsx @@ -0,0 +1,22 @@ +import ResultsByDimension from "@/components/ResultsByDimension"; +import TableEvaluations from "@/components/TableEvaluations"; + +const ReportResults = ({ report, scoreByEvaluation }) => { + const startDate = new Date(report.createdAt).getTime(); + const endDate = new Date(report.deadline).getTime(); + + const period = Math.ceil( + Math.abs(endDate - startDate) / (1000 * 60 * 60 * 24) + ); + return ( +
+ +
+
Completări evaluare
+ +
+
+ ); +}; + +export default ReportResults; diff --git a/client2/src/pages/admin/Report/index.tsx b/client2/src/pages/admin/Report/index.tsx new file mode 100644 index 00000000..4168d3fa --- /dev/null +++ b/client2/src/pages/admin/Report/index.tsx @@ -0,0 +1,61 @@ +import React, { useMemo } from "react"; +import { useParams } from "react-router-dom"; +import { useFindReportQuery, userApi } from "@/redux/api/userApi"; +import Section from "@/components/Section"; +import Heading from "@/components/Heading"; +import ReportResults from "./ReportResults"; +import ReportDetails from "@/pages/admin/Report/ReportDetails"; +import { evaluationsCompletedFilter } from "@/lib/filters"; +import { useAppSelector } from "@/redux/store"; +import FullScreenLoader from "@/components/FullScreenLoader"; +import { calcScoreByDimension } from "@/lib/score"; + +const Report = () => { + const { reportId } = useParams(); + const { data: report } = useFindReportQuery(reportId); + const matrix = useAppSelector((state) => state.userState.matrix); + const { isLoading } = userApi.endpoints.getMatrix.useQuery(null, { + skip: !!matrix, + refetchOnMountOrArgChange: true, + }); + + const evaluationsCompleted = useMemo( + () => + report?.evaluations + ? evaluationsCompletedFilter(report?.evaluations) + : [], + [report?.evaluations] + ); + + const scoreByEvaluation = useMemo(() => { + return matrix && evaluationsCompleted.length > 0 + ? calcScoreByDimension({ evaluationsCompleted, matrix }) + : []; + }, [evaluationsCompleted, matrix]); + + if (!report || isLoading) { + return ; + } + + return ( + <> +
+
+ Evaluare #{reportId} +
+
+
+ +
+
+ +
+ + ); +}; + +export default Report; diff --git a/client2/src/pages/authenticated/EditProfile/index.tsx b/client2/src/pages/authenticated/EditProfile/index.tsx new file mode 100644 index 00000000..ddd4457e --- /dev/null +++ b/client2/src/pages/authenticated/EditProfile/index.tsx @@ -0,0 +1,489 @@ +import { useEffect, useMemo } from "react"; +import { custom, literal, number, object, string, TypeOf } from "zod"; +import { type SubmitHandler, useForm, FormProvider } from "react-hook-form"; +import { zodResolver } from "@hookform/resolvers/zod"; +import Heading from "@/components/Heading"; +import Section from "@/components/Section"; +import Button from "@/components/Button"; +import { useAppDispatch, useAppSelector } from "@/redux/store"; +import { toast } from "react-toastify"; +import { + useGetDomainsQuery, + useUpdateUserMutation, + useUploadMutation, +} from "@/redux/api/userApi"; +import { useNavigate } from "react-router-dom"; +import MultiSelect from "@/components/MultiSelect"; +import { ErrorMessage } from "@hookform/error-message"; +import Select from "@/components/Select"; +import citiesByCounty from "@/lib/orase-dupa-judet.json"; +import SocialNetworkLinks from "@/components/SocialNetworkLinks"; +import Avatar from "@/components/Avatar"; + +const ongProfileSchema = object({ + id: number(), + ongName: string().min(1, "Numele organizatiei este obligatoriu"), + ongIdentificationNumber: string().min( + 1, + "Numarul de identifiare este obligatoriu" + ), + county: string().min(1, "Judetul este obligatoriu"), + city: string().min(1, "Orasul este obligatoriu"), + email: string() + .min(1, "Adresa de email este obligatorie") + .email("Adresa de email este invalidă"), + phone: string().min(1, "Telefonul este obligatoriu"), + avatar: custom(), + domains: number().array().optional(), + website: string(), + keywords: string(), + description: string(), + contactFirstName: string(), + contactLastName: string(), + contactEmail: string() + .email("Adresa de email este invalida") + .optional() + .or(literal("")), + contactPhone: string(), + accountFacebook: string().optional(), + accountTwitter: string().optional(), + accountTiktok: string().optional(), + accountInstagram: string().optional(), + accountLinkedin: string().optional(), +}); + +export type OngProfileInput = TypeOf; + +const OngEditProfile = () => { + const user = useAppSelector((state) => state.userState.user); + + const ongDomains = useMemo(() => { + return user?.domains + ? user?.domains?.map((d) => ({ id: d.id, name: d.name, label: d.name })) + : []; + }, [user]); + + const [updateOngProfile, { isSuccess, isError, error, data }] = + useUpdateUserMutation(); + + const [ + uploadAvatar, + { isError: isUploadAvatarError, error: uploadAvatarError }, + ] = useUploadMutation(); + const { data: domains } = useGetDomainsQuery(null); + + const methods = useForm({ + resolver: zodResolver(ongProfileSchema), + defaultValues: { + ...user, + domains: user?.domains?.map((d) => d.id), + accountFacebook: user?.accountFacebook || "", + accountTwitter: user?.accountTwitter || "", + accountTiktok: user?.accountTiktok || "", + accountInstagram: user?.accountInstagram || "", + accountLinkedin: user?.accountLinkedin || "", + }, + }); + + const avatar = methods.watch("avatar"); + const county = methods.watch("county"); + + const hasAvatar = !!avatar; + + const dispatch = useAppDispatch(); + const navigate = useNavigate(); + + useEffect(() => { + if (error?.data?.error?.message) { + toast.error(error.data.error.message); + } + }, [error?.data?.error?.message]); + + useEffect(() => { + if (isSuccess) { + navigate("/profile"); + } + }, [isSuccess, dispatch]); + + const onSubmitHandler: SubmitHandler = async (data) => { + updateOngProfile({ + ...data, + }); + + if (data.avatar?.length && data.avatar[0].name) { + const formData = new FormData(); + formData.append(`files`, data.avatar[0], data.avatar[0].name); + formData.append(`ref`, "plugin::users-permissions.user"); + formData.append(`refId`, user!.id!.toString()); + formData.append(`field`, "avatar"); + uploadAvatar(formData); + } + }; + const onError: any = (data) => { + console.log(data); + }; + + const counties = Object.keys(citiesByCounty) + .sort() + .map((county: string) => ({ + label: county, + name: county, + })); + + const cities = useMemo( + () => + county + ? [...new Set(citiesByCounty[county].map((city) => city.nume))] + .sort() + .map((city) => ({ + name: city, + label: city, + })) + : [], + [citiesByCounty, county] + ); + + return ( +
+
+
+ Editeaza profilul +
+
+
+ +
+
+
+
+

+ Informații obligatorii despre ONG +

+
+
+
+ +
+ +
+ +
+
+
+ +
+ +
+ +
+ +
+
+
+ +
+ +
+ +
+ +
+
+
+
+ +
+
+ +
+ +
+ +
+
+
+ +
+ +
+ +
+ +
+
+
+
+
+ +
+
+

+ Informații adiționale despre ONG (opționale) +

+
+
+ {domains?.length > 0 && ( +
+ +
+ +
+
+ )} + +
+ +
+ +
+
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+

+ Numărul maxim de caractere: 1000 +

+
+
+
+
+
+

+ Comunicare și social media +

+
+
Link-uri către social media
+ +
Persoana de contact a organizației
+
+
+ +
+ +
+
+ +
+ +
+ +
+
+
+ +
+ +
+
+ +
+ +
+ +
+
+
+
+
+ +
+
+ + +
+
+
+
+
+
+ ); +}; +export default OngEditProfile; diff --git a/client2/src/pages/authenticated/Matrix/index.tsx b/client2/src/pages/authenticated/Matrix/index.tsx new file mode 100644 index 00000000..cc763a44 --- /dev/null +++ b/client2/src/pages/authenticated/Matrix/index.tsx @@ -0,0 +1,5 @@ +import Matrix from "@/components/Matrix"; + +const Home = () => ; + +export default Home; diff --git a/client2/src/pages/authenticated/Mentor/index.tsx b/client2/src/pages/authenticated/Mentor/index.tsx new file mode 100644 index 00000000..abb0e370 --- /dev/null +++ b/client2/src/pages/authenticated/Mentor/index.tsx @@ -0,0 +1,30 @@ +import React from "react"; +import { useParams } from "react-router-dom"; +import { useGetUserReportsQuery } from "@/redux/api/userApi"; +import Section from "@/components/Section"; +import Heading from "@/components/Heading"; +import FullScreenLoader from "@/components/FullScreenLoader"; + +const UserReports = () => { + const { userId } = useParams(); + const { data: user, isLoading } = useGetUserReportsQuery({ userId }); + if (isLoading) { + return ; + } + + return ( + <> +
+ + {user?.firstName} {user?.lastName} + +
{user.bio}
+
+ {user.dimensions?.map((dimension) => dimension.name).join("; ")} +
+
+ + ); +}; + +export default UserReports; diff --git a/client2/src/pages/authenticated/MentorsList/MentorCard.tsx b/client2/src/pages/authenticated/MentorsList/MentorCard.tsx new file mode 100644 index 00000000..e61326b2 --- /dev/null +++ b/client2/src/pages/authenticated/MentorsList/MentorCard.tsx @@ -0,0 +1,129 @@ +import Avatar from "@/components/Avatar"; +import Button from "@/components/Button"; +import Confirm from "@/components/Confirm"; +import type { Dimension } from "@/redux/api/types"; +import { useCreateMentorshipRequestMutation } from "@/redux/api/userApi"; +import { selectHasFinishedReports } from "@/redux/features/userSlice"; +import { useAppSelector } from "@/redux/store"; +import { + EnvelopeIcon, + SignalSlashIcon, + UserIcon, +} from "@heroicons/react/20/solid"; +import { useEffect, useState } from "react"; +import { toast } from "react-toastify"; + +const MentorCard = ({ + id, + userId, + firstName, + lastName, + dimensions, + available, + avatarUrl, +}: { + id: string; + userId: string; + firstName: string; + lastName: string; + dimensions: Dimension[]; + available: boolean; + avatarUrl?: string; +}) => { + const [openConfirm, setOpenConfirm] = useState(false); + const [createMentorshipRequest, { isSuccess, isError }] = + useCreateMentorshipRequestMutation(); + const hasFinishedReports = useAppSelector(selectHasFinishedReports); + const handleClickEmail = () => { + setOpenConfirm(true); + }; + + useEffect(() => { + if (isSuccess) { + toast.success("Trimis cu succes"); + } + }, [isSuccess]); + + useEffect(() => { + if (isError) { + toast.error("Această acțiune nu a putut fi realizată"); + } + }, [isError]); + + return ( +
  • + + + + + } + /> +
    + + +

    + {firstName} {lastName} +

    +

    + {dimensions?.map((dimension) => dimension?.name).join("; ")} +

    +
    +
      + + {available ? ( + + ) : ( + + )} +
    +
  • + ); +}; + +export default MentorCard; diff --git a/client2/src/pages/authenticated/MentorsList/index.tsx b/client2/src/pages/authenticated/MentorsList/index.tsx new file mode 100644 index 00000000..017755d9 --- /dev/null +++ b/client2/src/pages/authenticated/MentorsList/index.tsx @@ -0,0 +1,49 @@ +import EmptyScreen from "@/components/EmptyScreen"; +import FullScreenLoader from "@/components/FullScreenLoader"; +import Heading from "@/components/Heading"; +import Section from "@/components/Section"; +import MentorCard from "@/pages/authenticated/MentorsList/MentorCard"; +import { useGetMentorsQuery } from "@/redux/api/userApi"; +import { useAppSelector } from "@/redux/store"; + +const Mentors = () => { + const user = useAppSelector((state) => state.userState.user); + const { data: mentors, isLoading } = useGetMentorsQuery(); + + if (isLoading) { + return ; + } + + return ( +
    +
    + Persoane resursă + {mentors?.length ? ( +
      + {mentors?.map((mentor) => ( + + ))} +
    + ) : ( +
    + +
    + )} +
    +
    + ); +}; + +export default Mentors; diff --git a/client2/src/pages/authenticated/Report/ReportInProgress.tsx b/client2/src/pages/authenticated/Report/ReportInProgress.tsx new file mode 100644 index 00000000..32ada5e1 --- /dev/null +++ b/client2/src/pages/authenticated/Report/ReportInProgress.tsx @@ -0,0 +1,213 @@ +import React, { useCallback, useEffect, useMemo, useState } from "react"; +import Button from "@/components/Button"; +import { DonutChart } from "react-circle-chart"; +import CreateEvaluation from "@/components/CreateEvaluation"; +import TableEvaluations from "@/components/TableEvaluations"; +import Confirm from "@/components/Confirm"; +import { useUpdateReportMutation } from "@/redux/api/userApi"; +import { ErrorMessage } from "@hookform/error-message"; +import { object, string, date, preprocess, array, TypeOf } from "zod"; +import { zodResolver } from "@hookform/resolvers/zod"; +import { useForm } from "react-hook-form"; + +const CallToAction = ({ reportId }: { reportId: number }) => { + const [updateReport] = useUpdateReportMutation(); + const [open, setOpen] = useState(false); + + const handleComplete = useCallback(() => { + updateReport({ + id: reportId, + finished: true, + deadline: new Date().toISOString().split("T")[0], + }); + }, [reportId]); + + return ( + <> + + + + ); +}; + +const ReportInProgress = ({ report }) => { + const reportId = report.id; + const evaluationsCompleted = useMemo( + () => + report?.evaluations?.filter(({ dimensions }) => dimensions.length === 10), + [report?.evaluations] + ); + const canFinish = evaluationsCompleted.length > 0; + const [editDeadline, setEditDeadline] = useState(false); + + const [updateReport, { isSuccess }] = useUpdateReportMutation(); + useEffect(() => { + if (isSuccess) { + setEditDeadline(false); + } + }, [isSuccess]); + + const reportSchema = object({ + deadline: preprocess((arg) => { + if (typeof arg == "string" || arg instanceof Date) return new Date(arg); + }, date().min(new Date(), { message: "Alegeti o data in viitor" })), + }); + + type ReportInput = TypeOf; + + const { register, handleSubmit, formState } = useForm({ + resolver: zodResolver(reportSchema), + }); + + const today = new Date().toISOString().split("T")[0]; + + const onSubmitHandler = useCallback((form: ReportInput) => { + updateReport({ + id: reportId, + deadline: form.deadline, + }); + }, []); + + return ( +
    +
    +
    +
    Detalii evaluare
    + {canFinish && ( +
    + +
    + )} +
    +
    +
    + +
    +
    +
    +
    Formulare completate
    +
    +
    +
    +
    Formulare necompletate
    +
    +
    +
    +
    +
    + Perioada de evaluare +
    +
    +
    +
    + Data de început: +
    +
    + {new Date(report.createdAt).toLocaleDateString("ro-RO", { + month: "short", + day: "numeric", + year: "numeric", + })} +
    +
    + + {!editDeadline ? ( +
    +
    + Data de final: +
    + +
    +
    + {new Date(report.deadline).toLocaleDateString("ro-RO", { + month: "short", + day: "numeric", + year: "numeric", + })} +
    + +
    +
    + ) : ( +
    +
    +
    + Data de final: +
    + +
    + +
    +
    + +
    + + +
    +
    + )} +
    +
    +
    +
    +
    +
    + +
    + +
    + {canFinish && ( +
    + +
    + )} +
    + ); +}; + +export default ReportInProgress; diff --git a/client2/src/pages/authenticated/Report/ReportResults.tsx b/client2/src/pages/authenticated/Report/ReportResults.tsx new file mode 100644 index 00000000..aa8f0d3b --- /dev/null +++ b/client2/src/pages/authenticated/Report/ReportResults.tsx @@ -0,0 +1,43 @@ +import React from "react"; +import Stats from "@/components/Stats"; +import { calcScore } from "@/lib/score"; +import ResultsByDimension from "@/components/ResultsByDimension"; +import TableEvaluations from "@/components/TableEvaluations"; +import LibraryBanner from "@/components/LibraryBanner"; + +const ReportResults = ({ report, evaluationsCompleted, scoreByEvaluation }) => { + const startDate = new Date(report.createdAt).getTime(); + const endDate = new Date(report.deadline).getTime(); + + const period = Math.ceil( + Math.abs(endDate - startDate) / (1000 * 60 * 60 * 24) + ); + return ( +
    + + + +
    +
    Invitații trimise
    + +
    +
    + ); +}; + +export default ReportResults; diff --git a/client2/src/pages/authenticated/Report/index.tsx b/client2/src/pages/authenticated/Report/index.tsx new file mode 100644 index 00000000..b34aede9 --- /dev/null +++ b/client2/src/pages/authenticated/Report/index.tsx @@ -0,0 +1,69 @@ +import React, { useMemo } from "react"; +import { useParams } from "react-router-dom"; +import { useFindReportQuery, userApi } from "@/redux/api/userApi"; +import Section from "@/components/Section"; +import Heading from "@/components/Heading"; +import ReportResults from "./ReportResults"; +import ReportInProgress from "@/pages/authenticated/Report/ReportInProgress"; +import { useAppSelector } from "@/redux/store"; +import { evaluationsCompletedFilter } from "@/lib/filters"; +import { calcScoreByDimension } from "@/lib/score"; +import FullScreenLoader from "@/components/FullScreenLoader"; + +const Report = () => { + const { reportId } = useParams(); + const { data: report } = useFindReportQuery(reportId); + const matrix = useAppSelector((state) => state.userState.matrix); + const { isLoading } = userApi.endpoints.getMatrix.useQuery(null, { + skip: !!matrix, + refetchOnMountOrArgChange: true, + }); + + const evaluationsCompleted = useMemo( + () => + report?.evaluations + ? evaluationsCompletedFilter(report?.evaluations) + : [], + [report?.evaluations] + ); + + const scoreByEvaluation = useMemo(() => { + return matrix && evaluationsCompleted.length > 0 + ? calcScoreByDimension({ evaluationsCompleted, matrix }) + : []; + }, [evaluationsCompleted, matrix]); + + if (!report || isLoading) { + return ; + } + + return ( +
    +
    + + {report.finished + ? `Evaluare ${new Date(report.createdAt).toLocaleDateString( + "ro-RO", + { + year: "numeric", + month: "long", + day: "numeric", + } + )}` + : "Evaluare curentă"} + +
    + {report.finished ? ( + + ) : ( + + )} +
    + ); +}; + +export default Report; diff --git a/client2/src/pages/mentor/Activities/index.tsx b/client2/src/pages/mentor/Activities/index.tsx new file mode 100644 index 00000000..18ed129b --- /dev/null +++ b/client2/src/pages/mentor/Activities/index.tsx @@ -0,0 +1,42 @@ +import React from "react"; +import { useAppSelector } from "@/redux/store"; +import Heading from "@/components/Heading"; +import Section from "@/components/Section"; +import Feed from "@/components/Feed"; +import EmptyScreen from "@/components/EmptyScreen"; +import Button from "@/components/Button"; + +const Activities = () => { + const user = useAppSelector((state) => state.userState.user); + const { mentorActivities } = user; + + return ( +
    +
    + Jurnal de activitate +
    +
    +
    +
    Jurnal de activitate
    +
    + +
    +
    +
    +
    + {mentorActivities ? ( + + ) : ( + Începe prima activitate + } + /> + )} +
    +
    + ); +}; + +export default Activities; diff --git a/client2/src/pages/mentor/EditProfile/index.tsx b/client2/src/pages/mentor/EditProfile/index.tsx new file mode 100644 index 00000000..4a946afa --- /dev/null +++ b/client2/src/pages/mentor/EditProfile/index.tsx @@ -0,0 +1,343 @@ +import React, { useEffect } from "react"; +import { array, boolean, custom, number, object, string, TypeOf } from "zod"; +import { SubmitHandler, useForm, FormProvider } from "react-hook-form"; +import { zodResolver } from "@hookform/resolvers/zod"; +import Heading from "@/components/Heading"; +import Section from "@/components/Section"; +import Button from "@/components/Button"; +import { useAppDispatch, useAppSelector } from "@/redux/store"; +import { toast } from "react-toastify"; +import { + useGetDimensionsQuery, + useGetProgramsQuery, + useUpdateUserMutation, + useUploadMutation, +} from "@/redux/api/userApi"; +import { useNavigate } from "react-router-dom"; +import MultiSelect from "@/components/MultiSelect"; +import { ErrorMessage } from "@hookform/error-message"; +import Toggle from "@/components/Toggle"; +import Select from "@/components/Select"; +import Avatar from "@/components/Avatar"; + +const mentorProfileSchema = object({ + firstName: string().min(1, "Nume este obligatoriu"), + lastName: string().min(1, "Prenume este obligatoriu"), + email: string() + .min(1, "Adresa de email este obligatorie") + .email("Adresa de email este invalidă"), + bio: string().min(1, "Adaugati o scurta descriere"), + expertise: string().nullish(), + dimensions: array(number()).min(1, "Selectează cel puțin o specializare"), + program: string(), + available: boolean(), + avatar: custom(), +}); + +export type MentorProfileInput = TypeOf; + +const EditProfile = () => { + const user = useAppSelector((state) => state.userState.user); + const [updateMentorProfile, { isSuccess, isError, error, data }] = + useUpdateUserMutation(); + const { data: programs, isLoading: isLoadingPrograms } = + useGetProgramsQuery(null); + const { data: dimensions, isLoading: isLoadingDimensions } = + useGetDimensionsQuery(null); + + const [ + uploadAvatar, + { isError: isUploadAvatarError, error: uploadAvatarError }, + ] = useUploadMutation(); + + const methods = useForm({ + resolver: zodResolver(mentorProfileSchema), + defaultValues: { + ...user, + available: user.available || false, + program: user.program.id.toString(), + dimensions: user.dimensions.map(({ id }) => id), + bio: user?.bio || "", + }, + }); + + const avatar = methods.watch("avatar"); + const hasAvatar = !!avatar; + + const dispatch = useAppDispatch(); + const navigate = useNavigate(); + + useEffect(() => { + if (error?.data?.error?.message) { + toast.error(error.data.error.message); + } + }, [error?.data?.error?.message]); + + useEffect(() => { + if (isSuccess) { + navigate("/profile"); + } + }, [isSuccess, dispatch]); + + useEffect(() => { + const message = uploadAvatarError?.data?.error?.message; + if (isUploadAvatarError && message) { + toast.error(message); + } + }, [isUploadAvatarError, uploadAvatarError?.data?.error?.message]); + + const onSubmitHandler: SubmitHandler = async (data) => { + updateMentorProfile({ + id: user?.id, + ...data, + }); + + if (data.avatar?.length && data.avatar[0]?.name) { + const formData = new FormData(); + + formData.append(`files`, data.avatar[0], data.avatar[0].name); + formData.append(`ref`, "plugin::users-permissions.user"); + formData.append(`refId`, user?.id?.toString() || ""); + formData.append(`field`, "avatar"); + uploadAvatar(formData); + } + }; + + return ( +
    +
    +
    + Editeaza profilul +
    +
    +
    + +
    +
    +
    +
    +

    + Informații generale +

    +
    +
    +
    + +
    + +
    + +
    +
    +
    + +
    + +
    + +
    + +
    +
    +
    + +
    + +
    + +
    + +
    +
    +
    + +
    + ({ + id: id, + name: name, + }))} + options={ + dimensions + ? dimensions?.map((dimension) => ({ + id: dimension.id, + name: dimension.name, + })) + : [] + } + label={"Specializare pe dimensiuni"} + isMandatory={true} + {...methods.register("dimensions")} + /> +
    + +
    +
    +
    + +
    +
    + +
    +

    + Numărul maxim de caractere: 1000 +

    +
    +
    +
    +
    +
    +

    + Comunicare și social media +

    +
    +
    Link-uri către social media
    + +
    Persoana de contact a organizației
    +
    +
    + +
    + +
    +
    + +
    + +
    + +
    +
    +
    + +
    + +
    +
    + +
    + +
    + +
    +
    +
    +
    +
    + +
    +
    + + +
    +
    + + +
    +
    + ); +}; +export default Register; diff --git a/client2/src/pages/public/ResetPassword/index.tsx b/client2/src/pages/public/ResetPassword/index.tsx new file mode 100644 index 00000000..939252bd --- /dev/null +++ b/client2/src/pages/public/ResetPassword/index.tsx @@ -0,0 +1,126 @@ +import React, { useCallback, useEffect } from "react"; +import screenshot from "@/assets/illustration.svg"; +import Button from "@/components/Button"; +import { useForm } from "react-hook-form"; +import { object, string, TypeOf } from "zod"; +import { zodResolver } from "@hookform/resolvers/zod"; +import { ErrorMessage } from "@hookform/error-message"; +import Section from "@/components/Section"; +import { useResetPasswordMutation } from "@/redux/api/authApi"; +import { useSearchParams } from "react-router-dom"; +import { useNavigate } from "react-router-dom"; +import { toast } from "react-toastify"; + +const resetPasswordSchema = object({ + password: string() + .min(1, "Parola este obligatorie") + .min(8, "Parola trebuie sa contina cel putin 8 caractere") + .max(32, "Parola trebuie sa contina cel mult 32 caractere"), + passwordConfirmation: string(), +}).refine((data) => data.password === data.passwordConfirmation, { + message: "Parola nu coincide", + path: ["passwordConfirmation"], +}); +export type ResetPasswordInput = TypeOf & { + code: string; +}; + +const ResetPassword = () => { + const [sendResetPasswordRequest, { isSuccess, isError }] = + useResetPasswordMutation(); + const { register, handleSubmit, reset, formState } = + useForm({ + resolver: zodResolver(resetPasswordSchema), + }); + const navigate = useNavigate(); + + const [searchParams] = useSearchParams(); + const code = searchParams.get("code"); + + const onSubmitHandler = useCallback( + ({ password, passwordConfirmation }: ResetPasswordInput) => { + if (code) { + sendResetPasswordRequest({ password, passwordConfirmation, code }); + reset(); + } + }, + [sendResetPasswordRequest, reset] + ); + + useEffect(() => { + if (isSuccess) { + toast.success("Parola a fost schimbata cu succes"); + navigate("/login"); + } + }, [isSuccess, navigate]); + + useEffect(() => { + if (isError) { + toast.error("A aparut o problema"); + } + }, [isError]); + + useEffect(() => { + if (!code) { + navigate("/"); + } + }, [code, navigate]); + + return ( +
    +
    +
    +

    + Resetare parola +

    +
    + +
    + +
    + +
    +
    + +
    + +
    + +
    + +
    +
    +
    +
    + +
    +
    + +
    +
    +
    + ); +}; +export default ResetPassword; diff --git a/client2/src/pages/public/SetPassword/index.tsx b/client2/src/pages/public/SetPassword/index.tsx new file mode 100644 index 00000000..bc77bd70 --- /dev/null +++ b/client2/src/pages/public/SetPassword/index.tsx @@ -0,0 +1,146 @@ +import React, { useCallback, useEffect } from "react"; +import screenshot from "@/assets/illustration.svg"; +import Button from "@/components/Button"; +import { useForm } from "react-hook-form"; +import { object, string, TypeOf } from "zod"; +import { zodResolver } from "@hookform/resolvers/zod"; +import { ErrorMessage } from "@hookform/error-message"; +import Section from "@/components/Section"; +import { useLoginUserMutation } from "@/redux/api/authApi"; +import { useSearchParams } from "react-router-dom"; +import { useNavigate } from "react-router-dom"; +import { toast } from "react-toastify"; +import { + useGetRegistrationInfoQuery, + useRegisterWithConfirmationTokenMutation, +} from "@/redux/api/userApi"; +import { setToken } from "@/redux/features/userSlice"; +import Cookies from "js-cookie"; +import { useAppDispatch } from "@/redux/store"; + +const resetPasswordSchema = object({ + password: string() + .min(1, "Parola este obligatorie") + .min(8, "Parola trebuie sa contina cel putin 8 caractere") + .max(32, "Parola trebuie sa contina cel mult 32 caractere"), + passwordConfirmation: string(), +}).refine((data) => data.password === data.passwordConfirmation, { + message: "Parola nu coincide", + path: ["passwordConfirmation"], +}); +export type ResetPasswordInput = TypeOf & { + code: string; +}; + +const ResetPassword = () => { + const [searchParams] = useSearchParams(); + const dispatch = useAppDispatch(); + const registrationToken = searchParams.get("registrationToken"); + + const { data: user } = useGetRegistrationInfoQuery({ registrationToken }); + + const [sendRegisterRequest, { isSuccess, isError }] = + useRegisterWithConfirmationTokenMutation(); + const [loginUser, { data }] = useLoginUserMutation(); + + const { register, handleSubmit, reset, formState } = + useForm({ + resolver: zodResolver(resetPasswordSchema), + }); + const navigate = useNavigate(); + + const onSubmitHandler = useCallback( + async ({ password, passwordConfirmation }: ResetPasswordInput) => { + if (password) { + const res = await sendRegisterRequest({ + ...user, + password, + passwordConfirmation, + }); + loginUser({ identifier: user.email, password }); + reset(); + } + }, + [sendRegisterRequest, reset, user] + ); + + useEffect(() => { + if (isSuccess && data?.jwt) { + dispatch(setToken(data.jwt)); + Cookies.set("jwt", data.jwt); + navigate("/"); + } + }, [isSuccess, data, dispatch]); + + useEffect(() => { + if (isError) { + toast.error("A aparut o problema"); + } + }, [isError]); + + useEffect(() => { + if (!registrationToken) { + navigate("/"); + } + }, [registrationToken, navigate]); + + return ( +
    +
    +
    +

    + Bine ai venit, +
    + {user?.ongName}! +

    +
    + +
    + +
    + +
    +
    + +
    + +
    + +
    + +
    +
    +
    +
    + +
    +
    + +
    +
    +
    + ); +}; +export default ResetPassword; diff --git a/client2/src/redux/api/authApi.ts b/client2/src/redux/api/authApi.ts new file mode 100644 index 00000000..bb650464 --- /dev/null +++ b/client2/src/redux/api/authApi.ts @@ -0,0 +1,71 @@ +import { createApi, fetchBaseQuery } from "@reduxjs/toolkit/query/react"; +import { LoginInput } from "src/pages/public/Login"; +import { RegisterInput } from "src/pages/public/Register"; +import { RegisterResponse } from "./types"; +import { userApi } from "./userApi"; +import { ForgotPasswordInput } from "src/pages/public/ForgotPassword"; +import { ResetPasswordInput } from "src/pages/public/ResetPassword"; + +const BASE_URL = import.meta.env.VITE_SERVER_ENDPOINT as string; + +export const authApi = createApi({ + reducerPath: "authApi", + baseQuery: fetchBaseQuery({ + baseUrl: `${BASE_URL}/api/auth`, + }), + endpoints: (builder) => ({ + registerUser: builder.mutation({ + query(data) { + return { + url: "local/register", + method: "POST", + body: data, + }; + }, + }), + forgotPassword: builder.mutation({ + query(data) { + return { + url: "forgot-password", + method: "POST", + body: data, + }; + }, + }), + resetPassword: builder.mutation({ + query(data) { + return { + url: "reset-password", + method: "POST", + body: data, + }; + }, + }), + loginUser: builder.mutation< + { jwt: string; user: { username: string } }, + LoginInput + >({ + query(data) { + return { + url: "local", + method: "POST", + body: data, + credentials: "include", + }; + }, + async onQueryStarted(args, { dispatch, queryFulfilled }) { + try { + await queryFulfilled; + await dispatch(userApi.endpoints.getMe.initiate(null)); + } catch (error) {} + }, + }), + }), +}); + +export const { + useLoginUserMutation, + useRegisterUserMutation, + useForgotPasswordMutation, + useResetPasswordMutation, +} = authApi; diff --git a/client2/src/redux/api/types.ts b/client2/src/redux/api/types.ts new file mode 100644 index 00000000..2ede075a --- /dev/null +++ b/client2/src/redux/api/types.ts @@ -0,0 +1,182 @@ +export type RoleType = "public" | "authenticated" | "mentor" | "fdsc"; +interface Role { + id: number; + type: RoleType; +} +interface ActivityType { + name: string; +} + +export interface Activity { + organisation: User; + type: ActivityType; + dimensions: Dimension[]; + startDate: string; + endDate: string; + notes: string; + duration: number; +} + +export interface Quiz { + score: number; + option1: number; + option2: number; + option3: number; + option4: number; + option5: number; +} + +export interface User { + expertise: string; + bio: string; + avatar: any; + id: number; + createdAt: string; + userActivities?: Activity[]; + mentorActivities?: Activity[]; + city: string; + confirmPassword: string; + contactEmail: string; + contactFirstName: string; + contactLastName: string; + contactPhone: string; + county: string; + description: string; + email: string; + keywords: string; + ongIdentificationNumber: string; + ongName: string; + password: string; + phone: string; + username: string; + website: string; + reports: Report[]; + domains?: Domain[]; + program: Program; + role?: Role; + accountFacebook?: string; + accountTwitter?: string; + accountTiktok?: string; + accountInstagram?: string; + accountLinkedin?: string; + + // Mentor + firstName: string; + lastName: string; + available: boolean; + programs: Program[]; + dimensions: Dimension[]; +} + +export interface Question { + id: number; + answer: number; +} + +export interface Dimension { + id: number | string; + quiz: Question[]; + name: string; + link: string; +} + +export interface EvaluationDimensionAnswer { + id: number | string; + answer: number; +} + +export interface EvaluationDimension { + id: string; + comment: string; + quiz: EvaluationDimensionAnswer[]; +} + +export interface Evaluation { + id: number | string; + createdAt: string; + updatedAt: string; + dimensions: EvaluationDimension[]; + email: string; +} + +export interface Report { + user?: User; + id: number | string; + createdAt: string; + updatedAt: string; + deadline: string; + finished: boolean; + evaluations: Evaluation[]; +} + +export interface RegisterResponse { + jwt: string; + user: User; +} + +export interface Domain { + id: number; + name: string; +} + +export interface Program { + id: string | number; + name: string; + startDate: string; + endDate: string; + mentors?: User[]; + sponsorName?: string; + users?: User[]; +} + +export interface QuizQuestion { + id: number | string; + question: string; + option_1: string; + option_2: string; + option_3: string; + option_4: string; + option_5: string; + tag: string; +} + +export interface Matrix { + name: string; + description: string; + link: string; + quiz: QuizQuestion[]; +} +[]; + +export interface UpsertEvaluationDimensionQuizRequest { + id?: number | string; // id is optional for cases where it's a new request + answer: number; +} + +export interface UpsertEvaluationDimensionRequest { + id?: number | string; // id is optional for cases where it's a new request + comment: string; + quiz: UpsertEvaluationDimensionQuizRequest[]; +} + +export interface EvaluationMatrixDataAttributesDimensionsData { + id: number | string; + attributes: Matrix; +} +export interface EvaluationMatrixDataAttributesDimensions { + data: EvaluationMatrixDataAttributesDimensionsData[]; +} +export interface EvaluationMatrixDataAttributes { + createdAt: string; + updatedAt: string; + dimensions: EvaluationMatrixDataAttributesDimensions; +} + +export interface EvaluationMatrixData { + id: number | string; + attributes: EvaluationMatrixDataAttributes; +} + +export interface EvaluationMatrix { + data: EvaluationMatrixData; +} diff --git a/client2/src/redux/api/userApi.ts b/client2/src/redux/api/userApi.ts new file mode 100644 index 00000000..0a867a22 --- /dev/null +++ b/client2/src/redux/api/userApi.ts @@ -0,0 +1,488 @@ +import type { ActivityInput } from "@/pages/mentor/NewActivity"; +import type { ReportInput } from "@/pages/NewReport"; +import type { RootState } from "@/redux/store"; +import { createApi, fetchBaseQuery } from "@reduxjs/toolkit/query/react"; +import qs from "qs"; +import { setUser } from "../features/userSlice"; +import { + Dimension, + Evaluation, + EvaluationMatrix, + Matrix, + Program, + Report, + UpsertEvaluationDimensionRequest, + User, +} from "./types"; + +const BASE_URL = import.meta.env.VITE_SERVER_ENDPOINT as string; + +interface IApiError { + message: string; + description: string; + statusCode: string | number; + data: object; +} + +export const userApi = createApi({ + reducerPath: "userApi", + baseQuery: fetchBaseQuery({ + baseUrl: `${BASE_URL}/api/`, + prepareHeaders: (headers, { getState }) => { + const token = (getState() as RootState).userState.token; + if (token) { + // include token in req header + headers.set("authorization", `Bearer ${token}`); + return headers; + } + }, + }), + tagTypes: [ + "Auth", + "User", + "Report", + "Evaluation", + "Activity", + "Program", + "ProgramUser", + "Mentor", + ], + endpoints: (builder) => ({ + getMe: builder.query({ + query() { + return { + url: "users/me?populate[0]=reports.evaluations.dimensions.quiz&populate[1]=avatar&populate[2]=role&populate[3]=programs.users&populate[4]=userActivities&populate[5]=mentorActivities.user&populate[6]=mentorActivities.type&populate[7]=mentorActivities.dimension&populate[8]=program&populate[9]=dimensions&populate[10]=domains", + }; + }, + async onQueryStarted(args, { dispatch, queryFulfilled }) { + try { + const { data } = await queryFulfilled; + dispatch(setUser(data)); + } catch (error) {} + }, + providesTags: ["Auth", "Activity", "Report"], + }), + updateUser: builder.mutation({ + query({ id, ...user }) { + return { + method: "PUT", + url: `users/${id}`, + body: user, + }; + }, + invalidatesTags: ["Auth", "User"], + }), + getUsers: builder.query({ + query() { + return { + url: `users?filters[role][type][$eq]=authenticated&populate[0]=role&populate[1]=domains&populate[2]=reports&populate[3]=program&populate[4]=domains&sort=createdAt%3Adesc`, + }; + }, + transformResponse: (result: User[]) => + result.filter((user) => user?.role?.type !== "fdsc"), + }), + getUserReports: builder.query({ + query({ userId }) { + return { + url: `users/${userId}?populate[0]=reports.evaluations.dimensions.quiz&populate[1]=domains`, + }; + }, + transformResponse: (result: User) => ({ + ...result, + reports: result.reports?.sort((a: Report, b: Report) => { + return ( + new Date(b?.createdAt ?? 0).getTime() - + new Date(a?.createdAt ?? 0).getTime() + ); + }), + }), + providesTags: ["Report"], + }), + getMentors: builder.query({ + query() { + return { + url: `users?filters[role][type][$eq]=mentor&populate[0]=role&populate[1]=domains&populate[2]=programs&populate[3]=dimensions&populate[4]=mentorActivities&populate[5]=avatar&sort=createdAt%3Adesc`, + }; + }, + providesTags: ["Mentor"], + }), + createMentor: builder.mutation({ + query(body) { + return { + method: "POST", + url: "users", + body, + }; + }, + invalidatesTags: ["Mentor"], + }), + createUser: builder.mutation({ + query(body) { + return { + method: "POST", + url: "users", + body, + }; + }, + invalidatesTags: ["User"], + }), + createProgram: builder.mutation({ + query(body) { + return { + method: "POST", + url: "programs", + body: { + data: body, + }, + }; + }, + invalidatesTags: ["Program"], + }), + getPrograms: builder.query({ + query() { + return { + url: `programs?populate[0]=mentors&populate[1]=users`, + }; + }, + transformResponse: (result: { data: any }) => + result.data.map((report: any) => ({ + ...report.attributes, + id: report.id, + mentors: report.attributes.mentors.data.map( + ({ attributes }) => attributes + ), + users: report.attributes.users.data.map( + ({ attributes }) => attributes + ), + })), + providesTags: ["Program"], + }), + findProgram: builder.query({ + query({ programId }) { + const query = qs.stringify({ + populate: { + mentors: { + populate: ["dimensions", "mentorActivities"], + }, + users: { + populate: { + reports: { + populate: { + evaluations: { + populate: { + dimensions: { + populate: { + quiz: true, + }, + }, + }, + }, + }, + }, + }, + }, + }, + }); + + return { + url: `programs/${programId}?${query}`, + }; + }, + transformResponse: (result) => ({ + ...result.data.attributes, + mentors: result.data.attributes.mentors?.data?.map( + ({ id, attributes }) => ({ + ...attributes, + id, + mentorActivities: attributes.mentorActivities?.data?.map( + ({ attributes }) => attributes + ), + dimensions: attributes.dimensions?.data?.map( + ({ attributes }) => attributes + ), + }) + ), + users: result.data.attributes.users?.data?.map( + ({ id, attributes }) => ({ + ...attributes, + id, + reports: attributes.reports.data.map(({ id, attributes }) => ({ + ...attributes, + id, + evaluations: attributes.evaluations.data.map( + ({ id, attributes }) => ({ + ...attributes, + id, + }) + ), + })), + }) + ), + }), + providesTags: ["ProgramUser"], + }), + updateProgram: builder.mutation({ + query: ({ id, ...rest }) => { + return { + method: "PUT", + url: `programs/${id}`, + credentials: "include", + body: { data: rest }, + }; + }, + invalidatesTags: ["ProgramUser"], + }), + getDimensions: builder.query({ + query() { + return { + url: `dimensions`, + }; + }, + transformResponse: (result: { data: any }) => + result.data.map((report: any) => ({ + id: report.id, + ...report.attributes, + })), + }), + getActivityTypes: builder.query({ + query() { + return { + url: `activity-types`, + }; + }, + transformResponse: (result: { data: any }) => + result.data.map((report: any) => ({ + id: report.id, + ...report.attributes, + })), + }), + createActivity: builder.mutation({ + query: (data) => ({ + method: "POST", + url: "activities", + body: { + data, + }, + }), + invalidatesTags: ["Activity"], + }), + createMentorshipRequest: builder.mutation< + any, + { user: number; mentor: number } + >({ + query: (data) => ({ + method: "POST", + url: "mentorship-requests", + body: { + data, + }, + }), + }), + createReport: builder.mutation({ + query: ({ deadline, evaluations }) => ({ + method: "POST", + url: "reports", + body: { + data: { + deadline, + evaluations: evaluations + ? evaluations + .trim() + .split(/\r?\n/) + .map((email: string) => ({ email })) + : [], + }, + }, + }), + invalidatesTags: ["Report"], + }), + getReports: builder.query({ + query: () => ({ + url: "reports?pagination[pageSize]=1000&populate[0]=user&populate[1]=evaluations.dimensions.quiz&sort=createdAt%3Adesc", + }), + transformResponse: (result: { data: any }) => + result.data.map((report: any) => ({ + id: report.id, + ...report.attributes, + user: report?.attributes?.user?.data?.attributes, + evaluations: report?.attributes?.evaluations?.data?.map( + ({ attributes }) => attributes + ), + })), + providesTags: ["Report"], + }), + findReport: builder.query({ + query: (reportId) => + reportId && { + url: `reports/${reportId}`, + credentials: "include", + }, + providesTags: ["Report", "Evaluation"], + }), + updateReport: builder.mutation({ + query: ({ id, ...rest }) => { + return { + method: "PUT", + url: `reports/${id}`, + credentials: "include", + body: { data: rest }, + }; + }, + invalidatesTags: ["Report"], + }), + getMatrix: builder.query({ + query() { + return { + url: "matrix?populate=dimensions.quiz", + credentials: "include", + }; + }, + transformResponse: (result: EvaluationMatrix) => + result?.data?.attributes?.dimensions?.data?.map( + ({ attributes }) => attributes + ), + }), + getEvaluation: builder.query< + Evaluation, + { evaluationId: string; email: string } + >({ + query({ evaluationId, email }: { evaluationId: string; email: string }) { + return { + url: `evaluations/${evaluationId}?email=${encodeURIComponent(email)}`, + credentials: "include", + }; + }, + providesTags: (result, err, arg) => [ + { + type: "Evaluation", + evaluationId: arg.evaluationId, + }, + ], + }), + getEvaluationsCount: builder.query({ + query: () => ({ + url: "evaluations?populate=dimensions.quiz&pagination[pageSize]=1000", + }), + transformResponse: (result: { data: any }) => + result?.data.map((evaluation: any) => ({ + id: evaluation.id, + ...evaluation.attributes, + })), + }), + deleteEvaluation: builder.mutation({ + query: ({ id }) => { + return { + method: "DELETE", + url: `evaluations/${id}`, + credentials: "include", + }; + }, + invalidatesTags: ["Report"], + }), + getDomains: builder.query({ + query() { + return { + url: `domains`, + }; + }, + transformResponse: (result: { data: any }) => + result.data.map((domain: any) => ({ + id: domain.id, + ...domain.attributes, + })), + }), + getRegistrationInfo: builder.query({ + query({ registrationToken }) { + return { + url: `users-permissions/registration-info?registrationToken=${registrationToken}`, + }; + }, + }), + registerWithConfirmationToken: builder.mutation({ + query(user) { + return { + method: "POST", + url: "/users-permissions/register", + body: { + data: user, + }, + }; + }, + }), + createEvaluation: builder.mutation< + Evaluation, + Pick + >({ + query({ id, email }) { + return { + method: "POST", + url: "evaluations", + body: { + data: { + report: id, + email, + }, + }, + }; + }, + invalidatesTags: ["Evaluation"], + }), + submitEvaluation: builder.mutation< + Evaluation, + { evaluationId: string; dimensions: UpsertEvaluationDimensionRequest[] } + >({ + query({ evaluationId, dimensions }) { + return { + method: "PUT", + url: `evaluations/${evaluationId}`, + body: { data: { dimensions } }, + credentials: "include", + }; + }, + invalidatesTags: (res, err, arg) => [ + { type: "Evaluation", evaluationId: arg.evaluationId }, + ], + }), + upload: builder.mutation({ + query(data) { + return { + url: "upload", + method: "POST", + body: data, + }; + }, + invalidatesTags: ["Auth"], + }), + }), +}); + +export const { + useSubmitEvaluationMutation, + useUpdateUserMutation, + useGetEvaluationQuery, + useCreateEvaluationMutation, + useDeleteEvaluationMutation, + useCreateReportMutation, + useFindReportQuery, + useUpdateReportMutation, + useUploadMutation, + useGetUsersQuery, + useGetUserReportsQuery, + useGetMentorsQuery, + useGetDomainsQuery, + useGetReportsQuery, + useGetEvaluationsCountQuery, + useGetRegistrationInfoQuery, + useRegisterWithConfirmationTokenMutation, + useCreateProgramMutation, + useGetProgramsQuery, + useFindProgramQuery, + useUpdateProgramMutation, + useGetDimensionsQuery, + useCreateMentorMutation, + useCreateUserMutation, + useGetMatrixQuery, + useGetActivityTypesQuery, + useCreateActivityMutation, + useCreateMentorshipRequestMutation, +} = userApi; diff --git a/client2/src/redux/features/userSlice.ts b/client2/src/redux/features/userSlice.ts new file mode 100644 index 00000000..bd56caf1 --- /dev/null +++ b/client2/src/redux/features/userSlice.ts @@ -0,0 +1,51 @@ +import { createSlice, PayloadAction } from "@reduxjs/toolkit"; +import { Matrix, User } from "../api/types"; +import { userApi } from "../api/userApi"; +import Cookies from "js-cookie"; +import { RootState } from "@/redux/store"; + +interface UserState { + user?: User; + token?: string; + matrix?: Matrix; +} + +const userToken = Cookies.get("jwt") || undefined; + +const initialState: UserState = { + user: undefined, + token: userToken, + matrix: undefined, +}; + +export const userSlice = createSlice({ + initialState, + name: "userSlice", + reducers: { + logout: () => ({ + ...initialState, + token: undefined, + }), + setUser: (state, action: PayloadAction) => { + state.user = action.payload; + }, + setToken: (state, action: PayloadAction) => { + state.token = action.payload; + }, + }, + extraReducers: (builder) => { + builder.addMatcher( + userApi.endpoints.getMatrix.matchFulfilled, + (state, { payload }) => { + state.matrix = payload; + } + ); + }, +}); + +export const selectHasFinishedReports = (state: RootState) => + state.userState?.user?.reports?.some((report) => report.finished) ?? false; + +export default userSlice.reducer; + +export const { logout, setUser, setToken } = userSlice.actions; diff --git a/client2/src/redux/store.tsx b/client2/src/redux/store.tsx new file mode 100644 index 00000000..f780818f --- /dev/null +++ b/client2/src/redux/store.tsx @@ -0,0 +1,21 @@ +import { configureStore } from "@reduxjs/toolkit"; +import { TypedUseSelectorHook, useDispatch, useSelector } from "react-redux"; +import { authApi } from "./api/authApi"; +import { userApi } from "./api/userApi"; +import userReducer from "./features/userSlice"; + +export const store = configureStore({ + reducer: { + [authApi.reducerPath]: authApi.reducer, + [userApi.reducerPath]: userApi.reducer, + userState: userReducer, + }, + devTools: import.meta.env.NODE_ENV === "development", + middleware: (getDefaultMiddleware) => + getDefaultMiddleware({}).concat([authApi.middleware, userApi.middleware]), +}); + +export type RootState = ReturnType; +export type AppDispatch = typeof store.dispatch; +export const useAppDispatch = () => useDispatch(); +export const useAppSelector: TypedUseSelectorHook = useSelector; diff --git a/client2/src/router/index.tsx b/client2/src/router/index.tsx new file mode 100644 index 00000000..903a1a19 --- /dev/null +++ b/client2/src/router/index.tsx @@ -0,0 +1,100 @@ +import { Routes, Route, Navigate } from "react-router-dom"; +import LayoutApp from "@/components/LayoutApp"; +import LayoutEvaluation from "@/components/LayoutEvaluation"; +import LayoutDashboard from "@/components/LayoutDashboard"; +import Home from "@/pages/Home"; +import Evaluation from "@/pages/Evaluation"; +import ForgotPassword from "@/pages/public/ForgotPassword"; +import Login from "@/pages/public/Login"; +import ResetPassword from "@/pages/public/ResetPassword"; +import Register from "@/pages/public/Register"; +import SetPassword from "@/pages/public/SetPassword"; +import Report from "@/pages/authenticated/Report"; +import AdminReport from "@/pages/admin/Report"; +import NewReport from "@/pages/NewReport"; +import UserReports from "@/pages/UserReports"; +import { useAppSelector } from "@/redux/store"; +import Dashboard from "@/pages/Dashboard"; +import ReportsList from "@/pages/ReportsList"; +import UsersList from "@/pages/UsersList"; +import Profile from "@/pages/Profile"; +import Mentors from "@/pages/Mentors"; +import CreateMentor from "@/pages/admin/CreateMentor"; +import ProgramsList from "@/pages/admin/ProgramsList"; +import Program from "@/pages/admin/Program"; +import CreateProgram from "@/pages/admin/CreateProgram"; +import getUserType from "@/lib/userType"; +import HomeMentor from "@/pages/mentor/Home"; +import Activities from "@/pages/mentor/Activities"; +import NewActivity from "@/pages/mentor/NewActivity"; +import MentorProfile from "@/pages/mentor/Profile"; +import MentorEditProfile from "@/pages/mentor/EditProfile"; +import AuthenticatedMentorsList from "@/pages/authenticated/MentorsList"; +import AuthenticatedMentor from "@/pages/authenticated/Mentor"; +import CreateUser from "@/pages/admin/CreateUser"; +import MentorReport from "@/pages/mentor/Report"; +import OngEditProfile from "@/pages/authenticated/EditProfile"; +import AuthenticatedMatrix from "@/pages/authenticated/Matrix"; +import Matrix from "@/components/Matrix"; + +const Router = () => { + const user = useAppSelector((state) => state.userState.user); + const userType = getUserType(user); + + return ( + + }> + } /> + + {userType === "fdsc" ? ( + }> + } /> + } /> + } /> + } /> + } /> + } /> + } /> + } /> + } /> + } /> + } /> + } /> + + ) : userType === "authenticated" ? ( + }> + } /> + } /> + } /> + } /> + } /> + } /> + } /> + } /> + + ) : userType === "mentor" ? ( + }> + } /> + } /> + } /> + } /> + } /> + } /> + + ) : ( + }> + } /> + } /> + } /> + } /> + } /> + } /> + } /> + + )} + } /> + + ); +}; + +export default Router; diff --git a/client2/src/styles/globals.css b/client2/src/styles/globals.css new file mode 100644 index 00000000..38cbe0ac --- /dev/null +++ b/client2/src/styles/globals.css @@ -0,0 +1,94 @@ +/* SPDX-FileCopyrightText: 2014-present Kriasoft */ +/* SPDX-License-Identifier: MIT */ + +@import "tailwind.config.css"; + +/** + * CSS Variables for ShadCN UI Theming + * + * These variables define the color scheme for light and dark modes. + * They are referenced by the UI components and mapped to Tailwind + * utilities in tailwind.config.css. + * + * Using oklch() for better color interpolation and consistency. + * @see https://developer.mozilla.org/en-US/docs/Web/CSS/color_value/oklch + */ +:root { + --radius: 0.625rem; + --background: oklch(1 0 0); + --foreground: oklch(0.145 0 0); + --card: oklch(1 0 0); + --card-foreground: oklch(0.145 0 0); + --popover: oklch(1 0 0); + --popover-foreground: oklch(0.145 0 0); + --primary: oklch(0.205 0 0); + --primary-foreground: oklch(0.985 0 0); + --secondary: oklch(0.97 0 0); + --secondary-foreground: oklch(0.205 0 0); + --muted: oklch(0.97 0 0); + --muted-foreground: oklch(0.556 0 0); + --accent: oklch(0.97 0 0); + --accent-foreground: oklch(0.205 0 0); + --destructive: oklch(0.577 0.245 27.325); + --destructive-foreground: oklch(0.985 0 0); + --border: oklch(0.922 0 0); + --input: oklch(0.922 0 0); + --ring: oklch(0.708 0 0); + --chart-1: oklch(0.646 0.222 41.116); + --chart-2: oklch(0.6 0.118 184.704); + --chart-3: oklch(0.398 0.07 227.392); + --chart-4: oklch(0.828 0.189 84.429); + --chart-5: oklch(0.769 0.188 70.08); + --sidebar: oklch(0.985 0 0); + --sidebar-foreground: oklch(0.145 0 0); + --sidebar-primary: oklch(0.205 0 0); + --sidebar-primary-foreground: oklch(0.985 0 0); + --sidebar-accent: oklch(0.97 0 0); + --sidebar-accent-foreground: oklch(0.205 0 0); + --sidebar-border: oklch(0.922 0 0); + --sidebar-ring: oklch(0.708 0 0); +} + +.dark { + --background: oklch(0.145 0 0); + --foreground: oklch(0.985 0 0); + --card: oklch(0.205 0 0); + --card-foreground: oklch(0.985 0 0); + --popover: oklch(0.205 0 0); + --popover-foreground: oklch(0.985 0 0); + --primary: oklch(0.922 0 0); + --primary-foreground: oklch(0.205 0 0); + --secondary: oklch(0.269 0 0); + --secondary-foreground: oklch(0.985 0 0); + --muted: oklch(0.269 0 0); + --muted-foreground: oklch(0.708 0 0); + --accent: oklch(0.269 0 0); + --accent-foreground: oklch(0.985 0 0); + --destructive: oklch(0.704 0.191 22.216); + --destructive-foreground: oklch(0.985 0 0); + --border: oklch(1 0 0 / 10%); + --input: oklch(1 0 0 / 15%); + --ring: oklch(0.556 0 0); + --chart-1: oklch(0.488 0.243 264.376); + --chart-2: oklch(0.696 0.17 162.48); + --chart-3: oklch(0.769 0.188 70.08); + --chart-4: oklch(0.627 0.265 303.9); + --chart-5: oklch(0.645 0.246 16.439); + --sidebar: oklch(0.205 0 0); + --sidebar-foreground: oklch(0.985 0 0); + --sidebar-primary: oklch(0.488 0.243 264.376); + --sidebar-primary-foreground: oklch(0.985 0 0); + --sidebar-accent: oklch(0.269 0 0); + --sidebar-accent-foreground: oklch(0.985 0 0); + --sidebar-border: oklch(1 0 0 / 10%); + --sidebar-ring: oklch(0.556 0 0); +} + +@layer base { + * { + @apply border-border outline-ring/50; + } + body { + @apply bg-background text-foreground; + } +} diff --git a/client2/src/styles/tailwind.config.css b/client2/src/styles/tailwind.config.css new file mode 100644 index 00000000..aad11c75 --- /dev/null +++ b/client2/src/styles/tailwind.config.css @@ -0,0 +1,61 @@ +/** + * Tailwind CSS v4 Configuration + * + * This file configures Tailwind CSS v4 for the web app. + * It includes paths to scan for the UI package components + * and maps CSS variables to Tailwind utility classes. + * + * @see https://tailwindcss.com/docs/v4-beta + * + * SPDX-FileCopyrightText: 2014-present Kriasoft + * SPDX-License-Identifier: MIT + */ + +@import "tailwindcss"; + + +/* Custom dark mode variant */ +@custom-variant dark (&:is(.dark *)); + +/* Theme configuration */ +@theme inline { + /* Border radius values */ + --radius-sm: calc(var(--radius) - 4px); + --radius-md: calc(var(--radius) - 2px); + --radius-lg: var(--radius); + --radius-xl: calc(var(--radius) + 4px); + + /* Color mappings for Tailwind utilities */ + --color-background: var(--background); + --color-foreground: var(--foreground); + --color-card: var(--card); + --color-card-foreground: var(--card-foreground); + --color-popover: var(--popover); + --color-popover-foreground: var(--popover-foreground); + --color-primary: var(--primary); + --color-primary-foreground: var(--primary-foreground); + --color-secondary: var(--secondary); + --color-secondary-foreground: var(--secondary-foreground); + --color-muted: var(--muted); + --color-muted-foreground: var(--muted-foreground); + --color-accent: var(--accent); + --color-accent-foreground: var(--accent-foreground); + --color-destructive: var(--destructive); + --color-destructive-foreground: var(--destructive-foreground); + --color-border: var(--border); + --color-input: var(--input); + --color-ring: var(--ring); + --color-chart-1: var(--chart-1); + --color-chart-2: var(--chart-2); + --color-chart-3: var(--chart-3); + --color-chart-4: var(--chart-4); + --color-chart-5: var(--chart-5); + --color-sidebar: var(--sidebar); + --color-sidebar-foreground: var(--sidebar-foreground); + --color-sidebar-primary: var(--sidebar-primary); + --color-sidebar-primary-foreground: var(--sidebar-primary-foreground); + --color-sidebar-accent: var(--sidebar-accent); + --color-sidebar-accent-foreground: var(--sidebar-accent-foreground); + --color-sidebar-border: var(--sidebar-border); + --color-sidebar-ring: var(--sidebar-ring); +} diff --git a/client2/tsconfig.json b/client2/tsconfig.json new file mode 100644 index 00000000..b6ceb855 --- /dev/null +++ b/client2/tsconfig.json @@ -0,0 +1,62 @@ +{ + /* Visit https://aka.ms/tsconfig to read more about this file */ + "$schema": "https://json.schemastore.org/tsconfig", + "compilerOptions": { + /* Type Checking */ + "strict": true, + "noImplicitAny": true, + "noImplicitOverride": true, + "noImplicitThis": true, + "strictNullChecks": true, + "strictPropertyInitialization": true, + /* Modules */ + "module": "ESNext", + "moduleResolution": "Bundler", + "resolveJsonModule": true, + "allowImportingTsExtensions": false, + /* Emit */ + // noEmit is set per-package based on needs + /* JavaScript Support */ + "allowJs": true, + /* Interop Constraints */ + "allowSyntheticDefaultImports": true, + "esModuleInterop": true, + "forceConsistentCasingInFileNames": true, + "isolatedModules": true, + "verbatimModuleSyntax": true, + /* Language and Environment */ + "target": "ESNext", + "lib": [ + "DOM", + "DOM.Iterable", + "ESNext" + ], + "useDefineForClassFields": true, + /* Completeness */ + "skipLibCheck": true, + "jsx": "react-jsx", + "jsxImportSource": "react", + "types": [ + "vite/client" + ], + "composite": true, + "noEmit": true, + "tsBuildInfoFile": "../../.cache/tsconfig/web.tsbuildinfo", + "baseUrl": ".", + "paths": { + "@/*": [ + "./src/*" + ] + } + }, + "include": [ + "**/*.ts", + "**/*.tsx", + "**/*.json", + "./global.d.ts" + ], + "exclude": [ + "**/dist/**/*", + "**/node_modules/**/*" + ] +} \ No newline at end of file diff --git a/client2/vite.config.ts b/client2/vite.config.ts new file mode 100644 index 00000000..a7d22baf --- /dev/null +++ b/client2/vite.config.ts @@ -0,0 +1,66 @@ +/* SPDX-FileCopyrightText: 2014-present Kriasoft */ +/* SPDX-License-Identifier: MIT */ + +import react from "@vitejs/plugin-react-swc"; +import { URL, fileURLToPath } from "node:url"; +import { loadEnv } from "vite"; +import tsconfigPaths from "vite-tsconfig-paths"; +import { defineProject } from "vitest/config"; + +const publicEnvVars = ["VITE_SERVER_ENDPOINT", "NODE_ENV"]; + +/** + * Vite configuration. + * https://vitejs.dev/config/ + */ +export default defineProject(({ mode }) => { + const envDir = fileURLToPath(new URL("./", import.meta.url)); + const env = loadEnv(mode, envDir, ""); + + publicEnvVars.forEach((key) => { + if (!env[key]) throw new Error(`Missing environment variable: ${key}`); + process.env[`VITE_${key}`] = env[key]; + }); + + return { + cacheDir: fileURLToPath(new URL("../../.cache/vite-app", import.meta.url)), + + build: { + rollupOptions: { + output: { + assetFileNames: "_app/assets/[name]-[hash][extname]", + chunkFileNames: "_app/assets/[name]-[hash].js", + entryFileNames: "_app/assets/[name]-[hash].js", + manualChunks: { + react: ["react", "react-dom"], + ui: [ + "@radix-ui/react-slot", + "class-variance-authority", + "clsx", + "tailwind-merge", + ], + }, + }, + }, + }, + + resolve: { + conditions: ["module", "browser", "development|production"], + }, + + css: { + postcss: "./postcss.config.js", + }, + + plugins: [ + tsconfigPaths(), + // https://github.com/vitejs/vite-plugin-react/tree/main/packages/plugin-react-swc + react(), + ], + + test: { + ...{ cache: { dir: "../../.cache/vitest" } }, + environment: "happy-dom", + }, + }; +}); diff --git a/server2/README.md b/server2/README.md index 931729f1..237f0e33 100644 --- a/server2/README.md +++ b/server2/README.md @@ -59,3 +59,9 @@ Feel free to check out the [Strapi GitHub repository](https://github.com/strapi/ --- 🤫 Psst! [Strapi is hiring](https://strapi.io/careers). + +## Generating client + +```bash +npx swagger-typescript-api generate --path ./public/swagger-spec.json --axios --name="client.ts" --output="./public" --extract-enums +``` diff --git a/server2/public/client.ts b/server2/public/client.ts new file mode 100644 index 00000000..5c3a5333 --- /dev/null +++ b/server2/public/client.ts @@ -0,0 +1,7541 @@ +/* eslint-disable */ +/* tslint:disable */ +// @ts-nocheck +/* + * --------------------------------------------------------------- + * ## THIS FILE WAS GENERATED VIA SWAGGER-TYPESCRIPT-API ## + * ## ## + * ## AUTHOR: acacode ## + * ## SOURCE: https://github.com/acacode/swagger-typescript-api ## + * --------------------------------------------------------------- + */ + +export interface ApiActivityTypeActivityTypeDocument { + /** + * The document ID, represented by a UUID + * @format uuid + * @pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$ + */ + documentId: string; + id: number; + /** A text field */ + name?: string; + /** A datetime field */ + createdAt?: string; + /** A datetime field */ + updatedAt?: string; + /** + * A datetime field + * @default "2025-09-12T06:37:57.249Z" + */ + publishedAt: string; +} + +export interface MatrixQuestionEntry { + /** A string field */ + question?: string; + /** A text field */ + option_1?: string; + /** A text field */ + option_2?: string; + /** A text field */ + option_3?: string; + /** A text field */ + option_4?: string; + /** A text field */ + option_5?: string; + /** A string field */ + tag?: string; +} + +export interface PluginUsersPermissionsPermissionDocument { + /** + * The document ID, represented by a UUID + * @format uuid + * @pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$ + */ + documentId: string; + id: number; + /** A string field */ + action: string; + /** A datetime field */ + createdAt?: string; + /** A datetime field */ + updatedAt?: string; + /** + * A datetime field + * @default "2025-09-12T06:37:57.263Z" + */ + publishedAt: string; + /** A relational field */ + role?: PluginUsersPermissionsRoleDocument; +} + +export interface PluginUsersPermissionsRoleDocument { + /** + * The document ID, represented by a UUID + * @format uuid + * @pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$ + */ + documentId: string; + id: number; + /** A string field */ + name: string; + /** A string field */ + description?: string; + /** A string field */ + type?: string; + /** A datetime field */ + createdAt?: string; + /** A datetime field */ + updatedAt?: string; + /** + * A datetime field + * @default "2025-09-12T06:37:57.262Z" + */ + publishedAt: string; + /** A relational field */ + permissions?: PluginUsersPermissionsPermissionDocument[]; + /** A relational field */ + users?: PluginUsersPermissionsUserDocument[]; +} + +export interface PluginUploadFileDocument { + /** + * The document ID, represented by a UUID + * @format uuid + * @pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$ + */ + documentId: string; + id: number; + /** A string field */ + name: string; + /** A string field */ + alternativeText?: string; + /** A string field */ + caption?: string; + /** + * An integer field + * @min -9007199254740991 + * @max 9007199254740991 + */ + width?: number; + /** + * An integer field + * @min -9007199254740991 + * @max 9007199254740991 + */ + height?: number; + /** A JSON field */ + formats?: any; + /** A string field */ + hash: string; + /** A string field */ + ext?: string; + /** A string field */ + mime: string; + /** A decimal field */ + size: number; + /** A string field */ + url: string; + /** A string field */ + previewUrl?: string; + /** A string field */ + provider: string; + /** A JSON field */ + provider_metadata?: any; + /** A datetime field */ + createdAt?: string; + /** A datetime field */ + updatedAt?: string; + /** + * A datetime field + * @default "2025-09-12T06:37:57.268Z" + */ + publishedAt: string; + related: any; +} + +export interface EvaluationDimensionEntry { + /** A text field */ + comment: string; + /** A component field */ + quiz?: EvaluationQuestionEntry[]; +} + +export interface EvaluationQuestionEntry { + /** + * An integer field + * @min 0 + * @max 4 + */ + answer: number; +} + +export interface ApiEvaluationEvaluationDocument { + /** + * The document ID, represented by a UUID + * @format uuid + * @pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$ + */ + documentId: string; + id: number; + /** + * An email field + * @format email + * @pattern ^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$ + */ + email: string; + /** A datetime field */ + createdAt?: string; + /** A datetime field */ + updatedAt?: string; + /** + * A datetime field + * @default "2025-09-12T06:37:57.272Z" + */ + publishedAt: string; + /** A component field */ + dimensions?: EvaluationDimensionEntry[]; + /** A relational field */ + report?: ApiReportReportDocument; +} + +export interface ApiReportReportDocument { + /** + * The document ID, represented by a UUID + * @format uuid + * @pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$ + */ + documentId: string; + id: number; + /** A date field */ + deadline: string; + /** + * A boolean field + * @default false + */ + finished: boolean; + /** A datetime field */ + createdAt?: string; + /** A datetime field */ + updatedAt?: string; + /** + * A datetime field + * @default "2025-09-12T06:37:57.271Z" + */ + publishedAt: string; + /** A relational field */ + evaluations?: ApiEvaluationEvaluationDocument[]; + /** A relational field */ + user?: PluginUsersPermissionsUserDocument; +} + +export interface ApiDomainDomainDocument { + /** + * The document ID, represented by a UUID + * @format uuid + * @pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$ + */ + documentId: string; + id: number; + /** A string field */ + name?: string; + /** A datetime field */ + createdAt?: string; + /** A datetime field */ + updatedAt?: string; + /** + * A datetime field + * @default "2025-09-12T06:37:57.275Z" + */ + publishedAt: string; + /** A relational field */ + mentors?: PluginUsersPermissionsUserDocument[]; +} + +export interface ApiProgramProgramDocument { + /** + * The document ID, represented by a UUID + * @format uuid + * @pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$ + */ + documentId: string; + id: number; + /** A string field */ + name: string; + /** A date field */ + startDate: string; + /** A date field */ + endDate: string; + /** A string field */ + sponsorName?: string; + /** A datetime field */ + createdAt?: string; + /** A datetime field */ + updatedAt?: string; + /** + * A datetime field + * @default "2025-09-12T06:37:57.279Z" + */ + publishedAt: string; + /** A relational field */ + mentors?: PluginUsersPermissionsUserDocument[]; + /** A relational field */ + users?: PluginUsersPermissionsUserDocument[]; +} + +export interface ApiActivityActivityDocument { + /** + * The document ID, represented by a UUID + * @format uuid + * @pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$ + */ + documentId: string; + id: number; + /** A date field */ + startDate: string; + /** A richtext field */ + notes?: string; + /** + * An integer field + * @min -9007199254740991 + * @max 9007199254740991 + */ + duration?: number; + /** A datetime field */ + createdAt?: string; + /** A datetime field */ + updatedAt?: string; + /** + * A datetime field + * @default "2025-09-12T06:37:57.281Z" + */ + publishedAt: string; + /** A relational field */ + type?: ApiActivityTypeActivityTypeDocument; + /** A relational field */ + dimension?: ApiDimensionDimensionDocument; + /** A relational field */ + mentor?: PluginUsersPermissionsUserDocument; + /** A relational field */ + user?: PluginUsersPermissionsUserDocument; +} + +export interface ApiMentorshipRequestMentorshipRequestDocument { + /** + * The document ID, represented by a UUID + * @format uuid + * @pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$ + */ + documentId: string; + id: number; + /** A datetime field */ + createdAt?: string; + /** A datetime field */ + updatedAt?: string; + /** + * A datetime field + * @default "2025-09-12T06:37:57.283Z" + */ + publishedAt: string; + /** A relational field */ + mentor?: PluginUsersPermissionsUserDocument; + /** A relational field */ + user?: PluginUsersPermissionsUserDocument; +} + +export interface PluginUsersPermissionsUserDocument { + /** + * The document ID, represented by a UUID + * @format uuid + * @pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$ + */ + documentId: string; + id: number; + /** A string field */ + username: string; + /** + * An email field + * @format email + * @pattern ^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$ + */ + email: string; + /** A string field */ + provider?: string; + /** + * A boolean field + * @default false + */ + confirmed: boolean; + /** + * A boolean field + * @default false + */ + blocked: boolean; + /** A string field */ + ongName?: string; + /** A string field */ + ongIdentificationNumber?: string; + /** A string field */ + county?: string; + /** A string field */ + city?: string; + /** A string field */ + phone?: string; + /** A string field */ + website?: string; + /** A string field */ + keywords?: string; + /** A text field */ + description?: string; + /** A string field */ + contactFirstName?: string; + /** A string field */ + contactLastName?: string; + /** A string field */ + contactEmail?: string; + /** A string field */ + contactPhone?: string; + /** A string field */ + accountFacebook?: string; + /** A string field */ + accountTwitter?: string; + /** A string field */ + accountTiktok?: string; + /** A string field */ + accountInstagram?: string; + /** A string field */ + accountLinkedin?: string; + /** A text field */ + bio?: string; + /** A text field */ + expertise?: string; + /** A string field */ + firstName?: string; + /** A string field */ + lastName?: string; + /** + * A boolean field + * @default false + */ + available: boolean; + /** A datetime field */ + createdAt?: string; + /** A datetime field */ + updatedAt?: string; + /** + * A datetime field + * @default "2025-09-12T06:37:57.260Z" + */ + publishedAt: string; + /** A relational field */ + role?: PluginUsersPermissionsRoleDocument; + /** A media field */ + avatar?: PluginUploadFileDocument; + /** A media field */ + logo?: PluginUploadFileDocument; + /** A relational field */ + reports?: ApiReportReportDocument[]; + /** A relational field */ + domains?: ApiDomainDomainDocument[]; + /** A relational field */ + programs?: ApiProgramProgramDocument[]; + /** A relational field */ + dimensions?: ApiDimensionDimensionDocument[]; + /** A relational field */ + program?: ApiProgramProgramDocument; + /** A relational field */ + mentorActivities?: ApiActivityActivityDocument[]; + /** A relational field */ + userActivities?: ApiActivityActivityDocument[]; + /** A relational field */ + mentorSessions?: ApiMentorshipRequestMentorshipRequestDocument[]; + /** A relational field */ + userSessions?: ApiMentorshipRequestMentorshipRequestDocument[]; +} + +export interface ApiDimensionDimensionDocument { + /** + * The document ID, represented by a UUID + * @format uuid + * @pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$ + */ + documentId: string; + id: number; + /** A string field */ + name: string; + /** A string field */ + link?: string; + /** A datetime field */ + createdAt?: string; + /** A datetime field */ + updatedAt?: string; + /** + * A datetime field + * @default "2025-09-12T06:37:57.251Z" + */ + publishedAt: string; + /** A component field */ + quiz?: MatrixQuestionEntry[]; + /** A relational field */ + mentors?: PluginUsersPermissionsUserDocument[]; + /** A relational field */ + activities?: ApiActivityActivityDocument[]; +} + +export enum ActivityGetActivitiesParamsFieldsEnum { + StartDate = "startDate", + Notes = "notes", + Duration = "duration", + CreatedAt = "createdAt", + UpdatedAt = "updatedAt", + PublishedAt = "publishedAt", +} + +export enum ActivityGetActivitiesParamsFiltersEnum { + StartDate = "startDate", + Notes = "notes", + Duration = "duration", + CreatedAt = "createdAt", + UpdatedAt = "updatedAt", + PublishedAt = "publishedAt", +} + +export enum ActivityGetActivitiesParamsSortEnum { + StartDate = "startDate", + Notes = "notes", + Duration = "duration", + CreatedAt = "createdAt", + UpdatedAt = "updatedAt", + PublishedAt = "publishedAt", +} + +export enum ActivityGetActivitiesParamsSortEnum1 { + StartDate = "startDate", + Notes = "notes", + Duration = "duration", + CreatedAt = "createdAt", + UpdatedAt = "updatedAt", + PublishedAt = "publishedAt", +} + +export enum ActivityGetActivitiesParamsSortEnum2 { + StartDate = "startDate", + Notes = "notes", + Duration = "duration", + CreatedAt = "createdAt", + UpdatedAt = "updatedAt", + PublishedAt = "publishedAt", +} + +export enum ActivityGetActivitiesParamsSortEnum3 { + Asc = "asc", + Desc = "desc", +} + +export enum ActivityGetActivitiesParamsSortEnum4 { + StartDate = "startDate", + Notes = "notes", + Duration = "duration", + CreatedAt = "createdAt", + UpdatedAt = "updatedAt", + PublishedAt = "publishedAt", +} + +export enum ActivityGetActivitiesParamsSortEnum5 { + Asc = "asc", + Desc = "desc", +} + +/** Populate a single relation, component, file, or dynamic zone */ +export enum ActivityGetActivitiesParamsPopulateEnum { + Type = "type", + Dimension = "dimension", + Mentor = "mentor", + User = "user", +} + +export enum ActivityGetActivitiesParamsPopulateEnum1 { + Type = "type", + Dimension = "dimension", + Mentor = "mentor", + User = "user", +} + +export enum ActivityPostActivitiesParamsFieldsEnum { + StartDate = "startDate", + Notes = "notes", + Duration = "duration", + CreatedAt = "createdAt", + UpdatedAt = "updatedAt", + PublishedAt = "publishedAt", +} + +/** Populate a single relation, component, file, or dynamic zone */ +export enum ActivityPostActivitiesParamsPopulateEnum { + Type = "type", + Dimension = "dimension", + Mentor = "mentor", + User = "user", +} + +export enum ActivityPostActivitiesParamsPopulateEnum1 { + Type = "type", + Dimension = "dimension", + Mentor = "mentor", + User = "user", +} + +export enum ActivityGetActivitiesByIdParamsFieldsEnum { + StartDate = "startDate", + Notes = "notes", + Duration = "duration", + CreatedAt = "createdAt", + UpdatedAt = "updatedAt", + PublishedAt = "publishedAt", +} + +/** Populate a single relation, component, file, or dynamic zone */ +export enum ActivityGetActivitiesByIdParamsPopulateEnum { + Type = "type", + Dimension = "dimension", + Mentor = "mentor", + User = "user", +} + +export enum ActivityGetActivitiesByIdParamsPopulateEnum1 { + Type = "type", + Dimension = "dimension", + Mentor = "mentor", + User = "user", +} + +export enum ActivityGetActivitiesByIdParamsFiltersEnum { + StartDate = "startDate", + Notes = "notes", + Duration = "duration", + CreatedAt = "createdAt", + UpdatedAt = "updatedAt", + PublishedAt = "publishedAt", +} + +export enum ActivityGetActivitiesByIdParamsSortEnum { + StartDate = "startDate", + Notes = "notes", + Duration = "duration", + CreatedAt = "createdAt", + UpdatedAt = "updatedAt", + PublishedAt = "publishedAt", +} + +export enum ActivityGetActivitiesByIdParamsSortEnum1 { + StartDate = "startDate", + Notes = "notes", + Duration = "duration", + CreatedAt = "createdAt", + UpdatedAt = "updatedAt", + PublishedAt = "publishedAt", +} + +export enum ActivityGetActivitiesByIdParamsSortEnum2 { + StartDate = "startDate", + Notes = "notes", + Duration = "duration", + CreatedAt = "createdAt", + UpdatedAt = "updatedAt", + PublishedAt = "publishedAt", +} + +export enum ActivityGetActivitiesByIdParamsSortEnum3 { + Asc = "asc", + Desc = "desc", +} + +export enum ActivityGetActivitiesByIdParamsSortEnum4 { + StartDate = "startDate", + Notes = "notes", + Duration = "duration", + CreatedAt = "createdAt", + UpdatedAt = "updatedAt", + PublishedAt = "publishedAt", +} + +export enum ActivityGetActivitiesByIdParamsSortEnum5 { + Asc = "asc", + Desc = "desc", +} + +export enum ActivityPutActivitiesByIdParamsFieldsEnum { + StartDate = "startDate", + Notes = "notes", + Duration = "duration", + CreatedAt = "createdAt", + UpdatedAt = "updatedAt", + PublishedAt = "publishedAt", +} + +/** Populate a single relation, component, file, or dynamic zone */ +export enum ActivityPutActivitiesByIdParamsPopulateEnum { + Type = "type", + Dimension = "dimension", + Mentor = "mentor", + User = "user", +} + +export enum ActivityPutActivitiesByIdParamsPopulateEnum1 { + Type = "type", + Dimension = "dimension", + Mentor = "mentor", + User = "user", +} + +export enum ActivityDeleteActivitiesByIdParamsFieldsEnum { + StartDate = "startDate", + Notes = "notes", + Duration = "duration", + CreatedAt = "createdAt", + UpdatedAt = "updatedAt", + PublishedAt = "publishedAt", +} + +/** Populate a single relation, component, file, or dynamic zone */ +export enum ActivityDeleteActivitiesByIdParamsPopulateEnum { + Type = "type", + Dimension = "dimension", + Mentor = "mentor", + User = "user", +} + +export enum ActivityDeleteActivitiesByIdParamsPopulateEnum1 { + Type = "type", + Dimension = "dimension", + Mentor = "mentor", + User = "user", +} + +export enum ActivityDeleteActivitiesByIdParamsFiltersEnum { + StartDate = "startDate", + Notes = "notes", + Duration = "duration", + CreatedAt = "createdAt", + UpdatedAt = "updatedAt", + PublishedAt = "publishedAt", +} + +export enum ActivityTypeGetActivityTypesParamsFieldsEnum { + Name = "name", + CreatedAt = "createdAt", + UpdatedAt = "updatedAt", + PublishedAt = "publishedAt", +} + +export enum ActivityTypeGetActivityTypesParamsFiltersEnum { + Name = "name", + CreatedAt = "createdAt", + UpdatedAt = "updatedAt", + PublishedAt = "publishedAt", +} + +export enum ActivityTypeGetActivityTypesParamsSortEnum { + Name = "name", + CreatedAt = "createdAt", + UpdatedAt = "updatedAt", + PublishedAt = "publishedAt", +} + +export enum ActivityTypeGetActivityTypesParamsSortEnum1 { + Name = "name", + CreatedAt = "createdAt", + UpdatedAt = "updatedAt", + PublishedAt = "publishedAt", +} + +export enum ActivityTypeGetActivityTypesParamsSortEnum2 { + Name = "name", + CreatedAt = "createdAt", + UpdatedAt = "updatedAt", + PublishedAt = "publishedAt", +} + +export enum ActivityTypeGetActivityTypesParamsSortEnum3 { + Asc = "asc", + Desc = "desc", +} + +export enum ActivityTypeGetActivityTypesParamsSortEnum4 { + Name = "name", + CreatedAt = "createdAt", + UpdatedAt = "updatedAt", + PublishedAt = "publishedAt", +} + +export enum ActivityTypeGetActivityTypesParamsSortEnum5 { + Asc = "asc", + Desc = "desc", +} + +export enum ActivityTypePostActivityTypesParamsFieldsEnum { + Name = "name", + CreatedAt = "createdAt", + UpdatedAt = "updatedAt", + PublishedAt = "publishedAt", +} + +export enum ActivityTypeGetActivityTypesByIdParamsFieldsEnum { + Name = "name", + CreatedAt = "createdAt", + UpdatedAt = "updatedAt", + PublishedAt = "publishedAt", +} + +export enum ActivityTypeGetActivityTypesByIdParamsFiltersEnum { + Name = "name", + CreatedAt = "createdAt", + UpdatedAt = "updatedAt", + PublishedAt = "publishedAt", +} + +export enum ActivityTypeGetActivityTypesByIdParamsSortEnum { + Name = "name", + CreatedAt = "createdAt", + UpdatedAt = "updatedAt", + PublishedAt = "publishedAt", +} + +export enum ActivityTypeGetActivityTypesByIdParamsSortEnum1 { + Name = "name", + CreatedAt = "createdAt", + UpdatedAt = "updatedAt", + PublishedAt = "publishedAt", +} + +export enum ActivityTypeGetActivityTypesByIdParamsSortEnum2 { + Name = "name", + CreatedAt = "createdAt", + UpdatedAt = "updatedAt", + PublishedAt = "publishedAt", +} + +export enum ActivityTypeGetActivityTypesByIdParamsSortEnum3 { + Asc = "asc", + Desc = "desc", +} + +export enum ActivityTypeGetActivityTypesByIdParamsSortEnum4 { + Name = "name", + CreatedAt = "createdAt", + UpdatedAt = "updatedAt", + PublishedAt = "publishedAt", +} + +export enum ActivityTypeGetActivityTypesByIdParamsSortEnum5 { + Asc = "asc", + Desc = "desc", +} + +export enum ActivityTypePutActivityTypesByIdParamsFieldsEnum { + Name = "name", + CreatedAt = "createdAt", + UpdatedAt = "updatedAt", + PublishedAt = "publishedAt", +} + +export enum ActivityTypeDeleteActivityTypesByIdParamsFieldsEnum { + Name = "name", + CreatedAt = "createdAt", + UpdatedAt = "updatedAt", + PublishedAt = "publishedAt", +} + +export enum ActivityTypeDeleteActivityTypesByIdParamsFiltersEnum { + Name = "name", + CreatedAt = "createdAt", + UpdatedAt = "updatedAt", + PublishedAt = "publishedAt", +} + +export enum DimensionGetDimensionsParamsFieldsEnum { + Name = "name", + Link = "link", + CreatedAt = "createdAt", + UpdatedAt = "updatedAt", + PublishedAt = "publishedAt", +} + +export enum DimensionGetDimensionsParamsFiltersEnum { + Name = "name", + Link = "link", + CreatedAt = "createdAt", + UpdatedAt = "updatedAt", + PublishedAt = "publishedAt", +} + +export enum DimensionGetDimensionsParamsSortEnum { + Name = "name", + Link = "link", + CreatedAt = "createdAt", + UpdatedAt = "updatedAt", + PublishedAt = "publishedAt", +} + +export enum DimensionGetDimensionsParamsSortEnum1 { + Name = "name", + Link = "link", + CreatedAt = "createdAt", + UpdatedAt = "updatedAt", + PublishedAt = "publishedAt", +} + +export enum DimensionGetDimensionsParamsSortEnum2 { + Name = "name", + Link = "link", + CreatedAt = "createdAt", + UpdatedAt = "updatedAt", + PublishedAt = "publishedAt", +} + +export enum DimensionGetDimensionsParamsSortEnum3 { + Asc = "asc", + Desc = "desc", +} + +export enum DimensionGetDimensionsParamsSortEnum4 { + Name = "name", + Link = "link", + CreatedAt = "createdAt", + UpdatedAt = "updatedAt", + PublishedAt = "publishedAt", +} + +export enum DimensionGetDimensionsParamsSortEnum5 { + Asc = "asc", + Desc = "desc", +} + +/** Populate a single relation, component, file, or dynamic zone */ +export enum DimensionGetDimensionsParamsPopulateEnum { + Quiz = "quiz", + Mentors = "mentors", + Activities = "activities", +} + +export enum DimensionGetDimensionsParamsPopulateEnum1 { + Quiz = "quiz", + Mentors = "mentors", + Activities = "activities", +} + +export enum DimensionPostDimensionsParamsFieldsEnum { + Name = "name", + Link = "link", + CreatedAt = "createdAt", + UpdatedAt = "updatedAt", + PublishedAt = "publishedAt", +} + +/** Populate a single relation, component, file, or dynamic zone */ +export enum DimensionPostDimensionsParamsPopulateEnum { + Quiz = "quiz", + Mentors = "mentors", + Activities = "activities", +} + +export enum DimensionPostDimensionsParamsPopulateEnum1 { + Quiz = "quiz", + Mentors = "mentors", + Activities = "activities", +} + +export enum DimensionGetDimensionsByIdParamsFieldsEnum { + Name = "name", + Link = "link", + CreatedAt = "createdAt", + UpdatedAt = "updatedAt", + PublishedAt = "publishedAt", +} + +/** Populate a single relation, component, file, or dynamic zone */ +export enum DimensionGetDimensionsByIdParamsPopulateEnum { + Quiz = "quiz", + Mentors = "mentors", + Activities = "activities", +} + +export enum DimensionGetDimensionsByIdParamsPopulateEnum1 { + Quiz = "quiz", + Mentors = "mentors", + Activities = "activities", +} + +export enum DimensionGetDimensionsByIdParamsFiltersEnum { + Name = "name", + Link = "link", + CreatedAt = "createdAt", + UpdatedAt = "updatedAt", + PublishedAt = "publishedAt", +} + +export enum DimensionGetDimensionsByIdParamsSortEnum { + Name = "name", + Link = "link", + CreatedAt = "createdAt", + UpdatedAt = "updatedAt", + PublishedAt = "publishedAt", +} + +export enum DimensionGetDimensionsByIdParamsSortEnum1 { + Name = "name", + Link = "link", + CreatedAt = "createdAt", + UpdatedAt = "updatedAt", + PublishedAt = "publishedAt", +} + +export enum DimensionGetDimensionsByIdParamsSortEnum2 { + Name = "name", + Link = "link", + CreatedAt = "createdAt", + UpdatedAt = "updatedAt", + PublishedAt = "publishedAt", +} + +export enum DimensionGetDimensionsByIdParamsSortEnum3 { + Asc = "asc", + Desc = "desc", +} + +export enum DimensionGetDimensionsByIdParamsSortEnum4 { + Name = "name", + Link = "link", + CreatedAt = "createdAt", + UpdatedAt = "updatedAt", + PublishedAt = "publishedAt", +} + +export enum DimensionGetDimensionsByIdParamsSortEnum5 { + Asc = "asc", + Desc = "desc", +} + +export enum DimensionPutDimensionsByIdParamsFieldsEnum { + Name = "name", + Link = "link", + CreatedAt = "createdAt", + UpdatedAt = "updatedAt", + PublishedAt = "publishedAt", +} + +/** Populate a single relation, component, file, or dynamic zone */ +export enum DimensionPutDimensionsByIdParamsPopulateEnum { + Quiz = "quiz", + Mentors = "mentors", + Activities = "activities", +} + +export enum DimensionPutDimensionsByIdParamsPopulateEnum1 { + Quiz = "quiz", + Mentors = "mentors", + Activities = "activities", +} + +export enum DimensionDeleteDimensionsByIdParamsFieldsEnum { + Name = "name", + Link = "link", + CreatedAt = "createdAt", + UpdatedAt = "updatedAt", + PublishedAt = "publishedAt", +} + +/** Populate a single relation, component, file, or dynamic zone */ +export enum DimensionDeleteDimensionsByIdParamsPopulateEnum { + Quiz = "quiz", + Mentors = "mentors", + Activities = "activities", +} + +export enum DimensionDeleteDimensionsByIdParamsPopulateEnum1 { + Quiz = "quiz", + Mentors = "mentors", + Activities = "activities", +} + +export enum DimensionDeleteDimensionsByIdParamsFiltersEnum { + Name = "name", + Link = "link", + CreatedAt = "createdAt", + UpdatedAt = "updatedAt", + PublishedAt = "publishedAt", +} + +export enum DomainGetDomainsParamsFieldsEnum { + Name = "name", + CreatedAt = "createdAt", + UpdatedAt = "updatedAt", + PublishedAt = "publishedAt", +} + +export enum DomainGetDomainsParamsFiltersEnum { + Name = "name", + CreatedAt = "createdAt", + UpdatedAt = "updatedAt", + PublishedAt = "publishedAt", +} + +export enum DomainGetDomainsParamsSortEnum { + Name = "name", + CreatedAt = "createdAt", + UpdatedAt = "updatedAt", + PublishedAt = "publishedAt", +} + +export enum DomainGetDomainsParamsSortEnum1 { + Name = "name", + CreatedAt = "createdAt", + UpdatedAt = "updatedAt", + PublishedAt = "publishedAt", +} + +export enum DomainGetDomainsParamsSortEnum2 { + Name = "name", + CreatedAt = "createdAt", + UpdatedAt = "updatedAt", + PublishedAt = "publishedAt", +} + +export enum DomainGetDomainsParamsSortEnum3 { + Asc = "asc", + Desc = "desc", +} + +export enum DomainGetDomainsParamsSortEnum4 { + Name = "name", + CreatedAt = "createdAt", + UpdatedAt = "updatedAt", + PublishedAt = "publishedAt", +} + +export enum DomainGetDomainsParamsSortEnum5 { + Asc = "asc", + Desc = "desc", +} + +/** Populate a single relation, component, file, or dynamic zone */ +export enum DomainGetDomainsParamsPopulateEnum { + Mentors = "mentors", +} + +export enum DomainGetDomainsParamsPopulateEnum1 { + Mentors = "mentors", +} + +export enum DomainPostDomainsParamsFieldsEnum { + Name = "name", + CreatedAt = "createdAt", + UpdatedAt = "updatedAt", + PublishedAt = "publishedAt", +} + +/** Populate a single relation, component, file, or dynamic zone */ +export enum DomainPostDomainsParamsPopulateEnum { + Mentors = "mentors", +} + +export enum DomainPostDomainsParamsPopulateEnum1 { + Mentors = "mentors", +} + +export enum DomainGetDomainsByIdParamsFieldsEnum { + Name = "name", + CreatedAt = "createdAt", + UpdatedAt = "updatedAt", + PublishedAt = "publishedAt", +} + +/** Populate a single relation, component, file, or dynamic zone */ +export enum DomainGetDomainsByIdParamsPopulateEnum { + Mentors = "mentors", +} + +export enum DomainGetDomainsByIdParamsPopulateEnum1 { + Mentors = "mentors", +} + +export enum DomainGetDomainsByIdParamsFiltersEnum { + Name = "name", + CreatedAt = "createdAt", + UpdatedAt = "updatedAt", + PublishedAt = "publishedAt", +} + +export enum DomainGetDomainsByIdParamsSortEnum { + Name = "name", + CreatedAt = "createdAt", + UpdatedAt = "updatedAt", + PublishedAt = "publishedAt", +} + +export enum DomainGetDomainsByIdParamsSortEnum1 { + Name = "name", + CreatedAt = "createdAt", + UpdatedAt = "updatedAt", + PublishedAt = "publishedAt", +} + +export enum DomainGetDomainsByIdParamsSortEnum2 { + Name = "name", + CreatedAt = "createdAt", + UpdatedAt = "updatedAt", + PublishedAt = "publishedAt", +} + +export enum DomainGetDomainsByIdParamsSortEnum3 { + Asc = "asc", + Desc = "desc", +} + +export enum DomainGetDomainsByIdParamsSortEnum4 { + Name = "name", + CreatedAt = "createdAt", + UpdatedAt = "updatedAt", + PublishedAt = "publishedAt", +} + +export enum DomainGetDomainsByIdParamsSortEnum5 { + Asc = "asc", + Desc = "desc", +} + +export enum DomainPutDomainsByIdParamsFieldsEnum { + Name = "name", + CreatedAt = "createdAt", + UpdatedAt = "updatedAt", + PublishedAt = "publishedAt", +} + +/** Populate a single relation, component, file, or dynamic zone */ +export enum DomainPutDomainsByIdParamsPopulateEnum { + Mentors = "mentors", +} + +export enum DomainPutDomainsByIdParamsPopulateEnum1 { + Mentors = "mentors", +} + +export enum DomainDeleteDomainsByIdParamsFieldsEnum { + Name = "name", + CreatedAt = "createdAt", + UpdatedAt = "updatedAt", + PublishedAt = "publishedAt", +} + +/** Populate a single relation, component, file, or dynamic zone */ +export enum DomainDeleteDomainsByIdParamsPopulateEnum { + Mentors = "mentors", +} + +export enum DomainDeleteDomainsByIdParamsPopulateEnum1 { + Mentors = "mentors", +} + +export enum DomainDeleteDomainsByIdParamsFiltersEnum { + Name = "name", + CreatedAt = "createdAt", + UpdatedAt = "updatedAt", + PublishedAt = "publishedAt", +} + +export enum EvaluationGetEvaluationsParamsFieldsEnum { + Email = "email", + CreatedAt = "createdAt", + UpdatedAt = "updatedAt", + PublishedAt = "publishedAt", +} + +export enum EvaluationGetEvaluationsParamsFiltersEnum { + Email = "email", + CreatedAt = "createdAt", + UpdatedAt = "updatedAt", + PublishedAt = "publishedAt", +} + +export enum EvaluationGetEvaluationsParamsSortEnum { + Email = "email", + CreatedAt = "createdAt", + UpdatedAt = "updatedAt", + PublishedAt = "publishedAt", +} + +export enum EvaluationGetEvaluationsParamsSortEnum1 { + Email = "email", + CreatedAt = "createdAt", + UpdatedAt = "updatedAt", + PublishedAt = "publishedAt", +} + +export enum EvaluationGetEvaluationsParamsSortEnum2 { + Email = "email", + CreatedAt = "createdAt", + UpdatedAt = "updatedAt", + PublishedAt = "publishedAt", +} + +export enum EvaluationGetEvaluationsParamsSortEnum3 { + Asc = "asc", + Desc = "desc", +} + +export enum EvaluationGetEvaluationsParamsSortEnum4 { + Email = "email", + CreatedAt = "createdAt", + UpdatedAt = "updatedAt", + PublishedAt = "publishedAt", +} + +export enum EvaluationGetEvaluationsParamsSortEnum5 { + Asc = "asc", + Desc = "desc", +} + +/** Populate a single relation, component, file, or dynamic zone */ +export enum EvaluationGetEvaluationsParamsPopulateEnum { + Dimensions = "dimensions", + Report = "report", +} + +export enum EvaluationGetEvaluationsParamsPopulateEnum1 { + Dimensions = "dimensions", + Report = "report", +} + +export enum EvaluationPostEvaluationsParamsFieldsEnum { + Email = "email", + CreatedAt = "createdAt", + UpdatedAt = "updatedAt", + PublishedAt = "publishedAt", +} + +/** Populate a single relation, component, file, or dynamic zone */ +export enum EvaluationPostEvaluationsParamsPopulateEnum { + Dimensions = "dimensions", + Report = "report", +} + +export enum EvaluationPostEvaluationsParamsPopulateEnum1 { + Dimensions = "dimensions", + Report = "report", +} + +export enum EvaluationGetEvaluationsByIdParamsFieldsEnum { + Email = "email", + CreatedAt = "createdAt", + UpdatedAt = "updatedAt", + PublishedAt = "publishedAt", +} + +/** Populate a single relation, component, file, or dynamic zone */ +export enum EvaluationGetEvaluationsByIdParamsPopulateEnum { + Dimensions = "dimensions", + Report = "report", +} + +export enum EvaluationGetEvaluationsByIdParamsPopulateEnum1 { + Dimensions = "dimensions", + Report = "report", +} + +export enum EvaluationGetEvaluationsByIdParamsFiltersEnum { + Email = "email", + CreatedAt = "createdAt", + UpdatedAt = "updatedAt", + PublishedAt = "publishedAt", +} + +export enum EvaluationGetEvaluationsByIdParamsSortEnum { + Email = "email", + CreatedAt = "createdAt", + UpdatedAt = "updatedAt", + PublishedAt = "publishedAt", +} + +export enum EvaluationGetEvaluationsByIdParamsSortEnum1 { + Email = "email", + CreatedAt = "createdAt", + UpdatedAt = "updatedAt", + PublishedAt = "publishedAt", +} + +export enum EvaluationGetEvaluationsByIdParamsSortEnum2 { + Email = "email", + CreatedAt = "createdAt", + UpdatedAt = "updatedAt", + PublishedAt = "publishedAt", +} + +export enum EvaluationGetEvaluationsByIdParamsSortEnum3 { + Asc = "asc", + Desc = "desc", +} + +export enum EvaluationGetEvaluationsByIdParamsSortEnum4 { + Email = "email", + CreatedAt = "createdAt", + UpdatedAt = "updatedAt", + PublishedAt = "publishedAt", +} + +export enum EvaluationGetEvaluationsByIdParamsSortEnum5 { + Asc = "asc", + Desc = "desc", +} + +export enum EvaluationPutEvaluationsByIdParamsFieldsEnum { + Email = "email", + CreatedAt = "createdAt", + UpdatedAt = "updatedAt", + PublishedAt = "publishedAt", +} + +/** Populate a single relation, component, file, or dynamic zone */ +export enum EvaluationPutEvaluationsByIdParamsPopulateEnum { + Dimensions = "dimensions", + Report = "report", +} + +export enum EvaluationPutEvaluationsByIdParamsPopulateEnum1 { + Dimensions = "dimensions", + Report = "report", +} + +export enum EvaluationDeleteEvaluationsByIdParamsFieldsEnum { + Email = "email", + CreatedAt = "createdAt", + UpdatedAt = "updatedAt", + PublishedAt = "publishedAt", +} + +/** Populate a single relation, component, file, or dynamic zone */ +export enum EvaluationDeleteEvaluationsByIdParamsPopulateEnum { + Dimensions = "dimensions", + Report = "report", +} + +export enum EvaluationDeleteEvaluationsByIdParamsPopulateEnum1 { + Dimensions = "dimensions", + Report = "report", +} + +export enum EvaluationDeleteEvaluationsByIdParamsFiltersEnum { + Email = "email", + CreatedAt = "createdAt", + UpdatedAt = "updatedAt", + PublishedAt = "publishedAt", +} + +export enum MatrixGetMatrixParamsFieldsEnum { + CreatedAt = "createdAt", + UpdatedAt = "updatedAt", + PublishedAt = "publishedAt", +} + +/** Populate a single relation, component, file, or dynamic zone */ +export enum MatrixGetMatrixParamsPopulateEnum { + Dimensions = "dimensions", +} + +export enum MatrixGetMatrixParamsPopulateEnum1 { + Dimensions = "dimensions", +} + +export enum MatrixGetMatrixParamsFiltersEnum { + CreatedAt = "createdAt", + UpdatedAt = "updatedAt", + PublishedAt = "publishedAt", +} + +export enum MatrixPutMatrixParamsFieldsEnum { + CreatedAt = "createdAt", + UpdatedAt = "updatedAt", + PublishedAt = "publishedAt", +} + +/** Populate a single relation, component, file, or dynamic zone */ +export enum MatrixPutMatrixParamsPopulateEnum { + Dimensions = "dimensions", +} + +export enum MatrixPutMatrixParamsPopulateEnum1 { + Dimensions = "dimensions", +} + +export enum MatrixDeleteMatrixParamsFieldsEnum { + CreatedAt = "createdAt", + UpdatedAt = "updatedAt", + PublishedAt = "publishedAt", +} + +/** Populate a single relation, component, file, or dynamic zone */ +export enum MatrixDeleteMatrixParamsPopulateEnum { + Dimensions = "dimensions", +} + +export enum MatrixDeleteMatrixParamsPopulateEnum1 { + Dimensions = "dimensions", +} + +export enum MentorshipRequestGetMentorshipRequestsParamsFieldsEnum { + CreatedAt = "createdAt", + UpdatedAt = "updatedAt", + PublishedAt = "publishedAt", +} + +export enum MentorshipRequestGetMentorshipRequestsParamsFiltersEnum { + CreatedAt = "createdAt", + UpdatedAt = "updatedAt", + PublishedAt = "publishedAt", +} + +export enum MentorshipRequestGetMentorshipRequestsParamsSortEnum { + CreatedAt = "createdAt", + UpdatedAt = "updatedAt", + PublishedAt = "publishedAt", +} + +export enum MentorshipRequestGetMentorshipRequestsParamsSortEnum1 { + CreatedAt = "createdAt", + UpdatedAt = "updatedAt", + PublishedAt = "publishedAt", +} + +export enum MentorshipRequestGetMentorshipRequestsParamsSortEnum2 { + CreatedAt = "createdAt", + UpdatedAt = "updatedAt", + PublishedAt = "publishedAt", +} + +export enum MentorshipRequestGetMentorshipRequestsParamsSortEnum3 { + Asc = "asc", + Desc = "desc", +} + +export enum MentorshipRequestGetMentorshipRequestsParamsSortEnum4 { + CreatedAt = "createdAt", + UpdatedAt = "updatedAt", + PublishedAt = "publishedAt", +} + +export enum MentorshipRequestGetMentorshipRequestsParamsSortEnum5 { + Asc = "asc", + Desc = "desc", +} + +/** Populate a single relation, component, file, or dynamic zone */ +export enum MentorshipRequestGetMentorshipRequestsParamsPopulateEnum { + Mentor = "mentor", + User = "user", +} + +export enum MentorshipRequestGetMentorshipRequestsParamsPopulateEnum1 { + Mentor = "mentor", + User = "user", +} + +export enum MentorshipRequestPostMentorshipRequestsParamsFieldsEnum { + CreatedAt = "createdAt", + UpdatedAt = "updatedAt", + PublishedAt = "publishedAt", +} + +/** Populate a single relation, component, file, or dynamic zone */ +export enum MentorshipRequestPostMentorshipRequestsParamsPopulateEnum { + Mentor = "mentor", + User = "user", +} + +export enum MentorshipRequestPostMentorshipRequestsParamsPopulateEnum1 { + Mentor = "mentor", + User = "user", +} + +export enum MentorshipRequestGetMentorshipRequestsByIdParamsFieldsEnum { + CreatedAt = "createdAt", + UpdatedAt = "updatedAt", + PublishedAt = "publishedAt", +} + +/** Populate a single relation, component, file, or dynamic zone */ +export enum MentorshipRequestGetMentorshipRequestsByIdParamsPopulateEnum { + Mentor = "mentor", + User = "user", +} + +export enum MentorshipRequestGetMentorshipRequestsByIdParamsPopulateEnum1 { + Mentor = "mentor", + User = "user", +} + +export enum MentorshipRequestGetMentorshipRequestsByIdParamsFiltersEnum { + CreatedAt = "createdAt", + UpdatedAt = "updatedAt", + PublishedAt = "publishedAt", +} + +export enum MentorshipRequestGetMentorshipRequestsByIdParamsSortEnum { + CreatedAt = "createdAt", + UpdatedAt = "updatedAt", + PublishedAt = "publishedAt", +} + +export enum MentorshipRequestGetMentorshipRequestsByIdParamsSortEnum1 { + CreatedAt = "createdAt", + UpdatedAt = "updatedAt", + PublishedAt = "publishedAt", +} + +export enum MentorshipRequestGetMentorshipRequestsByIdParamsSortEnum2 { + CreatedAt = "createdAt", + UpdatedAt = "updatedAt", + PublishedAt = "publishedAt", +} + +export enum MentorshipRequestGetMentorshipRequestsByIdParamsSortEnum3 { + Asc = "asc", + Desc = "desc", +} + +export enum MentorshipRequestGetMentorshipRequestsByIdParamsSortEnum4 { + CreatedAt = "createdAt", + UpdatedAt = "updatedAt", + PublishedAt = "publishedAt", +} + +export enum MentorshipRequestGetMentorshipRequestsByIdParamsSortEnum5 { + Asc = "asc", + Desc = "desc", +} + +export enum MentorshipRequestPutMentorshipRequestsByIdParamsFieldsEnum { + CreatedAt = "createdAt", + UpdatedAt = "updatedAt", + PublishedAt = "publishedAt", +} + +/** Populate a single relation, component, file, or dynamic zone */ +export enum MentorshipRequestPutMentorshipRequestsByIdParamsPopulateEnum { + Mentor = "mentor", + User = "user", +} + +export enum MentorshipRequestPutMentorshipRequestsByIdParamsPopulateEnum1 { + Mentor = "mentor", + User = "user", +} + +export enum MentorshipRequestDeleteMentorshipRequestsByIdParamsFieldsEnum { + CreatedAt = "createdAt", + UpdatedAt = "updatedAt", + PublishedAt = "publishedAt", +} + +/** Populate a single relation, component, file, or dynamic zone */ +export enum MentorshipRequestDeleteMentorshipRequestsByIdParamsPopulateEnum { + Mentor = "mentor", + User = "user", +} + +export enum MentorshipRequestDeleteMentorshipRequestsByIdParamsPopulateEnum1 { + Mentor = "mentor", + User = "user", +} + +export enum MentorshipRequestDeleteMentorshipRequestsByIdParamsFiltersEnum { + CreatedAt = "createdAt", + UpdatedAt = "updatedAt", + PublishedAt = "publishedAt", +} + +export enum ProgramGetProgramsParamsFieldsEnum { + Name = "name", + StartDate = "startDate", + EndDate = "endDate", + SponsorName = "sponsorName", + CreatedAt = "createdAt", + UpdatedAt = "updatedAt", + PublishedAt = "publishedAt", +} + +export enum ProgramGetProgramsParamsFiltersEnum { + Name = "name", + StartDate = "startDate", + EndDate = "endDate", + SponsorName = "sponsorName", + CreatedAt = "createdAt", + UpdatedAt = "updatedAt", + PublishedAt = "publishedAt", +} + +export enum ProgramGetProgramsParamsSortEnum { + Name = "name", + StartDate = "startDate", + EndDate = "endDate", + SponsorName = "sponsorName", + CreatedAt = "createdAt", + UpdatedAt = "updatedAt", + PublishedAt = "publishedAt", +} + +export enum ProgramGetProgramsParamsSortEnum1 { + Name = "name", + StartDate = "startDate", + EndDate = "endDate", + SponsorName = "sponsorName", + CreatedAt = "createdAt", + UpdatedAt = "updatedAt", + PublishedAt = "publishedAt", +} + +export enum ProgramGetProgramsParamsSortEnum2 { + Name = "name", + StartDate = "startDate", + EndDate = "endDate", + SponsorName = "sponsorName", + CreatedAt = "createdAt", + UpdatedAt = "updatedAt", + PublishedAt = "publishedAt", +} + +export enum ProgramGetProgramsParamsSortEnum3 { + Asc = "asc", + Desc = "desc", +} + +export enum ProgramGetProgramsParamsSortEnum4 { + Name = "name", + StartDate = "startDate", + EndDate = "endDate", + SponsorName = "sponsorName", + CreatedAt = "createdAt", + UpdatedAt = "updatedAt", + PublishedAt = "publishedAt", +} + +export enum ProgramGetProgramsParamsSortEnum5 { + Asc = "asc", + Desc = "desc", +} + +/** Populate a single relation, component, file, or dynamic zone */ +export enum ProgramGetProgramsParamsPopulateEnum { + Mentors = "mentors", + Users = "users", +} + +export enum ProgramGetProgramsParamsPopulateEnum1 { + Mentors = "mentors", + Users = "users", +} + +export enum ProgramPostProgramsParamsFieldsEnum { + Name = "name", + StartDate = "startDate", + EndDate = "endDate", + SponsorName = "sponsorName", + CreatedAt = "createdAt", + UpdatedAt = "updatedAt", + PublishedAt = "publishedAt", +} + +/** Populate a single relation, component, file, or dynamic zone */ +export enum ProgramPostProgramsParamsPopulateEnum { + Mentors = "mentors", + Users = "users", +} + +export enum ProgramPostProgramsParamsPopulateEnum1 { + Mentors = "mentors", + Users = "users", +} + +export enum ProgramGetProgramsByIdParamsFieldsEnum { + Name = "name", + StartDate = "startDate", + EndDate = "endDate", + SponsorName = "sponsorName", + CreatedAt = "createdAt", + UpdatedAt = "updatedAt", + PublishedAt = "publishedAt", +} + +/** Populate a single relation, component, file, or dynamic zone */ +export enum ProgramGetProgramsByIdParamsPopulateEnum { + Mentors = "mentors", + Users = "users", +} + +export enum ProgramGetProgramsByIdParamsPopulateEnum1 { + Mentors = "mentors", + Users = "users", +} + +export enum ProgramGetProgramsByIdParamsFiltersEnum { + Name = "name", + StartDate = "startDate", + EndDate = "endDate", + SponsorName = "sponsorName", + CreatedAt = "createdAt", + UpdatedAt = "updatedAt", + PublishedAt = "publishedAt", +} + +export enum ProgramGetProgramsByIdParamsSortEnum { + Name = "name", + StartDate = "startDate", + EndDate = "endDate", + SponsorName = "sponsorName", + CreatedAt = "createdAt", + UpdatedAt = "updatedAt", + PublishedAt = "publishedAt", +} + +export enum ProgramGetProgramsByIdParamsSortEnum1 { + Name = "name", + StartDate = "startDate", + EndDate = "endDate", + SponsorName = "sponsorName", + CreatedAt = "createdAt", + UpdatedAt = "updatedAt", + PublishedAt = "publishedAt", +} + +export enum ProgramGetProgramsByIdParamsSortEnum2 { + Name = "name", + StartDate = "startDate", + EndDate = "endDate", + SponsorName = "sponsorName", + CreatedAt = "createdAt", + UpdatedAt = "updatedAt", + PublishedAt = "publishedAt", +} + +export enum ProgramGetProgramsByIdParamsSortEnum3 { + Asc = "asc", + Desc = "desc", +} + +export enum ProgramGetProgramsByIdParamsSortEnum4 { + Name = "name", + StartDate = "startDate", + EndDate = "endDate", + SponsorName = "sponsorName", + CreatedAt = "createdAt", + UpdatedAt = "updatedAt", + PublishedAt = "publishedAt", +} + +export enum ProgramGetProgramsByIdParamsSortEnum5 { + Asc = "asc", + Desc = "desc", +} + +export enum ProgramPutProgramsByIdParamsFieldsEnum { + Name = "name", + StartDate = "startDate", + EndDate = "endDate", + SponsorName = "sponsorName", + CreatedAt = "createdAt", + UpdatedAt = "updatedAt", + PublishedAt = "publishedAt", +} + +/** Populate a single relation, component, file, or dynamic zone */ +export enum ProgramPutProgramsByIdParamsPopulateEnum { + Mentors = "mentors", + Users = "users", +} + +export enum ProgramPutProgramsByIdParamsPopulateEnum1 { + Mentors = "mentors", + Users = "users", +} + +export enum ProgramDeleteProgramsByIdParamsFieldsEnum { + Name = "name", + StartDate = "startDate", + EndDate = "endDate", + SponsorName = "sponsorName", + CreatedAt = "createdAt", + UpdatedAt = "updatedAt", + PublishedAt = "publishedAt", +} + +/** Populate a single relation, component, file, or dynamic zone */ +export enum ProgramDeleteProgramsByIdParamsPopulateEnum { + Mentors = "mentors", + Users = "users", +} + +export enum ProgramDeleteProgramsByIdParamsPopulateEnum1 { + Mentors = "mentors", + Users = "users", +} + +export enum ProgramDeleteProgramsByIdParamsFiltersEnum { + Name = "name", + StartDate = "startDate", + EndDate = "endDate", + SponsorName = "sponsorName", + CreatedAt = "createdAt", + UpdatedAt = "updatedAt", + PublishedAt = "publishedAt", +} + +export enum ReportGetReportsParamsFieldsEnum { + Deadline = "deadline", + Finished = "finished", + CreatedAt = "createdAt", + UpdatedAt = "updatedAt", + PublishedAt = "publishedAt", +} + +export enum ReportGetReportsParamsFiltersEnum { + Deadline = "deadline", + Finished = "finished", + CreatedAt = "createdAt", + UpdatedAt = "updatedAt", + PublishedAt = "publishedAt", +} + +export enum ReportGetReportsParamsSortEnum { + Deadline = "deadline", + Finished = "finished", + CreatedAt = "createdAt", + UpdatedAt = "updatedAt", + PublishedAt = "publishedAt", +} + +export enum ReportGetReportsParamsSortEnum1 { + Deadline = "deadline", + Finished = "finished", + CreatedAt = "createdAt", + UpdatedAt = "updatedAt", + PublishedAt = "publishedAt", +} + +export enum ReportGetReportsParamsSortEnum2 { + Deadline = "deadline", + Finished = "finished", + CreatedAt = "createdAt", + UpdatedAt = "updatedAt", + PublishedAt = "publishedAt", +} + +export enum ReportGetReportsParamsSortEnum3 { + Asc = "asc", + Desc = "desc", +} + +export enum ReportGetReportsParamsSortEnum4 { + Deadline = "deadline", + Finished = "finished", + CreatedAt = "createdAt", + UpdatedAt = "updatedAt", + PublishedAt = "publishedAt", +} + +export enum ReportGetReportsParamsSortEnum5 { + Asc = "asc", + Desc = "desc", +} + +/** Populate a single relation, component, file, or dynamic zone */ +export enum ReportGetReportsParamsPopulateEnum { + Evaluations = "evaluations", + User = "user", +} + +export enum ReportGetReportsParamsPopulateEnum1 { + Evaluations = "evaluations", + User = "user", +} + +/** + * A boolean field + * @default false + */ +export enum ReportPostReportsFinishedEnum { + Value0 = "0", + Value1 = "1", + T = "t", + True = "true", + F = "f", + False = "false", +} + +export enum ReportPostReportsParamsFieldsEnum { + Deadline = "deadline", + Finished = "finished", + CreatedAt = "createdAt", + UpdatedAt = "updatedAt", + PublishedAt = "publishedAt", +} + +/** Populate a single relation, component, file, or dynamic zone */ +export enum ReportPostReportsParamsPopulateEnum { + Evaluations = "evaluations", + User = "user", +} + +export enum ReportPostReportsParamsPopulateEnum1 { + Evaluations = "evaluations", + User = "user", +} + +export enum ReportGetReportsByIdParamsFieldsEnum { + Deadline = "deadline", + Finished = "finished", + CreatedAt = "createdAt", + UpdatedAt = "updatedAt", + PublishedAt = "publishedAt", +} + +/** Populate a single relation, component, file, or dynamic zone */ +export enum ReportGetReportsByIdParamsPopulateEnum { + Evaluations = "evaluations", + User = "user", +} + +export enum ReportGetReportsByIdParamsPopulateEnum1 { + Evaluations = "evaluations", + User = "user", +} + +export enum ReportGetReportsByIdParamsFiltersEnum { + Deadline = "deadline", + Finished = "finished", + CreatedAt = "createdAt", + UpdatedAt = "updatedAt", + PublishedAt = "publishedAt", +} + +export enum ReportGetReportsByIdParamsSortEnum { + Deadline = "deadline", + Finished = "finished", + CreatedAt = "createdAt", + UpdatedAt = "updatedAt", + PublishedAt = "publishedAt", +} + +export enum ReportGetReportsByIdParamsSortEnum1 { + Deadline = "deadline", + Finished = "finished", + CreatedAt = "createdAt", + UpdatedAt = "updatedAt", + PublishedAt = "publishedAt", +} + +export enum ReportGetReportsByIdParamsSortEnum2 { + Deadline = "deadline", + Finished = "finished", + CreatedAt = "createdAt", + UpdatedAt = "updatedAt", + PublishedAt = "publishedAt", +} + +export enum ReportGetReportsByIdParamsSortEnum3 { + Asc = "asc", + Desc = "desc", +} + +export enum ReportGetReportsByIdParamsSortEnum4 { + Deadline = "deadline", + Finished = "finished", + CreatedAt = "createdAt", + UpdatedAt = "updatedAt", + PublishedAt = "publishedAt", +} + +export enum ReportGetReportsByIdParamsSortEnum5 { + Asc = "asc", + Desc = "desc", +} + +/** + * A boolean field + * @default false + */ +export enum ReportPutReportsByIdFinishedEnum { + Value0 = "0", + Value1 = "1", + T = "t", + True = "true", + F = "f", + False = "false", +} + +export enum ReportPutReportsByIdParamsFieldsEnum { + Deadline = "deadline", + Finished = "finished", + CreatedAt = "createdAt", + UpdatedAt = "updatedAt", + PublishedAt = "publishedAt", +} + +/** Populate a single relation, component, file, or dynamic zone */ +export enum ReportPutReportsByIdParamsPopulateEnum { + Evaluations = "evaluations", + User = "user", +} + +export enum ReportPutReportsByIdParamsPopulateEnum1 { + Evaluations = "evaluations", + User = "user", +} + +export enum ReportDeleteReportsByIdParamsFieldsEnum { + Deadline = "deadline", + Finished = "finished", + CreatedAt = "createdAt", + UpdatedAt = "updatedAt", + PublishedAt = "publishedAt", +} + +/** Populate a single relation, component, file, or dynamic zone */ +export enum ReportDeleteReportsByIdParamsPopulateEnum { + Evaluations = "evaluations", + User = "user", +} + +export enum ReportDeleteReportsByIdParamsPopulateEnum1 { + Evaluations = "evaluations", + User = "user", +} + +export enum ReportDeleteReportsByIdParamsFiltersEnum { + Deadline = "deadline", + Finished = "finished", + CreatedAt = "createdAt", + UpdatedAt = "updatedAt", + PublishedAt = "publishedAt", +} + +export enum ContentTypeBuilderGetContentTypesKindEnum { + CollectionType = "collectionType", + SingleType = "singleType", +} + +export enum ContentTypeBuilderGetContentTypesParamsKindEnum { + CollectionType = "collectionType", + SingleType = "singleType", +} + +export enum ContentTypeBuilderGetContentTypesByUidKindEnum { + CollectionType = "collectionType", + SingleType = "singleType", +} + +export enum UploadGetFilesParamsSortEnum { + Asc = "asc", + Desc = "desc", +} + +export enum UploadGetFilesParamsSortEnum1 { + Asc = "asc", + Desc = "desc", +} + +export enum UsersPermissionsGetUsersParamsSortEnum { + Asc = "asc", + Desc = "desc", +} + +export enum UsersPermissionsGetUsersParamsSortEnum1 { + Asc = "asc", + Desc = "desc", +} + +import type { + AxiosInstance, + AxiosRequestConfig, + AxiosResponse, + HeadersDefaults, + ResponseType, +} from "axios"; +import axios from "axios"; + +export type QueryParamsType = Record; + +export interface FullRequestParams + extends Omit { + /** set parameter to `true` for call `securityWorker` for this request */ + secure?: boolean; + /** request path */ + path: string; + /** content type of request body */ + type?: ContentType; + /** query params */ + query?: QueryParamsType; + /** format of response (i.e. response.json() -> format: "json") */ + format?: ResponseType; + /** request body */ + body?: unknown; +} + +export type RequestParams = Omit< + FullRequestParams, + "body" | "method" | "query" | "path" +>; + +export interface ApiConfig + extends Omit { + securityWorker?: ( + securityData: SecurityDataType | null, + ) => Promise | AxiosRequestConfig | void; + secure?: boolean; + format?: ResponseType; +} + +export enum ContentType { + Json = "application/json", + JsonApi = "application/vnd.api+json", + FormData = "multipart/form-data", + UrlEncoded = "application/x-www-form-urlencoded", + Text = "text/plain", +} + +export class HttpClient { + public instance: AxiosInstance; + private securityData: SecurityDataType | null = null; + private securityWorker?: ApiConfig["securityWorker"]; + private secure?: boolean; + private format?: ResponseType; + + constructor({ + securityWorker, + secure, + format, + ...axiosConfig + }: ApiConfig = {}) { + this.instance = axios.create({ + ...axiosConfig, + baseURL: axiosConfig.baseURL || "", + }); + this.secure = secure; + this.format = format; + this.securityWorker = securityWorker; + } + + public setSecurityData = (data: SecurityDataType | null) => { + this.securityData = data; + }; + + protected mergeRequestParams( + params1: AxiosRequestConfig, + params2?: AxiosRequestConfig, + ): AxiosRequestConfig { + const method = params1.method || (params2 && params2.method); + + return { + ...this.instance.defaults, + ...params1, + ...(params2 || {}), + headers: { + ...((method && + this.instance.defaults.headers[ + method.toLowerCase() as keyof HeadersDefaults + ]) || + {}), + ...(params1.headers || {}), + ...((params2 && params2.headers) || {}), + }, + }; + } + + protected stringifyFormItem(formItem: unknown) { + if (typeof formItem === "object" && formItem !== null) { + return JSON.stringify(formItem); + } else { + return `${formItem}`; + } + } + + protected createFormData(input: Record): FormData { + if (input instanceof FormData) { + return input; + } + return Object.keys(input || {}).reduce((formData, key) => { + const property = input[key]; + const propertyContent: any[] = + property instanceof Array ? property : [property]; + + for (const formItem of propertyContent) { + const isFileType = formItem instanceof Blob || formItem instanceof File; + formData.append( + key, + isFileType ? formItem : this.stringifyFormItem(formItem), + ); + } + + return formData; + }, new FormData()); + } + + public request = async ({ + secure, + path, + type, + query, + format, + body, + ...params + }: FullRequestParams): Promise> => { + const secureParams = + ((typeof secure === "boolean" ? secure : this.secure) && + this.securityWorker && + (await this.securityWorker(this.securityData))) || + {}; + const requestParams = this.mergeRequestParams(params, secureParams); + const responseFormat = format || this.format || undefined; + + if ( + type === ContentType.FormData && + body && + body !== null && + typeof body === "object" + ) { + body = this.createFormData(body as Record); + } + + if ( + type === ContentType.Text && + body && + body !== null && + typeof body !== "string" + ) { + body = JSON.stringify(body); + } + + return this.instance.request({ + ...requestParams, + headers: { + ...(requestParams.headers || {}), + ...(type ? { "Content-Type": type } : {}), + }, + params: query, + responseType: responseFormat, + data: body, + url: path, + }); + }; +} + +/** + * @title server-2 + * @version 0.1.0 + * + * API documentation for server-2 v0.1.0 + */ +export class Api< + SecurityDataType extends unknown, +> extends HttpClient { + /** + * No description + * + * @tags upload + * @name UploadPost + * @request POST:/ + */ + uploadPost = ( + query?: { + /** + * @exclusiveMin 0 + * @max 9007199254740991 + */ + id?: number; + }, + params: RequestParams = {}, + ) => + this.request< + | { + /** + * @exclusiveMin 0 + * @max 9007199254740991 + */ + id: number; + /** + * @format uuid + * @pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$ + */ + documentId: string; + name: string; + alternativeText?: string | null; + caption?: string | null; + /** + * @min -9007199254740991 + * @max 9007199254740991 + */ + width?: number; + /** + * @min -9007199254740991 + * @max 9007199254740991 + */ + height?: number; + formats?: Record; + hash: string; + ext?: string; + mime: string; + size: number; + url: string; + previewUrl?: string | null; + folder?: number; + folderPath: string; + provider: string; + provider_metadata?: Record | null; + createdAt: string; + updatedAt: string; + createdBy?: number; + updatedBy?: number; + } + | { + /** + * @exclusiveMin 0 + * @max 9007199254740991 + */ + id: number; + /** + * @format uuid + * @pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$ + */ + documentId: string; + name: string; + alternativeText?: string | null; + caption?: string | null; + /** + * @min -9007199254740991 + * @max 9007199254740991 + */ + width?: number; + /** + * @min -9007199254740991 + * @max 9007199254740991 + */ + height?: number; + formats?: Record; + hash: string; + ext?: string; + mime: string; + size: number; + url: string; + previewUrl?: string | null; + folder?: number; + folderPath: string; + provider: string; + provider_metadata?: Record | null; + createdAt: string; + updatedAt: string; + createdBy?: number; + updatedBy?: number; + }[], + void + >({ + path: `/`, + method: "POST", + query: query, + format: "json", + ...params, + }); + + activities = { + /** + * No description + * + * @tags activity + * @name ActivityGetActivities + * @request GET:/activities + */ + activityGetActivities: ( + query?: { + /** The fields to return, this doesn't include populatable fields like relations, components, files, or dynamic zones */ + fields?: ActivityGetActivitiesParamsFieldsEnum[]; + /** Filters to apply to the query */ + filters?: Record; + _q?: string; + /** Pagination parameters */ + pagination?: { + /** Include total count in response */ + withCount?: boolean; + } & ( + | { + /** + * Page number (1-based) + * @exclusiveMin 0 + * @max 9007199254740991 + */ + page: number; + /** + * Number of entries per page + * @exclusiveMin 0 + * @max 9007199254740991 + */ + pageSize: number; + } + | { + /** + * Number of entries to skip + * @min 0 + * @max 9007199254740991 + */ + start: number; + /** + * Maximum number of entries to return + * @exclusiveMin 0 + * @max 9007199254740991 + */ + limit: number; + } + ); + /** Sort the result */ + sort?: + | ActivityGetActivitiesParamsSortEnum + | ActivityGetActivitiesParamsSortEnum1[] + | Record< + ActivityGetActivitiesParamsSortEnum2, + ActivityGetActivitiesParamsSortEnum3 + > + | Record< + ActivityGetActivitiesParamsSortEnum4, + ActivityGetActivitiesParamsSortEnum5 + >[]; + /** Populate all the first level relations, components, files, and dynamic zones for the entry */ + populate?: + | "*" + | ActivityGetActivitiesParamsPopulateEnum + | ActivityGetActivitiesParamsPopulateEnum1[]; + }, + params: RequestParams = {}, + ) => + this.request< + { + data: { + /** + * The document ID, represented by a UUID + * @format uuid + * @pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$ + */ + documentId: string; + id: number; + /** A date field */ + startDate: string; + /** A richtext field */ + notes?: string; + /** + * An integer field + * @min -9007199254740991 + * @max 9007199254740991 + */ + duration?: number; + /** A datetime field */ + createdAt?: string; + /** A datetime field */ + updatedAt?: string; + /** + * A datetime field + * @default "2025-09-12T06:37:57.244Z" + */ + publishedAt: string; + /** A relational field */ + type?: ApiActivityTypeActivityTypeDocument; + /** A relational field */ + dimension?: ApiDimensionDimensionDocument; + /** A relational field */ + mentor?: PluginUsersPermissionsUserDocument; + /** A relational field */ + user?: PluginUsersPermissionsUserDocument; + }[]; + }, + void + >({ + path: `/activities`, + method: "GET", + query: query, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags activity + * @name ActivityPostActivities + * @request POST:/activities + */ + activityPostActivities: ( + data: { + data: { + /** A date field */ + startDate: string; + /** A richtext field */ + notes?: string; + /** + * A float field + * @min -9007199254740991 + * @max 9007199254740991 + */ + duration?: number; + /** + * A datetime field + * @default "2025-09-12T06:37:57.295Z" + */ + publishedAt: string; + /** + * A relational field + * @format uuid + * @pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$ + */ + type?: string; + /** + * A relational field + * @format uuid + * @pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$ + */ + dimension?: string; + /** + * A relational field + * @format uuid + * @pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$ + */ + mentor?: string; + /** + * A relational field + * @format uuid + * @pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$ + */ + user?: string; + }; + }, + query?: { + /** The fields to return, this doesn't include populatable fields like relations, components, files, or dynamic zones */ + fields?: ActivityPostActivitiesParamsFieldsEnum[]; + /** Populate all the first level relations, components, files, and dynamic zones for the entry */ + populate?: + | "*" + | ActivityPostActivitiesParamsPopulateEnum + | ActivityPostActivitiesParamsPopulateEnum1[]; + }, + params: RequestParams = {}, + ) => + this.request< + { + data: { + /** + * The document ID, represented by a UUID + * @format uuid + * @pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$ + */ + documentId: string; + id: number; + /** A date field */ + startDate: string; + /** A richtext field */ + notes?: string; + /** + * An integer field + * @min -9007199254740991 + * @max 9007199254740991 + */ + duration?: number; + /** A datetime field */ + createdAt?: string; + /** A datetime field */ + updatedAt?: string; + /** + * A datetime field + * @default "2025-09-12T06:37:57.297Z" + */ + publishedAt: string; + /** A relational field */ + type?: ApiActivityTypeActivityTypeDocument; + /** A relational field */ + dimension?: ApiDimensionDimensionDocument; + /** A relational field */ + mentor?: PluginUsersPermissionsUserDocument; + /** A relational field */ + user?: PluginUsersPermissionsUserDocument; + }; + }, + void + >({ + path: `/activities`, + method: "POST", + query: query, + body: data, + type: ContentType.Json, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags activity + * @name ActivityGetActivitiesById + * @request GET:/activities/{id} + */ + activityGetActivitiesById: ( + id: string, + query?: { + /** The fields to return, this doesn't include populatable fields like relations, components, files, or dynamic zones */ + fields?: ActivityGetActivitiesByIdParamsFieldsEnum[]; + /** Populate all the first level relations, components, files, and dynamic zones for the entry */ + populate?: + | "*" + | ActivityGetActivitiesByIdParamsPopulateEnum + | ActivityGetActivitiesByIdParamsPopulateEnum1[]; + /** Filters to apply to the query */ + filters?: Record; + /** Sort the result */ + sort?: + | ActivityGetActivitiesByIdParamsSortEnum + | ActivityGetActivitiesByIdParamsSortEnum1[] + | Record< + ActivityGetActivitiesByIdParamsSortEnum2, + ActivityGetActivitiesByIdParamsSortEnum3 + > + | Record< + ActivityGetActivitiesByIdParamsSortEnum4, + ActivityGetActivitiesByIdParamsSortEnum5 + >[]; + }, + params: RequestParams = {}, + ) => + this.request< + { + data: { + /** + * The document ID, represented by a UUID + * @format uuid + * @pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$ + */ + documentId: string; + id: number; + /** A date field */ + startDate: string; + /** A richtext field */ + notes?: string; + /** + * An integer field + * @min -9007199254740991 + * @max 9007199254740991 + */ + duration?: number; + /** A datetime field */ + createdAt?: string; + /** A datetime field */ + updatedAt?: string; + /** + * A datetime field + * @default "2025-09-12T06:37:57.289Z" + */ + publishedAt: string; + /** A relational field */ + type?: ApiActivityTypeActivityTypeDocument; + /** A relational field */ + dimension?: ApiDimensionDimensionDocument; + /** A relational field */ + mentor?: PluginUsersPermissionsUserDocument; + /** A relational field */ + user?: PluginUsersPermissionsUserDocument; + }; + }, + void + >({ + path: `/activities/${id}`, + method: "GET", + query: query, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags activity + * @name ActivityPutActivitiesById + * @request PUT:/activities/{id} + */ + activityPutActivitiesById: ( + id: string, + data: { + data: { + /** A date field */ + startDate?: string; + /** A richtext field */ + notes?: string; + /** + * A float field + * @min -9007199254740991 + * @max 9007199254740991 + */ + duration?: number; + /** + * A datetime field + * @default "2025-09-12T06:37:57.302Z" + */ + publishedAt?: string; + /** + * A relational field + * @format uuid + * @pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$ + */ + type?: string; + /** + * A relational field + * @format uuid + * @pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$ + */ + dimension?: string; + /** + * A relational field + * @format uuid + * @pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$ + */ + mentor?: string; + /** + * A relational field + * @format uuid + * @pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$ + */ + user?: string; + }; + }, + query?: { + /** The fields to return, this doesn't include populatable fields like relations, components, files, or dynamic zones */ + fields?: ActivityPutActivitiesByIdParamsFieldsEnum[]; + /** Populate all the first level relations, components, files, and dynamic zones for the entry */ + populate?: + | "*" + | ActivityPutActivitiesByIdParamsPopulateEnum + | ActivityPutActivitiesByIdParamsPopulateEnum1[]; + }, + params: RequestParams = {}, + ) => + this.request< + { + data: { + /** + * The document ID, represented by a UUID + * @format uuid + * @pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$ + */ + documentId: string; + id: number; + /** A date field */ + startDate: string; + /** A richtext field */ + notes?: string; + /** + * An integer field + * @min -9007199254740991 + * @max 9007199254740991 + */ + duration?: number; + /** A datetime field */ + createdAt?: string; + /** A datetime field */ + updatedAt?: string; + /** + * A datetime field + * @default "2025-09-12T06:37:57.304Z" + */ + publishedAt: string; + /** A relational field */ + type?: ApiActivityTypeActivityTypeDocument; + /** A relational field */ + dimension?: ApiDimensionDimensionDocument; + /** A relational field */ + mentor?: PluginUsersPermissionsUserDocument; + /** A relational field */ + user?: PluginUsersPermissionsUserDocument; + }; + }, + void + >({ + path: `/activities/${id}`, + method: "PUT", + query: query, + body: data, + type: ContentType.Json, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags activity + * @name ActivityDeleteActivitiesById + * @request DELETE:/activities/{id} + */ + activityDeleteActivitiesById: ( + id: string, + query?: { + /** The fields to return, this doesn't include populatable fields like relations, components, files, or dynamic zones */ + fields?: ActivityDeleteActivitiesByIdParamsFieldsEnum[]; + /** Populate all the first level relations, components, files, and dynamic zones for the entry */ + populate?: + | "*" + | ActivityDeleteActivitiesByIdParamsPopulateEnum + | ActivityDeleteActivitiesByIdParamsPopulateEnum1[]; + /** Filters to apply to the query */ + filters?: Record; + }, + params: RequestParams = {}, + ) => + this.request< + { + data: { + /** + * The document ID, represented by a UUID + * @format uuid + * @pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$ + */ + documentId: string; + id: number; + /** A date field */ + startDate: string; + /** A richtext field */ + notes?: string; + /** + * An integer field + * @min -9007199254740991 + * @max 9007199254740991 + */ + duration?: number; + /** A datetime field */ + createdAt?: string; + /** A datetime field */ + updatedAt?: string; + /** + * A datetime field + * @default "2025-09-12T06:37:57.307Z" + */ + publishedAt: string; + /** A relational field */ + type?: ApiActivityTypeActivityTypeDocument; + /** A relational field */ + dimension?: ApiDimensionDimensionDocument; + /** A relational field */ + mentor?: PluginUsersPermissionsUserDocument; + /** A relational field */ + user?: PluginUsersPermissionsUserDocument; + }; + }, + void + >({ + path: `/activities/${id}`, + method: "DELETE", + query: query, + format: "json", + ...params, + }), + }; + activityTypes = { + /** + * No description + * + * @tags activity-type + * @name ActivityTypeGetActivityTypes + * @request GET:/activity-types + */ + activityTypeGetActivityTypes: ( + query?: { + /** The fields to return, this doesn't include populatable fields like relations, components, files, or dynamic zones */ + fields?: ActivityTypeGetActivityTypesParamsFieldsEnum[]; + /** Filters to apply to the query */ + filters?: Record; + _q?: string; + /** Pagination parameters */ + pagination?: { + /** Include total count in response */ + withCount?: boolean; + } & ( + | { + /** + * Page number (1-based) + * @exclusiveMin 0 + * @max 9007199254740991 + */ + page: number; + /** + * Number of entries per page + * @exclusiveMin 0 + * @max 9007199254740991 + */ + pageSize: number; + } + | { + /** + * Number of entries to skip + * @min 0 + * @max 9007199254740991 + */ + start: number; + /** + * Maximum number of entries to return + * @exclusiveMin 0 + * @max 9007199254740991 + */ + limit: number; + } + ); + /** Sort the result */ + sort?: + | ActivityTypeGetActivityTypesParamsSortEnum + | ActivityTypeGetActivityTypesParamsSortEnum1[] + | Record< + ActivityTypeGetActivityTypesParamsSortEnum2, + ActivityTypeGetActivityTypesParamsSortEnum3 + > + | Record< + ActivityTypeGetActivityTypesParamsSortEnum4, + ActivityTypeGetActivityTypesParamsSortEnum5 + >[]; + /** Populate all the first level relations, components, files, and dynamic zones for the entry */ + populate?: "*" | string | string[]; + }, + params: RequestParams = {}, + ) => + this.request< + { + data: { + /** + * The document ID, represented by a UUID + * @format uuid + * @pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$ + */ + documentId: string; + id: number; + /** A text field */ + name?: string; + /** A datetime field */ + createdAt?: string; + /** A datetime field */ + updatedAt?: string; + /** + * A datetime field + * @default "2025-09-12T06:37:57.313Z" + */ + publishedAt: string; + }[]; + }, + void + >({ + path: `/activity-types`, + method: "GET", + query: query, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags activity-type + * @name ActivityTypePostActivityTypes + * @request POST:/activity-types + */ + activityTypePostActivityTypes: ( + data: { + data: { + /** A text field */ + name?: string; + /** + * A datetime field + * @default "2025-09-12T06:38:03.737Z" + */ + publishedAt: string; + }; + }, + query?: { + /** The fields to return, this doesn't include populatable fields like relations, components, files, or dynamic zones */ + fields?: ActivityTypePostActivityTypesParamsFieldsEnum[]; + /** Populate all the first level relations, components, files, and dynamic zones for the entry */ + populate?: "*" | string | string[]; + }, + params: RequestParams = {}, + ) => + this.request< + { + data: { + /** + * The document ID, represented by a UUID + * @format uuid + * @pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$ + */ + documentId: string; + id: number; + /** A text field */ + name?: string; + /** A datetime field */ + createdAt?: string; + /** A datetime field */ + updatedAt?: string; + /** + * A datetime field + * @default "2025-09-12T06:37:57.327Z" + */ + publishedAt: string; + }; + }, + void + >({ + path: `/activity-types`, + method: "POST", + query: query, + body: data, + type: ContentType.Json, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags activity-type + * @name ActivityTypeGetActivityTypesById + * @request GET:/activity-types/{id} + */ + activityTypeGetActivityTypesById: ( + id: string, + query?: { + /** The fields to return, this doesn't include populatable fields like relations, components, files, or dynamic zones */ + fields?: ActivityTypeGetActivityTypesByIdParamsFieldsEnum[]; + /** Populate all the first level relations, components, files, and dynamic zones for the entry */ + populate?: "*" | string | string[]; + /** Filters to apply to the query */ + filters?: Record< + ActivityTypeGetActivityTypesByIdParamsFiltersEnum, + any + >; + /** Sort the result */ + sort?: + | ActivityTypeGetActivityTypesByIdParamsSortEnum + | ActivityTypeGetActivityTypesByIdParamsSortEnum1[] + | Record< + ActivityTypeGetActivityTypesByIdParamsSortEnum2, + ActivityTypeGetActivityTypesByIdParamsSortEnum3 + > + | Record< + ActivityTypeGetActivityTypesByIdParamsSortEnum4, + ActivityTypeGetActivityTypesByIdParamsSortEnum5 + >[]; + }, + params: RequestParams = {}, + ) => + this.request< + { + data: { + /** + * The document ID, represented by a UUID + * @format uuid + * @pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$ + */ + documentId: string; + id: number; + /** A text field */ + name?: string; + /** A datetime field */ + createdAt?: string; + /** A datetime field */ + updatedAt?: string; + /** + * A datetime field + * @default "2025-09-12T06:37:57.321Z" + */ + publishedAt: string; + }; + }, + void + >({ + path: `/activity-types/${id}`, + method: "GET", + query: query, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags activity-type + * @name ActivityTypePutActivityTypesById + * @request PUT:/activity-types/{id} + */ + activityTypePutActivityTypesById: ( + id: string, + data: { + data: { + /** A text field */ + name?: string; + /** + * A datetime field + * @default "2025-09-12T06:37:57.330Z" + */ + publishedAt?: string; + }; + }, + query?: { + /** The fields to return, this doesn't include populatable fields like relations, components, files, or dynamic zones */ + fields?: ActivityTypePutActivityTypesByIdParamsFieldsEnum[]; + /** Populate all the first level relations, components, files, and dynamic zones for the entry */ + populate?: "*" | string | string[]; + }, + params: RequestParams = {}, + ) => + this.request< + { + data: { + /** + * The document ID, represented by a UUID + * @format uuid + * @pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$ + */ + documentId: string; + id: number; + /** A text field */ + name?: string; + /** A datetime field */ + createdAt?: string; + /** A datetime field */ + updatedAt?: string; + /** + * A datetime field + * @default "2025-09-12T06:37:57.332Z" + */ + publishedAt: string; + }; + }, + void + >({ + path: `/activity-types/${id}`, + method: "PUT", + query: query, + body: data, + type: ContentType.Json, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags activity-type + * @name ActivityTypeDeleteActivityTypesById + * @request DELETE:/activity-types/{id} + */ + activityTypeDeleteActivityTypesById: ( + id: string, + query?: { + /** The fields to return, this doesn't include populatable fields like relations, components, files, or dynamic zones */ + fields?: ActivityTypeDeleteActivityTypesByIdParamsFieldsEnum[]; + /** Populate all the first level relations, components, files, and dynamic zones for the entry */ + populate?: "*" | string | string[]; + /** Filters to apply to the query */ + filters?: Record< + ActivityTypeDeleteActivityTypesByIdParamsFiltersEnum, + any + >; + }, + params: RequestParams = {}, + ) => + this.request< + { + data: { + /** + * The document ID, represented by a UUID + * @format uuid + * @pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$ + */ + documentId: string; + id: number; + /** A text field */ + name?: string; + /** A datetime field */ + createdAt?: string; + /** A datetime field */ + updatedAt?: string; + /** + * A datetime field + * @default "2025-09-12T06:37:57.336Z" + */ + publishedAt: string; + }; + }, + void + >({ + path: `/activity-types/${id}`, + method: "DELETE", + query: query, + format: "json", + ...params, + }), + }; + dimensions = { + /** + * No description + * + * @tags dimension + * @name DimensionGetDimensions + * @request GET:/dimensions + */ + dimensionGetDimensions: ( + query?: { + /** The fields to return, this doesn't include populatable fields like relations, components, files, or dynamic zones */ + fields?: DimensionGetDimensionsParamsFieldsEnum[]; + /** Filters to apply to the query */ + filters?: Record; + _q?: string; + /** Pagination parameters */ + pagination?: { + /** Include total count in response */ + withCount?: boolean; + } & ( + | { + /** + * Page number (1-based) + * @exclusiveMin 0 + * @max 9007199254740991 + */ + page: number; + /** + * Number of entries per page + * @exclusiveMin 0 + * @max 9007199254740991 + */ + pageSize: number; + } + | { + /** + * Number of entries to skip + * @min 0 + * @max 9007199254740991 + */ + start: number; + /** + * Maximum number of entries to return + * @exclusiveMin 0 + * @max 9007199254740991 + */ + limit: number; + } + ); + /** Sort the result */ + sort?: + | DimensionGetDimensionsParamsSortEnum + | DimensionGetDimensionsParamsSortEnum1[] + | Record< + DimensionGetDimensionsParamsSortEnum2, + DimensionGetDimensionsParamsSortEnum3 + > + | Record< + DimensionGetDimensionsParamsSortEnum4, + DimensionGetDimensionsParamsSortEnum5 + >[]; + /** Populate all the first level relations, components, files, and dynamic zones for the entry */ + populate?: + | "*" + | DimensionGetDimensionsParamsPopulateEnum + | DimensionGetDimensionsParamsPopulateEnum1[]; + }, + params: RequestParams = {}, + ) => + this.request< + { + data: { + /** + * The document ID, represented by a UUID + * @format uuid + * @pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$ + */ + documentId: string; + id: number; + /** A string field */ + name: string; + /** A string field */ + link?: string; + /** A datetime field */ + createdAt?: string; + /** A datetime field */ + updatedAt?: string; + /** + * A datetime field + * @default "2025-09-12T06:37:57.347Z" + */ + publishedAt: string; + /** A component field */ + quiz?: MatrixQuestionEntry[]; + /** A relational field */ + mentors?: PluginUsersPermissionsUserDocument[]; + /** A relational field */ + activities?: ApiActivityActivityDocument[]; + }[]; + }, + void + >({ + path: `/dimensions`, + method: "GET", + query: query, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags dimension + * @name DimensionPostDimensions + * @request POST:/dimensions + */ + dimensionPostDimensions: ( + data: { + data: { + /** A string field */ + name: string; + /** A string field */ + link?: string; + /** + * A datetime field + * @default "2025-09-12T06:37:57.365Z" + */ + publishedAt: string; + /** A component field */ + quiz?: any[]; + /** A relational field */ + mentors?: string[]; + /** A relational field */ + activities?: string[]; + }; + }, + query?: { + /** The fields to return, this doesn't include populatable fields like relations, components, files, or dynamic zones */ + fields?: DimensionPostDimensionsParamsFieldsEnum[]; + /** Populate all the first level relations, components, files, and dynamic zones for the entry */ + populate?: + | "*" + | DimensionPostDimensionsParamsPopulateEnum + | DimensionPostDimensionsParamsPopulateEnum1[]; + }, + params: RequestParams = {}, + ) => + this.request< + { + data: { + /** + * The document ID, represented by a UUID + * @format uuid + * @pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$ + */ + documentId: string; + id: number; + /** A string field */ + name: string; + /** A string field */ + link?: string; + /** A datetime field */ + createdAt?: string; + /** A datetime field */ + updatedAt?: string; + /** + * A datetime field + * @default "2025-09-12T06:37:57.367Z" + */ + publishedAt: string; + /** A component field */ + quiz?: MatrixQuestionEntry[]; + /** A relational field */ + mentors?: PluginUsersPermissionsUserDocument[]; + /** A relational field */ + activities?: ApiActivityActivityDocument[]; + }; + }, + void + >({ + path: `/dimensions`, + method: "POST", + query: query, + body: data, + type: ContentType.Json, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags dimension + * @name DimensionGetDimensionsById + * @request GET:/dimensions/{id} + */ + dimensionGetDimensionsById: ( + id: string, + query?: { + /** The fields to return, this doesn't include populatable fields like relations, components, files, or dynamic zones */ + fields?: DimensionGetDimensionsByIdParamsFieldsEnum[]; + /** Populate all the first level relations, components, files, and dynamic zones for the entry */ + populate?: + | "*" + | DimensionGetDimensionsByIdParamsPopulateEnum + | DimensionGetDimensionsByIdParamsPopulateEnum1[]; + /** Filters to apply to the query */ + filters?: Record; + /** Sort the result */ + sort?: + | DimensionGetDimensionsByIdParamsSortEnum + | DimensionGetDimensionsByIdParamsSortEnum1[] + | Record< + DimensionGetDimensionsByIdParamsSortEnum2, + DimensionGetDimensionsByIdParamsSortEnum3 + > + | Record< + DimensionGetDimensionsByIdParamsSortEnum4, + DimensionGetDimensionsByIdParamsSortEnum5 + >[]; + }, + params: RequestParams = {}, + ) => + this.request< + { + data: { + /** + * The document ID, represented by a UUID + * @format uuid + * @pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$ + */ + documentId: string; + id: number; + /** A string field */ + name: string; + /** A string field */ + link?: string; + /** A datetime field */ + createdAt?: string; + /** A datetime field */ + updatedAt?: string; + /** + * A datetime field + * @default "2025-09-12T06:37:57.354Z" + */ + publishedAt: string; + /** A component field */ + quiz?: MatrixQuestionEntry[]; + /** A relational field */ + mentors?: PluginUsersPermissionsUserDocument[]; + /** A relational field */ + activities?: ApiActivityActivityDocument[]; + }; + }, + void + >({ + path: `/dimensions/${id}`, + method: "GET", + query: query, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags dimension + * @name DimensionPutDimensionsById + * @request PUT:/dimensions/{id} + */ + dimensionPutDimensionsById: ( + id: string, + data: { + data: { + /** A string field */ + name?: string; + /** A string field */ + link?: string; + /** + * A datetime field + * @default "2025-09-12T06:37:57.370Z" + */ + publishedAt?: string; + /** A component field */ + quiz?: any[]; + /** A relational field */ + mentors?: string[]; + /** A relational field */ + activities?: string[]; + }; + }, + query?: { + /** The fields to return, this doesn't include populatable fields like relations, components, files, or dynamic zones */ + fields?: DimensionPutDimensionsByIdParamsFieldsEnum[]; + /** Populate all the first level relations, components, files, and dynamic zones for the entry */ + populate?: + | "*" + | DimensionPutDimensionsByIdParamsPopulateEnum + | DimensionPutDimensionsByIdParamsPopulateEnum1[]; + }, + params: RequestParams = {}, + ) => + this.request< + { + data: { + /** + * The document ID, represented by a UUID + * @format uuid + * @pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$ + */ + documentId: string; + id: number; + /** A string field */ + name: string; + /** A string field */ + link?: string; + /** A datetime field */ + createdAt?: string; + /** A datetime field */ + updatedAt?: string; + /** + * A datetime field + * @default "2025-09-12T06:37:57.371Z" + */ + publishedAt: string; + /** A component field */ + quiz?: MatrixQuestionEntry[]; + /** A relational field */ + mentors?: PluginUsersPermissionsUserDocument[]; + /** A relational field */ + activities?: ApiActivityActivityDocument[]; + }; + }, + void + >({ + path: `/dimensions/${id}`, + method: "PUT", + query: query, + body: data, + type: ContentType.Json, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags dimension + * @name DimensionDeleteDimensionsById + * @request DELETE:/dimensions/{id} + */ + dimensionDeleteDimensionsById: ( + id: string, + query?: { + /** The fields to return, this doesn't include populatable fields like relations, components, files, or dynamic zones */ + fields?: DimensionDeleteDimensionsByIdParamsFieldsEnum[]; + /** Populate all the first level relations, components, files, and dynamic zones for the entry */ + populate?: + | "*" + | DimensionDeleteDimensionsByIdParamsPopulateEnum + | DimensionDeleteDimensionsByIdParamsPopulateEnum1[]; + /** Filters to apply to the query */ + filters?: Record; + }, + params: RequestParams = {}, + ) => + this.request< + { + data: { + /** + * The document ID, represented by a UUID + * @format uuid + * @pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$ + */ + documentId: string; + id: number; + /** A string field */ + name: string; + /** A string field */ + link?: string; + /** A datetime field */ + createdAt?: string; + /** A datetime field */ + updatedAt?: string; + /** + * A datetime field + * @default "2025-09-12T06:37:57.374Z" + */ + publishedAt: string; + /** A component field */ + quiz?: MatrixQuestionEntry[]; + /** A relational field */ + mentors?: PluginUsersPermissionsUserDocument[]; + /** A relational field */ + activities?: ApiActivityActivityDocument[]; + }; + }, + void + >({ + path: `/dimensions/${id}`, + method: "DELETE", + query: query, + format: "json", + ...params, + }), + }; + domains = { + /** + * No description + * + * @tags domain + * @name DomainGetDomains + * @request GET:/domains + */ + domainGetDomains: ( + query?: { + /** The fields to return, this doesn't include populatable fields like relations, components, files, or dynamic zones */ + fields?: DomainGetDomainsParamsFieldsEnum[]; + /** Filters to apply to the query */ + filters?: Record; + _q?: string; + /** Pagination parameters */ + pagination?: { + /** Include total count in response */ + withCount?: boolean; + } & ( + | { + /** + * Page number (1-based) + * @exclusiveMin 0 + * @max 9007199254740991 + */ + page: number; + /** + * Number of entries per page + * @exclusiveMin 0 + * @max 9007199254740991 + */ + pageSize: number; + } + | { + /** + * Number of entries to skip + * @min 0 + * @max 9007199254740991 + */ + start: number; + /** + * Maximum number of entries to return + * @exclusiveMin 0 + * @max 9007199254740991 + */ + limit: number; + } + ); + /** Sort the result */ + sort?: + | DomainGetDomainsParamsSortEnum + | DomainGetDomainsParamsSortEnum1[] + | Record< + DomainGetDomainsParamsSortEnum2, + DomainGetDomainsParamsSortEnum3 + > + | Record< + DomainGetDomainsParamsSortEnum4, + DomainGetDomainsParamsSortEnum5 + >[]; + /** Populate all the first level relations, components, files, and dynamic zones for the entry */ + populate?: + | "*" + | DomainGetDomainsParamsPopulateEnum + | DomainGetDomainsParamsPopulateEnum1[]; + }, + params: RequestParams = {}, + ) => + this.request< + { + data: { + /** + * The document ID, represented by a UUID + * @format uuid + * @pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$ + */ + documentId: string; + id: number; + /** A string field */ + name?: string; + /** A datetime field */ + createdAt?: string; + /** A datetime field */ + updatedAt?: string; + /** + * A datetime field + * @default "2025-09-12T06:37:57.379Z" + */ + publishedAt: string; + /** A relational field */ + mentors?: PluginUsersPermissionsUserDocument[]; + }[]; + }, + void + >({ + path: `/domains`, + method: "GET", + query: query, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags domain + * @name DomainPostDomains + * @request POST:/domains + */ + domainPostDomains: ( + data: { + data: { + /** A string field */ + name?: string; + /** + * A datetime field + * @default "2025-09-12T06:37:57.388Z" + */ + publishedAt: string; + /** A relational field */ + mentors?: string[]; + }; + }, + query?: { + /** The fields to return, this doesn't include populatable fields like relations, components, files, or dynamic zones */ + fields?: DomainPostDomainsParamsFieldsEnum[]; + /** Populate all the first level relations, components, files, and dynamic zones for the entry */ + populate?: + | "*" + | DomainPostDomainsParamsPopulateEnum + | DomainPostDomainsParamsPopulateEnum1[]; + }, + params: RequestParams = {}, + ) => + this.request< + { + data: { + /** + * The document ID, represented by a UUID + * @format uuid + * @pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$ + */ + documentId: string; + id: number; + /** A string field */ + name?: string; + /** A datetime field */ + createdAt?: string; + /** A datetime field */ + updatedAt?: string; + /** + * A datetime field + * @default "2025-09-12T06:37:57.389Z" + */ + publishedAt: string; + /** A relational field */ + mentors?: PluginUsersPermissionsUserDocument[]; + }; + }, + void + >({ + path: `/domains`, + method: "POST", + query: query, + body: data, + type: ContentType.Json, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags domain + * @name DomainGetDomainsById + * @request GET:/domains/{id} + */ + domainGetDomainsById: ( + id: string, + query?: { + /** The fields to return, this doesn't include populatable fields like relations, components, files, or dynamic zones */ + fields?: DomainGetDomainsByIdParamsFieldsEnum[]; + /** Populate all the first level relations, components, files, and dynamic zones for the entry */ + populate?: + | "*" + | DomainGetDomainsByIdParamsPopulateEnum + | DomainGetDomainsByIdParamsPopulateEnum1[]; + /** Filters to apply to the query */ + filters?: Record; + /** Sort the result */ + sort?: + | DomainGetDomainsByIdParamsSortEnum + | DomainGetDomainsByIdParamsSortEnum1[] + | Record< + DomainGetDomainsByIdParamsSortEnum2, + DomainGetDomainsByIdParamsSortEnum3 + > + | Record< + DomainGetDomainsByIdParamsSortEnum4, + DomainGetDomainsByIdParamsSortEnum5 + >[]; + }, + params: RequestParams = {}, + ) => + this.request< + { + data: { + /** + * The document ID, represented by a UUID + * @format uuid + * @pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$ + */ + documentId: string; + id: number; + /** A string field */ + name?: string; + /** A datetime field */ + createdAt?: string; + /** A datetime field */ + updatedAt?: string; + /** + * A datetime field + * @default "2025-09-12T06:37:57.384Z" + */ + publishedAt: string; + /** A relational field */ + mentors?: PluginUsersPermissionsUserDocument[]; + }; + }, + void + >({ + path: `/domains/${id}`, + method: "GET", + query: query, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags domain + * @name DomainPutDomainsById + * @request PUT:/domains/{id} + */ + domainPutDomainsById: ( + id: string, + data: { + data: { + /** A string field */ + name?: string; + /** + * A datetime field + * @default "2025-09-12T06:37:57.391Z" + */ + publishedAt?: string; + /** A relational field */ + mentors?: string[]; + }; + }, + query?: { + /** The fields to return, this doesn't include populatable fields like relations, components, files, or dynamic zones */ + fields?: DomainPutDomainsByIdParamsFieldsEnum[]; + /** Populate all the first level relations, components, files, and dynamic zones for the entry */ + populate?: + | "*" + | DomainPutDomainsByIdParamsPopulateEnum + | DomainPutDomainsByIdParamsPopulateEnum1[]; + }, + params: RequestParams = {}, + ) => + this.request< + { + data: { + /** + * The document ID, represented by a UUID + * @format uuid + * @pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$ + */ + documentId: string; + id: number; + /** A string field */ + name?: string; + /** A datetime field */ + createdAt?: string; + /** A datetime field */ + updatedAt?: string; + /** + * A datetime field + * @default "2025-09-12T06:37:57.392Z" + */ + publishedAt: string; + /** A relational field */ + mentors?: PluginUsersPermissionsUserDocument[]; + }; + }, + void + >({ + path: `/domains/${id}`, + method: "PUT", + query: query, + body: data, + type: ContentType.Json, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags domain + * @name DomainDeleteDomainsById + * @request DELETE:/domains/{id} + */ + domainDeleteDomainsById: ( + id: string, + query?: { + /** The fields to return, this doesn't include populatable fields like relations, components, files, or dynamic zones */ + fields?: DomainDeleteDomainsByIdParamsFieldsEnum[]; + /** Populate all the first level relations, components, files, and dynamic zones for the entry */ + populate?: + | "*" + | DomainDeleteDomainsByIdParamsPopulateEnum + | DomainDeleteDomainsByIdParamsPopulateEnum1[]; + /** Filters to apply to the query */ + filters?: Record; + }, + params: RequestParams = {}, + ) => + this.request< + { + data: { + /** + * The document ID, represented by a UUID + * @format uuid + * @pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$ + */ + documentId: string; + id: number; + /** A string field */ + name?: string; + /** A datetime field */ + createdAt?: string; + /** A datetime field */ + updatedAt?: string; + /** + * A datetime field + * @default "2025-09-12T06:37:57.395Z" + */ + publishedAt: string; + /** A relational field */ + mentors?: PluginUsersPermissionsUserDocument[]; + }; + }, + void + >({ + path: `/domains/${id}`, + method: "DELETE", + query: query, + format: "json", + ...params, + }), + }; + evaluations = { + /** + * No description + * + * @tags evaluation + * @name EvaluationGetEvaluations + * @request GET:/evaluations + */ + evaluationGetEvaluations: ( + query?: { + /** The fields to return, this doesn't include populatable fields like relations, components, files, or dynamic zones */ + fields?: EvaluationGetEvaluationsParamsFieldsEnum[]; + /** Filters to apply to the query */ + filters?: Record; + _q?: string; + /** Pagination parameters */ + pagination?: { + /** Include total count in response */ + withCount?: boolean; + } & ( + | { + /** + * Page number (1-based) + * @exclusiveMin 0 + * @max 9007199254740991 + */ + page: number; + /** + * Number of entries per page + * @exclusiveMin 0 + * @max 9007199254740991 + */ + pageSize: number; + } + | { + /** + * Number of entries to skip + * @min 0 + * @max 9007199254740991 + */ + start: number; + /** + * Maximum number of entries to return + * @exclusiveMin 0 + * @max 9007199254740991 + */ + limit: number; + } + ); + /** Sort the result */ + sort?: + | EvaluationGetEvaluationsParamsSortEnum + | EvaluationGetEvaluationsParamsSortEnum1[] + | Record< + EvaluationGetEvaluationsParamsSortEnum2, + EvaluationGetEvaluationsParamsSortEnum3 + > + | Record< + EvaluationGetEvaluationsParamsSortEnum4, + EvaluationGetEvaluationsParamsSortEnum5 + >[]; + /** Populate all the first level relations, components, files, and dynamic zones for the entry */ + populate?: + | "*" + | EvaluationGetEvaluationsParamsPopulateEnum + | EvaluationGetEvaluationsParamsPopulateEnum1[]; + }, + params: RequestParams = {}, + ) => + this.request< + { + data: { + /** + * The document ID, represented by a UUID + * @format uuid + * @pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$ + */ + documentId: string; + id: number; + /** + * An email field + * @format email + * @pattern ^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$ + */ + email: string; + /** A datetime field */ + createdAt?: string; + /** A datetime field */ + updatedAt?: string; + /** + * A datetime field + * @default "2025-09-12T06:37:57.400Z" + */ + publishedAt: string; + /** A component field */ + dimensions?: EvaluationDimensionEntry[]; + /** A relational field */ + report?: ApiReportReportDocument; + }[]; + }, + void + >({ + path: `/evaluations`, + method: "GET", + query: query, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags evaluation + * @name EvaluationPostEvaluations + * @request POST:/evaluations + */ + evaluationPostEvaluations: ( + data: { + data: { + /** + * An email field + * @format email + * @pattern ^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$ + */ + email: string; + /** + * A datetime field + * @default "2025-09-12T06:37:57.408Z" + */ + publishedAt: string; + /** A component field */ + dimensions?: any[]; + /** + * A relational field + * @format uuid + * @pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$ + */ + report?: string; + }; + }, + query?: { + /** The fields to return, this doesn't include populatable fields like relations, components, files, or dynamic zones */ + fields?: EvaluationPostEvaluationsParamsFieldsEnum[]; + /** Populate all the first level relations, components, files, and dynamic zones for the entry */ + populate?: + | "*" + | EvaluationPostEvaluationsParamsPopulateEnum + | EvaluationPostEvaluationsParamsPopulateEnum1[]; + }, + params: RequestParams = {}, + ) => + this.request< + { + data: { + /** + * The document ID, represented by a UUID + * @format uuid + * @pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$ + */ + documentId: string; + id: number; + /** + * An email field + * @format email + * @pattern ^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$ + */ + email: string; + /** A datetime field */ + createdAt?: string; + /** A datetime field */ + updatedAt?: string; + /** + * A datetime field + * @default "2025-09-12T06:37:57.409Z" + */ + publishedAt: string; + /** A component field */ + dimensions?: EvaluationDimensionEntry[]; + /** A relational field */ + report?: ApiReportReportDocument; + }; + }, + void + >({ + path: `/evaluations`, + method: "POST", + query: query, + body: data, + type: ContentType.Json, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags evaluation + * @name EvaluationGetEvaluationsById + * @request GET:/evaluations/{id} + */ + evaluationGetEvaluationsById: ( + id: string, + query?: { + /** The fields to return, this doesn't include populatable fields like relations, components, files, or dynamic zones */ + fields?: EvaluationGetEvaluationsByIdParamsFieldsEnum[]; + /** Populate all the first level relations, components, files, and dynamic zones for the entry */ + populate?: + | "*" + | EvaluationGetEvaluationsByIdParamsPopulateEnum + | EvaluationGetEvaluationsByIdParamsPopulateEnum1[]; + /** Filters to apply to the query */ + filters?: Record; + /** Sort the result */ + sort?: + | EvaluationGetEvaluationsByIdParamsSortEnum + | EvaluationGetEvaluationsByIdParamsSortEnum1[] + | Record< + EvaluationGetEvaluationsByIdParamsSortEnum2, + EvaluationGetEvaluationsByIdParamsSortEnum3 + > + | Record< + EvaluationGetEvaluationsByIdParamsSortEnum4, + EvaluationGetEvaluationsByIdParamsSortEnum5 + >[]; + }, + params: RequestParams = {}, + ) => + this.request< + { + data: { + /** + * The document ID, represented by a UUID + * @format uuid + * @pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$ + */ + documentId: string; + id: number; + /** + * An email field + * @format email + * @pattern ^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$ + */ + email: string; + /** A datetime field */ + createdAt?: string; + /** A datetime field */ + updatedAt?: string; + /** + * A datetime field + * @default "2025-09-12T06:37:57.406Z" + */ + publishedAt: string; + /** A component field */ + dimensions?: EvaluationDimensionEntry[]; + /** A relational field */ + report?: ApiReportReportDocument; + }; + }, + void + >({ + path: `/evaluations/${id}`, + method: "GET", + query: query, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags evaluation + * @name EvaluationPutEvaluationsById + * @request PUT:/evaluations/{id} + */ + evaluationPutEvaluationsById: ( + id: string, + data: { + data: { + /** + * An email field + * @format email + * @pattern ^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$ + */ + email?: string; + /** + * A datetime field + * @default "2025-09-12T06:37:57.411Z" + */ + publishedAt?: string; + /** A component field */ + dimensions?: any[]; + /** + * A relational field + * @format uuid + * @pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$ + */ + report?: string; + }; + }, + query?: { + /** The fields to return, this doesn't include populatable fields like relations, components, files, or dynamic zones */ + fields?: EvaluationPutEvaluationsByIdParamsFieldsEnum[]; + /** Populate all the first level relations, components, files, and dynamic zones for the entry */ + populate?: + | "*" + | EvaluationPutEvaluationsByIdParamsPopulateEnum + | EvaluationPutEvaluationsByIdParamsPopulateEnum1[]; + }, + params: RequestParams = {}, + ) => + this.request< + { + data: { + /** + * The document ID, represented by a UUID + * @format uuid + * @pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$ + */ + documentId: string; + id: number; + /** + * An email field + * @format email + * @pattern ^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$ + */ + email: string; + /** A datetime field */ + createdAt?: string; + /** A datetime field */ + updatedAt?: string; + /** + * A datetime field + * @default "2025-09-12T06:37:57.413Z" + */ + publishedAt: string; + /** A component field */ + dimensions?: EvaluationDimensionEntry[]; + /** A relational field */ + report?: ApiReportReportDocument; + }; + }, + void + >({ + path: `/evaluations/${id}`, + method: "PUT", + query: query, + body: data, + type: ContentType.Json, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags evaluation + * @name EvaluationDeleteEvaluationsById + * @request DELETE:/evaluations/{id} + */ + evaluationDeleteEvaluationsById: ( + id: string, + query?: { + /** The fields to return, this doesn't include populatable fields like relations, components, files, or dynamic zones */ + fields?: EvaluationDeleteEvaluationsByIdParamsFieldsEnum[]; + /** Populate all the first level relations, components, files, and dynamic zones for the entry */ + populate?: + | "*" + | EvaluationDeleteEvaluationsByIdParamsPopulateEnum + | EvaluationDeleteEvaluationsByIdParamsPopulateEnum1[]; + /** Filters to apply to the query */ + filters?: Record; + }, + params: RequestParams = {}, + ) => + this.request< + { + data: { + /** + * The document ID, represented by a UUID + * @format uuid + * @pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$ + */ + documentId: string; + id: number; + /** + * An email field + * @format email + * @pattern ^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$ + */ + email: string; + /** A datetime field */ + createdAt?: string; + /** A datetime field */ + updatedAt?: string; + /** + * A datetime field + * @default "2025-09-12T06:37:57.416Z" + */ + publishedAt: string; + /** A component field */ + dimensions?: EvaluationDimensionEntry[]; + /** A relational field */ + report?: ApiReportReportDocument; + }; + }, + void + >({ + path: `/evaluations/${id}`, + method: "DELETE", + query: query, + format: "json", + ...params, + }), + }; + matrix = { + /** + * No description + * + * @tags matrix + * @name MatrixGetMatrix + * @request GET:/matrix + */ + matrixGetMatrix: ( + query?: { + /** The fields to return, this doesn't include populatable fields like relations, components, files, or dynamic zones */ + fields?: MatrixGetMatrixParamsFieldsEnum[]; + /** Populate all the first level relations, components, files, and dynamic zones for the entry */ + populate?: + | "*" + | MatrixGetMatrixParamsPopulateEnum + | MatrixGetMatrixParamsPopulateEnum1[]; + /** Filters to apply to the query */ + filters?: Record; + }, + params: RequestParams = {}, + ) => + this.request< + { + data: { + /** + * The document ID, represented by a UUID + * @format uuid + * @pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$ + */ + documentId: string; + id: number; + /** A datetime field */ + createdAt?: string; + /** A datetime field */ + updatedAt?: string; + /** + * A datetime field + * @default "2025-09-12T06:37:57.421Z" + */ + publishedAt: string; + /** A relational field */ + dimensions?: ApiDimensionDimensionDocument[]; + }; + }, + void + >({ + path: `/matrix`, + method: "GET", + query: query, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags matrix + * @name MatrixPutMatrix + * @request PUT:/matrix + */ + matrixPutMatrix: ( + data: { + data: { + /** + * A datetime field + * @default "2025-09-12T06:37:57.423Z" + */ + publishedAt?: string; + /** A relational field */ + dimensions?: string[]; + }; + }, + query?: { + /** The fields to return, this doesn't include populatable fields like relations, components, files, or dynamic zones */ + fields?: MatrixPutMatrixParamsFieldsEnum[]; + /** Populate all the first level relations, components, files, and dynamic zones for the entry */ + populate?: + | "*" + | MatrixPutMatrixParamsPopulateEnum + | MatrixPutMatrixParamsPopulateEnum1[]; + }, + params: RequestParams = {}, + ) => + this.request< + { + data: { + /** + * The document ID, represented by a UUID + * @format uuid + * @pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$ + */ + documentId: string; + id: number; + /** A datetime field */ + createdAt?: string; + /** A datetime field */ + updatedAt?: string; + /** + * A datetime field + * @default "2025-09-12T06:37:57.424Z" + */ + publishedAt: string; + /** A relational field */ + dimensions?: ApiDimensionDimensionDocument[]; + }; + }, + void + >({ + path: `/matrix`, + method: "PUT", + query: query, + body: data, + type: ContentType.Json, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags matrix + * @name MatrixDeleteMatrix + * @request DELETE:/matrix + */ + matrixDeleteMatrix: ( + query?: { + /** The fields to return, this doesn't include populatable fields like relations, components, files, or dynamic zones */ + fields?: MatrixDeleteMatrixParamsFieldsEnum[]; + /** Populate all the first level relations, components, files, and dynamic zones for the entry */ + populate?: + | "*" + | MatrixDeleteMatrixParamsPopulateEnum + | MatrixDeleteMatrixParamsPopulateEnum1[]; + }, + params: RequestParams = {}, + ) => + this.request< + { + data: { + /** + * The document ID, represented by a UUID + * @format uuid + * @pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$ + */ + documentId: string; + id: number; + /** A datetime field */ + createdAt?: string; + /** A datetime field */ + updatedAt?: string; + /** + * A datetime field + * @default "2025-09-12T06:37:57.426Z" + */ + publishedAt: string; + /** A relational field */ + dimensions?: ApiDimensionDimensionDocument[]; + }; + }, + void + >({ + path: `/matrix`, + method: "DELETE", + query: query, + format: "json", + ...params, + }), + }; + mentorshipRequests = { + /** + * No description + * + * @tags mentorship-request + * @name MentorshipRequestGetMentorshipRequests + * @request GET:/mentorship-requests + */ + mentorshipRequestGetMentorshipRequests: ( + query?: { + /** The fields to return, this doesn't include populatable fields like relations, components, files, or dynamic zones */ + fields?: MentorshipRequestGetMentorshipRequestsParamsFieldsEnum[]; + /** Filters to apply to the query */ + filters?: Record< + MentorshipRequestGetMentorshipRequestsParamsFiltersEnum, + any + >; + _q?: string; + /** Pagination parameters */ + pagination?: { + /** Include total count in response */ + withCount?: boolean; + } & ( + | { + /** + * Page number (1-based) + * @exclusiveMin 0 + * @max 9007199254740991 + */ + page: number; + /** + * Number of entries per page + * @exclusiveMin 0 + * @max 9007199254740991 + */ + pageSize: number; + } + | { + /** + * Number of entries to skip + * @min 0 + * @max 9007199254740991 + */ + start: number; + /** + * Maximum number of entries to return + * @exclusiveMin 0 + * @max 9007199254740991 + */ + limit: number; + } + ); + /** Sort the result */ + sort?: + | MentorshipRequestGetMentorshipRequestsParamsSortEnum + | MentorshipRequestGetMentorshipRequestsParamsSortEnum1[] + | Record< + MentorshipRequestGetMentorshipRequestsParamsSortEnum2, + MentorshipRequestGetMentorshipRequestsParamsSortEnum3 + > + | Record< + MentorshipRequestGetMentorshipRequestsParamsSortEnum4, + MentorshipRequestGetMentorshipRequestsParamsSortEnum5 + >[]; + /** Populate all the first level relations, components, files, and dynamic zones for the entry */ + populate?: + | "*" + | MentorshipRequestGetMentorshipRequestsParamsPopulateEnum + | MentorshipRequestGetMentorshipRequestsParamsPopulateEnum1[]; + }, + params: RequestParams = {}, + ) => + this.request< + { + data: { + /** + * The document ID, represented by a UUID + * @format uuid + * @pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$ + */ + documentId: string; + id: number; + /** A datetime field */ + createdAt?: string; + /** A datetime field */ + updatedAt?: string; + /** + * A datetime field + * @default "2025-09-12T06:37:57.430Z" + */ + publishedAt: string; + /** A relational field */ + mentor?: PluginUsersPermissionsUserDocument; + /** A relational field */ + user?: PluginUsersPermissionsUserDocument; + }[]; + }, + void + >({ + path: `/mentorship-requests`, + method: "GET", + query: query, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags mentorship-request + * @name MentorshipRequestPostMentorshipRequests + * @request POST:/mentorship-requests + */ + mentorshipRequestPostMentorshipRequests: ( + data: { + data: { + /** + * A datetime field + * @default "2025-09-12T06:37:57.438Z" + */ + publishedAt: string; + /** + * A relational field + * @format uuid + * @pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$ + */ + mentor?: string; + /** + * A relational field + * @format uuid + * @pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$ + */ + user?: string; + }; + }, + query?: { + /** The fields to return, this doesn't include populatable fields like relations, components, files, or dynamic zones */ + fields?: MentorshipRequestPostMentorshipRequestsParamsFieldsEnum[]; + /** Populate all the first level relations, components, files, and dynamic zones for the entry */ + populate?: + | "*" + | MentorshipRequestPostMentorshipRequestsParamsPopulateEnum + | MentorshipRequestPostMentorshipRequestsParamsPopulateEnum1[]; + }, + params: RequestParams = {}, + ) => + this.request< + { + data: { + /** + * The document ID, represented by a UUID + * @format uuid + * @pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$ + */ + documentId: string; + id: number; + /** A datetime field */ + createdAt?: string; + /** A datetime field */ + updatedAt?: string; + /** + * A datetime field + * @default "2025-09-12T06:37:57.439Z" + */ + publishedAt: string; + /** A relational field */ + mentor?: PluginUsersPermissionsUserDocument; + /** A relational field */ + user?: PluginUsersPermissionsUserDocument; + }; + }, + void + >({ + path: `/mentorship-requests`, + method: "POST", + query: query, + body: data, + type: ContentType.Json, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags mentorship-request + * @name MentorshipRequestGetMentorshipRequestsById + * @request GET:/mentorship-requests/{id} + */ + mentorshipRequestGetMentorshipRequestsById: ( + id: string, + query?: { + /** The fields to return, this doesn't include populatable fields like relations, components, files, or dynamic zones */ + fields?: MentorshipRequestGetMentorshipRequestsByIdParamsFieldsEnum[]; + /** Populate all the first level relations, components, files, and dynamic zones for the entry */ + populate?: + | "*" + | MentorshipRequestGetMentorshipRequestsByIdParamsPopulateEnum + | MentorshipRequestGetMentorshipRequestsByIdParamsPopulateEnum1[]; + /** Filters to apply to the query */ + filters?: Record< + MentorshipRequestGetMentorshipRequestsByIdParamsFiltersEnum, + any + >; + /** Sort the result */ + sort?: + | MentorshipRequestGetMentorshipRequestsByIdParamsSortEnum + | MentorshipRequestGetMentorshipRequestsByIdParamsSortEnum1[] + | Record< + MentorshipRequestGetMentorshipRequestsByIdParamsSortEnum2, + MentorshipRequestGetMentorshipRequestsByIdParamsSortEnum3 + > + | Record< + MentorshipRequestGetMentorshipRequestsByIdParamsSortEnum4, + MentorshipRequestGetMentorshipRequestsByIdParamsSortEnum5 + >[]; + }, + params: RequestParams = {}, + ) => + this.request< + { + data: { + /** + * The document ID, represented by a UUID + * @format uuid + * @pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$ + */ + documentId: string; + id: number; + /** A datetime field */ + createdAt?: string; + /** A datetime field */ + updatedAt?: string; + /** + * A datetime field + * @default "2025-09-12T06:37:57.433Z" + */ + publishedAt: string; + /** A relational field */ + mentor?: PluginUsersPermissionsUserDocument; + /** A relational field */ + user?: PluginUsersPermissionsUserDocument; + }; + }, + void + >({ + path: `/mentorship-requests/${id}`, + method: "GET", + query: query, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags mentorship-request + * @name MentorshipRequestPutMentorshipRequestsById + * @request PUT:/mentorship-requests/{id} + */ + mentorshipRequestPutMentorshipRequestsById: ( + id: string, + data: { + data: { + /** + * A datetime field + * @default "2025-09-12T06:37:57.440Z" + */ + publishedAt?: string; + /** + * A relational field + * @format uuid + * @pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$ + */ + mentor?: string; + /** + * A relational field + * @format uuid + * @pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$ + */ + user?: string; + }; + }, + query?: { + /** The fields to return, this doesn't include populatable fields like relations, components, files, or dynamic zones */ + fields?: MentorshipRequestPutMentorshipRequestsByIdParamsFieldsEnum[]; + /** Populate all the first level relations, components, files, and dynamic zones for the entry */ + populate?: + | "*" + | MentorshipRequestPutMentorshipRequestsByIdParamsPopulateEnum + | MentorshipRequestPutMentorshipRequestsByIdParamsPopulateEnum1[]; + }, + params: RequestParams = {}, + ) => + this.request< + { + data: { + /** + * The document ID, represented by a UUID + * @format uuid + * @pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$ + */ + documentId: string; + id: number; + /** A datetime field */ + createdAt?: string; + /** A datetime field */ + updatedAt?: string; + /** + * A datetime field + * @default "2025-09-12T06:37:57.441Z" + */ + publishedAt: string; + /** A relational field */ + mentor?: PluginUsersPermissionsUserDocument; + /** A relational field */ + user?: PluginUsersPermissionsUserDocument; + }; + }, + void + >({ + path: `/mentorship-requests/${id}`, + method: "PUT", + query: query, + body: data, + type: ContentType.Json, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags mentorship-request + * @name MentorshipRequestDeleteMentorshipRequestsById + * @request DELETE:/mentorship-requests/{id} + */ + mentorshipRequestDeleteMentorshipRequestsById: ( + id: string, + query?: { + /** The fields to return, this doesn't include populatable fields like relations, components, files, or dynamic zones */ + fields?: MentorshipRequestDeleteMentorshipRequestsByIdParamsFieldsEnum[]; + /** Populate all the first level relations, components, files, and dynamic zones for the entry */ + populate?: + | "*" + | MentorshipRequestDeleteMentorshipRequestsByIdParamsPopulateEnum + | MentorshipRequestDeleteMentorshipRequestsByIdParamsPopulateEnum1[]; + /** Filters to apply to the query */ + filters?: Record< + MentorshipRequestDeleteMentorshipRequestsByIdParamsFiltersEnum, + any + >; + }, + params: RequestParams = {}, + ) => + this.request< + { + data: { + /** + * The document ID, represented by a UUID + * @format uuid + * @pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$ + */ + documentId: string; + id: number; + /** A datetime field */ + createdAt?: string; + /** A datetime field */ + updatedAt?: string; + /** + * A datetime field + * @default "2025-09-12T06:37:57.442Z" + */ + publishedAt: string; + /** A relational field */ + mentor?: PluginUsersPermissionsUserDocument; + /** A relational field */ + user?: PluginUsersPermissionsUserDocument; + }; + }, + void + >({ + path: `/mentorship-requests/${id}`, + method: "DELETE", + query: query, + format: "json", + ...params, + }), + }; + programs = { + /** + * No description + * + * @tags program + * @name ProgramGetPrograms + * @request GET:/programs + */ + programGetPrograms: ( + query?: { + /** The fields to return, this doesn't include populatable fields like relations, components, files, or dynamic zones */ + fields?: ProgramGetProgramsParamsFieldsEnum[]; + /** Filters to apply to the query */ + filters?: Record; + _q?: string; + /** Pagination parameters */ + pagination?: { + /** Include total count in response */ + withCount?: boolean; + } & ( + | { + /** + * Page number (1-based) + * @exclusiveMin 0 + * @max 9007199254740991 + */ + page: number; + /** + * Number of entries per page + * @exclusiveMin 0 + * @max 9007199254740991 + */ + pageSize: number; + } + | { + /** + * Number of entries to skip + * @min 0 + * @max 9007199254740991 + */ + start: number; + /** + * Maximum number of entries to return + * @exclusiveMin 0 + * @max 9007199254740991 + */ + limit: number; + } + ); + /** Sort the result */ + sort?: + | ProgramGetProgramsParamsSortEnum + | ProgramGetProgramsParamsSortEnum1[] + | Record< + ProgramGetProgramsParamsSortEnum2, + ProgramGetProgramsParamsSortEnum3 + > + | Record< + ProgramGetProgramsParamsSortEnum4, + ProgramGetProgramsParamsSortEnum5 + >[]; + /** Populate all the first level relations, components, files, and dynamic zones for the entry */ + populate?: + | "*" + | ProgramGetProgramsParamsPopulateEnum + | ProgramGetProgramsParamsPopulateEnum1[]; + }, + params: RequestParams = {}, + ) => + this.request< + { + data: { + /** + * The document ID, represented by a UUID + * @format uuid + * @pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$ + */ + documentId: string; + id: number; + /** A string field */ + name: string; + /** A date field */ + startDate: string; + /** A date field */ + endDate: string; + /** A string field */ + sponsorName?: string; + /** A datetime field */ + createdAt?: string; + /** A datetime field */ + updatedAt?: string; + /** + * A datetime field + * @default "2025-09-12T06:37:57.449Z" + */ + publishedAt: string; + /** A relational field */ + mentors?: PluginUsersPermissionsUserDocument[]; + /** A relational field */ + users?: PluginUsersPermissionsUserDocument[]; + }[]; + }, + void + >({ + path: `/programs`, + method: "GET", + query: query, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags program + * @name ProgramPostPrograms + * @request POST:/programs + */ + programPostPrograms: ( + data: { + data: { + /** A string field */ + name: string; + /** A date field */ + startDate: string; + /** A date field */ + endDate: string; + /** A string field */ + sponsorName?: string; + /** + * A datetime field + * @default "2025-09-12T06:37:57.455Z" + */ + publishedAt: string; + /** A relational field */ + mentors?: string[]; + /** A relational field */ + users?: string[]; + }; + }, + query?: { + /** The fields to return, this doesn't include populatable fields like relations, components, files, or dynamic zones */ + fields?: ProgramPostProgramsParamsFieldsEnum[]; + /** Populate all the first level relations, components, files, and dynamic zones for the entry */ + populate?: + | "*" + | ProgramPostProgramsParamsPopulateEnum + | ProgramPostProgramsParamsPopulateEnum1[]; + }, + params: RequestParams = {}, + ) => + this.request< + { + data: { + /** + * The document ID, represented by a UUID + * @format uuid + * @pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$ + */ + documentId: string; + id: number; + /** A string field */ + name: string; + /** A date field */ + startDate: string; + /** A date field */ + endDate: string; + /** A string field */ + sponsorName?: string; + /** A datetime field */ + createdAt?: string; + /** A datetime field */ + updatedAt?: string; + /** + * A datetime field + * @default "2025-09-12T06:37:57.456Z" + */ + publishedAt: string; + /** A relational field */ + mentors?: PluginUsersPermissionsUserDocument[]; + /** A relational field */ + users?: PluginUsersPermissionsUserDocument[]; + }; + }, + void + >({ + path: `/programs`, + method: "POST", + query: query, + body: data, + type: ContentType.Json, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags program + * @name ProgramGetProgramsById + * @request GET:/programs/{id} + */ + programGetProgramsById: ( + id: string, + query?: { + /** The fields to return, this doesn't include populatable fields like relations, components, files, or dynamic zones */ + fields?: ProgramGetProgramsByIdParamsFieldsEnum[]; + /** Populate all the first level relations, components, files, and dynamic zones for the entry */ + populate?: + | "*" + | ProgramGetProgramsByIdParamsPopulateEnum + | ProgramGetProgramsByIdParamsPopulateEnum1[]; + /** Filters to apply to the query */ + filters?: Record; + /** Sort the result */ + sort?: + | ProgramGetProgramsByIdParamsSortEnum + | ProgramGetProgramsByIdParamsSortEnum1[] + | Record< + ProgramGetProgramsByIdParamsSortEnum2, + ProgramGetProgramsByIdParamsSortEnum3 + > + | Record< + ProgramGetProgramsByIdParamsSortEnum4, + ProgramGetProgramsByIdParamsSortEnum5 + >[]; + }, + params: RequestParams = {}, + ) => + this.request< + { + data: { + /** + * The document ID, represented by a UUID + * @format uuid + * @pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$ + */ + documentId: string; + id: number; + /** A string field */ + name: string; + /** A date field */ + startDate: string; + /** A date field */ + endDate: string; + /** A string field */ + sponsorName?: string; + /** A datetime field */ + createdAt?: string; + /** A datetime field */ + updatedAt?: string; + /** + * A datetime field + * @default "2025-09-12T06:37:57.453Z" + */ + publishedAt: string; + /** A relational field */ + mentors?: PluginUsersPermissionsUserDocument[]; + /** A relational field */ + users?: PluginUsersPermissionsUserDocument[]; + }; + }, + void + >({ + path: `/programs/${id}`, + method: "GET", + query: query, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags program + * @name ProgramPutProgramsById + * @request PUT:/programs/{id} + */ + programPutProgramsById: ( + id: string, + data: { + data: { + /** A string field */ + name?: string; + /** A date field */ + startDate?: string; + /** A date field */ + endDate?: string; + /** A string field */ + sponsorName?: string; + /** + * A datetime field + * @default "2025-09-12T06:37:57.458Z" + */ + publishedAt?: string; + /** A relational field */ + mentors?: string[]; + /** A relational field */ + users?: string[]; + }; + }, + query?: { + /** The fields to return, this doesn't include populatable fields like relations, components, files, or dynamic zones */ + fields?: ProgramPutProgramsByIdParamsFieldsEnum[]; + /** Populate all the first level relations, components, files, and dynamic zones for the entry */ + populate?: + | "*" + | ProgramPutProgramsByIdParamsPopulateEnum + | ProgramPutProgramsByIdParamsPopulateEnum1[]; + }, + params: RequestParams = {}, + ) => + this.request< + { + data: { + /** + * The document ID, represented by a UUID + * @format uuid + * @pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$ + */ + documentId: string; + id: number; + /** A string field */ + name: string; + /** A date field */ + startDate: string; + /** A date field */ + endDate: string; + /** A string field */ + sponsorName?: string; + /** A datetime field */ + createdAt?: string; + /** A datetime field */ + updatedAt?: string; + /** + * A datetime field + * @default "2025-09-12T06:37:57.463Z" + */ + publishedAt: string; + /** A relational field */ + mentors?: PluginUsersPermissionsUserDocument[]; + /** A relational field */ + users?: PluginUsersPermissionsUserDocument[]; + }; + }, + void + >({ + path: `/programs/${id}`, + method: "PUT", + query: query, + body: data, + type: ContentType.Json, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags program + * @name ProgramDeleteProgramsById + * @request DELETE:/programs/{id} + */ + programDeleteProgramsById: ( + id: string, + query?: { + /** The fields to return, this doesn't include populatable fields like relations, components, files, or dynamic zones */ + fields?: ProgramDeleteProgramsByIdParamsFieldsEnum[]; + /** Populate all the first level relations, components, files, and dynamic zones for the entry */ + populate?: + | "*" + | ProgramDeleteProgramsByIdParamsPopulateEnum + | ProgramDeleteProgramsByIdParamsPopulateEnum1[]; + /** Filters to apply to the query */ + filters?: Record; + }, + params: RequestParams = {}, + ) => + this.request< + { + data: { + /** + * The document ID, represented by a UUID + * @format uuid + * @pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$ + */ + documentId: string; + id: number; + /** A string field */ + name: string; + /** A date field */ + startDate: string; + /** A date field */ + endDate: string; + /** A string field */ + sponsorName?: string; + /** A datetime field */ + createdAt?: string; + /** A datetime field */ + updatedAt?: string; + /** + * A datetime field + * @default "2025-09-12T06:37:57.465Z" + */ + publishedAt: string; + /** A relational field */ + mentors?: PluginUsersPermissionsUserDocument[]; + /** A relational field */ + users?: PluginUsersPermissionsUserDocument[]; + }; + }, + void + >({ + path: `/programs/${id}`, + method: "DELETE", + query: query, + format: "json", + ...params, + }), + }; + reports = { + /** + * No description + * + * @tags report + * @name ReportGetReports + * @request GET:/reports + */ + reportGetReports: ( + query?: { + /** The fields to return, this doesn't include populatable fields like relations, components, files, or dynamic zones */ + fields?: ReportGetReportsParamsFieldsEnum[]; + /** Filters to apply to the query */ + filters?: Record; + _q?: string; + /** Pagination parameters */ + pagination?: { + /** Include total count in response */ + withCount?: boolean; + } & ( + | { + /** + * Page number (1-based) + * @exclusiveMin 0 + * @max 9007199254740991 + */ + page: number; + /** + * Number of entries per page + * @exclusiveMin 0 + * @max 9007199254740991 + */ + pageSize: number; + } + | { + /** + * Number of entries to skip + * @min 0 + * @max 9007199254740991 + */ + start: number; + /** + * Maximum number of entries to return + * @exclusiveMin 0 + * @max 9007199254740991 + */ + limit: number; + } + ); + /** Sort the result */ + sort?: + | ReportGetReportsParamsSortEnum + | ReportGetReportsParamsSortEnum1[] + | Record< + ReportGetReportsParamsSortEnum2, + ReportGetReportsParamsSortEnum3 + > + | Record< + ReportGetReportsParamsSortEnum4, + ReportGetReportsParamsSortEnum5 + >[]; + /** Populate all the first level relations, components, files, and dynamic zones for the entry */ + populate?: + | "*" + | ReportGetReportsParamsPopulateEnum + | ReportGetReportsParamsPopulateEnum1[]; + }, + params: RequestParams = {}, + ) => + this.request< + { + data: { + /** + * The document ID, represented by a UUID + * @format uuid + * @pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$ + */ + documentId: string; + id: number; + /** A date field */ + deadline: string; + /** + * A boolean field + * @default false + */ + finished: boolean; + /** A datetime field */ + createdAt?: string; + /** A datetime field */ + updatedAt?: string; + /** + * A datetime field + * @default "2025-09-12T06:37:57.469Z" + */ + publishedAt: string; + /** A relational field */ + evaluations?: ApiEvaluationEvaluationDocument[]; + /** A relational field */ + user?: PluginUsersPermissionsUserDocument; + }[]; + }, + void + >({ + path: `/reports`, + method: "GET", + query: query, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags report + * @name ReportPostReports + * @request POST:/reports + */ + reportPostReports: ( + data: { + data: { + /** A date field */ + deadline: string; + /** + * A boolean field + * @default false + */ + finished: ReportPostReportsFinishedEnum; + /** + * A datetime field + * @default "2025-09-12T06:37:57.474Z" + */ + publishedAt: string; + /** A relational field */ + evaluations?: string[]; + /** + * A relational field + * @format uuid + * @pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$ + */ + user?: string; + }; + }, + query?: { + /** The fields to return, this doesn't include populatable fields like relations, components, files, or dynamic zones */ + fields?: ReportPostReportsParamsFieldsEnum[]; + /** Populate all the first level relations, components, files, and dynamic zones for the entry */ + populate?: + | "*" + | ReportPostReportsParamsPopulateEnum + | ReportPostReportsParamsPopulateEnum1[]; + }, + params: RequestParams = {}, + ) => + this.request< + { + data: { + /** + * The document ID, represented by a UUID + * @format uuid + * @pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$ + */ + documentId: string; + id: number; + /** A date field */ + deadline: string; + /** + * A boolean field + * @default false + */ + finished: boolean; + /** A datetime field */ + createdAt?: string; + /** A datetime field */ + updatedAt?: string; + /** + * A datetime field + * @default "2025-09-12T06:37:57.475Z" + */ + publishedAt: string; + /** A relational field */ + evaluations?: ApiEvaluationEvaluationDocument[]; + /** A relational field */ + user?: PluginUsersPermissionsUserDocument; + }; + }, + void + >({ + path: `/reports`, + method: "POST", + query: query, + body: data, + type: ContentType.Json, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags report + * @name ReportGetReportsById + * @request GET:/reports/{id} + */ + reportGetReportsById: ( + id: string, + query?: { + /** The fields to return, this doesn't include populatable fields like relations, components, files, or dynamic zones */ + fields?: ReportGetReportsByIdParamsFieldsEnum[]; + /** Populate all the first level relations, components, files, and dynamic zones for the entry */ + populate?: + | "*" + | ReportGetReportsByIdParamsPopulateEnum + | ReportGetReportsByIdParamsPopulateEnum1[]; + /** Filters to apply to the query */ + filters?: Record; + /** Sort the result */ + sort?: + | ReportGetReportsByIdParamsSortEnum + | ReportGetReportsByIdParamsSortEnum1[] + | Record< + ReportGetReportsByIdParamsSortEnum2, + ReportGetReportsByIdParamsSortEnum3 + > + | Record< + ReportGetReportsByIdParamsSortEnum4, + ReportGetReportsByIdParamsSortEnum5 + >[]; + }, + params: RequestParams = {}, + ) => + this.request< + { + data: { + /** + * The document ID, represented by a UUID + * @format uuid + * @pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$ + */ + documentId: string; + id: number; + /** A date field */ + deadline: string; + /** + * A boolean field + * @default false + */ + finished: boolean; + /** A datetime field */ + createdAt?: string; + /** A datetime field */ + updatedAt?: string; + /** + * A datetime field + * @default "2025-09-12T06:37:57.472Z" + */ + publishedAt: string; + /** A relational field */ + evaluations?: ApiEvaluationEvaluationDocument[]; + /** A relational field */ + user?: PluginUsersPermissionsUserDocument; + }; + }, + void + >({ + path: `/reports/${id}`, + method: "GET", + query: query, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags report + * @name ReportPutReportsById + * @request PUT:/reports/{id} + */ + reportPutReportsById: ( + id: string, + data: { + data: { + /** A date field */ + deadline?: string; + /** + * A boolean field + * @default false + */ + finished?: ReportPutReportsByIdFinishedEnum; + /** + * A datetime field + * @default "2025-09-12T06:37:57.477Z" + */ + publishedAt?: string; + /** A relational field */ + evaluations?: string[]; + /** + * A relational field + * @format uuid + * @pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$ + */ + user?: string; + }; + }, + query?: { + /** The fields to return, this doesn't include populatable fields like relations, components, files, or dynamic zones */ + fields?: ReportPutReportsByIdParamsFieldsEnum[]; + /** Populate all the first level relations, components, files, and dynamic zones for the entry */ + populate?: + | "*" + | ReportPutReportsByIdParamsPopulateEnum + | ReportPutReportsByIdParamsPopulateEnum1[]; + }, + params: RequestParams = {}, + ) => + this.request< + { + data: { + /** + * The document ID, represented by a UUID + * @format uuid + * @pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$ + */ + documentId: string; + id: number; + /** A date field */ + deadline: string; + /** + * A boolean field + * @default false + */ + finished: boolean; + /** A datetime field */ + createdAt?: string; + /** A datetime field */ + updatedAt?: string; + /** + * A datetime field + * @default "2025-09-12T06:37:57.478Z" + */ + publishedAt: string; + /** A relational field */ + evaluations?: ApiEvaluationEvaluationDocument[]; + /** A relational field */ + user?: PluginUsersPermissionsUserDocument; + }; + }, + void + >({ + path: `/reports/${id}`, + method: "PUT", + query: query, + body: data, + type: ContentType.Json, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags report + * @name ReportDeleteReportsById + * @request DELETE:/reports/{id} + */ + reportDeleteReportsById: ( + id: string, + query?: { + /** The fields to return, this doesn't include populatable fields like relations, components, files, or dynamic zones */ + fields?: ReportDeleteReportsByIdParamsFieldsEnum[]; + /** Populate all the first level relations, components, files, and dynamic zones for the entry */ + populate?: + | "*" + | ReportDeleteReportsByIdParamsPopulateEnum + | ReportDeleteReportsByIdParamsPopulateEnum1[]; + /** Filters to apply to the query */ + filters?: Record; + }, + params: RequestParams = {}, + ) => + this.request< + { + data: { + /** + * The document ID, represented by a UUID + * @format uuid + * @pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$ + */ + documentId: string; + id: number; + /** A date field */ + deadline: string; + /** + * A boolean field + * @default false + */ + finished: boolean; + /** A datetime field */ + createdAt?: string; + /** A datetime field */ + updatedAt?: string; + /** + * A datetime field + * @default "2025-09-12T06:37:57.479Z" + */ + publishedAt: string; + /** A relational field */ + evaluations?: ApiEvaluationEvaluationDocument[]; + /** A relational field */ + user?: PluginUsersPermissionsUserDocument; + }; + }, + void + >({ + path: `/reports/${id}`, + method: "DELETE", + query: query, + format: "json", + ...params, + }), + }; + contentTypes = { + /** + * No description + * + * @tags content-type-builder + * @name ContentTypeBuilderGetContentTypes + * @request GET:/content-types + */ + contentTypeBuilderGetContentTypes: ( + query: { + kind: ContentTypeBuilderGetContentTypesParamsKindEnum; + }, + params: RequestParams = {}, + ) => + this.request< + { + data: { + /** @pattern ^((strapi|admin)::[\w-]+|(api|plugin)::[\w-]+\.[\w-]+)$ */ + uid: string; + plugin?: string; + apiID: string; + schema: { + displayName: string; + singularName: string; + pluralName: string; + description: string; + draftAndPublish: boolean; + kind: ContentTypeBuilderGetContentTypesKindEnum; + collectionName?: string; + attributes: Record< + string, + | { + type: "media"; + configurable?: false; + private?: boolean; + pluginOptions?: Record; + multiple: boolean; + required?: boolean; + allowedTypes?: string[]; + } + | { + type: "relation"; + configurable?: false; + private?: boolean; + pluginOptions?: Record; + relation: string; + /** @pattern ^((strapi|admin)::[\w-]+|(api|plugin)::[\w-]+\.[\w-]+)$ */ + target: string; + targetAttribute: string | null; + autoPopulate?: boolean; + mappedBy?: string; + inversedBy?: string; + } + | { + type: "component"; + configurable?: false; + private?: boolean; + pluginOptions?: Record; + component: string; + repeatable: boolean; + required?: boolean; + min?: number; + max?: number; + } + | { + type: "dynamiczone"; + configurable?: false; + private?: boolean; + pluginOptions?: Record; + components: string[]; + required?: boolean; + min?: number; + max?: number; + } + | { + type: "uid"; + configurable?: false; + private?: boolean; + pluginOptions?: Record; + targetField?: string; + } + | { + type: string; + required?: boolean; + unique?: boolean; + default?: any; + min?: number | string; + max?: number | string; + minLength?: number; + maxLength?: number; + enum?: string[]; + regex?: string; + private?: boolean; + configurable?: boolean; + pluginOptions?: Record; + } + >; + visible: boolean; + restrictRelationsTo: string[] | null; + pluginOptions?: Record; + options?: Record; + reviewWorkflows?: boolean; + populateCreatorFields?: boolean; + comment?: string; + version?: string; + }; + }[]; + }, + void + >({ + path: `/content-types`, + method: "GET", + query: query, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags content-type-builder + * @name ContentTypeBuilderGetContentTypesByUid + * @request GET:/content-types/{uid} + */ + contentTypeBuilderGetContentTypesByUid: ( + uid: string, + params: RequestParams = {}, + ) => + this.request< + { + data: { + /** @pattern ^((strapi|admin)::[\w-]+|(api|plugin)::[\w-]+\.[\w-]+)$ */ + uid: string; + plugin?: string; + apiID: string; + schema: { + displayName: string; + singularName: string; + pluralName: string; + description: string; + draftAndPublish: boolean; + kind: ContentTypeBuilderGetContentTypesByUidKindEnum; + collectionName?: string; + attributes: Record< + string, + | { + type: "media"; + configurable?: false; + private?: boolean; + pluginOptions?: Record; + multiple: boolean; + required?: boolean; + allowedTypes?: string[]; + } + | { + type: "relation"; + configurable?: false; + private?: boolean; + pluginOptions?: Record; + relation: string; + /** @pattern ^((strapi|admin)::[\w-]+|(api|plugin)::[\w-]+\.[\w-]+)$ */ + target: string; + targetAttribute: string | null; + autoPopulate?: boolean; + mappedBy?: string; + inversedBy?: string; + } + | { + type: "component"; + configurable?: false; + private?: boolean; + pluginOptions?: Record; + component: string; + repeatable: boolean; + required?: boolean; + min?: number; + max?: number; + } + | { + type: "dynamiczone"; + configurable?: false; + private?: boolean; + pluginOptions?: Record; + components: string[]; + required?: boolean; + min?: number; + max?: number; + } + | { + type: "uid"; + configurable?: false; + private?: boolean; + pluginOptions?: Record; + targetField?: string; + } + | { + type: string; + required?: boolean; + unique?: boolean; + default?: any; + min?: number | string; + max?: number | string; + minLength?: number; + maxLength?: number; + enum?: string[]; + regex?: string; + private?: boolean; + configurable?: boolean; + pluginOptions?: Record; + } + >; + visible: boolean; + restrictRelationsTo: string[] | null; + pluginOptions?: Record; + options?: Record; + reviewWorkflows?: boolean; + populateCreatorFields?: boolean; + comment?: string; + version?: string; + }; + }; + }, + void + >({ + path: `/content-types/${uid}`, + method: "GET", + format: "json", + ...params, + }), + }; + components = { + /** + * No description + * + * @tags content-type-builder + * @name ContentTypeBuilderGetComponents + * @request GET:/components + */ + contentTypeBuilderGetComponents: (params: RequestParams = {}) => + this.request< + { + data: { + /** @pattern ^[\w-]+\.[\w-]+$ */ + uid: string; + category: string; + apiId: string; + schema: { + displayName: string; + description: string; + icon?: string; + connection?: string; + collectionName?: string; + attributes: Record< + string, + | { + type: "media"; + configurable?: false; + private?: boolean; + pluginOptions?: Record; + multiple: boolean; + required?: boolean; + allowedTypes?: string[]; + } + | { + type: "relation"; + configurable?: false; + private?: boolean; + pluginOptions?: Record; + relation: string; + /** @pattern ^((strapi|admin)::[\w-]+|(api|plugin)::[\w-]+\.[\w-]+)$ */ + target: string; + targetAttribute: string | null; + autoPopulate?: boolean; + mappedBy?: string; + inversedBy?: string; + } + | { + type: "component"; + configurable?: false; + private?: boolean; + pluginOptions?: Record; + component: string; + repeatable: boolean; + required?: boolean; + min?: number; + max?: number; + } + | { + type: "dynamiczone"; + configurable?: false; + private?: boolean; + pluginOptions?: Record; + components: string[]; + required?: boolean; + min?: number; + max?: number; + } + | { + type: "uid"; + configurable?: false; + private?: boolean; + pluginOptions?: Record; + targetField?: string; + } + | { + type: string; + required?: boolean; + unique?: boolean; + default?: any; + min?: number | string; + max?: number | string; + minLength?: number; + maxLength?: number; + enum?: string[]; + regex?: string; + private?: boolean; + configurable?: boolean; + pluginOptions?: Record; + } + >; + pluginOptions?: Record; + }; + }[]; + }, + void + >({ + path: `/components`, + method: "GET", + format: "json", + ...params, + }), + + /** + * No description + * + * @tags content-type-builder + * @name ContentTypeBuilderGetComponentsByUid + * @request GET:/components/{uid} + */ + contentTypeBuilderGetComponentsByUid: ( + uid: string, + params: RequestParams = {}, + ) => + this.request< + { + data: { + /** @pattern ^[\w-]+\.[\w-]+$ */ + uid: string; + category: string; + apiId: string; + schema: { + displayName: string; + description: string; + icon?: string; + connection?: string; + collectionName?: string; + attributes: Record< + string, + | { + type: "media"; + configurable?: false; + private?: boolean; + pluginOptions?: Record; + multiple: boolean; + required?: boolean; + allowedTypes?: string[]; + } + | { + type: "relation"; + configurable?: false; + private?: boolean; + pluginOptions?: Record; + relation: string; + /** @pattern ^((strapi|admin)::[\w-]+|(api|plugin)::[\w-]+\.[\w-]+)$ */ + target: string; + targetAttribute: string | null; + autoPopulate?: boolean; + mappedBy?: string; + inversedBy?: string; + } + | { + type: "component"; + configurable?: false; + private?: boolean; + pluginOptions?: Record; + component: string; + repeatable: boolean; + required?: boolean; + min?: number; + max?: number; + } + | { + type: "dynamiczone"; + configurable?: false; + private?: boolean; + pluginOptions?: Record; + components: string[]; + required?: boolean; + min?: number; + max?: number; + } + | { + type: "uid"; + configurable?: false; + private?: boolean; + pluginOptions?: Record; + targetField?: string; + } + | { + type: string; + required?: boolean; + unique?: boolean; + default?: any; + min?: number | string; + max?: number | string; + minLength?: number; + maxLength?: number; + enum?: string[]; + regex?: string; + private?: boolean; + configurable?: boolean; + pluginOptions?: Record; + } + >; + pluginOptions?: Record; + }; + }; + }, + void + >({ + path: `/components/${uid}`, + method: "GET", + format: "json", + ...params, + }), + }; + files = { + /** + * No description + * + * @tags upload + * @name UploadGetFiles + * @request GET:/files + */ + uploadGetFiles: ( + query?: { + /** Select specific fields to return in the response */ + fields?: string | string[]; + /** Specify which relations to populate in the response */ + populate?: "*" | string | string[] | Record; + /** Sort the results by specified fields */ + sort?: + | string + | string[] + | Record + | Record[]; + /** Pagination parameters */ + pagination?: { + /** Include total count in response */ + withCount?: boolean; + } & ( + | { + /** + * Page number (1-based) + * @exclusiveMin 0 + * @max 9007199254740991 + */ + page: number; + /** + * Number of entries per page + * @exclusiveMin 0 + * @max 9007199254740991 + */ + pageSize: number; + } + | { + /** + * Number of entries to skip + * @min 0 + * @max 9007199254740991 + */ + start: number; + /** + * Maximum number of entries to return + * @exclusiveMin 0 + * @max 9007199254740991 + */ + limit: number; + } + ); + /** Apply filters to the query */ + filters?: Record; + }, + params: RequestParams = {}, + ) => + this.request< + { + /** + * @exclusiveMin 0 + * @max 9007199254740991 + */ + id: number; + /** + * @format uuid + * @pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$ + */ + documentId: string; + name: string; + alternativeText?: string | null; + caption?: string | null; + /** + * @min -9007199254740991 + * @max 9007199254740991 + */ + width?: number; + /** + * @min -9007199254740991 + * @max 9007199254740991 + */ + height?: number; + formats?: Record; + hash: string; + ext?: string; + mime: string; + size: number; + url: string; + previewUrl?: string | null; + folder?: number; + folderPath: string; + provider: string; + provider_metadata?: Record | null; + createdAt: string; + updatedAt: string; + createdBy?: number; + updatedBy?: number; + }[], + void + >({ + path: `/files`, + method: "GET", + query: query, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags upload + * @name UploadGetFilesById + * @request GET:/files/{id} + */ + uploadGetFilesById: ( + id: number, + query?: { + /** Select specific fields to return in the response */ + fields?: string | string[]; + /** Specify which relations to populate in the response */ + populate?: "*" | string | string[] | Record; + }, + params: RequestParams = {}, + ) => + this.request< + { + /** + * @exclusiveMin 0 + * @max 9007199254740991 + */ + id: number; + /** + * @format uuid + * @pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$ + */ + documentId: string; + name: string; + alternativeText?: string | null; + caption?: string | null; + /** + * @min -9007199254740991 + * @max 9007199254740991 + */ + width?: number; + /** + * @min -9007199254740991 + * @max 9007199254740991 + */ + height?: number; + formats?: Record; + hash: string; + ext?: string; + mime: string; + size: number; + url: string; + previewUrl?: string | null; + folder?: number; + folderPath: string; + provider: string; + provider_metadata?: Record | null; + createdAt: string; + updatedAt: string; + createdBy?: number; + updatedBy?: number; + }, + void + >({ + path: `/files/${id}`, + method: "GET", + query: query, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags upload + * @name UploadDeleteFilesById + * @request DELETE:/files/{id} + */ + uploadDeleteFilesById: (id: number, params: RequestParams = {}) => + this.request< + { + /** + * @exclusiveMin 0 + * @max 9007199254740991 + */ + id: number; + /** + * @format uuid + * @pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$ + */ + documentId: string; + name: string; + alternativeText?: string | null; + caption?: string | null; + /** + * @min -9007199254740991 + * @max 9007199254740991 + */ + width?: number; + /** + * @min -9007199254740991 + * @max 9007199254740991 + */ + height?: number; + formats?: Record; + hash: string; + ext?: string; + mime: string; + size: number; + url: string; + previewUrl?: string | null; + folder?: number; + folderPath: string; + provider: string; + provider_metadata?: Record | null; + createdAt: string; + updatedAt: string; + createdBy?: number; + updatedBy?: number; + }, + void + >({ + path: `/files/${id}`, + method: "DELETE", + format: "json", + ...params, + }), + }; + locales = { + /** + * No description + * + * @tags i18n + * @name I18NGetLocales + * @request GET:/locales + */ + i18NGetLocales: (params: RequestParams = {}) => + this.request< + { + /** + * @exclusiveMin 0 + * @max 9007199254740991 + */ + id: number; + /** + * @format uuid + * @pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$ + */ + documentId: string; + name: string; + /** + * @minLength 2 + * @maxLength 2 + */ + code: string; + createdAt: string; + updatedAt: string; + publishedAt: string | null; + isDefault: boolean; + }[], + void + >({ + path: `/locales`, + method: "GET", + format: "json", + ...params, + }), + }; + connect = { + /** + * No description + * + * @tags users-permissions + * @name UsersPermissionsGetConnect + * @request GET:/connect/(.*) + */ + usersPermissionsGetConnect: (params: RequestParams = {}) => + this.request({ + path: `/connect/(.*)`, + method: "GET", + ...params, + }), + }; + auth = { + /** + * No description + * + * @tags users-permissions + * @name UsersPermissionsPostAuthLocal + * @request POST:/auth/local + */ + usersPermissionsPostAuthLocal: ( + data: { + identifier: string; + password: string; + }, + params: RequestParams = {}, + ) => + this.request< + { + jwt: string; + user: { + id: number; + documentId: string; + username: string; + email: string; + provider: string; + confirmed: boolean; + blocked: boolean; + role?: + | number + | { + id: number; + name: string; + description: string | null; + type: string; + createdAt: string; + updatedAt: string; + }; + createdAt: string; + updatedAt: string; + publishedAt: string; + }; + }, + void + >({ + path: `/auth/local`, + method: "POST", + body: data, + type: ContentType.Json, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags users-permissions + * @name UsersPermissionsPostAuthLocalRegister + * @request POST:/auth/local/register + */ + usersPermissionsPostAuthLocalRegister: ( + data: { + username: string; + /** + * @format email + * @pattern ^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$ + */ + email: string; + password: string; + }, + params: RequestParams = {}, + ) => + this.request< + | { + jwt: string; + user: { + id: number; + documentId: string; + username: string; + email: string; + provider: string; + confirmed: boolean; + blocked: boolean; + role?: + | number + | { + id: number; + name: string; + description: string | null; + type: string; + createdAt: string; + updatedAt: string; + }; + createdAt: string; + updatedAt: string; + publishedAt: string; + }; + } + | { + user: { + id: number; + documentId: string; + username: string; + email: string; + provider: string; + confirmed: boolean; + blocked: boolean; + role?: + | number + | { + id: number; + name: string; + description: string | null; + type: string; + createdAt: string; + updatedAt: string; + }; + createdAt: string; + updatedAt: string; + publishedAt: string; + }; + }, + void + >({ + path: `/auth/local/register`, + method: "POST", + body: data, + type: ContentType.Json, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags users-permissions + * @name UsersPermissionsGetAuthByProviderCallback + * @request GET:/auth/{provider}/callback + */ + usersPermissionsGetAuthByProviderCallback: ( + provider: string, + params: RequestParams = {}, + ) => + this.request< + { + jwt: string; + user: { + id: number; + documentId: string; + username: string; + email: string; + provider: string; + confirmed: boolean; + blocked: boolean; + role?: + | number + | { + id: number; + name: string; + description: string | null; + type: string; + createdAt: string; + updatedAt: string; + }; + createdAt: string; + updatedAt: string; + publishedAt: string; + }; + }, + void + >({ + path: `/auth/${provider}/callback`, + method: "GET", + format: "json", + ...params, + }), + + /** + * No description + * + * @tags users-permissions + * @name UsersPermissionsPostAuthForgotPassword + * @request POST:/auth/forgot-password + */ + usersPermissionsPostAuthForgotPassword: ( + data: { + /** + * @format email + * @pattern ^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$ + */ + email: string; + }, + params: RequestParams = {}, + ) => + this.request< + { + ok: boolean; + }, + void + >({ + path: `/auth/forgot-password`, + method: "POST", + body: data, + type: ContentType.Json, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags users-permissions + * @name UsersPermissionsPostAuthResetPassword + * @request POST:/auth/reset-password + */ + usersPermissionsPostAuthResetPassword: ( + data: { + code: string; + password: string; + passwordConfirmation: string; + }, + params: RequestParams = {}, + ) => + this.request< + { + jwt: string; + user: { + id: number; + documentId: string; + username: string; + email: string; + provider: string; + confirmed: boolean; + blocked: boolean; + role?: + | number + | { + id: number; + name: string; + description: string | null; + type: string; + createdAt: string; + updatedAt: string; + }; + createdAt: string; + updatedAt: string; + publishedAt: string; + }; + }, + void + >({ + path: `/auth/reset-password`, + method: "POST", + body: data, + type: ContentType.Json, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags users-permissions + * @name UsersPermissionsGetAuthEmailConfirmation + * @request GET:/auth/email-confirmation + */ + usersPermissionsGetAuthEmailConfirmation: (params: RequestParams = {}) => + this.request({ + path: `/auth/email-confirmation`, + method: "GET", + ...params, + }), + + /** + * No description + * + * @tags users-permissions + * @name UsersPermissionsPostAuthSendEmailConfirmation + * @request POST:/auth/send-email-confirmation + */ + usersPermissionsPostAuthSendEmailConfirmation: ( + data: { + /** + * @format email + * @pattern ^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$ + */ + email: string; + }, + params: RequestParams = {}, + ) => + this.request< + { + email: string; + sent: boolean; + }, + void + >({ + path: `/auth/send-email-confirmation`, + method: "POST", + body: data, + type: ContentType.Json, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags users-permissions + * @name UsersPermissionsPostAuthChangePassword + * @request POST:/auth/change-password + */ + usersPermissionsPostAuthChangePassword: ( + data: { + currentPassword: string; + password: string; + passwordConfirmation: string; + }, + params: RequestParams = {}, + ) => + this.request< + { + jwt: string; + user: { + id: number; + documentId: string; + username: string; + email: string; + provider: string; + confirmed: boolean; + blocked: boolean; + role?: + | number + | { + id: number; + name: string; + description: string | null; + type: string; + createdAt: string; + updatedAt: string; + }; + createdAt: string; + updatedAt: string; + publishedAt: string; + }; + }, + void + >({ + path: `/auth/change-password`, + method: "POST", + body: data, + type: ContentType.Json, + format: "json", + ...params, + }), + }; + users = { + /** + * No description + * + * @tags users-permissions + * @name UsersPermissionsGetUsersCount + * @request GET:/users/count + */ + usersPermissionsGetUsersCount: ( + query?: { + /** Apply filters to the query */ + filters?: Record; + }, + params: RequestParams = {}, + ) => + this.request({ + path: `/users/count`, + method: "GET", + query: query, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags users-permissions + * @name UsersPermissionsGetUsers + * @request GET:/users + */ + usersPermissionsGetUsers: ( + query?: { + /** Select specific fields to return in the response */ + fields?: string | string[]; + /** Specify which relations to populate in the response */ + populate?: "*" | string | string[] | Record; + /** Sort the results by specified fields */ + sort?: + | string + | string[] + | Record + | Record[]; + /** Pagination parameters */ + pagination?: { + /** Include total count in response */ + withCount?: boolean; + } & ( + | { + /** + * Page number (1-based) + * @exclusiveMin 0 + * @max 9007199254740991 + */ + page: number; + /** + * Number of entries per page + * @exclusiveMin 0 + * @max 9007199254740991 + */ + pageSize: number; + } + | { + /** + * Number of entries to skip + * @min 0 + * @max 9007199254740991 + */ + start: number; + /** + * Maximum number of entries to return + * @exclusiveMin 0 + * @max 9007199254740991 + */ + limit: number; + } + ); + /** Apply filters to the query */ + filters?: Record; + }, + params: RequestParams = {}, + ) => + this.request< + { + id: number; + documentId: string; + username: string; + email: string; + provider: string; + confirmed: boolean; + blocked: boolean; + role?: + | number + | { + id: number; + name: string; + description: string | null; + type: string; + createdAt: string; + updatedAt: string; + }; + createdAt: string; + updatedAt: string; + publishedAt: string; + }[], + void + >({ + path: `/users`, + method: "GET", + query: query, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags users-permissions + * @name UsersPermissionsPostUsers + * @request POST:/users + */ + usersPermissionsPostUsers: ( + data: { + username: string; + /** + * @format email + * @pattern ^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$ + */ + email: string; + password: string; + role?: number; + }, + params: RequestParams = {}, + ) => + this.request< + { + id: number; + documentId: string; + username: string; + email: string; + provider: string; + confirmed: boolean; + blocked: boolean; + role?: + | number + | { + id: number; + name: string; + description: string | null; + type: string; + createdAt: string; + updatedAt: string; + }; + createdAt: string; + updatedAt: string; + publishedAt: string; + }, + void + >({ + path: `/users`, + method: "POST", + body: data, + type: ContentType.Json, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags users-permissions + * @name UsersPermissionsGetUsersMe + * @request GET:/users/me + */ + usersPermissionsGetUsersMe: ( + query?: { + /** Select specific fields to return in the response */ + fields?: string | string[]; + /** Specify which relations to populate in the response */ + populate?: "*" | string | string[] | Record; + }, + params: RequestParams = {}, + ) => + this.request< + { + id: number; + documentId: string; + username: string; + email: string; + provider: string; + confirmed: boolean; + blocked: boolean; + role?: + | number + | { + id: number; + name: string; + description: string | null; + type: string; + createdAt: string; + updatedAt: string; + }; + createdAt: string; + updatedAt: string; + publishedAt: string; + }, + void + >({ + path: `/users/me`, + method: "GET", + query: query, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags users-permissions + * @name UsersPermissionsGetUsersById + * @request GET:/users/{id} + */ + usersPermissionsGetUsersById: ( + id: string, + query?: { + /** Select specific fields to return in the response */ + fields?: string | string[]; + /** Specify which relations to populate in the response */ + populate?: "*" | string | string[] | Record; + }, + params: RequestParams = {}, + ) => + this.request< + { + id: number; + documentId: string; + username: string; + email: string; + provider: string; + confirmed: boolean; + blocked: boolean; + role?: + | number + | { + id: number; + name: string; + description: string | null; + type: string; + createdAt: string; + updatedAt: string; + }; + createdAt: string; + updatedAt: string; + publishedAt: string; + }, + void + >({ + path: `/users/${id}`, + method: "GET", + query: query, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags users-permissions + * @name UsersPermissionsPutUsersById + * @request PUT:/users/{id} + */ + usersPermissionsPutUsersById: ( + id: string, + data: { + username?: string; + /** + * @format email + * @pattern ^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$ + */ + email?: string; + password?: string; + role?: number; + }, + params: RequestParams = {}, + ) => + this.request< + { + id: number; + documentId: string; + username: string; + email: string; + provider: string; + confirmed: boolean; + blocked: boolean; + role?: + | number + | { + id: number; + name: string; + description: string | null; + type: string; + createdAt: string; + updatedAt: string; + }; + createdAt: string; + updatedAt: string; + publishedAt: string; + }, + void + >({ + path: `/users/${id}`, + method: "PUT", + body: data, + type: ContentType.Json, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags users-permissions + * @name UsersPermissionsDeleteUsersById + * @request DELETE:/users/{id} + */ + usersPermissionsDeleteUsersById: (id: string, params: RequestParams = {}) => + this.request< + { + id: number; + documentId: string; + username: string; + email: string; + provider: string; + confirmed: boolean; + blocked: boolean; + role?: + | number + | { + id: number; + name: string; + description: string | null; + type: string; + createdAt: string; + updatedAt: string; + }; + createdAt: string; + updatedAt: string; + publishedAt: string; + }, + void + >({ + path: `/users/${id}`, + method: "DELETE", + format: "json", + ...params, + }), + }; + roles = { + /** + * No description + * + * @tags users-permissions + * @name UsersPermissionsGetRolesById + * @request GET:/roles/{id} + */ + usersPermissionsGetRolesById: (id: string, params: RequestParams = {}) => + this.request< + { + role: { + id: number; + documentId: string; + name: string; + description: string | null; + type: string; + createdAt: string; + updatedAt: string; + publishedAt: string; + nb_users?: number; + permissions?: Record< + string, + { + controllers: Record< + string, + Record< + string, + { + enabled: boolean; + policy: string; + } + > + >; + } + >; + users?: any[]; + }; + }, + void + >({ + path: `/roles/${id}`, + method: "GET", + format: "json", + ...params, + }), + + /** + * No description + * + * @tags users-permissions + * @name UsersPermissionsGetRoles + * @request GET:/roles + */ + usersPermissionsGetRoles: (params: RequestParams = {}) => + this.request< + { + roles: { + id: number; + documentId: string; + name: string; + description: string | null; + type: string; + createdAt: string; + updatedAt: string; + publishedAt: string; + nb_users?: number; + permissions?: Record< + string, + { + controllers: Record< + string, + Record< + string, + { + enabled: boolean; + policy: string; + } + > + >; + } + >; + users?: any[]; + }[]; + }, + void + >({ + path: `/roles`, + method: "GET", + format: "json", + ...params, + }), + + /** + * No description + * + * @tags users-permissions + * @name UsersPermissionsPostRoles + * @request POST:/roles + */ + usersPermissionsPostRoles: ( + data: { + name: string; + description?: string; + type: string; + permissions?: Record; + }, + params: RequestParams = {}, + ) => + this.request< + { + ok: boolean; + }, + void + >({ + path: `/roles`, + method: "POST", + body: data, + type: ContentType.Json, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags users-permissions + * @name UsersPermissionsPutRolesByRole + * @request PUT:/roles/{role} + */ + usersPermissionsPutRolesByRole: ( + role: string, + data: { + name?: string; + description?: string; + type?: string; + permissions?: Record; + }, + params: RequestParams = {}, + ) => + this.request< + { + ok: boolean; + }, + void + >({ + path: `/roles/${role}`, + method: "PUT", + body: data, + type: ContentType.Json, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags users-permissions + * @name UsersPermissionsDeleteRolesByRole + * @request DELETE:/roles/{role} + */ + usersPermissionsDeleteRolesByRole: ( + role: string, + params: RequestParams = {}, + ) => + this.request< + { + ok: boolean; + }, + void + >({ + path: `/roles/${role}`, + method: "DELETE", + format: "json", + ...params, + }), + }; + permissions = { + /** + * No description + * + * @tags users-permissions + * @name UsersPermissionsGetPermissions + * @request GET:/permissions + */ + usersPermissionsGetPermissions: (params: RequestParams = {}) => + this.request< + { + permissions: Record< + string, + { + controllers: Record< + string, + Record< + string, + { + enabled: boolean; + policy: string; + } + > + >; + } + >; + }, + void + >({ + path: `/permissions`, + method: "GET", + format: "json", + ...params, + }), + }; + registrationInfo = { + /** + * No description + * + * @tags users-permissions + * @name UsersPermissionsGetRegistrationInfo + * @request GET:/registration-info + */ + usersPermissionsGetRegistrationInfo: (params: RequestParams = {}) => + this.request({ + path: `/registration-info`, + method: "GET", + ...params, + }), + }; + register = { + /** + * No description + * + * @tags users-permissions + * @name UsersPermissionsPostRegister + * @request POST:/register + */ + usersPermissionsPostRegister: (params: RequestParams = {}) => + this.request({ + path: `/register`, + method: "POST", + ...params, + }), + }; +} diff --git a/server2/public/swagger-spec.json b/server2/public/swagger-spec.json new file mode 100644 index 00000000..37d2ae2e --- /dev/null +++ b/server2/public/swagger-spec.json @@ -0,0 +1,16963 @@ +{ + "openapi": "3.1.0", + "x-powered-by": "strapi", + "x-strapi-version": "5.23.4", + "info": { + "title": "server-2", + "description": "API documentation for server-2 v0.1.0", + "version": "0.1.0" + }, + "paths": { + "/activities": { + "get": { + "operationId": "activity/get/activities", + "parameters": [ + { + "name": "fields", + "in": "query", + "required": false, + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "The fields to return, this doesn't include populatable fields like relations, components, files, or dynamic zones", + "readOnly": true, + "type": "array", + "items": { + "type": "string", + "enum": [ + "startDate", + "notes", + "duration", + "createdAt", + "updatedAt", + "publishedAt" + ] + } + }, + "x-strapi-serialize": "querystring" + }, + { + "name": "filters", + "in": "query", + "required": false, + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "Filters to apply to the query", + "type": "object", + "propertyNames": { + "type": "string", + "enum": [ + "startDate", + "notes", + "duration", + "createdAt", + "updatedAt", + "publishedAt" + ] + }, + "additionalProperties": {} + }, + "x-strapi-serialize": "querystring" + }, + { + "name": "_q", + "in": "query", + "required": false, + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "type": "string" + }, + "x-strapi-serialize": "querystring" + }, + { + "name": "pagination", + "in": "query", + "required": false, + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "Pagination parameters", + "allOf": [ + { + "type": "object", + "properties": { + "withCount": { + "description": "Include total count in response", + "type": "boolean" + } + }, + "additionalProperties": false + }, + { + "anyOf": [ + { + "description": "Page-based pagination", + "type": "object", + "properties": { + "page": { + "description": "Page number (1-based)", + "type": "integer", + "exclusiveMinimum": 0, + "maximum": 9007199254740991 + }, + "pageSize": { + "description": "Number of entries per page", + "type": "integer", + "exclusiveMinimum": 0, + "maximum": 9007199254740991 + } + }, + "required": [ + "page", + "pageSize" + ], + "additionalProperties": false + }, + { + "description": "Offset-based pagination", + "type": "object", + "properties": { + "start": { + "description": "Number of entries to skip", + "type": "integer", + "minimum": 0, + "maximum": 9007199254740991 + }, + "limit": { + "description": "Maximum number of entries to return", + "type": "integer", + "exclusiveMinimum": 0, + "maximum": 9007199254740991 + } + }, + "required": [ + "start", + "limit" + ], + "additionalProperties": false + } + ] + } + ] + }, + "x-strapi-serialize": "querystring" + }, + { + "name": "sort", + "in": "query", + "required": false, + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "Sort the result", + "anyOf": [ + { + "type": "string", + "enum": [ + "startDate", + "notes", + "duration", + "createdAt", + "updatedAt", + "publishedAt" + ] + }, + { + "type": "array", + "items": { + "type": "string", + "enum": [ + "startDate", + "notes", + "duration", + "createdAt", + "updatedAt", + "publishedAt" + ] + } + }, + { + "type": "object", + "propertyNames": { + "type": "string", + "enum": [ + "startDate", + "notes", + "duration", + "createdAt", + "updatedAt", + "publishedAt" + ] + }, + "additionalProperties": { + "type": "string", + "enum": [ + "asc", + "desc" + ] + } + }, + { + "type": "array", + "items": { + "type": "object", + "propertyNames": { + "type": "string", + "enum": [ + "startDate", + "notes", + "duration", + "createdAt", + "updatedAt", + "publishedAt" + ] + }, + "additionalProperties": { + "type": "string", + "enum": [ + "asc", + "desc" + ] + } + } + } + ] + }, + "x-strapi-serialize": "querystring" + }, + { + "name": "populate", + "in": "query", + "required": false, + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "anyOf": [ + { + "description": "Populate all the first level relations, components, files, and dynamic zones for the entry", + "readOnly": true, + "type": "string", + "const": "*" + }, + { + "description": "Populate a single relation, component, file, or dynamic zone", + "readOnly": true, + "type": "string", + "enum": [ + "type", + "dimension", + "mentor", + "user" + ] + }, + { + "description": "Populate a selection of multiple relations, components, files, or dynamic zones", + "type": "array", + "items": { + "type": "string", + "enum": [ + "type", + "dimension", + "mentor", + "user" + ] + } + } + ] + }, + "x-strapi-serialize": "querystring" + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "type": "object", + "properties": { + "data": { + "type": "array", + "items": { + "type": "object", + "properties": { + "documentId": { + "description": "The document ID, represented by a UUID", + "type": "string", + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$" + }, + "id": { + "type": "number" + }, + "startDate": { + "description": "A date field", + "type": "string" + }, + "notes": { + "description": "A richtext field", + "type": "string" + }, + "duration": { + "description": "An integer field", + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "createdAt": { + "description": "A datetime field", + "type": "string" + }, + "updatedAt": { + "description": "A datetime field", + "type": "string" + }, + "publishedAt": { + "description": "A datetime field", + "default": "2025-09-12T06:37:57.244Z", + "type": "string" + }, + "type": { + "description": "A relational field", + "$ref": "#/components/schemas/ApiActivityTypeActivityTypeDocument" + }, + "dimension": { + "description": "A relational field", + "$ref": "#/components/schemas/ApiDimensionDimensionDocument" + }, + "mentor": { + "description": "A relational field", + "$ref": "#/components/schemas/PluginUsersPermissionsUserDocument" + }, + "user": { + "description": "A relational field", + "$ref": "#/components/schemas/PluginUsersPermissionsUserDocument" + } + }, + "required": [ + "documentId", + "id", + "startDate", + "publishedAt" + ], + "additionalProperties": false + } + } + }, + "required": [ + "data" + ], + "additionalProperties": false + } + } + } + }, + "400": { + "description": "Bad request" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not found" + }, + "500": { + "description": "Internal server error" + } + }, + "tags": [ + "activity" + ] + }, + "post": { + "operationId": "activity/post/activities", + "parameters": [ + { + "name": "fields", + "in": "query", + "required": false, + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "The fields to return, this doesn't include populatable fields like relations, components, files, or dynamic zones", + "readOnly": true, + "type": "array", + "items": { + "type": "string", + "enum": [ + "startDate", + "notes", + "duration", + "createdAt", + "updatedAt", + "publishedAt" + ] + } + }, + "x-strapi-serialize": "querystring" + }, + { + "name": "populate", + "in": "query", + "required": false, + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "anyOf": [ + { + "description": "Populate all the first level relations, components, files, and dynamic zones for the entry", + "readOnly": true, + "type": "string", + "const": "*" + }, + { + "description": "Populate a single relation, component, file, or dynamic zone", + "readOnly": true, + "type": "string", + "enum": [ + "type", + "dimension", + "mentor", + "user" + ] + }, + { + "description": "Populate a selection of multiple relations, components, files, or dynamic zones", + "type": "array", + "items": { + "type": "string", + "enum": [ + "type", + "dimension", + "mentor", + "user" + ] + } + } + ] + }, + "x-strapi-serialize": "querystring" + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "type": "object", + "properties": { + "data": { + "type": "object", + "properties": { + "documentId": { + "description": "The document ID, represented by a UUID", + "type": "string", + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$" + }, + "id": { + "type": "number" + }, + "startDate": { + "description": "A date field", + "type": "string" + }, + "notes": { + "description": "A richtext field", + "type": "string" + }, + "duration": { + "description": "An integer field", + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "createdAt": { + "description": "A datetime field", + "type": "string" + }, + "updatedAt": { + "description": "A datetime field", + "type": "string" + }, + "publishedAt": { + "description": "A datetime field", + "default": "2025-09-12T06:37:57.297Z", + "type": "string" + }, + "type": { + "description": "A relational field", + "$ref": "#/components/schemas/ApiActivityTypeActivityTypeDocument" + }, + "dimension": { + "description": "A relational field", + "$ref": "#/components/schemas/ApiDimensionDimensionDocument" + }, + "mentor": { + "description": "A relational field", + "$ref": "#/components/schemas/PluginUsersPermissionsUserDocument" + }, + "user": { + "description": "A relational field", + "$ref": "#/components/schemas/PluginUsersPermissionsUserDocument" + } + }, + "required": [ + "documentId", + "id", + "startDate", + "publishedAt" + ], + "additionalProperties": false + } + }, + "required": [ + "data" + ], + "additionalProperties": false + } + } + } + }, + "400": { + "description": "Bad request" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not found" + }, + "500": { + "description": "Internal server error" + } + }, + "tags": [ + "activity" + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "type": "object", + "properties": { + "data": { + "type": "object", + "properties": { + "startDate": { + "description": "A date field", + "type": "string" + }, + "notes": { + "description": "A richtext field", + "type": "string" + }, + "duration": { + "description": "A float field", + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "publishedAt": { + "description": "A datetime field", + "default": "2025-09-12T06:37:57.295Z", + "type": "string" + }, + "type": { + "description": "A relational field", + "type": "string", + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$" + }, + "dimension": { + "description": "A relational field", + "type": "string", + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$" + }, + "mentor": { + "description": "A relational field", + "type": "string", + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$" + }, + "user": { + "description": "A relational field", + "type": "string", + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$" + } + }, + "required": [ + "startDate", + "publishedAt" + ], + "additionalProperties": false + } + }, + "required": [ + "data" + ], + "additionalProperties": false + } + } + } + } + } + }, + "/activities/{id}": { + "get": { + "operationId": "activity/get/activities_by_id", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "The document ID, represented by a UUID", + "type": "string", + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$" + } + }, + { + "name": "fields", + "in": "query", + "required": false, + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "The fields to return, this doesn't include populatable fields like relations, components, files, or dynamic zones", + "readOnly": true, + "type": "array", + "items": { + "type": "string", + "enum": [ + "startDate", + "notes", + "duration", + "createdAt", + "updatedAt", + "publishedAt" + ] + } + }, + "x-strapi-serialize": "querystring" + }, + { + "name": "populate", + "in": "query", + "required": false, + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "anyOf": [ + { + "description": "Populate all the first level relations, components, files, and dynamic zones for the entry", + "readOnly": true, + "type": "string", + "const": "*" + }, + { + "description": "Populate a single relation, component, file, or dynamic zone", + "readOnly": true, + "type": "string", + "enum": [ + "type", + "dimension", + "mentor", + "user" + ] + }, + { + "description": "Populate a selection of multiple relations, components, files, or dynamic zones", + "type": "array", + "items": { + "type": "string", + "enum": [ + "type", + "dimension", + "mentor", + "user" + ] + } + } + ] + }, + "x-strapi-serialize": "querystring" + }, + { + "name": "filters", + "in": "query", + "required": false, + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "Filters to apply to the query", + "type": "object", + "propertyNames": { + "type": "string", + "enum": [ + "startDate", + "notes", + "duration", + "createdAt", + "updatedAt", + "publishedAt" + ] + }, + "additionalProperties": {} + }, + "x-strapi-serialize": "querystring" + }, + { + "name": "sort", + "in": "query", + "required": false, + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "Sort the result", + "anyOf": [ + { + "type": "string", + "enum": [ + "startDate", + "notes", + "duration", + "createdAt", + "updatedAt", + "publishedAt" + ] + }, + { + "type": "array", + "items": { + "type": "string", + "enum": [ + "startDate", + "notes", + "duration", + "createdAt", + "updatedAt", + "publishedAt" + ] + } + }, + { + "type": "object", + "propertyNames": { + "type": "string", + "enum": [ + "startDate", + "notes", + "duration", + "createdAt", + "updatedAt", + "publishedAt" + ] + }, + "additionalProperties": { + "type": "string", + "enum": [ + "asc", + "desc" + ] + } + }, + { + "type": "array", + "items": { + "type": "object", + "propertyNames": { + "type": "string", + "enum": [ + "startDate", + "notes", + "duration", + "createdAt", + "updatedAt", + "publishedAt" + ] + }, + "additionalProperties": { + "type": "string", + "enum": [ + "asc", + "desc" + ] + } + } + } + ] + }, + "x-strapi-serialize": "querystring" + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "type": "object", + "properties": { + "data": { + "type": "object", + "properties": { + "documentId": { + "description": "The document ID, represented by a UUID", + "type": "string", + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$" + }, + "id": { + "type": "number" + }, + "startDate": { + "description": "A date field", + "type": "string" + }, + "notes": { + "description": "A richtext field", + "type": "string" + }, + "duration": { + "description": "An integer field", + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "createdAt": { + "description": "A datetime field", + "type": "string" + }, + "updatedAt": { + "description": "A datetime field", + "type": "string" + }, + "publishedAt": { + "description": "A datetime field", + "default": "2025-09-12T06:37:57.289Z", + "type": "string" + }, + "type": { + "description": "A relational field", + "$ref": "#/components/schemas/ApiActivityTypeActivityTypeDocument" + }, + "dimension": { + "description": "A relational field", + "$ref": "#/components/schemas/ApiDimensionDimensionDocument" + }, + "mentor": { + "description": "A relational field", + "$ref": "#/components/schemas/PluginUsersPermissionsUserDocument" + }, + "user": { + "description": "A relational field", + "$ref": "#/components/schemas/PluginUsersPermissionsUserDocument" + } + }, + "required": [ + "documentId", + "id", + "startDate", + "publishedAt" + ], + "additionalProperties": false + } + }, + "required": [ + "data" + ], + "additionalProperties": false + } + } + } + }, + "400": { + "description": "Bad request" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not found" + }, + "500": { + "description": "Internal server error" + } + }, + "tags": [ + "activity" + ] + }, + "put": { + "operationId": "activity/put/activities_by_id", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "The document ID, represented by a UUID", + "type": "string", + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$" + } + }, + { + "name": "fields", + "in": "query", + "required": false, + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "The fields to return, this doesn't include populatable fields like relations, components, files, or dynamic zones", + "readOnly": true, + "type": "array", + "items": { + "type": "string", + "enum": [ + "startDate", + "notes", + "duration", + "createdAt", + "updatedAt", + "publishedAt" + ] + } + }, + "x-strapi-serialize": "querystring" + }, + { + "name": "populate", + "in": "query", + "required": false, + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "anyOf": [ + { + "description": "Populate all the first level relations, components, files, and dynamic zones for the entry", + "readOnly": true, + "type": "string", + "const": "*" + }, + { + "description": "Populate a single relation, component, file, or dynamic zone", + "readOnly": true, + "type": "string", + "enum": [ + "type", + "dimension", + "mentor", + "user" + ] + }, + { + "description": "Populate a selection of multiple relations, components, files, or dynamic zones", + "type": "array", + "items": { + "type": "string", + "enum": [ + "type", + "dimension", + "mentor", + "user" + ] + } + } + ] + }, + "x-strapi-serialize": "querystring" + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "type": "object", + "properties": { + "data": { + "type": "object", + "properties": { + "documentId": { + "description": "The document ID, represented by a UUID", + "type": "string", + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$" + }, + "id": { + "type": "number" + }, + "startDate": { + "description": "A date field", + "type": "string" + }, + "notes": { + "description": "A richtext field", + "type": "string" + }, + "duration": { + "description": "An integer field", + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "createdAt": { + "description": "A datetime field", + "type": "string" + }, + "updatedAt": { + "description": "A datetime field", + "type": "string" + }, + "publishedAt": { + "description": "A datetime field", + "default": "2025-09-12T06:37:57.304Z", + "type": "string" + }, + "type": { + "description": "A relational field", + "$ref": "#/components/schemas/ApiActivityTypeActivityTypeDocument" + }, + "dimension": { + "description": "A relational field", + "$ref": "#/components/schemas/ApiDimensionDimensionDocument" + }, + "mentor": { + "description": "A relational field", + "$ref": "#/components/schemas/PluginUsersPermissionsUserDocument" + }, + "user": { + "description": "A relational field", + "$ref": "#/components/schemas/PluginUsersPermissionsUserDocument" + } + }, + "required": [ + "documentId", + "id", + "startDate", + "publishedAt" + ], + "additionalProperties": false + } + }, + "required": [ + "data" + ], + "additionalProperties": false + } + } + } + }, + "400": { + "description": "Bad request" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not found" + }, + "500": { + "description": "Internal server error" + } + }, + "tags": [ + "activity" + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "type": "object", + "properties": { + "data": { + "type": "object", + "properties": { + "startDate": { + "description": "A date field", + "type": "string" + }, + "notes": { + "description": "A richtext field", + "type": "string" + }, + "duration": { + "description": "A float field", + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "publishedAt": { + "description": "A datetime field", + "default": "2025-09-12T06:37:57.302Z", + "type": "string" + }, + "type": { + "description": "A relational field", + "type": "string", + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$" + }, + "dimension": { + "description": "A relational field", + "type": "string", + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$" + }, + "mentor": { + "description": "A relational field", + "type": "string", + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$" + }, + "user": { + "description": "A relational field", + "type": "string", + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$" + } + }, + "additionalProperties": false + } + }, + "required": [ + "data" + ], + "additionalProperties": false + } + } + } + } + }, + "delete": { + "operationId": "activity/delete/activities_by_id", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "The document ID, represented by a UUID", + "type": "string", + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$" + } + }, + { + "name": "fields", + "in": "query", + "required": false, + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "The fields to return, this doesn't include populatable fields like relations, components, files, or dynamic zones", + "readOnly": true, + "type": "array", + "items": { + "type": "string", + "enum": [ + "startDate", + "notes", + "duration", + "createdAt", + "updatedAt", + "publishedAt" + ] + } + }, + "x-strapi-serialize": "querystring" + }, + { + "name": "populate", + "in": "query", + "required": false, + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "anyOf": [ + { + "description": "Populate all the first level relations, components, files, and dynamic zones for the entry", + "readOnly": true, + "type": "string", + "const": "*" + }, + { + "description": "Populate a single relation, component, file, or dynamic zone", + "readOnly": true, + "type": "string", + "enum": [ + "type", + "dimension", + "mentor", + "user" + ] + }, + { + "description": "Populate a selection of multiple relations, components, files, or dynamic zones", + "type": "array", + "items": { + "type": "string", + "enum": [ + "type", + "dimension", + "mentor", + "user" + ] + } + } + ] + }, + "x-strapi-serialize": "querystring" + }, + { + "name": "filters", + "in": "query", + "required": false, + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "Filters to apply to the query", + "type": "object", + "propertyNames": { + "type": "string", + "enum": [ + "startDate", + "notes", + "duration", + "createdAt", + "updatedAt", + "publishedAt" + ] + }, + "additionalProperties": {} + }, + "x-strapi-serialize": "querystring" + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "type": "object", + "properties": { + "data": { + "type": "object", + "properties": { + "documentId": { + "description": "The document ID, represented by a UUID", + "type": "string", + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$" + }, + "id": { + "type": "number" + }, + "startDate": { + "description": "A date field", + "type": "string" + }, + "notes": { + "description": "A richtext field", + "type": "string" + }, + "duration": { + "description": "An integer field", + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "createdAt": { + "description": "A datetime field", + "type": "string" + }, + "updatedAt": { + "description": "A datetime field", + "type": "string" + }, + "publishedAt": { + "description": "A datetime field", + "default": "2025-09-12T06:37:57.307Z", + "type": "string" + }, + "type": { + "description": "A relational field", + "$ref": "#/components/schemas/ApiActivityTypeActivityTypeDocument" + }, + "dimension": { + "description": "A relational field", + "$ref": "#/components/schemas/ApiDimensionDimensionDocument" + }, + "mentor": { + "description": "A relational field", + "$ref": "#/components/schemas/PluginUsersPermissionsUserDocument" + }, + "user": { + "description": "A relational field", + "$ref": "#/components/schemas/PluginUsersPermissionsUserDocument" + } + }, + "required": [ + "documentId", + "id", + "startDate", + "publishedAt" + ], + "additionalProperties": false + } + }, + "required": [ + "data" + ], + "additionalProperties": false + } + } + } + }, + "400": { + "description": "Bad request" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not found" + }, + "500": { + "description": "Internal server error" + } + }, + "tags": [ + "activity" + ] + } + }, + "/activity-types": { + "get": { + "operationId": "activity-type/get/activity_types", + "parameters": [ + { + "name": "fields", + "in": "query", + "required": false, + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "The fields to return, this doesn't include populatable fields like relations, components, files, or dynamic zones", + "readOnly": true, + "type": "array", + "items": { + "type": "string", + "enum": [ + "name", + "createdAt", + "updatedAt", + "publishedAt" + ] + } + }, + "x-strapi-serialize": "querystring" + }, + { + "name": "filters", + "in": "query", + "required": false, + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "Filters to apply to the query", + "type": "object", + "propertyNames": { + "type": "string", + "enum": [ + "name", + "createdAt", + "updatedAt", + "publishedAt" + ] + }, + "additionalProperties": {} + }, + "x-strapi-serialize": "querystring" + }, + { + "name": "_q", + "in": "query", + "required": false, + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "type": "string" + }, + "x-strapi-serialize": "querystring" + }, + { + "name": "pagination", + "in": "query", + "required": false, + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "Pagination parameters", + "allOf": [ + { + "type": "object", + "properties": { + "withCount": { + "description": "Include total count in response", + "type": "boolean" + } + }, + "additionalProperties": false + }, + { + "anyOf": [ + { + "description": "Page-based pagination", + "type": "object", + "properties": { + "page": { + "description": "Page number (1-based)", + "type": "integer", + "exclusiveMinimum": 0, + "maximum": 9007199254740991 + }, + "pageSize": { + "description": "Number of entries per page", + "type": "integer", + "exclusiveMinimum": 0, + "maximum": 9007199254740991 + } + }, + "required": [ + "page", + "pageSize" + ], + "additionalProperties": false + }, + { + "description": "Offset-based pagination", + "type": "object", + "properties": { + "start": { + "description": "Number of entries to skip", + "type": "integer", + "minimum": 0, + "maximum": 9007199254740991 + }, + "limit": { + "description": "Maximum number of entries to return", + "type": "integer", + "exclusiveMinimum": 0, + "maximum": 9007199254740991 + } + }, + "required": [ + "start", + "limit" + ], + "additionalProperties": false + } + ] + } + ] + }, + "x-strapi-serialize": "querystring" + }, + { + "name": "sort", + "in": "query", + "required": false, + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "Sort the result", + "anyOf": [ + { + "type": "string", + "enum": [ + "name", + "createdAt", + "updatedAt", + "publishedAt" + ] + }, + { + "type": "array", + "items": { + "type": "string", + "enum": [ + "name", + "createdAt", + "updatedAt", + "publishedAt" + ] + } + }, + { + "type": "object", + "propertyNames": { + "type": "string", + "enum": [ + "name", + "createdAt", + "updatedAt", + "publishedAt" + ] + }, + "additionalProperties": { + "type": "string", + "enum": [ + "asc", + "desc" + ] + } + }, + { + "type": "array", + "items": { + "type": "object", + "propertyNames": { + "type": "string", + "enum": [ + "name", + "createdAt", + "updatedAt", + "publishedAt" + ] + }, + "additionalProperties": { + "type": "string", + "enum": [ + "asc", + "desc" + ] + } + } + } + ] + }, + "x-strapi-serialize": "querystring" + }, + { + "name": "populate", + "in": "query", + "required": false, + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "anyOf": [ + { + "description": "Populate all the first level relations, components, files, and dynamic zones for the entry", + "readOnly": true, + "type": "string", + "const": "*" + }, + { + "description": "Populate a single relation, component, file, or dynamic zone", + "readOnly": true, + "type": "string", + "enum": [] + }, + { + "description": "Populate a selection of multiple relations, components, files, or dynamic zones", + "type": "array", + "items": { + "type": "string", + "enum": [] + } + } + ] + }, + "x-strapi-serialize": "querystring" + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "type": "object", + "properties": { + "data": { + "type": "array", + "items": { + "type": "object", + "properties": { + "documentId": { + "description": "The document ID, represented by a UUID", + "type": "string", + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$" + }, + "id": { + "type": "number" + }, + "name": { + "description": "A text field", + "type": "string" + }, + "createdAt": { + "description": "A datetime field", + "type": "string" + }, + "updatedAt": { + "description": "A datetime field", + "type": "string" + }, + "publishedAt": { + "description": "A datetime field", + "default": "2025-09-12T06:37:57.313Z", + "type": "string" + } + }, + "required": [ + "documentId", + "id", + "publishedAt" + ], + "additionalProperties": false + } + } + }, + "required": [ + "data" + ], + "additionalProperties": false + } + } + } + }, + "400": { + "description": "Bad request" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not found" + }, + "500": { + "description": "Internal server error" + } + }, + "tags": [ + "activity-type" + ] + }, + "post": { + "operationId": "activity-type/post/activity_types", + "parameters": [ + { + "name": "fields", + "in": "query", + "required": false, + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "The fields to return, this doesn't include populatable fields like relations, components, files, or dynamic zones", + "readOnly": true, + "type": "array", + "items": { + "type": "string", + "enum": [ + "name", + "createdAt", + "updatedAt", + "publishedAt" + ] + } + }, + "x-strapi-serialize": "querystring" + }, + { + "name": "populate", + "in": "query", + "required": false, + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "anyOf": [ + { + "description": "Populate all the first level relations, components, files, and dynamic zones for the entry", + "readOnly": true, + "type": "string", + "const": "*" + }, + { + "description": "Populate a single relation, component, file, or dynamic zone", + "readOnly": true, + "type": "string", + "enum": [] + }, + { + "description": "Populate a selection of multiple relations, components, files, or dynamic zones", + "type": "array", + "items": { + "type": "string", + "enum": [] + } + } + ] + }, + "x-strapi-serialize": "querystring" + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "type": "object", + "properties": { + "data": { + "type": "object", + "properties": { + "documentId": { + "description": "The document ID, represented by a UUID", + "type": "string", + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$" + }, + "id": { + "type": "number" + }, + "name": { + "description": "A text field", + "type": "string" + }, + "createdAt": { + "description": "A datetime field", + "type": "string" + }, + "updatedAt": { + "description": "A datetime field", + "type": "string" + }, + "publishedAt": { + "description": "A datetime field", + "default": "2025-09-12T06:37:57.327Z", + "type": "string" + } + }, + "required": [ + "documentId", + "id", + "publishedAt" + ], + "additionalProperties": false + } + }, + "required": [ + "data" + ], + "additionalProperties": false + } + } + } + }, + "400": { + "description": "Bad request" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not found" + }, + "500": { + "description": "Internal server error" + } + }, + "tags": [ + "activity-type" + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "type": "object", + "properties": { + "data": { + "type": "object", + "properties": { + "name": { + "description": "A text field", + "type": "string" + }, + "publishedAt": { + "description": "A datetime field", + "default": "2025-09-12T06:38:03.737Z", + "type": "string" + } + }, + "required": [ + "publishedAt" + ], + "additionalProperties": false + } + }, + "required": [ + "data" + ], + "additionalProperties": false + } + } + } + } + } + }, + "/activity-types/{id}": { + "get": { + "operationId": "activity-type/get/activity_types_by_id", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "The document ID, represented by a UUID", + "type": "string", + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$" + } + }, + { + "name": "fields", + "in": "query", + "required": false, + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "The fields to return, this doesn't include populatable fields like relations, components, files, or dynamic zones", + "readOnly": true, + "type": "array", + "items": { + "type": "string", + "enum": [ + "name", + "createdAt", + "updatedAt", + "publishedAt" + ] + } + }, + "x-strapi-serialize": "querystring" + }, + { + "name": "populate", + "in": "query", + "required": false, + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "anyOf": [ + { + "description": "Populate all the first level relations, components, files, and dynamic zones for the entry", + "readOnly": true, + "type": "string", + "const": "*" + }, + { + "description": "Populate a single relation, component, file, or dynamic zone", + "readOnly": true, + "type": "string", + "enum": [] + }, + { + "description": "Populate a selection of multiple relations, components, files, or dynamic zones", + "type": "array", + "items": { + "type": "string", + "enum": [] + } + } + ] + }, + "x-strapi-serialize": "querystring" + }, + { + "name": "filters", + "in": "query", + "required": false, + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "Filters to apply to the query", + "type": "object", + "propertyNames": { + "type": "string", + "enum": [ + "name", + "createdAt", + "updatedAt", + "publishedAt" + ] + }, + "additionalProperties": {} + }, + "x-strapi-serialize": "querystring" + }, + { + "name": "sort", + "in": "query", + "required": false, + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "Sort the result", + "anyOf": [ + { + "type": "string", + "enum": [ + "name", + "createdAt", + "updatedAt", + "publishedAt" + ] + }, + { + "type": "array", + "items": { + "type": "string", + "enum": [ + "name", + "createdAt", + "updatedAt", + "publishedAt" + ] + } + }, + { + "type": "object", + "propertyNames": { + "type": "string", + "enum": [ + "name", + "createdAt", + "updatedAt", + "publishedAt" + ] + }, + "additionalProperties": { + "type": "string", + "enum": [ + "asc", + "desc" + ] + } + }, + { + "type": "array", + "items": { + "type": "object", + "propertyNames": { + "type": "string", + "enum": [ + "name", + "createdAt", + "updatedAt", + "publishedAt" + ] + }, + "additionalProperties": { + "type": "string", + "enum": [ + "asc", + "desc" + ] + } + } + } + ] + }, + "x-strapi-serialize": "querystring" + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "type": "object", + "properties": { + "data": { + "type": "object", + "properties": { + "documentId": { + "description": "The document ID, represented by a UUID", + "type": "string", + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$" + }, + "id": { + "type": "number" + }, + "name": { + "description": "A text field", + "type": "string" + }, + "createdAt": { + "description": "A datetime field", + "type": "string" + }, + "updatedAt": { + "description": "A datetime field", + "type": "string" + }, + "publishedAt": { + "description": "A datetime field", + "default": "2025-09-12T06:37:57.321Z", + "type": "string" + } + }, + "required": [ + "documentId", + "id", + "publishedAt" + ], + "additionalProperties": false + } + }, + "required": [ + "data" + ], + "additionalProperties": false + } + } + } + }, + "400": { + "description": "Bad request" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not found" + }, + "500": { + "description": "Internal server error" + } + }, + "tags": [ + "activity-type" + ] + }, + "put": { + "operationId": "activity-type/put/activity_types_by_id", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "The document ID, represented by a UUID", + "type": "string", + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$" + } + }, + { + "name": "fields", + "in": "query", + "required": false, + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "The fields to return, this doesn't include populatable fields like relations, components, files, or dynamic zones", + "readOnly": true, + "type": "array", + "items": { + "type": "string", + "enum": [ + "name", + "createdAt", + "updatedAt", + "publishedAt" + ] + } + }, + "x-strapi-serialize": "querystring" + }, + { + "name": "populate", + "in": "query", + "required": false, + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "anyOf": [ + { + "description": "Populate all the first level relations, components, files, and dynamic zones for the entry", + "readOnly": true, + "type": "string", + "const": "*" + }, + { + "description": "Populate a single relation, component, file, or dynamic zone", + "readOnly": true, + "type": "string", + "enum": [] + }, + { + "description": "Populate a selection of multiple relations, components, files, or dynamic zones", + "type": "array", + "items": { + "type": "string", + "enum": [] + } + } + ] + }, + "x-strapi-serialize": "querystring" + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "type": "object", + "properties": { + "data": { + "type": "object", + "properties": { + "documentId": { + "description": "The document ID, represented by a UUID", + "type": "string", + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$" + }, + "id": { + "type": "number" + }, + "name": { + "description": "A text field", + "type": "string" + }, + "createdAt": { + "description": "A datetime field", + "type": "string" + }, + "updatedAt": { + "description": "A datetime field", + "type": "string" + }, + "publishedAt": { + "description": "A datetime field", + "default": "2025-09-12T06:37:57.332Z", + "type": "string" + } + }, + "required": [ + "documentId", + "id", + "publishedAt" + ], + "additionalProperties": false + } + }, + "required": [ + "data" + ], + "additionalProperties": false + } + } + } + }, + "400": { + "description": "Bad request" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not found" + }, + "500": { + "description": "Internal server error" + } + }, + "tags": [ + "activity-type" + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "type": "object", + "properties": { + "data": { + "type": "object", + "properties": { + "name": { + "description": "A text field", + "type": "string" + }, + "publishedAt": { + "description": "A datetime field", + "default": "2025-09-12T06:37:57.330Z", + "type": "string" + } + }, + "additionalProperties": false + } + }, + "required": [ + "data" + ], + "additionalProperties": false + } + } + } + } + }, + "delete": { + "operationId": "activity-type/delete/activity_types_by_id", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "The document ID, represented by a UUID", + "type": "string", + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$" + } + }, + { + "name": "fields", + "in": "query", + "required": false, + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "The fields to return, this doesn't include populatable fields like relations, components, files, or dynamic zones", + "readOnly": true, + "type": "array", + "items": { + "type": "string", + "enum": [ + "name", + "createdAt", + "updatedAt", + "publishedAt" + ] + } + }, + "x-strapi-serialize": "querystring" + }, + { + "name": "populate", + "in": "query", + "required": false, + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "anyOf": [ + { + "description": "Populate all the first level relations, components, files, and dynamic zones for the entry", + "readOnly": true, + "type": "string", + "const": "*" + }, + { + "description": "Populate a single relation, component, file, or dynamic zone", + "readOnly": true, + "type": "string", + "enum": [] + }, + { + "description": "Populate a selection of multiple relations, components, files, or dynamic zones", + "type": "array", + "items": { + "type": "string", + "enum": [] + } + } + ] + }, + "x-strapi-serialize": "querystring" + }, + { + "name": "filters", + "in": "query", + "required": false, + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "Filters to apply to the query", + "type": "object", + "propertyNames": { + "type": "string", + "enum": [ + "name", + "createdAt", + "updatedAt", + "publishedAt" + ] + }, + "additionalProperties": {} + }, + "x-strapi-serialize": "querystring" + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "type": "object", + "properties": { + "data": { + "type": "object", + "properties": { + "documentId": { + "description": "The document ID, represented by a UUID", + "type": "string", + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$" + }, + "id": { + "type": "number" + }, + "name": { + "description": "A text field", + "type": "string" + }, + "createdAt": { + "description": "A datetime field", + "type": "string" + }, + "updatedAt": { + "description": "A datetime field", + "type": "string" + }, + "publishedAt": { + "description": "A datetime field", + "default": "2025-09-12T06:37:57.336Z", + "type": "string" + } + }, + "required": [ + "documentId", + "id", + "publishedAt" + ], + "additionalProperties": false + } + }, + "required": [ + "data" + ], + "additionalProperties": false + } + } + } + }, + "400": { + "description": "Bad request" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not found" + }, + "500": { + "description": "Internal server error" + } + }, + "tags": [ + "activity-type" + ] + } + }, + "/dimensions": { + "get": { + "operationId": "dimension/get/dimensions", + "parameters": [ + { + "name": "fields", + "in": "query", + "required": false, + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "The fields to return, this doesn't include populatable fields like relations, components, files, or dynamic zones", + "readOnly": true, + "type": "array", + "items": { + "type": "string", + "enum": [ + "name", + "link", + "createdAt", + "updatedAt", + "publishedAt" + ] + } + }, + "x-strapi-serialize": "querystring" + }, + { + "name": "filters", + "in": "query", + "required": false, + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "Filters to apply to the query", + "type": "object", + "propertyNames": { + "type": "string", + "enum": [ + "name", + "link", + "createdAt", + "updatedAt", + "publishedAt" + ] + }, + "additionalProperties": {} + }, + "x-strapi-serialize": "querystring" + }, + { + "name": "_q", + "in": "query", + "required": false, + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "type": "string" + }, + "x-strapi-serialize": "querystring" + }, + { + "name": "pagination", + "in": "query", + "required": false, + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "Pagination parameters", + "allOf": [ + { + "type": "object", + "properties": { + "withCount": { + "description": "Include total count in response", + "type": "boolean" + } + }, + "additionalProperties": false + }, + { + "anyOf": [ + { + "description": "Page-based pagination", + "type": "object", + "properties": { + "page": { + "description": "Page number (1-based)", + "type": "integer", + "exclusiveMinimum": 0, + "maximum": 9007199254740991 + }, + "pageSize": { + "description": "Number of entries per page", + "type": "integer", + "exclusiveMinimum": 0, + "maximum": 9007199254740991 + } + }, + "required": [ + "page", + "pageSize" + ], + "additionalProperties": false + }, + { + "description": "Offset-based pagination", + "type": "object", + "properties": { + "start": { + "description": "Number of entries to skip", + "type": "integer", + "minimum": 0, + "maximum": 9007199254740991 + }, + "limit": { + "description": "Maximum number of entries to return", + "type": "integer", + "exclusiveMinimum": 0, + "maximum": 9007199254740991 + } + }, + "required": [ + "start", + "limit" + ], + "additionalProperties": false + } + ] + } + ] + }, + "x-strapi-serialize": "querystring" + }, + { + "name": "sort", + "in": "query", + "required": false, + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "Sort the result", + "anyOf": [ + { + "type": "string", + "enum": [ + "name", + "link", + "createdAt", + "updatedAt", + "publishedAt" + ] + }, + { + "type": "array", + "items": { + "type": "string", + "enum": [ + "name", + "link", + "createdAt", + "updatedAt", + "publishedAt" + ] + } + }, + { + "type": "object", + "propertyNames": { + "type": "string", + "enum": [ + "name", + "link", + "createdAt", + "updatedAt", + "publishedAt" + ] + }, + "additionalProperties": { + "type": "string", + "enum": [ + "asc", + "desc" + ] + } + }, + { + "type": "array", + "items": { + "type": "object", + "propertyNames": { + "type": "string", + "enum": [ + "name", + "link", + "createdAt", + "updatedAt", + "publishedAt" + ] + }, + "additionalProperties": { + "type": "string", + "enum": [ + "asc", + "desc" + ] + } + } + } + ] + }, + "x-strapi-serialize": "querystring" + }, + { + "name": "populate", + "in": "query", + "required": false, + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "anyOf": [ + { + "description": "Populate all the first level relations, components, files, and dynamic zones for the entry", + "readOnly": true, + "type": "string", + "const": "*" + }, + { + "description": "Populate a single relation, component, file, or dynamic zone", + "readOnly": true, + "type": "string", + "enum": [ + "quiz", + "mentors", + "activities" + ] + }, + { + "description": "Populate a selection of multiple relations, components, files, or dynamic zones", + "type": "array", + "items": { + "type": "string", + "enum": [ + "quiz", + "mentors", + "activities" + ] + } + } + ] + }, + "x-strapi-serialize": "querystring" + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "type": "object", + "properties": { + "data": { + "type": "array", + "items": { + "type": "object", + "properties": { + "documentId": { + "description": "The document ID, represented by a UUID", + "type": "string", + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$" + }, + "id": { + "type": "number" + }, + "name": { + "description": "A string field", + "type": "string" + }, + "link": { + "description": "A string field", + "type": "string" + }, + "createdAt": { + "description": "A datetime field", + "type": "string" + }, + "updatedAt": { + "description": "A datetime field", + "type": "string" + }, + "publishedAt": { + "description": "A datetime field", + "default": "2025-09-12T06:37:57.347Z", + "type": "string" + }, + "quiz": { + "description": "A component field", + "type": "array", + "items": { + "$ref": "#/components/schemas/MatrixQuestionEntry" + } + }, + "mentors": { + "description": "A relational field", + "type": "array", + "items": { + "$ref": "#/components/schemas/PluginUsersPermissionsUserDocument" + } + }, + "activities": { + "description": "A relational field", + "type": "array", + "items": { + "$ref": "#/components/schemas/ApiActivityActivityDocument" + } + } + }, + "required": [ + "documentId", + "id", + "name", + "publishedAt" + ], + "additionalProperties": false + } + } + }, + "required": [ + "data" + ], + "additionalProperties": false + } + } + } + }, + "400": { + "description": "Bad request" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not found" + }, + "500": { + "description": "Internal server error" + } + }, + "tags": [ + "dimension" + ] + }, + "post": { + "operationId": "dimension/post/dimensions", + "parameters": [ + { + "name": "fields", + "in": "query", + "required": false, + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "The fields to return, this doesn't include populatable fields like relations, components, files, or dynamic zones", + "readOnly": true, + "type": "array", + "items": { + "type": "string", + "enum": [ + "name", + "link", + "createdAt", + "updatedAt", + "publishedAt" + ] + } + }, + "x-strapi-serialize": "querystring" + }, + { + "name": "populate", + "in": "query", + "required": false, + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "anyOf": [ + { + "description": "Populate all the first level relations, components, files, and dynamic zones for the entry", + "readOnly": true, + "type": "string", + "const": "*" + }, + { + "description": "Populate a single relation, component, file, or dynamic zone", + "readOnly": true, + "type": "string", + "enum": [ + "quiz", + "mentors", + "activities" + ] + }, + { + "description": "Populate a selection of multiple relations, components, files, or dynamic zones", + "type": "array", + "items": { + "type": "string", + "enum": [ + "quiz", + "mentors", + "activities" + ] + } + } + ] + }, + "x-strapi-serialize": "querystring" + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "type": "object", + "properties": { + "data": { + "type": "object", + "properties": { + "documentId": { + "description": "The document ID, represented by a UUID", + "type": "string", + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$" + }, + "id": { + "type": "number" + }, + "name": { + "description": "A string field", + "type": "string" + }, + "link": { + "description": "A string field", + "type": "string" + }, + "createdAt": { + "description": "A datetime field", + "type": "string" + }, + "updatedAt": { + "description": "A datetime field", + "type": "string" + }, + "publishedAt": { + "description": "A datetime field", + "default": "2025-09-12T06:37:57.367Z", + "type": "string" + }, + "quiz": { + "description": "A component field", + "type": "array", + "items": { + "$ref": "#/components/schemas/MatrixQuestionEntry" + } + }, + "mentors": { + "description": "A relational field", + "type": "array", + "items": { + "$ref": "#/components/schemas/PluginUsersPermissionsUserDocument" + } + }, + "activities": { + "description": "A relational field", + "type": "array", + "items": { + "$ref": "#/components/schemas/ApiActivityActivityDocument" + } + } + }, + "required": [ + "documentId", + "id", + "name", + "publishedAt" + ], + "additionalProperties": false + } + }, + "required": [ + "data" + ], + "additionalProperties": false + } + } + } + }, + "400": { + "description": "Bad request" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not found" + }, + "500": { + "description": "Internal server error" + } + }, + "tags": [ + "dimension" + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "type": "object", + "properties": { + "data": { + "type": "object", + "properties": { + "name": { + "description": "A string field", + "type": "string" + }, + "link": { + "description": "A string field", + "type": "string" + }, + "publishedAt": { + "description": "A datetime field", + "default": "2025-09-12T06:37:57.365Z", + "type": "string" + }, + "quiz": { + "description": "A component field", + "type": "array", + "items": {} + }, + "mentors": { + "description": "A relational field", + "type": "array", + "items": { + "type": "string", + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$" + } + }, + "activities": { + "description": "A relational field", + "type": "array", + "items": { + "type": "string", + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$" + } + } + }, + "required": [ + "name", + "publishedAt" + ], + "additionalProperties": false + } + }, + "required": [ + "data" + ], + "additionalProperties": false + } + } + } + } + } + }, + "/dimensions/{id}": { + "get": { + "operationId": "dimension/get/dimensions_by_id", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "The document ID, represented by a UUID", + "type": "string", + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$" + } + }, + { + "name": "fields", + "in": "query", + "required": false, + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "The fields to return, this doesn't include populatable fields like relations, components, files, or dynamic zones", + "readOnly": true, + "type": "array", + "items": { + "type": "string", + "enum": [ + "name", + "link", + "createdAt", + "updatedAt", + "publishedAt" + ] + } + }, + "x-strapi-serialize": "querystring" + }, + { + "name": "populate", + "in": "query", + "required": false, + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "anyOf": [ + { + "description": "Populate all the first level relations, components, files, and dynamic zones for the entry", + "readOnly": true, + "type": "string", + "const": "*" + }, + { + "description": "Populate a single relation, component, file, or dynamic zone", + "readOnly": true, + "type": "string", + "enum": [ + "quiz", + "mentors", + "activities" + ] + }, + { + "description": "Populate a selection of multiple relations, components, files, or dynamic zones", + "type": "array", + "items": { + "type": "string", + "enum": [ + "quiz", + "mentors", + "activities" + ] + } + } + ] + }, + "x-strapi-serialize": "querystring" + }, + { + "name": "filters", + "in": "query", + "required": false, + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "Filters to apply to the query", + "type": "object", + "propertyNames": { + "type": "string", + "enum": [ + "name", + "link", + "createdAt", + "updatedAt", + "publishedAt" + ] + }, + "additionalProperties": {} + }, + "x-strapi-serialize": "querystring" + }, + { + "name": "sort", + "in": "query", + "required": false, + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "Sort the result", + "anyOf": [ + { + "type": "string", + "enum": [ + "name", + "link", + "createdAt", + "updatedAt", + "publishedAt" + ] + }, + { + "type": "array", + "items": { + "type": "string", + "enum": [ + "name", + "link", + "createdAt", + "updatedAt", + "publishedAt" + ] + } + }, + { + "type": "object", + "propertyNames": { + "type": "string", + "enum": [ + "name", + "link", + "createdAt", + "updatedAt", + "publishedAt" + ] + }, + "additionalProperties": { + "type": "string", + "enum": [ + "asc", + "desc" + ] + } + }, + { + "type": "array", + "items": { + "type": "object", + "propertyNames": { + "type": "string", + "enum": [ + "name", + "link", + "createdAt", + "updatedAt", + "publishedAt" + ] + }, + "additionalProperties": { + "type": "string", + "enum": [ + "asc", + "desc" + ] + } + } + } + ] + }, + "x-strapi-serialize": "querystring" + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "type": "object", + "properties": { + "data": { + "type": "object", + "properties": { + "documentId": { + "description": "The document ID, represented by a UUID", + "type": "string", + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$" + }, + "id": { + "type": "number" + }, + "name": { + "description": "A string field", + "type": "string" + }, + "link": { + "description": "A string field", + "type": "string" + }, + "createdAt": { + "description": "A datetime field", + "type": "string" + }, + "updatedAt": { + "description": "A datetime field", + "type": "string" + }, + "publishedAt": { + "description": "A datetime field", + "default": "2025-09-12T06:37:57.354Z", + "type": "string" + }, + "quiz": { + "description": "A component field", + "type": "array", + "items": { + "$ref": "#/components/schemas/MatrixQuestionEntry" + } + }, + "mentors": { + "description": "A relational field", + "type": "array", + "items": { + "$ref": "#/components/schemas/PluginUsersPermissionsUserDocument" + } + }, + "activities": { + "description": "A relational field", + "type": "array", + "items": { + "$ref": "#/components/schemas/ApiActivityActivityDocument" + } + } + }, + "required": [ + "documentId", + "id", + "name", + "publishedAt" + ], + "additionalProperties": false + } + }, + "required": [ + "data" + ], + "additionalProperties": false + } + } + } + }, + "400": { + "description": "Bad request" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not found" + }, + "500": { + "description": "Internal server error" + } + }, + "tags": [ + "dimension" + ] + }, + "put": { + "operationId": "dimension/put/dimensions_by_id", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "The document ID, represented by a UUID", + "type": "string", + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$" + } + }, + { + "name": "fields", + "in": "query", + "required": false, + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "The fields to return, this doesn't include populatable fields like relations, components, files, or dynamic zones", + "readOnly": true, + "type": "array", + "items": { + "type": "string", + "enum": [ + "name", + "link", + "createdAt", + "updatedAt", + "publishedAt" + ] + } + }, + "x-strapi-serialize": "querystring" + }, + { + "name": "populate", + "in": "query", + "required": false, + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "anyOf": [ + { + "description": "Populate all the first level relations, components, files, and dynamic zones for the entry", + "readOnly": true, + "type": "string", + "const": "*" + }, + { + "description": "Populate a single relation, component, file, or dynamic zone", + "readOnly": true, + "type": "string", + "enum": [ + "quiz", + "mentors", + "activities" + ] + }, + { + "description": "Populate a selection of multiple relations, components, files, or dynamic zones", + "type": "array", + "items": { + "type": "string", + "enum": [ + "quiz", + "mentors", + "activities" + ] + } + } + ] + }, + "x-strapi-serialize": "querystring" + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "type": "object", + "properties": { + "data": { + "type": "object", + "properties": { + "documentId": { + "description": "The document ID, represented by a UUID", + "type": "string", + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$" + }, + "id": { + "type": "number" + }, + "name": { + "description": "A string field", + "type": "string" + }, + "link": { + "description": "A string field", + "type": "string" + }, + "createdAt": { + "description": "A datetime field", + "type": "string" + }, + "updatedAt": { + "description": "A datetime field", + "type": "string" + }, + "publishedAt": { + "description": "A datetime field", + "default": "2025-09-12T06:37:57.371Z", + "type": "string" + }, + "quiz": { + "description": "A component field", + "type": "array", + "items": { + "$ref": "#/components/schemas/MatrixQuestionEntry" + } + }, + "mentors": { + "description": "A relational field", + "type": "array", + "items": { + "$ref": "#/components/schemas/PluginUsersPermissionsUserDocument" + } + }, + "activities": { + "description": "A relational field", + "type": "array", + "items": { + "$ref": "#/components/schemas/ApiActivityActivityDocument" + } + } + }, + "required": [ + "documentId", + "id", + "name", + "publishedAt" + ], + "additionalProperties": false + } + }, + "required": [ + "data" + ], + "additionalProperties": false + } + } + } + }, + "400": { + "description": "Bad request" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not found" + }, + "500": { + "description": "Internal server error" + } + }, + "tags": [ + "dimension" + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "type": "object", + "properties": { + "data": { + "type": "object", + "properties": { + "name": { + "description": "A string field", + "type": "string" + }, + "link": { + "description": "A string field", + "type": "string" + }, + "publishedAt": { + "description": "A datetime field", + "default": "2025-09-12T06:37:57.370Z", + "type": "string" + }, + "quiz": { + "description": "A component field", + "type": "array", + "items": {} + }, + "mentors": { + "description": "A relational field", + "type": "array", + "items": { + "type": "string", + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$" + } + }, + "activities": { + "description": "A relational field", + "type": "array", + "items": { + "type": "string", + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$" + } + } + }, + "additionalProperties": false + } + }, + "required": [ + "data" + ], + "additionalProperties": false + } + } + } + } + }, + "delete": { + "operationId": "dimension/delete/dimensions_by_id", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "The document ID, represented by a UUID", + "type": "string", + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$" + } + }, + { + "name": "fields", + "in": "query", + "required": false, + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "The fields to return, this doesn't include populatable fields like relations, components, files, or dynamic zones", + "readOnly": true, + "type": "array", + "items": { + "type": "string", + "enum": [ + "name", + "link", + "createdAt", + "updatedAt", + "publishedAt" + ] + } + }, + "x-strapi-serialize": "querystring" + }, + { + "name": "populate", + "in": "query", + "required": false, + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "anyOf": [ + { + "description": "Populate all the first level relations, components, files, and dynamic zones for the entry", + "readOnly": true, + "type": "string", + "const": "*" + }, + { + "description": "Populate a single relation, component, file, or dynamic zone", + "readOnly": true, + "type": "string", + "enum": [ + "quiz", + "mentors", + "activities" + ] + }, + { + "description": "Populate a selection of multiple relations, components, files, or dynamic zones", + "type": "array", + "items": { + "type": "string", + "enum": [ + "quiz", + "mentors", + "activities" + ] + } + } + ] + }, + "x-strapi-serialize": "querystring" + }, + { + "name": "filters", + "in": "query", + "required": false, + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "Filters to apply to the query", + "type": "object", + "propertyNames": { + "type": "string", + "enum": [ + "name", + "link", + "createdAt", + "updatedAt", + "publishedAt" + ] + }, + "additionalProperties": {} + }, + "x-strapi-serialize": "querystring" + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "type": "object", + "properties": { + "data": { + "type": "object", + "properties": { + "documentId": { + "description": "The document ID, represented by a UUID", + "type": "string", + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$" + }, + "id": { + "type": "number" + }, + "name": { + "description": "A string field", + "type": "string" + }, + "link": { + "description": "A string field", + "type": "string" + }, + "createdAt": { + "description": "A datetime field", + "type": "string" + }, + "updatedAt": { + "description": "A datetime field", + "type": "string" + }, + "publishedAt": { + "description": "A datetime field", + "default": "2025-09-12T06:37:57.374Z", + "type": "string" + }, + "quiz": { + "description": "A component field", + "type": "array", + "items": { + "$ref": "#/components/schemas/MatrixQuestionEntry" + } + }, + "mentors": { + "description": "A relational field", + "type": "array", + "items": { + "$ref": "#/components/schemas/PluginUsersPermissionsUserDocument" + } + }, + "activities": { + "description": "A relational field", + "type": "array", + "items": { + "$ref": "#/components/schemas/ApiActivityActivityDocument" + } + } + }, + "required": [ + "documentId", + "id", + "name", + "publishedAt" + ], + "additionalProperties": false + } + }, + "required": [ + "data" + ], + "additionalProperties": false + } + } + } + }, + "400": { + "description": "Bad request" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not found" + }, + "500": { + "description": "Internal server error" + } + }, + "tags": [ + "dimension" + ] + } + }, + "/domains": { + "get": { + "operationId": "domain/get/domains", + "parameters": [ + { + "name": "fields", + "in": "query", + "required": false, + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "The fields to return, this doesn't include populatable fields like relations, components, files, or dynamic zones", + "readOnly": true, + "type": "array", + "items": { + "type": "string", + "enum": [ + "name", + "createdAt", + "updatedAt", + "publishedAt" + ] + } + }, + "x-strapi-serialize": "querystring" + }, + { + "name": "filters", + "in": "query", + "required": false, + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "Filters to apply to the query", + "type": "object", + "propertyNames": { + "type": "string", + "enum": [ + "name", + "createdAt", + "updatedAt", + "publishedAt" + ] + }, + "additionalProperties": {} + }, + "x-strapi-serialize": "querystring" + }, + { + "name": "_q", + "in": "query", + "required": false, + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "type": "string" + }, + "x-strapi-serialize": "querystring" + }, + { + "name": "pagination", + "in": "query", + "required": false, + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "Pagination parameters", + "allOf": [ + { + "type": "object", + "properties": { + "withCount": { + "description": "Include total count in response", + "type": "boolean" + } + }, + "additionalProperties": false + }, + { + "anyOf": [ + { + "description": "Page-based pagination", + "type": "object", + "properties": { + "page": { + "description": "Page number (1-based)", + "type": "integer", + "exclusiveMinimum": 0, + "maximum": 9007199254740991 + }, + "pageSize": { + "description": "Number of entries per page", + "type": "integer", + "exclusiveMinimum": 0, + "maximum": 9007199254740991 + } + }, + "required": [ + "page", + "pageSize" + ], + "additionalProperties": false + }, + { + "description": "Offset-based pagination", + "type": "object", + "properties": { + "start": { + "description": "Number of entries to skip", + "type": "integer", + "minimum": 0, + "maximum": 9007199254740991 + }, + "limit": { + "description": "Maximum number of entries to return", + "type": "integer", + "exclusiveMinimum": 0, + "maximum": 9007199254740991 + } + }, + "required": [ + "start", + "limit" + ], + "additionalProperties": false + } + ] + } + ] + }, + "x-strapi-serialize": "querystring" + }, + { + "name": "sort", + "in": "query", + "required": false, + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "Sort the result", + "anyOf": [ + { + "type": "string", + "enum": [ + "name", + "createdAt", + "updatedAt", + "publishedAt" + ] + }, + { + "type": "array", + "items": { + "type": "string", + "enum": [ + "name", + "createdAt", + "updatedAt", + "publishedAt" + ] + } + }, + { + "type": "object", + "propertyNames": { + "type": "string", + "enum": [ + "name", + "createdAt", + "updatedAt", + "publishedAt" + ] + }, + "additionalProperties": { + "type": "string", + "enum": [ + "asc", + "desc" + ] + } + }, + { + "type": "array", + "items": { + "type": "object", + "propertyNames": { + "type": "string", + "enum": [ + "name", + "createdAt", + "updatedAt", + "publishedAt" + ] + }, + "additionalProperties": { + "type": "string", + "enum": [ + "asc", + "desc" + ] + } + } + } + ] + }, + "x-strapi-serialize": "querystring" + }, + { + "name": "populate", + "in": "query", + "required": false, + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "anyOf": [ + { + "description": "Populate all the first level relations, components, files, and dynamic zones for the entry", + "readOnly": true, + "type": "string", + "const": "*" + }, + { + "description": "Populate a single relation, component, file, or dynamic zone", + "readOnly": true, + "type": "string", + "enum": [ + "mentors" + ] + }, + { + "description": "Populate a selection of multiple relations, components, files, or dynamic zones", + "type": "array", + "items": { + "type": "string", + "enum": [ + "mentors" + ] + } + } + ] + }, + "x-strapi-serialize": "querystring" + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "type": "object", + "properties": { + "data": { + "type": "array", + "items": { + "type": "object", + "properties": { + "documentId": { + "description": "The document ID, represented by a UUID", + "type": "string", + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$" + }, + "id": { + "type": "number" + }, + "name": { + "description": "A string field", + "type": "string" + }, + "createdAt": { + "description": "A datetime field", + "type": "string" + }, + "updatedAt": { + "description": "A datetime field", + "type": "string" + }, + "publishedAt": { + "description": "A datetime field", + "default": "2025-09-12T06:37:57.379Z", + "type": "string" + }, + "mentors": { + "description": "A relational field", + "type": "array", + "items": { + "$ref": "#/components/schemas/PluginUsersPermissionsUserDocument" + } + } + }, + "required": [ + "documentId", + "id", + "publishedAt" + ], + "additionalProperties": false + } + } + }, + "required": [ + "data" + ], + "additionalProperties": false + } + } + } + }, + "400": { + "description": "Bad request" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not found" + }, + "500": { + "description": "Internal server error" + } + }, + "tags": [ + "domain" + ] + }, + "post": { + "operationId": "domain/post/domains", + "parameters": [ + { + "name": "fields", + "in": "query", + "required": false, + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "The fields to return, this doesn't include populatable fields like relations, components, files, or dynamic zones", + "readOnly": true, + "type": "array", + "items": { + "type": "string", + "enum": [ + "name", + "createdAt", + "updatedAt", + "publishedAt" + ] + } + }, + "x-strapi-serialize": "querystring" + }, + { + "name": "populate", + "in": "query", + "required": false, + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "anyOf": [ + { + "description": "Populate all the first level relations, components, files, and dynamic zones for the entry", + "readOnly": true, + "type": "string", + "const": "*" + }, + { + "description": "Populate a single relation, component, file, or dynamic zone", + "readOnly": true, + "type": "string", + "enum": [ + "mentors" + ] + }, + { + "description": "Populate a selection of multiple relations, components, files, or dynamic zones", + "type": "array", + "items": { + "type": "string", + "enum": [ + "mentors" + ] + } + } + ] + }, + "x-strapi-serialize": "querystring" + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "type": "object", + "properties": { + "data": { + "type": "object", + "properties": { + "documentId": { + "description": "The document ID, represented by a UUID", + "type": "string", + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$" + }, + "id": { + "type": "number" + }, + "name": { + "description": "A string field", + "type": "string" + }, + "createdAt": { + "description": "A datetime field", + "type": "string" + }, + "updatedAt": { + "description": "A datetime field", + "type": "string" + }, + "publishedAt": { + "description": "A datetime field", + "default": "2025-09-12T06:37:57.389Z", + "type": "string" + }, + "mentors": { + "description": "A relational field", + "type": "array", + "items": { + "$ref": "#/components/schemas/PluginUsersPermissionsUserDocument" + } + } + }, + "required": [ + "documentId", + "id", + "publishedAt" + ], + "additionalProperties": false + } + }, + "required": [ + "data" + ], + "additionalProperties": false + } + } + } + }, + "400": { + "description": "Bad request" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not found" + }, + "500": { + "description": "Internal server error" + } + }, + "tags": [ + "domain" + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "type": "object", + "properties": { + "data": { + "type": "object", + "properties": { + "name": { + "description": "A string field", + "type": "string" + }, + "publishedAt": { + "description": "A datetime field", + "default": "2025-09-12T06:37:57.388Z", + "type": "string" + }, + "mentors": { + "description": "A relational field", + "type": "array", + "items": { + "type": "string", + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$" + } + } + }, + "required": [ + "publishedAt" + ], + "additionalProperties": false + } + }, + "required": [ + "data" + ], + "additionalProperties": false + } + } + } + } + } + }, + "/domains/{id}": { + "get": { + "operationId": "domain/get/domains_by_id", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "The document ID, represented by a UUID", + "type": "string", + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$" + } + }, + { + "name": "fields", + "in": "query", + "required": false, + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "The fields to return, this doesn't include populatable fields like relations, components, files, or dynamic zones", + "readOnly": true, + "type": "array", + "items": { + "type": "string", + "enum": [ + "name", + "createdAt", + "updatedAt", + "publishedAt" + ] + } + }, + "x-strapi-serialize": "querystring" + }, + { + "name": "populate", + "in": "query", + "required": false, + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "anyOf": [ + { + "description": "Populate all the first level relations, components, files, and dynamic zones for the entry", + "readOnly": true, + "type": "string", + "const": "*" + }, + { + "description": "Populate a single relation, component, file, or dynamic zone", + "readOnly": true, + "type": "string", + "enum": [ + "mentors" + ] + }, + { + "description": "Populate a selection of multiple relations, components, files, or dynamic zones", + "type": "array", + "items": { + "type": "string", + "enum": [ + "mentors" + ] + } + } + ] + }, + "x-strapi-serialize": "querystring" + }, + { + "name": "filters", + "in": "query", + "required": false, + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "Filters to apply to the query", + "type": "object", + "propertyNames": { + "type": "string", + "enum": [ + "name", + "createdAt", + "updatedAt", + "publishedAt" + ] + }, + "additionalProperties": {} + }, + "x-strapi-serialize": "querystring" + }, + { + "name": "sort", + "in": "query", + "required": false, + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "Sort the result", + "anyOf": [ + { + "type": "string", + "enum": [ + "name", + "createdAt", + "updatedAt", + "publishedAt" + ] + }, + { + "type": "array", + "items": { + "type": "string", + "enum": [ + "name", + "createdAt", + "updatedAt", + "publishedAt" + ] + } + }, + { + "type": "object", + "propertyNames": { + "type": "string", + "enum": [ + "name", + "createdAt", + "updatedAt", + "publishedAt" + ] + }, + "additionalProperties": { + "type": "string", + "enum": [ + "asc", + "desc" + ] + } + }, + { + "type": "array", + "items": { + "type": "object", + "propertyNames": { + "type": "string", + "enum": [ + "name", + "createdAt", + "updatedAt", + "publishedAt" + ] + }, + "additionalProperties": { + "type": "string", + "enum": [ + "asc", + "desc" + ] + } + } + } + ] + }, + "x-strapi-serialize": "querystring" + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "type": "object", + "properties": { + "data": { + "type": "object", + "properties": { + "documentId": { + "description": "The document ID, represented by a UUID", + "type": "string", + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$" + }, + "id": { + "type": "number" + }, + "name": { + "description": "A string field", + "type": "string" + }, + "createdAt": { + "description": "A datetime field", + "type": "string" + }, + "updatedAt": { + "description": "A datetime field", + "type": "string" + }, + "publishedAt": { + "description": "A datetime field", + "default": "2025-09-12T06:37:57.384Z", + "type": "string" + }, + "mentors": { + "description": "A relational field", + "type": "array", + "items": { + "$ref": "#/components/schemas/PluginUsersPermissionsUserDocument" + } + } + }, + "required": [ + "documentId", + "id", + "publishedAt" + ], + "additionalProperties": false + } + }, + "required": [ + "data" + ], + "additionalProperties": false + } + } + } + }, + "400": { + "description": "Bad request" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not found" + }, + "500": { + "description": "Internal server error" + } + }, + "tags": [ + "domain" + ] + }, + "put": { + "operationId": "domain/put/domains_by_id", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "The document ID, represented by a UUID", + "type": "string", + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$" + } + }, + { + "name": "fields", + "in": "query", + "required": false, + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "The fields to return, this doesn't include populatable fields like relations, components, files, or dynamic zones", + "readOnly": true, + "type": "array", + "items": { + "type": "string", + "enum": [ + "name", + "createdAt", + "updatedAt", + "publishedAt" + ] + } + }, + "x-strapi-serialize": "querystring" + }, + { + "name": "populate", + "in": "query", + "required": false, + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "anyOf": [ + { + "description": "Populate all the first level relations, components, files, and dynamic zones for the entry", + "readOnly": true, + "type": "string", + "const": "*" + }, + { + "description": "Populate a single relation, component, file, or dynamic zone", + "readOnly": true, + "type": "string", + "enum": [ + "mentors" + ] + }, + { + "description": "Populate a selection of multiple relations, components, files, or dynamic zones", + "type": "array", + "items": { + "type": "string", + "enum": [ + "mentors" + ] + } + } + ] + }, + "x-strapi-serialize": "querystring" + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "type": "object", + "properties": { + "data": { + "type": "object", + "properties": { + "documentId": { + "description": "The document ID, represented by a UUID", + "type": "string", + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$" + }, + "id": { + "type": "number" + }, + "name": { + "description": "A string field", + "type": "string" + }, + "createdAt": { + "description": "A datetime field", + "type": "string" + }, + "updatedAt": { + "description": "A datetime field", + "type": "string" + }, + "publishedAt": { + "description": "A datetime field", + "default": "2025-09-12T06:37:57.392Z", + "type": "string" + }, + "mentors": { + "description": "A relational field", + "type": "array", + "items": { + "$ref": "#/components/schemas/PluginUsersPermissionsUserDocument" + } + } + }, + "required": [ + "documentId", + "id", + "publishedAt" + ], + "additionalProperties": false + } + }, + "required": [ + "data" + ], + "additionalProperties": false + } + } + } + }, + "400": { + "description": "Bad request" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not found" + }, + "500": { + "description": "Internal server error" + } + }, + "tags": [ + "domain" + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "type": "object", + "properties": { + "data": { + "type": "object", + "properties": { + "name": { + "description": "A string field", + "type": "string" + }, + "publishedAt": { + "description": "A datetime field", + "default": "2025-09-12T06:37:57.391Z", + "type": "string" + }, + "mentors": { + "description": "A relational field", + "type": "array", + "items": { + "type": "string", + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$" + } + } + }, + "additionalProperties": false + } + }, + "required": [ + "data" + ], + "additionalProperties": false + } + } + } + } + }, + "delete": { + "operationId": "domain/delete/domains_by_id", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "The document ID, represented by a UUID", + "type": "string", + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$" + } + }, + { + "name": "fields", + "in": "query", + "required": false, + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "The fields to return, this doesn't include populatable fields like relations, components, files, or dynamic zones", + "readOnly": true, + "type": "array", + "items": { + "type": "string", + "enum": [ + "name", + "createdAt", + "updatedAt", + "publishedAt" + ] + } + }, + "x-strapi-serialize": "querystring" + }, + { + "name": "populate", + "in": "query", + "required": false, + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "anyOf": [ + { + "description": "Populate all the first level relations, components, files, and dynamic zones for the entry", + "readOnly": true, + "type": "string", + "const": "*" + }, + { + "description": "Populate a single relation, component, file, or dynamic zone", + "readOnly": true, + "type": "string", + "enum": [ + "mentors" + ] + }, + { + "description": "Populate a selection of multiple relations, components, files, or dynamic zones", + "type": "array", + "items": { + "type": "string", + "enum": [ + "mentors" + ] + } + } + ] + }, + "x-strapi-serialize": "querystring" + }, + { + "name": "filters", + "in": "query", + "required": false, + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "Filters to apply to the query", + "type": "object", + "propertyNames": { + "type": "string", + "enum": [ + "name", + "createdAt", + "updatedAt", + "publishedAt" + ] + }, + "additionalProperties": {} + }, + "x-strapi-serialize": "querystring" + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "type": "object", + "properties": { + "data": { + "type": "object", + "properties": { + "documentId": { + "description": "The document ID, represented by a UUID", + "type": "string", + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$" + }, + "id": { + "type": "number" + }, + "name": { + "description": "A string field", + "type": "string" + }, + "createdAt": { + "description": "A datetime field", + "type": "string" + }, + "updatedAt": { + "description": "A datetime field", + "type": "string" + }, + "publishedAt": { + "description": "A datetime field", + "default": "2025-09-12T06:37:57.395Z", + "type": "string" + }, + "mentors": { + "description": "A relational field", + "type": "array", + "items": { + "$ref": "#/components/schemas/PluginUsersPermissionsUserDocument" + } + } + }, + "required": [ + "documentId", + "id", + "publishedAt" + ], + "additionalProperties": false + } + }, + "required": [ + "data" + ], + "additionalProperties": false + } + } + } + }, + "400": { + "description": "Bad request" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not found" + }, + "500": { + "description": "Internal server error" + } + }, + "tags": [ + "domain" + ] + } + }, + "/evaluations": { + "get": { + "operationId": "evaluation/get/evaluations", + "parameters": [ + { + "name": "fields", + "in": "query", + "required": false, + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "The fields to return, this doesn't include populatable fields like relations, components, files, or dynamic zones", + "readOnly": true, + "type": "array", + "items": { + "type": "string", + "enum": [ + "email", + "createdAt", + "updatedAt", + "publishedAt" + ] + } + }, + "x-strapi-serialize": "querystring" + }, + { + "name": "filters", + "in": "query", + "required": false, + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "Filters to apply to the query", + "type": "object", + "propertyNames": { + "type": "string", + "enum": [ + "email", + "createdAt", + "updatedAt", + "publishedAt" + ] + }, + "additionalProperties": {} + }, + "x-strapi-serialize": "querystring" + }, + { + "name": "_q", + "in": "query", + "required": false, + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "type": "string" + }, + "x-strapi-serialize": "querystring" + }, + { + "name": "pagination", + "in": "query", + "required": false, + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "Pagination parameters", + "allOf": [ + { + "type": "object", + "properties": { + "withCount": { + "description": "Include total count in response", + "type": "boolean" + } + }, + "additionalProperties": false + }, + { + "anyOf": [ + { + "description": "Page-based pagination", + "type": "object", + "properties": { + "page": { + "description": "Page number (1-based)", + "type": "integer", + "exclusiveMinimum": 0, + "maximum": 9007199254740991 + }, + "pageSize": { + "description": "Number of entries per page", + "type": "integer", + "exclusiveMinimum": 0, + "maximum": 9007199254740991 + } + }, + "required": [ + "page", + "pageSize" + ], + "additionalProperties": false + }, + { + "description": "Offset-based pagination", + "type": "object", + "properties": { + "start": { + "description": "Number of entries to skip", + "type": "integer", + "minimum": 0, + "maximum": 9007199254740991 + }, + "limit": { + "description": "Maximum number of entries to return", + "type": "integer", + "exclusiveMinimum": 0, + "maximum": 9007199254740991 + } + }, + "required": [ + "start", + "limit" + ], + "additionalProperties": false + } + ] + } + ] + }, + "x-strapi-serialize": "querystring" + }, + { + "name": "sort", + "in": "query", + "required": false, + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "Sort the result", + "anyOf": [ + { + "type": "string", + "enum": [ + "email", + "createdAt", + "updatedAt", + "publishedAt" + ] + }, + { + "type": "array", + "items": { + "type": "string", + "enum": [ + "email", + "createdAt", + "updatedAt", + "publishedAt" + ] + } + }, + { + "type": "object", + "propertyNames": { + "type": "string", + "enum": [ + "email", + "createdAt", + "updatedAt", + "publishedAt" + ] + }, + "additionalProperties": { + "type": "string", + "enum": [ + "asc", + "desc" + ] + } + }, + { + "type": "array", + "items": { + "type": "object", + "propertyNames": { + "type": "string", + "enum": [ + "email", + "createdAt", + "updatedAt", + "publishedAt" + ] + }, + "additionalProperties": { + "type": "string", + "enum": [ + "asc", + "desc" + ] + } + } + } + ] + }, + "x-strapi-serialize": "querystring" + }, + { + "name": "populate", + "in": "query", + "required": false, + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "anyOf": [ + { + "description": "Populate all the first level relations, components, files, and dynamic zones for the entry", + "readOnly": true, + "type": "string", + "const": "*" + }, + { + "description": "Populate a single relation, component, file, or dynamic zone", + "readOnly": true, + "type": "string", + "enum": [ + "dimensions", + "report" + ] + }, + { + "description": "Populate a selection of multiple relations, components, files, or dynamic zones", + "type": "array", + "items": { + "type": "string", + "enum": [ + "dimensions", + "report" + ] + } + } + ] + }, + "x-strapi-serialize": "querystring" + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "type": "object", + "properties": { + "data": { + "type": "array", + "items": { + "type": "object", + "properties": { + "documentId": { + "description": "The document ID, represented by a UUID", + "type": "string", + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$" + }, + "id": { + "type": "number" + }, + "email": { + "description": "An email field", + "type": "string", + "format": "email", + "pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$" + }, + "createdAt": { + "description": "A datetime field", + "type": "string" + }, + "updatedAt": { + "description": "A datetime field", + "type": "string" + }, + "publishedAt": { + "description": "A datetime field", + "default": "2025-09-12T06:37:57.400Z", + "type": "string" + }, + "dimensions": { + "description": "A component field", + "type": "array", + "items": { + "$ref": "#/components/schemas/EvaluationDimensionEntry" + } + }, + "report": { + "description": "A relational field", + "$ref": "#/components/schemas/ApiReportReportDocument" + } + }, + "required": [ + "documentId", + "id", + "email", + "publishedAt" + ], + "additionalProperties": false + } + } + }, + "required": [ + "data" + ], + "additionalProperties": false + } + } + } + }, + "400": { + "description": "Bad request" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not found" + }, + "500": { + "description": "Internal server error" + } + }, + "tags": [ + "evaluation" + ] + }, + "post": { + "operationId": "evaluation/post/evaluations", + "parameters": [ + { + "name": "fields", + "in": "query", + "required": false, + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "The fields to return, this doesn't include populatable fields like relations, components, files, or dynamic zones", + "readOnly": true, + "type": "array", + "items": { + "type": "string", + "enum": [ + "email", + "createdAt", + "updatedAt", + "publishedAt" + ] + } + }, + "x-strapi-serialize": "querystring" + }, + { + "name": "populate", + "in": "query", + "required": false, + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "anyOf": [ + { + "description": "Populate all the first level relations, components, files, and dynamic zones for the entry", + "readOnly": true, + "type": "string", + "const": "*" + }, + { + "description": "Populate a single relation, component, file, or dynamic zone", + "readOnly": true, + "type": "string", + "enum": [ + "dimensions", + "report" + ] + }, + { + "description": "Populate a selection of multiple relations, components, files, or dynamic zones", + "type": "array", + "items": { + "type": "string", + "enum": [ + "dimensions", + "report" + ] + } + } + ] + }, + "x-strapi-serialize": "querystring" + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "type": "object", + "properties": { + "data": { + "type": "object", + "properties": { + "documentId": { + "description": "The document ID, represented by a UUID", + "type": "string", + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$" + }, + "id": { + "type": "number" + }, + "email": { + "description": "An email field", + "type": "string", + "format": "email", + "pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$" + }, + "createdAt": { + "description": "A datetime field", + "type": "string" + }, + "updatedAt": { + "description": "A datetime field", + "type": "string" + }, + "publishedAt": { + "description": "A datetime field", + "default": "2025-09-12T06:37:57.409Z", + "type": "string" + }, + "dimensions": { + "description": "A component field", + "type": "array", + "items": { + "$ref": "#/components/schemas/EvaluationDimensionEntry" + } + }, + "report": { + "description": "A relational field", + "$ref": "#/components/schemas/ApiReportReportDocument" + } + }, + "required": [ + "documentId", + "id", + "email", + "publishedAt" + ], + "additionalProperties": false + } + }, + "required": [ + "data" + ], + "additionalProperties": false + } + } + } + }, + "400": { + "description": "Bad request" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not found" + }, + "500": { + "description": "Internal server error" + } + }, + "tags": [ + "evaluation" + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "type": "object", + "properties": { + "data": { + "type": "object", + "properties": { + "email": { + "description": "An email field", + "type": "string", + "format": "email", + "pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$" + }, + "publishedAt": { + "description": "A datetime field", + "default": "2025-09-12T06:37:57.408Z", + "type": "string" + }, + "dimensions": { + "description": "A component field", + "type": "array", + "items": {} + }, + "report": { + "description": "A relational field", + "type": "string", + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$" + } + }, + "required": [ + "email", + "publishedAt" + ], + "additionalProperties": false + } + }, + "required": [ + "data" + ], + "additionalProperties": false + } + } + } + } + } + }, + "/evaluations/{id}": { + "get": { + "operationId": "evaluation/get/evaluations_by_id", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "The document ID, represented by a UUID", + "type": "string", + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$" + } + }, + { + "name": "fields", + "in": "query", + "required": false, + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "The fields to return, this doesn't include populatable fields like relations, components, files, or dynamic zones", + "readOnly": true, + "type": "array", + "items": { + "type": "string", + "enum": [ + "email", + "createdAt", + "updatedAt", + "publishedAt" + ] + } + }, + "x-strapi-serialize": "querystring" + }, + { + "name": "populate", + "in": "query", + "required": false, + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "anyOf": [ + { + "description": "Populate all the first level relations, components, files, and dynamic zones for the entry", + "readOnly": true, + "type": "string", + "const": "*" + }, + { + "description": "Populate a single relation, component, file, or dynamic zone", + "readOnly": true, + "type": "string", + "enum": [ + "dimensions", + "report" + ] + }, + { + "description": "Populate a selection of multiple relations, components, files, or dynamic zones", + "type": "array", + "items": { + "type": "string", + "enum": [ + "dimensions", + "report" + ] + } + } + ] + }, + "x-strapi-serialize": "querystring" + }, + { + "name": "filters", + "in": "query", + "required": false, + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "Filters to apply to the query", + "type": "object", + "propertyNames": { + "type": "string", + "enum": [ + "email", + "createdAt", + "updatedAt", + "publishedAt" + ] + }, + "additionalProperties": {} + }, + "x-strapi-serialize": "querystring" + }, + { + "name": "sort", + "in": "query", + "required": false, + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "Sort the result", + "anyOf": [ + { + "type": "string", + "enum": [ + "email", + "createdAt", + "updatedAt", + "publishedAt" + ] + }, + { + "type": "array", + "items": { + "type": "string", + "enum": [ + "email", + "createdAt", + "updatedAt", + "publishedAt" + ] + } + }, + { + "type": "object", + "propertyNames": { + "type": "string", + "enum": [ + "email", + "createdAt", + "updatedAt", + "publishedAt" + ] + }, + "additionalProperties": { + "type": "string", + "enum": [ + "asc", + "desc" + ] + } + }, + { + "type": "array", + "items": { + "type": "object", + "propertyNames": { + "type": "string", + "enum": [ + "email", + "createdAt", + "updatedAt", + "publishedAt" + ] + }, + "additionalProperties": { + "type": "string", + "enum": [ + "asc", + "desc" + ] + } + } + } + ] + }, + "x-strapi-serialize": "querystring" + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "type": "object", + "properties": { + "data": { + "type": "object", + "properties": { + "documentId": { + "description": "The document ID, represented by a UUID", + "type": "string", + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$" + }, + "id": { + "type": "number" + }, + "email": { + "description": "An email field", + "type": "string", + "format": "email", + "pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$" + }, + "createdAt": { + "description": "A datetime field", + "type": "string" + }, + "updatedAt": { + "description": "A datetime field", + "type": "string" + }, + "publishedAt": { + "description": "A datetime field", + "default": "2025-09-12T06:37:57.406Z", + "type": "string" + }, + "dimensions": { + "description": "A component field", + "type": "array", + "items": { + "$ref": "#/components/schemas/EvaluationDimensionEntry" + } + }, + "report": { + "description": "A relational field", + "$ref": "#/components/schemas/ApiReportReportDocument" + } + }, + "required": [ + "documentId", + "id", + "email", + "publishedAt" + ], + "additionalProperties": false + } + }, + "required": [ + "data" + ], + "additionalProperties": false + } + } + } + }, + "400": { + "description": "Bad request" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not found" + }, + "500": { + "description": "Internal server error" + } + }, + "tags": [ + "evaluation" + ] + }, + "put": { + "operationId": "evaluation/put/evaluations_by_id", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "The document ID, represented by a UUID", + "type": "string", + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$" + } + }, + { + "name": "fields", + "in": "query", + "required": false, + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "The fields to return, this doesn't include populatable fields like relations, components, files, or dynamic zones", + "readOnly": true, + "type": "array", + "items": { + "type": "string", + "enum": [ + "email", + "createdAt", + "updatedAt", + "publishedAt" + ] + } + }, + "x-strapi-serialize": "querystring" + }, + { + "name": "populate", + "in": "query", + "required": false, + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "anyOf": [ + { + "description": "Populate all the first level relations, components, files, and dynamic zones for the entry", + "readOnly": true, + "type": "string", + "const": "*" + }, + { + "description": "Populate a single relation, component, file, or dynamic zone", + "readOnly": true, + "type": "string", + "enum": [ + "dimensions", + "report" + ] + }, + { + "description": "Populate a selection of multiple relations, components, files, or dynamic zones", + "type": "array", + "items": { + "type": "string", + "enum": [ + "dimensions", + "report" + ] + } + } + ] + }, + "x-strapi-serialize": "querystring" + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "type": "object", + "properties": { + "data": { + "type": "object", + "properties": { + "documentId": { + "description": "The document ID, represented by a UUID", + "type": "string", + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$" + }, + "id": { + "type": "number" + }, + "email": { + "description": "An email field", + "type": "string", + "format": "email", + "pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$" + }, + "createdAt": { + "description": "A datetime field", + "type": "string" + }, + "updatedAt": { + "description": "A datetime field", + "type": "string" + }, + "publishedAt": { + "description": "A datetime field", + "default": "2025-09-12T06:37:57.413Z", + "type": "string" + }, + "dimensions": { + "description": "A component field", + "type": "array", + "items": { + "$ref": "#/components/schemas/EvaluationDimensionEntry" + } + }, + "report": { + "description": "A relational field", + "$ref": "#/components/schemas/ApiReportReportDocument" + } + }, + "required": [ + "documentId", + "id", + "email", + "publishedAt" + ], + "additionalProperties": false + } + }, + "required": [ + "data" + ], + "additionalProperties": false + } + } + } + }, + "400": { + "description": "Bad request" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not found" + }, + "500": { + "description": "Internal server error" + } + }, + "tags": [ + "evaluation" + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "type": "object", + "properties": { + "data": { + "type": "object", + "properties": { + "email": { + "description": "An email field", + "type": "string", + "format": "email", + "pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$" + }, + "publishedAt": { + "description": "A datetime field", + "default": "2025-09-12T06:37:57.411Z", + "type": "string" + }, + "dimensions": { + "description": "A component field", + "type": "array", + "items": {} + }, + "report": { + "description": "A relational field", + "type": "string", + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$" + } + }, + "additionalProperties": false + } + }, + "required": [ + "data" + ], + "additionalProperties": false + } + } + } + } + }, + "delete": { + "operationId": "evaluation/delete/evaluations_by_id", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "The document ID, represented by a UUID", + "type": "string", + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$" + } + }, + { + "name": "fields", + "in": "query", + "required": false, + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "The fields to return, this doesn't include populatable fields like relations, components, files, or dynamic zones", + "readOnly": true, + "type": "array", + "items": { + "type": "string", + "enum": [ + "email", + "createdAt", + "updatedAt", + "publishedAt" + ] + } + }, + "x-strapi-serialize": "querystring" + }, + { + "name": "populate", + "in": "query", + "required": false, + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "anyOf": [ + { + "description": "Populate all the first level relations, components, files, and dynamic zones for the entry", + "readOnly": true, + "type": "string", + "const": "*" + }, + { + "description": "Populate a single relation, component, file, or dynamic zone", + "readOnly": true, + "type": "string", + "enum": [ + "dimensions", + "report" + ] + }, + { + "description": "Populate a selection of multiple relations, components, files, or dynamic zones", + "type": "array", + "items": { + "type": "string", + "enum": [ + "dimensions", + "report" + ] + } + } + ] + }, + "x-strapi-serialize": "querystring" + }, + { + "name": "filters", + "in": "query", + "required": false, + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "Filters to apply to the query", + "type": "object", + "propertyNames": { + "type": "string", + "enum": [ + "email", + "createdAt", + "updatedAt", + "publishedAt" + ] + }, + "additionalProperties": {} + }, + "x-strapi-serialize": "querystring" + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "type": "object", + "properties": { + "data": { + "type": "object", + "properties": { + "documentId": { + "description": "The document ID, represented by a UUID", + "type": "string", + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$" + }, + "id": { + "type": "number" + }, + "email": { + "description": "An email field", + "type": "string", + "format": "email", + "pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$" + }, + "createdAt": { + "description": "A datetime field", + "type": "string" + }, + "updatedAt": { + "description": "A datetime field", + "type": "string" + }, + "publishedAt": { + "description": "A datetime field", + "default": "2025-09-12T06:37:57.416Z", + "type": "string" + }, + "dimensions": { + "description": "A component field", + "type": "array", + "items": { + "$ref": "#/components/schemas/EvaluationDimensionEntry" + } + }, + "report": { + "description": "A relational field", + "$ref": "#/components/schemas/ApiReportReportDocument" + } + }, + "required": [ + "documentId", + "id", + "email", + "publishedAt" + ], + "additionalProperties": false + } + }, + "required": [ + "data" + ], + "additionalProperties": false + } + } + } + }, + "400": { + "description": "Bad request" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not found" + }, + "500": { + "description": "Internal server error" + } + }, + "tags": [ + "evaluation" + ] + } + }, + "/matrix": { + "get": { + "operationId": "matrix/get/matrix", + "parameters": [ + { + "name": "fields", + "in": "query", + "required": false, + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "The fields to return, this doesn't include populatable fields like relations, components, files, or dynamic zones", + "readOnly": true, + "type": "array", + "items": { + "type": "string", + "enum": [ + "createdAt", + "updatedAt", + "publishedAt" + ] + } + }, + "x-strapi-serialize": "querystring" + }, + { + "name": "populate", + "in": "query", + "required": false, + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "anyOf": [ + { + "description": "Populate all the first level relations, components, files, and dynamic zones for the entry", + "readOnly": true, + "type": "string", + "const": "*" + }, + { + "description": "Populate a single relation, component, file, or dynamic zone", + "readOnly": true, + "type": "string", + "enum": [ + "dimensions" + ] + }, + { + "description": "Populate a selection of multiple relations, components, files, or dynamic zones", + "type": "array", + "items": { + "type": "string", + "enum": [ + "dimensions" + ] + } + } + ] + }, + "x-strapi-serialize": "querystring" + }, + { + "name": "filters", + "in": "query", + "required": false, + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "Filters to apply to the query", + "type": "object", + "propertyNames": { + "type": "string", + "enum": [ + "createdAt", + "updatedAt", + "publishedAt" + ] + }, + "additionalProperties": {} + }, + "x-strapi-serialize": "querystring" + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "type": "object", + "properties": { + "data": { + "type": "object", + "properties": { + "documentId": { + "description": "The document ID, represented by a UUID", + "type": "string", + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$" + }, + "id": { + "type": "number" + }, + "createdAt": { + "description": "A datetime field", + "type": "string" + }, + "updatedAt": { + "description": "A datetime field", + "type": "string" + }, + "publishedAt": { + "description": "A datetime field", + "default": "2025-09-12T06:37:57.421Z", + "type": "string" + }, + "dimensions": { + "description": "A relational field", + "type": "array", + "items": { + "$ref": "#/components/schemas/ApiDimensionDimensionDocument" + } + } + }, + "required": [ + "documentId", + "id", + "publishedAt" + ], + "additionalProperties": false + } + }, + "required": [ + "data" + ], + "additionalProperties": false + } + } + } + }, + "400": { + "description": "Bad request" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not found" + }, + "500": { + "description": "Internal server error" + } + }, + "tags": [ + "matrix" + ] + }, + "put": { + "operationId": "matrix/put/matrix", + "parameters": [ + { + "name": "fields", + "in": "query", + "required": false, + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "The fields to return, this doesn't include populatable fields like relations, components, files, or dynamic zones", + "readOnly": true, + "type": "array", + "items": { + "type": "string", + "enum": [ + "createdAt", + "updatedAt", + "publishedAt" + ] + } + }, + "x-strapi-serialize": "querystring" + }, + { + "name": "populate", + "in": "query", + "required": false, + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "anyOf": [ + { + "description": "Populate all the first level relations, components, files, and dynamic zones for the entry", + "readOnly": true, + "type": "string", + "const": "*" + }, + { + "description": "Populate a single relation, component, file, or dynamic zone", + "readOnly": true, + "type": "string", + "enum": [ + "dimensions" + ] + }, + { + "description": "Populate a selection of multiple relations, components, files, or dynamic zones", + "type": "array", + "items": { + "type": "string", + "enum": [ + "dimensions" + ] + } + } + ] + }, + "x-strapi-serialize": "querystring" + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "type": "object", + "properties": { + "data": { + "type": "object", + "properties": { + "documentId": { + "description": "The document ID, represented by a UUID", + "type": "string", + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$" + }, + "id": { + "type": "number" + }, + "createdAt": { + "description": "A datetime field", + "type": "string" + }, + "updatedAt": { + "description": "A datetime field", + "type": "string" + }, + "publishedAt": { + "description": "A datetime field", + "default": "2025-09-12T06:37:57.424Z", + "type": "string" + }, + "dimensions": { + "description": "A relational field", + "type": "array", + "items": { + "$ref": "#/components/schemas/ApiDimensionDimensionDocument" + } + } + }, + "required": [ + "documentId", + "id", + "publishedAt" + ], + "additionalProperties": false + } + }, + "required": [ + "data" + ], + "additionalProperties": false + } + } + } + }, + "400": { + "description": "Bad request" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not found" + }, + "500": { + "description": "Internal server error" + } + }, + "tags": [ + "matrix" + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "type": "object", + "properties": { + "data": { + "type": "object", + "properties": { + "publishedAt": { + "description": "A datetime field", + "default": "2025-09-12T06:37:57.423Z", + "type": "string" + }, + "dimensions": { + "description": "A relational field", + "type": "array", + "items": { + "type": "string", + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$" + } + } + }, + "additionalProperties": false + } + }, + "required": [ + "data" + ], + "additionalProperties": false + } + } + } + } + }, + "delete": { + "operationId": "matrix/delete/matrix", + "parameters": [ + { + "name": "fields", + "in": "query", + "required": false, + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "The fields to return, this doesn't include populatable fields like relations, components, files, or dynamic zones", + "readOnly": true, + "type": "array", + "items": { + "type": "string", + "enum": [ + "createdAt", + "updatedAt", + "publishedAt" + ] + } + }, + "x-strapi-serialize": "querystring" + }, + { + "name": "populate", + "in": "query", + "required": false, + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "anyOf": [ + { + "description": "Populate all the first level relations, components, files, and dynamic zones for the entry", + "readOnly": true, + "type": "string", + "const": "*" + }, + { + "description": "Populate a single relation, component, file, or dynamic zone", + "readOnly": true, + "type": "string", + "enum": [ + "dimensions" + ] + }, + { + "description": "Populate a selection of multiple relations, components, files, or dynamic zones", + "type": "array", + "items": { + "type": "string", + "enum": [ + "dimensions" + ] + } + } + ] + }, + "x-strapi-serialize": "querystring" + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "type": "object", + "properties": { + "data": { + "type": "object", + "properties": { + "documentId": { + "description": "The document ID, represented by a UUID", + "type": "string", + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$" + }, + "id": { + "type": "number" + }, + "createdAt": { + "description": "A datetime field", + "type": "string" + }, + "updatedAt": { + "description": "A datetime field", + "type": "string" + }, + "publishedAt": { + "description": "A datetime field", + "default": "2025-09-12T06:37:57.426Z", + "type": "string" + }, + "dimensions": { + "description": "A relational field", + "type": "array", + "items": { + "$ref": "#/components/schemas/ApiDimensionDimensionDocument" + } + } + }, + "required": [ + "documentId", + "id", + "publishedAt" + ], + "additionalProperties": false + } + }, + "required": [ + "data" + ], + "additionalProperties": false + } + } + } + }, + "400": { + "description": "Bad request" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not found" + }, + "500": { + "description": "Internal server error" + } + }, + "tags": [ + "matrix" + ] + } + }, + "/mentorship-requests": { + "get": { + "operationId": "mentorship-request/get/mentorship_requests", + "parameters": [ + { + "name": "fields", + "in": "query", + "required": false, + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "The fields to return, this doesn't include populatable fields like relations, components, files, or dynamic zones", + "readOnly": true, + "type": "array", + "items": { + "type": "string", + "enum": [ + "createdAt", + "updatedAt", + "publishedAt" + ] + } + }, + "x-strapi-serialize": "querystring" + }, + { + "name": "filters", + "in": "query", + "required": false, + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "Filters to apply to the query", + "type": "object", + "propertyNames": { + "type": "string", + "enum": [ + "createdAt", + "updatedAt", + "publishedAt" + ] + }, + "additionalProperties": {} + }, + "x-strapi-serialize": "querystring" + }, + { + "name": "_q", + "in": "query", + "required": false, + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "type": "string" + }, + "x-strapi-serialize": "querystring" + }, + { + "name": "pagination", + "in": "query", + "required": false, + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "Pagination parameters", + "allOf": [ + { + "type": "object", + "properties": { + "withCount": { + "description": "Include total count in response", + "type": "boolean" + } + }, + "additionalProperties": false + }, + { + "anyOf": [ + { + "description": "Page-based pagination", + "type": "object", + "properties": { + "page": { + "description": "Page number (1-based)", + "type": "integer", + "exclusiveMinimum": 0, + "maximum": 9007199254740991 + }, + "pageSize": { + "description": "Number of entries per page", + "type": "integer", + "exclusiveMinimum": 0, + "maximum": 9007199254740991 + } + }, + "required": [ + "page", + "pageSize" + ], + "additionalProperties": false + }, + { + "description": "Offset-based pagination", + "type": "object", + "properties": { + "start": { + "description": "Number of entries to skip", + "type": "integer", + "minimum": 0, + "maximum": 9007199254740991 + }, + "limit": { + "description": "Maximum number of entries to return", + "type": "integer", + "exclusiveMinimum": 0, + "maximum": 9007199254740991 + } + }, + "required": [ + "start", + "limit" + ], + "additionalProperties": false + } + ] + } + ] + }, + "x-strapi-serialize": "querystring" + }, + { + "name": "sort", + "in": "query", + "required": false, + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "Sort the result", + "anyOf": [ + { + "type": "string", + "enum": [ + "createdAt", + "updatedAt", + "publishedAt" + ] + }, + { + "type": "array", + "items": { + "type": "string", + "enum": [ + "createdAt", + "updatedAt", + "publishedAt" + ] + } + }, + { + "type": "object", + "propertyNames": { + "type": "string", + "enum": [ + "createdAt", + "updatedAt", + "publishedAt" + ] + }, + "additionalProperties": { + "type": "string", + "enum": [ + "asc", + "desc" + ] + } + }, + { + "type": "array", + "items": { + "type": "object", + "propertyNames": { + "type": "string", + "enum": [ + "createdAt", + "updatedAt", + "publishedAt" + ] + }, + "additionalProperties": { + "type": "string", + "enum": [ + "asc", + "desc" + ] + } + } + } + ] + }, + "x-strapi-serialize": "querystring" + }, + { + "name": "populate", + "in": "query", + "required": false, + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "anyOf": [ + { + "description": "Populate all the first level relations, components, files, and dynamic zones for the entry", + "readOnly": true, + "type": "string", + "const": "*" + }, + { + "description": "Populate a single relation, component, file, or dynamic zone", + "readOnly": true, + "type": "string", + "enum": [ + "mentor", + "user" + ] + }, + { + "description": "Populate a selection of multiple relations, components, files, or dynamic zones", + "type": "array", + "items": { + "type": "string", + "enum": [ + "mentor", + "user" + ] + } + } + ] + }, + "x-strapi-serialize": "querystring" + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "type": "object", + "properties": { + "data": { + "type": "array", + "items": { + "type": "object", + "properties": { + "documentId": { + "description": "The document ID, represented by a UUID", + "type": "string", + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$" + }, + "id": { + "type": "number" + }, + "createdAt": { + "description": "A datetime field", + "type": "string" + }, + "updatedAt": { + "description": "A datetime field", + "type": "string" + }, + "publishedAt": { + "description": "A datetime field", + "default": "2025-09-12T06:37:57.430Z", + "type": "string" + }, + "mentor": { + "description": "A relational field", + "$ref": "#/components/schemas/PluginUsersPermissionsUserDocument" + }, + "user": { + "description": "A relational field", + "$ref": "#/components/schemas/PluginUsersPermissionsUserDocument" + } + }, + "required": [ + "documentId", + "id", + "publishedAt" + ], + "additionalProperties": false + } + } + }, + "required": [ + "data" + ], + "additionalProperties": false + } + } + } + }, + "400": { + "description": "Bad request" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not found" + }, + "500": { + "description": "Internal server error" + } + }, + "tags": [ + "mentorship-request" + ] + }, + "post": { + "operationId": "mentorship-request/post/mentorship_requests", + "parameters": [ + { + "name": "fields", + "in": "query", + "required": false, + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "The fields to return, this doesn't include populatable fields like relations, components, files, or dynamic zones", + "readOnly": true, + "type": "array", + "items": { + "type": "string", + "enum": [ + "createdAt", + "updatedAt", + "publishedAt" + ] + } + }, + "x-strapi-serialize": "querystring" + }, + { + "name": "populate", + "in": "query", + "required": false, + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "anyOf": [ + { + "description": "Populate all the first level relations, components, files, and dynamic zones for the entry", + "readOnly": true, + "type": "string", + "const": "*" + }, + { + "description": "Populate a single relation, component, file, or dynamic zone", + "readOnly": true, + "type": "string", + "enum": [ + "mentor", + "user" + ] + }, + { + "description": "Populate a selection of multiple relations, components, files, or dynamic zones", + "type": "array", + "items": { + "type": "string", + "enum": [ + "mentor", + "user" + ] + } + } + ] + }, + "x-strapi-serialize": "querystring" + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "type": "object", + "properties": { + "data": { + "type": "object", + "properties": { + "documentId": { + "description": "The document ID, represented by a UUID", + "type": "string", + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$" + }, + "id": { + "type": "number" + }, + "createdAt": { + "description": "A datetime field", + "type": "string" + }, + "updatedAt": { + "description": "A datetime field", + "type": "string" + }, + "publishedAt": { + "description": "A datetime field", + "default": "2025-09-12T06:37:57.439Z", + "type": "string" + }, + "mentor": { + "description": "A relational field", + "$ref": "#/components/schemas/PluginUsersPermissionsUserDocument" + }, + "user": { + "description": "A relational field", + "$ref": "#/components/schemas/PluginUsersPermissionsUserDocument" + } + }, + "required": [ + "documentId", + "id", + "publishedAt" + ], + "additionalProperties": false + } + }, + "required": [ + "data" + ], + "additionalProperties": false + } + } + } + }, + "400": { + "description": "Bad request" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not found" + }, + "500": { + "description": "Internal server error" + } + }, + "tags": [ + "mentorship-request" + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "type": "object", + "properties": { + "data": { + "type": "object", + "properties": { + "publishedAt": { + "description": "A datetime field", + "default": "2025-09-12T06:37:57.438Z", + "type": "string" + }, + "mentor": { + "description": "A relational field", + "type": "string", + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$" + }, + "user": { + "description": "A relational field", + "type": "string", + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$" + } + }, + "required": [ + "publishedAt" + ], + "additionalProperties": false + } + }, + "required": [ + "data" + ], + "additionalProperties": false + } + } + } + } + } + }, + "/mentorship-requests/{id}": { + "get": { + "operationId": "mentorship-request/get/mentorship_requests_by_id", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "The document ID, represented by a UUID", + "type": "string", + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$" + } + }, + { + "name": "fields", + "in": "query", + "required": false, + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "The fields to return, this doesn't include populatable fields like relations, components, files, or dynamic zones", + "readOnly": true, + "type": "array", + "items": { + "type": "string", + "enum": [ + "createdAt", + "updatedAt", + "publishedAt" + ] + } + }, + "x-strapi-serialize": "querystring" + }, + { + "name": "populate", + "in": "query", + "required": false, + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "anyOf": [ + { + "description": "Populate all the first level relations, components, files, and dynamic zones for the entry", + "readOnly": true, + "type": "string", + "const": "*" + }, + { + "description": "Populate a single relation, component, file, or dynamic zone", + "readOnly": true, + "type": "string", + "enum": [ + "mentor", + "user" + ] + }, + { + "description": "Populate a selection of multiple relations, components, files, or dynamic zones", + "type": "array", + "items": { + "type": "string", + "enum": [ + "mentor", + "user" + ] + } + } + ] + }, + "x-strapi-serialize": "querystring" + }, + { + "name": "filters", + "in": "query", + "required": false, + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "Filters to apply to the query", + "type": "object", + "propertyNames": { + "type": "string", + "enum": [ + "createdAt", + "updatedAt", + "publishedAt" + ] + }, + "additionalProperties": {} + }, + "x-strapi-serialize": "querystring" + }, + { + "name": "sort", + "in": "query", + "required": false, + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "Sort the result", + "anyOf": [ + { + "type": "string", + "enum": [ + "createdAt", + "updatedAt", + "publishedAt" + ] + }, + { + "type": "array", + "items": { + "type": "string", + "enum": [ + "createdAt", + "updatedAt", + "publishedAt" + ] + } + }, + { + "type": "object", + "propertyNames": { + "type": "string", + "enum": [ + "createdAt", + "updatedAt", + "publishedAt" + ] + }, + "additionalProperties": { + "type": "string", + "enum": [ + "asc", + "desc" + ] + } + }, + { + "type": "array", + "items": { + "type": "object", + "propertyNames": { + "type": "string", + "enum": [ + "createdAt", + "updatedAt", + "publishedAt" + ] + }, + "additionalProperties": { + "type": "string", + "enum": [ + "asc", + "desc" + ] + } + } + } + ] + }, + "x-strapi-serialize": "querystring" + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "type": "object", + "properties": { + "data": { + "type": "object", + "properties": { + "documentId": { + "description": "The document ID, represented by a UUID", + "type": "string", + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$" + }, + "id": { + "type": "number" + }, + "createdAt": { + "description": "A datetime field", + "type": "string" + }, + "updatedAt": { + "description": "A datetime field", + "type": "string" + }, + "publishedAt": { + "description": "A datetime field", + "default": "2025-09-12T06:37:57.433Z", + "type": "string" + }, + "mentor": { + "description": "A relational field", + "$ref": "#/components/schemas/PluginUsersPermissionsUserDocument" + }, + "user": { + "description": "A relational field", + "$ref": "#/components/schemas/PluginUsersPermissionsUserDocument" + } + }, + "required": [ + "documentId", + "id", + "publishedAt" + ], + "additionalProperties": false + } + }, + "required": [ + "data" + ], + "additionalProperties": false + } + } + } + }, + "400": { + "description": "Bad request" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not found" + }, + "500": { + "description": "Internal server error" + } + }, + "tags": [ + "mentorship-request" + ] + }, + "put": { + "operationId": "mentorship-request/put/mentorship_requests_by_id", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "The document ID, represented by a UUID", + "type": "string", + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$" + } + }, + { + "name": "fields", + "in": "query", + "required": false, + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "The fields to return, this doesn't include populatable fields like relations, components, files, or dynamic zones", + "readOnly": true, + "type": "array", + "items": { + "type": "string", + "enum": [ + "createdAt", + "updatedAt", + "publishedAt" + ] + } + }, + "x-strapi-serialize": "querystring" + }, + { + "name": "populate", + "in": "query", + "required": false, + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "anyOf": [ + { + "description": "Populate all the first level relations, components, files, and dynamic zones for the entry", + "readOnly": true, + "type": "string", + "const": "*" + }, + { + "description": "Populate a single relation, component, file, or dynamic zone", + "readOnly": true, + "type": "string", + "enum": [ + "mentor", + "user" + ] + }, + { + "description": "Populate a selection of multiple relations, components, files, or dynamic zones", + "type": "array", + "items": { + "type": "string", + "enum": [ + "mentor", + "user" + ] + } + } + ] + }, + "x-strapi-serialize": "querystring" + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "type": "object", + "properties": { + "data": { + "type": "object", + "properties": { + "documentId": { + "description": "The document ID, represented by a UUID", + "type": "string", + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$" + }, + "id": { + "type": "number" + }, + "createdAt": { + "description": "A datetime field", + "type": "string" + }, + "updatedAt": { + "description": "A datetime field", + "type": "string" + }, + "publishedAt": { + "description": "A datetime field", + "default": "2025-09-12T06:37:57.441Z", + "type": "string" + }, + "mentor": { + "description": "A relational field", + "$ref": "#/components/schemas/PluginUsersPermissionsUserDocument" + }, + "user": { + "description": "A relational field", + "$ref": "#/components/schemas/PluginUsersPermissionsUserDocument" + } + }, + "required": [ + "documentId", + "id", + "publishedAt" + ], + "additionalProperties": false + } + }, + "required": [ + "data" + ], + "additionalProperties": false + } + } + } + }, + "400": { + "description": "Bad request" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not found" + }, + "500": { + "description": "Internal server error" + } + }, + "tags": [ + "mentorship-request" + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "type": "object", + "properties": { + "data": { + "type": "object", + "properties": { + "publishedAt": { + "description": "A datetime field", + "default": "2025-09-12T06:37:57.440Z", + "type": "string" + }, + "mentor": { + "description": "A relational field", + "type": "string", + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$" + }, + "user": { + "description": "A relational field", + "type": "string", + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$" + } + }, + "additionalProperties": false + } + }, + "required": [ + "data" + ], + "additionalProperties": false + } + } + } + } + }, + "delete": { + "operationId": "mentorship-request/delete/mentorship_requests_by_id", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "The document ID, represented by a UUID", + "type": "string", + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$" + } + }, + { + "name": "fields", + "in": "query", + "required": false, + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "The fields to return, this doesn't include populatable fields like relations, components, files, or dynamic zones", + "readOnly": true, + "type": "array", + "items": { + "type": "string", + "enum": [ + "createdAt", + "updatedAt", + "publishedAt" + ] + } + }, + "x-strapi-serialize": "querystring" + }, + { + "name": "populate", + "in": "query", + "required": false, + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "anyOf": [ + { + "description": "Populate all the first level relations, components, files, and dynamic zones for the entry", + "readOnly": true, + "type": "string", + "const": "*" + }, + { + "description": "Populate a single relation, component, file, or dynamic zone", + "readOnly": true, + "type": "string", + "enum": [ + "mentor", + "user" + ] + }, + { + "description": "Populate a selection of multiple relations, components, files, or dynamic zones", + "type": "array", + "items": { + "type": "string", + "enum": [ + "mentor", + "user" + ] + } + } + ] + }, + "x-strapi-serialize": "querystring" + }, + { + "name": "filters", + "in": "query", + "required": false, + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "Filters to apply to the query", + "type": "object", + "propertyNames": { + "type": "string", + "enum": [ + "createdAt", + "updatedAt", + "publishedAt" + ] + }, + "additionalProperties": {} + }, + "x-strapi-serialize": "querystring" + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "type": "object", + "properties": { + "data": { + "type": "object", + "properties": { + "documentId": { + "description": "The document ID, represented by a UUID", + "type": "string", + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$" + }, + "id": { + "type": "number" + }, + "createdAt": { + "description": "A datetime field", + "type": "string" + }, + "updatedAt": { + "description": "A datetime field", + "type": "string" + }, + "publishedAt": { + "description": "A datetime field", + "default": "2025-09-12T06:37:57.442Z", + "type": "string" + }, + "mentor": { + "description": "A relational field", + "$ref": "#/components/schemas/PluginUsersPermissionsUserDocument" + }, + "user": { + "description": "A relational field", + "$ref": "#/components/schemas/PluginUsersPermissionsUserDocument" + } + }, + "required": [ + "documentId", + "id", + "publishedAt" + ], + "additionalProperties": false + } + }, + "required": [ + "data" + ], + "additionalProperties": false + } + } + } + }, + "400": { + "description": "Bad request" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not found" + }, + "500": { + "description": "Internal server error" + } + }, + "tags": [ + "mentorship-request" + ] + } + }, + "/programs": { + "get": { + "operationId": "program/get/programs", + "parameters": [ + { + "name": "fields", + "in": "query", + "required": false, + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "The fields to return, this doesn't include populatable fields like relations, components, files, or dynamic zones", + "readOnly": true, + "type": "array", + "items": { + "type": "string", + "enum": [ + "name", + "startDate", + "endDate", + "sponsorName", + "createdAt", + "updatedAt", + "publishedAt" + ] + } + }, + "x-strapi-serialize": "querystring" + }, + { + "name": "filters", + "in": "query", + "required": false, + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "Filters to apply to the query", + "type": "object", + "propertyNames": { + "type": "string", + "enum": [ + "name", + "startDate", + "endDate", + "sponsorName", + "createdAt", + "updatedAt", + "publishedAt" + ] + }, + "additionalProperties": {} + }, + "x-strapi-serialize": "querystring" + }, + { + "name": "_q", + "in": "query", + "required": false, + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "type": "string" + }, + "x-strapi-serialize": "querystring" + }, + { + "name": "pagination", + "in": "query", + "required": false, + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "Pagination parameters", + "allOf": [ + { + "type": "object", + "properties": { + "withCount": { + "description": "Include total count in response", + "type": "boolean" + } + }, + "additionalProperties": false + }, + { + "anyOf": [ + { + "description": "Page-based pagination", + "type": "object", + "properties": { + "page": { + "description": "Page number (1-based)", + "type": "integer", + "exclusiveMinimum": 0, + "maximum": 9007199254740991 + }, + "pageSize": { + "description": "Number of entries per page", + "type": "integer", + "exclusiveMinimum": 0, + "maximum": 9007199254740991 + } + }, + "required": [ + "page", + "pageSize" + ], + "additionalProperties": false + }, + { + "description": "Offset-based pagination", + "type": "object", + "properties": { + "start": { + "description": "Number of entries to skip", + "type": "integer", + "minimum": 0, + "maximum": 9007199254740991 + }, + "limit": { + "description": "Maximum number of entries to return", + "type": "integer", + "exclusiveMinimum": 0, + "maximum": 9007199254740991 + } + }, + "required": [ + "start", + "limit" + ], + "additionalProperties": false + } + ] + } + ] + }, + "x-strapi-serialize": "querystring" + }, + { + "name": "sort", + "in": "query", + "required": false, + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "Sort the result", + "anyOf": [ + { + "type": "string", + "enum": [ + "name", + "startDate", + "endDate", + "sponsorName", + "createdAt", + "updatedAt", + "publishedAt" + ] + }, + { + "type": "array", + "items": { + "type": "string", + "enum": [ + "name", + "startDate", + "endDate", + "sponsorName", + "createdAt", + "updatedAt", + "publishedAt" + ] + } + }, + { + "type": "object", + "propertyNames": { + "type": "string", + "enum": [ + "name", + "startDate", + "endDate", + "sponsorName", + "createdAt", + "updatedAt", + "publishedAt" + ] + }, + "additionalProperties": { + "type": "string", + "enum": [ + "asc", + "desc" + ] + } + }, + { + "type": "array", + "items": { + "type": "object", + "propertyNames": { + "type": "string", + "enum": [ + "name", + "startDate", + "endDate", + "sponsorName", + "createdAt", + "updatedAt", + "publishedAt" + ] + }, + "additionalProperties": { + "type": "string", + "enum": [ + "asc", + "desc" + ] + } + } + } + ] + }, + "x-strapi-serialize": "querystring" + }, + { + "name": "populate", + "in": "query", + "required": false, + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "anyOf": [ + { + "description": "Populate all the first level relations, components, files, and dynamic zones for the entry", + "readOnly": true, + "type": "string", + "const": "*" + }, + { + "description": "Populate a single relation, component, file, or dynamic zone", + "readOnly": true, + "type": "string", + "enum": [ + "mentors", + "users" + ] + }, + { + "description": "Populate a selection of multiple relations, components, files, or dynamic zones", + "type": "array", + "items": { + "type": "string", + "enum": [ + "mentors", + "users" + ] + } + } + ] + }, + "x-strapi-serialize": "querystring" + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "type": "object", + "properties": { + "data": { + "type": "array", + "items": { + "type": "object", + "properties": { + "documentId": { + "description": "The document ID, represented by a UUID", + "type": "string", + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$" + }, + "id": { + "type": "number" + }, + "name": { + "description": "A string field", + "type": "string" + }, + "startDate": { + "description": "A date field", + "type": "string" + }, + "endDate": { + "description": "A date field", + "type": "string" + }, + "sponsorName": { + "description": "A string field", + "type": "string" + }, + "createdAt": { + "description": "A datetime field", + "type": "string" + }, + "updatedAt": { + "description": "A datetime field", + "type": "string" + }, + "publishedAt": { + "description": "A datetime field", + "default": "2025-09-12T06:37:57.449Z", + "type": "string" + }, + "mentors": { + "description": "A relational field", + "type": "array", + "items": { + "$ref": "#/components/schemas/PluginUsersPermissionsUserDocument" + } + }, + "users": { + "description": "A relational field", + "type": "array", + "items": { + "$ref": "#/components/schemas/PluginUsersPermissionsUserDocument" + } + } + }, + "required": [ + "documentId", + "id", + "name", + "startDate", + "endDate", + "publishedAt" + ], + "additionalProperties": false + } + } + }, + "required": [ + "data" + ], + "additionalProperties": false + } + } + } + }, + "400": { + "description": "Bad request" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not found" + }, + "500": { + "description": "Internal server error" + } + }, + "tags": [ + "program" + ] + }, + "post": { + "operationId": "program/post/programs", + "parameters": [ + { + "name": "fields", + "in": "query", + "required": false, + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "The fields to return, this doesn't include populatable fields like relations, components, files, or dynamic zones", + "readOnly": true, + "type": "array", + "items": { + "type": "string", + "enum": [ + "name", + "startDate", + "endDate", + "sponsorName", + "createdAt", + "updatedAt", + "publishedAt" + ] + } + }, + "x-strapi-serialize": "querystring" + }, + { + "name": "populate", + "in": "query", + "required": false, + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "anyOf": [ + { + "description": "Populate all the first level relations, components, files, and dynamic zones for the entry", + "readOnly": true, + "type": "string", + "const": "*" + }, + { + "description": "Populate a single relation, component, file, or dynamic zone", + "readOnly": true, + "type": "string", + "enum": [ + "mentors", + "users" + ] + }, + { + "description": "Populate a selection of multiple relations, components, files, or dynamic zones", + "type": "array", + "items": { + "type": "string", + "enum": [ + "mentors", + "users" + ] + } + } + ] + }, + "x-strapi-serialize": "querystring" + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "type": "object", + "properties": { + "data": { + "type": "object", + "properties": { + "documentId": { + "description": "The document ID, represented by a UUID", + "type": "string", + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$" + }, + "id": { + "type": "number" + }, + "name": { + "description": "A string field", + "type": "string" + }, + "startDate": { + "description": "A date field", + "type": "string" + }, + "endDate": { + "description": "A date field", + "type": "string" + }, + "sponsorName": { + "description": "A string field", + "type": "string" + }, + "createdAt": { + "description": "A datetime field", + "type": "string" + }, + "updatedAt": { + "description": "A datetime field", + "type": "string" + }, + "publishedAt": { + "description": "A datetime field", + "default": "2025-09-12T06:37:57.456Z", + "type": "string" + }, + "mentors": { + "description": "A relational field", + "type": "array", + "items": { + "$ref": "#/components/schemas/PluginUsersPermissionsUserDocument" + } + }, + "users": { + "description": "A relational field", + "type": "array", + "items": { + "$ref": "#/components/schemas/PluginUsersPermissionsUserDocument" + } + } + }, + "required": [ + "documentId", + "id", + "name", + "startDate", + "endDate", + "publishedAt" + ], + "additionalProperties": false + } + }, + "required": [ + "data" + ], + "additionalProperties": false + } + } + } + }, + "400": { + "description": "Bad request" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not found" + }, + "500": { + "description": "Internal server error" + } + }, + "tags": [ + "program" + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "type": "object", + "properties": { + "data": { + "type": "object", + "properties": { + "name": { + "description": "A string field", + "type": "string" + }, + "startDate": { + "description": "A date field", + "type": "string" + }, + "endDate": { + "description": "A date field", + "type": "string" + }, + "sponsorName": { + "description": "A string field", + "type": "string" + }, + "publishedAt": { + "description": "A datetime field", + "default": "2025-09-12T06:37:57.455Z", + "type": "string" + }, + "mentors": { + "description": "A relational field", + "type": "array", + "items": { + "type": "string", + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$" + } + }, + "users": { + "description": "A relational field", + "type": "array", + "items": { + "type": "string", + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$" + } + } + }, + "required": [ + "name", + "startDate", + "endDate", + "publishedAt" + ], + "additionalProperties": false + } + }, + "required": [ + "data" + ], + "additionalProperties": false + } + } + } + } + } + }, + "/programs/{id}": { + "get": { + "operationId": "program/get/programs_by_id", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "The document ID, represented by a UUID", + "type": "string", + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$" + } + }, + { + "name": "fields", + "in": "query", + "required": false, + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "The fields to return, this doesn't include populatable fields like relations, components, files, or dynamic zones", + "readOnly": true, + "type": "array", + "items": { + "type": "string", + "enum": [ + "name", + "startDate", + "endDate", + "sponsorName", + "createdAt", + "updatedAt", + "publishedAt" + ] + } + }, + "x-strapi-serialize": "querystring" + }, + { + "name": "populate", + "in": "query", + "required": false, + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "anyOf": [ + { + "description": "Populate all the first level relations, components, files, and dynamic zones for the entry", + "readOnly": true, + "type": "string", + "const": "*" + }, + { + "description": "Populate a single relation, component, file, or dynamic zone", + "readOnly": true, + "type": "string", + "enum": [ + "mentors", + "users" + ] + }, + { + "description": "Populate a selection of multiple relations, components, files, or dynamic zones", + "type": "array", + "items": { + "type": "string", + "enum": [ + "mentors", + "users" + ] + } + } + ] + }, + "x-strapi-serialize": "querystring" + }, + { + "name": "filters", + "in": "query", + "required": false, + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "Filters to apply to the query", + "type": "object", + "propertyNames": { + "type": "string", + "enum": [ + "name", + "startDate", + "endDate", + "sponsorName", + "createdAt", + "updatedAt", + "publishedAt" + ] + }, + "additionalProperties": {} + }, + "x-strapi-serialize": "querystring" + }, + { + "name": "sort", + "in": "query", + "required": false, + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "Sort the result", + "anyOf": [ + { + "type": "string", + "enum": [ + "name", + "startDate", + "endDate", + "sponsorName", + "createdAt", + "updatedAt", + "publishedAt" + ] + }, + { + "type": "array", + "items": { + "type": "string", + "enum": [ + "name", + "startDate", + "endDate", + "sponsorName", + "createdAt", + "updatedAt", + "publishedAt" + ] + } + }, + { + "type": "object", + "propertyNames": { + "type": "string", + "enum": [ + "name", + "startDate", + "endDate", + "sponsorName", + "createdAt", + "updatedAt", + "publishedAt" + ] + }, + "additionalProperties": { + "type": "string", + "enum": [ + "asc", + "desc" + ] + } + }, + { + "type": "array", + "items": { + "type": "object", + "propertyNames": { + "type": "string", + "enum": [ + "name", + "startDate", + "endDate", + "sponsorName", + "createdAt", + "updatedAt", + "publishedAt" + ] + }, + "additionalProperties": { + "type": "string", + "enum": [ + "asc", + "desc" + ] + } + } + } + ] + }, + "x-strapi-serialize": "querystring" + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "type": "object", + "properties": { + "data": { + "type": "object", + "properties": { + "documentId": { + "description": "The document ID, represented by a UUID", + "type": "string", + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$" + }, + "id": { + "type": "number" + }, + "name": { + "description": "A string field", + "type": "string" + }, + "startDate": { + "description": "A date field", + "type": "string" + }, + "endDate": { + "description": "A date field", + "type": "string" + }, + "sponsorName": { + "description": "A string field", + "type": "string" + }, + "createdAt": { + "description": "A datetime field", + "type": "string" + }, + "updatedAt": { + "description": "A datetime field", + "type": "string" + }, + "publishedAt": { + "description": "A datetime field", + "default": "2025-09-12T06:37:57.453Z", + "type": "string" + }, + "mentors": { + "description": "A relational field", + "type": "array", + "items": { + "$ref": "#/components/schemas/PluginUsersPermissionsUserDocument" + } + }, + "users": { + "description": "A relational field", + "type": "array", + "items": { + "$ref": "#/components/schemas/PluginUsersPermissionsUserDocument" + } + } + }, + "required": [ + "documentId", + "id", + "name", + "startDate", + "endDate", + "publishedAt" + ], + "additionalProperties": false + } + }, + "required": [ + "data" + ], + "additionalProperties": false + } + } + } + }, + "400": { + "description": "Bad request" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not found" + }, + "500": { + "description": "Internal server error" + } + }, + "tags": [ + "program" + ] + }, + "put": { + "operationId": "program/put/programs_by_id", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "The document ID, represented by a UUID", + "type": "string", + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$" + } + }, + { + "name": "fields", + "in": "query", + "required": false, + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "The fields to return, this doesn't include populatable fields like relations, components, files, or dynamic zones", + "readOnly": true, + "type": "array", + "items": { + "type": "string", + "enum": [ + "name", + "startDate", + "endDate", + "sponsorName", + "createdAt", + "updatedAt", + "publishedAt" + ] + } + }, + "x-strapi-serialize": "querystring" + }, + { + "name": "populate", + "in": "query", + "required": false, + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "anyOf": [ + { + "description": "Populate all the first level relations, components, files, and dynamic zones for the entry", + "readOnly": true, + "type": "string", + "const": "*" + }, + { + "description": "Populate a single relation, component, file, or dynamic zone", + "readOnly": true, + "type": "string", + "enum": [ + "mentors", + "users" + ] + }, + { + "description": "Populate a selection of multiple relations, components, files, or dynamic zones", + "type": "array", + "items": { + "type": "string", + "enum": [ + "mentors", + "users" + ] + } + } + ] + }, + "x-strapi-serialize": "querystring" + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "type": "object", + "properties": { + "data": { + "type": "object", + "properties": { + "documentId": { + "description": "The document ID, represented by a UUID", + "type": "string", + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$" + }, + "id": { + "type": "number" + }, + "name": { + "description": "A string field", + "type": "string" + }, + "startDate": { + "description": "A date field", + "type": "string" + }, + "endDate": { + "description": "A date field", + "type": "string" + }, + "sponsorName": { + "description": "A string field", + "type": "string" + }, + "createdAt": { + "description": "A datetime field", + "type": "string" + }, + "updatedAt": { + "description": "A datetime field", + "type": "string" + }, + "publishedAt": { + "description": "A datetime field", + "default": "2025-09-12T06:37:57.463Z", + "type": "string" + }, + "mentors": { + "description": "A relational field", + "type": "array", + "items": { + "$ref": "#/components/schemas/PluginUsersPermissionsUserDocument" + } + }, + "users": { + "description": "A relational field", + "type": "array", + "items": { + "$ref": "#/components/schemas/PluginUsersPermissionsUserDocument" + } + } + }, + "required": [ + "documentId", + "id", + "name", + "startDate", + "endDate", + "publishedAt" + ], + "additionalProperties": false + } + }, + "required": [ + "data" + ], + "additionalProperties": false + } + } + } + }, + "400": { + "description": "Bad request" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not found" + }, + "500": { + "description": "Internal server error" + } + }, + "tags": [ + "program" + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "type": "object", + "properties": { + "data": { + "type": "object", + "properties": { + "name": { + "description": "A string field", + "type": "string" + }, + "startDate": { + "description": "A date field", + "type": "string" + }, + "endDate": { + "description": "A date field", + "type": "string" + }, + "sponsorName": { + "description": "A string field", + "type": "string" + }, + "publishedAt": { + "description": "A datetime field", + "default": "2025-09-12T06:37:57.458Z", + "type": "string" + }, + "mentors": { + "description": "A relational field", + "type": "array", + "items": { + "type": "string", + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$" + } + }, + "users": { + "description": "A relational field", + "type": "array", + "items": { + "type": "string", + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$" + } + } + }, + "additionalProperties": false + } + }, + "required": [ + "data" + ], + "additionalProperties": false + } + } + } + } + }, + "delete": { + "operationId": "program/delete/programs_by_id", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "The document ID, represented by a UUID", + "type": "string", + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$" + } + }, + { + "name": "fields", + "in": "query", + "required": false, + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "The fields to return, this doesn't include populatable fields like relations, components, files, or dynamic zones", + "readOnly": true, + "type": "array", + "items": { + "type": "string", + "enum": [ + "name", + "startDate", + "endDate", + "sponsorName", + "createdAt", + "updatedAt", + "publishedAt" + ] + } + }, + "x-strapi-serialize": "querystring" + }, + { + "name": "populate", + "in": "query", + "required": false, + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "anyOf": [ + { + "description": "Populate all the first level relations, components, files, and dynamic zones for the entry", + "readOnly": true, + "type": "string", + "const": "*" + }, + { + "description": "Populate a single relation, component, file, or dynamic zone", + "readOnly": true, + "type": "string", + "enum": [ + "mentors", + "users" + ] + }, + { + "description": "Populate a selection of multiple relations, components, files, or dynamic zones", + "type": "array", + "items": { + "type": "string", + "enum": [ + "mentors", + "users" + ] + } + } + ] + }, + "x-strapi-serialize": "querystring" + }, + { + "name": "filters", + "in": "query", + "required": false, + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "Filters to apply to the query", + "type": "object", + "propertyNames": { + "type": "string", + "enum": [ + "name", + "startDate", + "endDate", + "sponsorName", + "createdAt", + "updatedAt", + "publishedAt" + ] + }, + "additionalProperties": {} + }, + "x-strapi-serialize": "querystring" + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "type": "object", + "properties": { + "data": { + "type": "object", + "properties": { + "documentId": { + "description": "The document ID, represented by a UUID", + "type": "string", + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$" + }, + "id": { + "type": "number" + }, + "name": { + "description": "A string field", + "type": "string" + }, + "startDate": { + "description": "A date field", + "type": "string" + }, + "endDate": { + "description": "A date field", + "type": "string" + }, + "sponsorName": { + "description": "A string field", + "type": "string" + }, + "createdAt": { + "description": "A datetime field", + "type": "string" + }, + "updatedAt": { + "description": "A datetime field", + "type": "string" + }, + "publishedAt": { + "description": "A datetime field", + "default": "2025-09-12T06:37:57.465Z", + "type": "string" + }, + "mentors": { + "description": "A relational field", + "type": "array", + "items": { + "$ref": "#/components/schemas/PluginUsersPermissionsUserDocument" + } + }, + "users": { + "description": "A relational field", + "type": "array", + "items": { + "$ref": "#/components/schemas/PluginUsersPermissionsUserDocument" + } + } + }, + "required": [ + "documentId", + "id", + "name", + "startDate", + "endDate", + "publishedAt" + ], + "additionalProperties": false + } + }, + "required": [ + "data" + ], + "additionalProperties": false + } + } + } + }, + "400": { + "description": "Bad request" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not found" + }, + "500": { + "description": "Internal server error" + } + }, + "tags": [ + "program" + ] + } + }, + "/reports": { + "get": { + "operationId": "report/get/reports", + "parameters": [ + { + "name": "fields", + "in": "query", + "required": false, + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "The fields to return, this doesn't include populatable fields like relations, components, files, or dynamic zones", + "readOnly": true, + "type": "array", + "items": { + "type": "string", + "enum": [ + "deadline", + "finished", + "createdAt", + "updatedAt", + "publishedAt" + ] + } + }, + "x-strapi-serialize": "querystring" + }, + { + "name": "filters", + "in": "query", + "required": false, + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "Filters to apply to the query", + "type": "object", + "propertyNames": { + "type": "string", + "enum": [ + "deadline", + "finished", + "createdAt", + "updatedAt", + "publishedAt" + ] + }, + "additionalProperties": {} + }, + "x-strapi-serialize": "querystring" + }, + { + "name": "_q", + "in": "query", + "required": false, + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "type": "string" + }, + "x-strapi-serialize": "querystring" + }, + { + "name": "pagination", + "in": "query", + "required": false, + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "Pagination parameters", + "allOf": [ + { + "type": "object", + "properties": { + "withCount": { + "description": "Include total count in response", + "type": "boolean" + } + }, + "additionalProperties": false + }, + { + "anyOf": [ + { + "description": "Page-based pagination", + "type": "object", + "properties": { + "page": { + "description": "Page number (1-based)", + "type": "integer", + "exclusiveMinimum": 0, + "maximum": 9007199254740991 + }, + "pageSize": { + "description": "Number of entries per page", + "type": "integer", + "exclusiveMinimum": 0, + "maximum": 9007199254740991 + } + }, + "required": [ + "page", + "pageSize" + ], + "additionalProperties": false + }, + { + "description": "Offset-based pagination", + "type": "object", + "properties": { + "start": { + "description": "Number of entries to skip", + "type": "integer", + "minimum": 0, + "maximum": 9007199254740991 + }, + "limit": { + "description": "Maximum number of entries to return", + "type": "integer", + "exclusiveMinimum": 0, + "maximum": 9007199254740991 + } + }, + "required": [ + "start", + "limit" + ], + "additionalProperties": false + } + ] + } + ] + }, + "x-strapi-serialize": "querystring" + }, + { + "name": "sort", + "in": "query", + "required": false, + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "Sort the result", + "anyOf": [ + { + "type": "string", + "enum": [ + "deadline", + "finished", + "createdAt", + "updatedAt", + "publishedAt" + ] + }, + { + "type": "array", + "items": { + "type": "string", + "enum": [ + "deadline", + "finished", + "createdAt", + "updatedAt", + "publishedAt" + ] + } + }, + { + "type": "object", + "propertyNames": { + "type": "string", + "enum": [ + "deadline", + "finished", + "createdAt", + "updatedAt", + "publishedAt" + ] + }, + "additionalProperties": { + "type": "string", + "enum": [ + "asc", + "desc" + ] + } + }, + { + "type": "array", + "items": { + "type": "object", + "propertyNames": { + "type": "string", + "enum": [ + "deadline", + "finished", + "createdAt", + "updatedAt", + "publishedAt" + ] + }, + "additionalProperties": { + "type": "string", + "enum": [ + "asc", + "desc" + ] + } + } + } + ] + }, + "x-strapi-serialize": "querystring" + }, + { + "name": "populate", + "in": "query", + "required": false, + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "anyOf": [ + { + "description": "Populate all the first level relations, components, files, and dynamic zones for the entry", + "readOnly": true, + "type": "string", + "const": "*" + }, + { + "description": "Populate a single relation, component, file, or dynamic zone", + "readOnly": true, + "type": "string", + "enum": [ + "evaluations", + "user" + ] + }, + { + "description": "Populate a selection of multiple relations, components, files, or dynamic zones", + "type": "array", + "items": { + "type": "string", + "enum": [ + "evaluations", + "user" + ] + } + } + ] + }, + "x-strapi-serialize": "querystring" + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "type": "object", + "properties": { + "data": { + "type": "array", + "items": { + "type": "object", + "properties": { + "documentId": { + "description": "The document ID, represented by a UUID", + "type": "string", + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$" + }, + "id": { + "type": "number" + }, + "deadline": { + "description": "A date field", + "type": "string" + }, + "finished": { + "description": "A boolean field", + "default": false, + "type": "boolean" + }, + "createdAt": { + "description": "A datetime field", + "type": "string" + }, + "updatedAt": { + "description": "A datetime field", + "type": "string" + }, + "publishedAt": { + "description": "A datetime field", + "default": "2025-09-12T06:37:57.469Z", + "type": "string" + }, + "evaluations": { + "description": "A relational field", + "type": "array", + "items": { + "$ref": "#/components/schemas/ApiEvaluationEvaluationDocument" + } + }, + "user": { + "description": "A relational field", + "$ref": "#/components/schemas/PluginUsersPermissionsUserDocument" + } + }, + "required": [ + "documentId", + "id", + "deadline", + "finished", + "publishedAt" + ], + "additionalProperties": false + } + } + }, + "required": [ + "data" + ], + "additionalProperties": false + } + } + } + }, + "400": { + "description": "Bad request" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not found" + }, + "500": { + "description": "Internal server error" + } + }, + "tags": [ + "report" + ] + }, + "post": { + "operationId": "report/post/reports", + "parameters": [ + { + "name": "fields", + "in": "query", + "required": false, + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "The fields to return, this doesn't include populatable fields like relations, components, files, or dynamic zones", + "readOnly": true, + "type": "array", + "items": { + "type": "string", + "enum": [ + "deadline", + "finished", + "createdAt", + "updatedAt", + "publishedAt" + ] + } + }, + "x-strapi-serialize": "querystring" + }, + { + "name": "populate", + "in": "query", + "required": false, + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "anyOf": [ + { + "description": "Populate all the first level relations, components, files, and dynamic zones for the entry", + "readOnly": true, + "type": "string", + "const": "*" + }, + { + "description": "Populate a single relation, component, file, or dynamic zone", + "readOnly": true, + "type": "string", + "enum": [ + "evaluations", + "user" + ] + }, + { + "description": "Populate a selection of multiple relations, components, files, or dynamic zones", + "type": "array", + "items": { + "type": "string", + "enum": [ + "evaluations", + "user" + ] + } + } + ] + }, + "x-strapi-serialize": "querystring" + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "type": "object", + "properties": { + "data": { + "type": "object", + "properties": { + "documentId": { + "description": "The document ID, represented by a UUID", + "type": "string", + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$" + }, + "id": { + "type": "number" + }, + "deadline": { + "description": "A date field", + "type": "string" + }, + "finished": { + "description": "A boolean field", + "default": false, + "type": "boolean" + }, + "createdAt": { + "description": "A datetime field", + "type": "string" + }, + "updatedAt": { + "description": "A datetime field", + "type": "string" + }, + "publishedAt": { + "description": "A datetime field", + "default": "2025-09-12T06:37:57.475Z", + "type": "string" + }, + "evaluations": { + "description": "A relational field", + "type": "array", + "items": { + "$ref": "#/components/schemas/ApiEvaluationEvaluationDocument" + } + }, + "user": { + "description": "A relational field", + "$ref": "#/components/schemas/PluginUsersPermissionsUserDocument" + } + }, + "required": [ + "documentId", + "id", + "deadline", + "finished", + "publishedAt" + ], + "additionalProperties": false + } + }, + "required": [ + "data" + ], + "additionalProperties": false + } + } + } + }, + "400": { + "description": "Bad request" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not found" + }, + "500": { + "description": "Internal server error" + } + }, + "tags": [ + "report" + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "type": "object", + "properties": { + "data": { + "type": "object", + "properties": { + "deadline": { + "description": "A date field", + "type": "string" + }, + "finished": { + "description": "A boolean field", + "default": false, + "type": "string", + "enum": [ + "0", + "1", + "t", + "true", + "f", + "false" + ] + }, + "publishedAt": { + "description": "A datetime field", + "default": "2025-09-12T06:37:57.474Z", + "type": "string" + }, + "evaluations": { + "description": "A relational field", + "type": "array", + "items": { + "type": "string", + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$" + } + }, + "user": { + "description": "A relational field", + "type": "string", + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$" + } + }, + "required": [ + "deadline", + "finished", + "publishedAt" + ], + "additionalProperties": false + } + }, + "required": [ + "data" + ], + "additionalProperties": false + } + } + } + } + } + }, + "/reports/{id}": { + "get": { + "operationId": "report/get/reports_by_id", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "The document ID, represented by a UUID", + "type": "string", + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$" + } + }, + { + "name": "fields", + "in": "query", + "required": false, + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "The fields to return, this doesn't include populatable fields like relations, components, files, or dynamic zones", + "readOnly": true, + "type": "array", + "items": { + "type": "string", + "enum": [ + "deadline", + "finished", + "createdAt", + "updatedAt", + "publishedAt" + ] + } + }, + "x-strapi-serialize": "querystring" + }, + { + "name": "populate", + "in": "query", + "required": false, + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "anyOf": [ + { + "description": "Populate all the first level relations, components, files, and dynamic zones for the entry", + "readOnly": true, + "type": "string", + "const": "*" + }, + { + "description": "Populate a single relation, component, file, or dynamic zone", + "readOnly": true, + "type": "string", + "enum": [ + "evaluations", + "user" + ] + }, + { + "description": "Populate a selection of multiple relations, components, files, or dynamic zones", + "type": "array", + "items": { + "type": "string", + "enum": [ + "evaluations", + "user" + ] + } + } + ] + }, + "x-strapi-serialize": "querystring" + }, + { + "name": "filters", + "in": "query", + "required": false, + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "Filters to apply to the query", + "type": "object", + "propertyNames": { + "type": "string", + "enum": [ + "deadline", + "finished", + "createdAt", + "updatedAt", + "publishedAt" + ] + }, + "additionalProperties": {} + }, + "x-strapi-serialize": "querystring" + }, + { + "name": "sort", + "in": "query", + "required": false, + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "Sort the result", + "anyOf": [ + { + "type": "string", + "enum": [ + "deadline", + "finished", + "createdAt", + "updatedAt", + "publishedAt" + ] + }, + { + "type": "array", + "items": { + "type": "string", + "enum": [ + "deadline", + "finished", + "createdAt", + "updatedAt", + "publishedAt" + ] + } + }, + { + "type": "object", + "propertyNames": { + "type": "string", + "enum": [ + "deadline", + "finished", + "createdAt", + "updatedAt", + "publishedAt" + ] + }, + "additionalProperties": { + "type": "string", + "enum": [ + "asc", + "desc" + ] + } + }, + { + "type": "array", + "items": { + "type": "object", + "propertyNames": { + "type": "string", + "enum": [ + "deadline", + "finished", + "createdAt", + "updatedAt", + "publishedAt" + ] + }, + "additionalProperties": { + "type": "string", + "enum": [ + "asc", + "desc" + ] + } + } + } + ] + }, + "x-strapi-serialize": "querystring" + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "type": "object", + "properties": { + "data": { + "type": "object", + "properties": { + "documentId": { + "description": "The document ID, represented by a UUID", + "type": "string", + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$" + }, + "id": { + "type": "number" + }, + "deadline": { + "description": "A date field", + "type": "string" + }, + "finished": { + "description": "A boolean field", + "default": false, + "type": "boolean" + }, + "createdAt": { + "description": "A datetime field", + "type": "string" + }, + "updatedAt": { + "description": "A datetime field", + "type": "string" + }, + "publishedAt": { + "description": "A datetime field", + "default": "2025-09-12T06:37:57.472Z", + "type": "string" + }, + "evaluations": { + "description": "A relational field", + "type": "array", + "items": { + "$ref": "#/components/schemas/ApiEvaluationEvaluationDocument" + } + }, + "user": { + "description": "A relational field", + "$ref": "#/components/schemas/PluginUsersPermissionsUserDocument" + } + }, + "required": [ + "documentId", + "id", + "deadline", + "finished", + "publishedAt" + ], + "additionalProperties": false + } + }, + "required": [ + "data" + ], + "additionalProperties": false + } + } + } + }, + "400": { + "description": "Bad request" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not found" + }, + "500": { + "description": "Internal server error" + } + }, + "tags": [ + "report" + ] + }, + "put": { + "operationId": "report/put/reports_by_id", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "The document ID, represented by a UUID", + "type": "string", + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$" + } + }, + { + "name": "fields", + "in": "query", + "required": false, + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "The fields to return, this doesn't include populatable fields like relations, components, files, or dynamic zones", + "readOnly": true, + "type": "array", + "items": { + "type": "string", + "enum": [ + "deadline", + "finished", + "createdAt", + "updatedAt", + "publishedAt" + ] + } + }, + "x-strapi-serialize": "querystring" + }, + { + "name": "populate", + "in": "query", + "required": false, + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "anyOf": [ + { + "description": "Populate all the first level relations, components, files, and dynamic zones for the entry", + "readOnly": true, + "type": "string", + "const": "*" + }, + { + "description": "Populate a single relation, component, file, or dynamic zone", + "readOnly": true, + "type": "string", + "enum": [ + "evaluations", + "user" + ] + }, + { + "description": "Populate a selection of multiple relations, components, files, or dynamic zones", + "type": "array", + "items": { + "type": "string", + "enum": [ + "evaluations", + "user" + ] + } + } + ] + }, + "x-strapi-serialize": "querystring" + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "type": "object", + "properties": { + "data": { + "type": "object", + "properties": { + "documentId": { + "description": "The document ID, represented by a UUID", + "type": "string", + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$" + }, + "id": { + "type": "number" + }, + "deadline": { + "description": "A date field", + "type": "string" + }, + "finished": { + "description": "A boolean field", + "default": false, + "type": "boolean" + }, + "createdAt": { + "description": "A datetime field", + "type": "string" + }, + "updatedAt": { + "description": "A datetime field", + "type": "string" + }, + "publishedAt": { + "description": "A datetime field", + "default": "2025-09-12T06:37:57.478Z", + "type": "string" + }, + "evaluations": { + "description": "A relational field", + "type": "array", + "items": { + "$ref": "#/components/schemas/ApiEvaluationEvaluationDocument" + } + }, + "user": { + "description": "A relational field", + "$ref": "#/components/schemas/PluginUsersPermissionsUserDocument" + } + }, + "required": [ + "documentId", + "id", + "deadline", + "finished", + "publishedAt" + ], + "additionalProperties": false + } + }, + "required": [ + "data" + ], + "additionalProperties": false + } + } + } + }, + "400": { + "description": "Bad request" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not found" + }, + "500": { + "description": "Internal server error" + } + }, + "tags": [ + "report" + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "type": "object", + "properties": { + "data": { + "type": "object", + "properties": { + "deadline": { + "description": "A date field", + "type": "string" + }, + "finished": { + "description": "A boolean field", + "default": false, + "type": "string", + "enum": [ + "0", + "1", + "t", + "true", + "f", + "false" + ] + }, + "publishedAt": { + "description": "A datetime field", + "default": "2025-09-12T06:37:57.477Z", + "type": "string" + }, + "evaluations": { + "description": "A relational field", + "type": "array", + "items": { + "type": "string", + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$" + } + }, + "user": { + "description": "A relational field", + "type": "string", + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$" + } + }, + "additionalProperties": false + } + }, + "required": [ + "data" + ], + "additionalProperties": false + } + } + } + } + }, + "delete": { + "operationId": "report/delete/reports_by_id", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "The document ID, represented by a UUID", + "type": "string", + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$" + } + }, + { + "name": "fields", + "in": "query", + "required": false, + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "The fields to return, this doesn't include populatable fields like relations, components, files, or dynamic zones", + "readOnly": true, + "type": "array", + "items": { + "type": "string", + "enum": [ + "deadline", + "finished", + "createdAt", + "updatedAt", + "publishedAt" + ] + } + }, + "x-strapi-serialize": "querystring" + }, + { + "name": "populate", + "in": "query", + "required": false, + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "anyOf": [ + { + "description": "Populate all the first level relations, components, files, and dynamic zones for the entry", + "readOnly": true, + "type": "string", + "const": "*" + }, + { + "description": "Populate a single relation, component, file, or dynamic zone", + "readOnly": true, + "type": "string", + "enum": [ + "evaluations", + "user" + ] + }, + { + "description": "Populate a selection of multiple relations, components, files, or dynamic zones", + "type": "array", + "items": { + "type": "string", + "enum": [ + "evaluations", + "user" + ] + } + } + ] + }, + "x-strapi-serialize": "querystring" + }, + { + "name": "filters", + "in": "query", + "required": false, + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "Filters to apply to the query", + "type": "object", + "propertyNames": { + "type": "string", + "enum": [ + "deadline", + "finished", + "createdAt", + "updatedAt", + "publishedAt" + ] + }, + "additionalProperties": {} + }, + "x-strapi-serialize": "querystring" + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "type": "object", + "properties": { + "data": { + "type": "object", + "properties": { + "documentId": { + "description": "The document ID, represented by a UUID", + "type": "string", + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$" + }, + "id": { + "type": "number" + }, + "deadline": { + "description": "A date field", + "type": "string" + }, + "finished": { + "description": "A boolean field", + "default": false, + "type": "boolean" + }, + "createdAt": { + "description": "A datetime field", + "type": "string" + }, + "updatedAt": { + "description": "A datetime field", + "type": "string" + }, + "publishedAt": { + "description": "A datetime field", + "default": "2025-09-12T06:37:57.479Z", + "type": "string" + }, + "evaluations": { + "description": "A relational field", + "type": "array", + "items": { + "$ref": "#/components/schemas/ApiEvaluationEvaluationDocument" + } + }, + "user": { + "description": "A relational field", + "$ref": "#/components/schemas/PluginUsersPermissionsUserDocument" + } + }, + "required": [ + "documentId", + "id", + "deadline", + "finished", + "publishedAt" + ], + "additionalProperties": false + } + }, + "required": [ + "data" + ], + "additionalProperties": false + } + } + } + }, + "400": { + "description": "Bad request" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not found" + }, + "500": { + "description": "Internal server error" + } + }, + "tags": [ + "report" + ] + } + }, + "/content-types": { + "get": { + "operationId": "content-type-builder/get/content_types", + "parameters": [ + { + "name": "kind", + "in": "query", + "required": true, + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "type": "string", + "enum": [ + "collectionType", + "singleType" + ] + }, + "x-strapi-serialize": "querystring" + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "type": "object", + "properties": { + "data": { + "type": "array", + "items": { + "type": "object", + "properties": { + "uid": { + "type": "string", + "pattern": "^((strapi|admin)::[\\w-]+|(api|plugin)::[\\w-]+\\.[\\w-]+)$" + }, + "plugin": { + "type": "string" + }, + "apiID": { + "type": "string" + }, + "schema": { + "type": "object", + "properties": { + "displayName": { + "type": "string" + }, + "singularName": { + "type": "string" + }, + "pluralName": { + "type": "string" + }, + "description": { + "type": "string" + }, + "draftAndPublish": { + "type": "boolean" + }, + "kind": { + "type": "string", + "enum": [ + "collectionType", + "singleType" + ] + }, + "collectionName": { + "type": "string" + }, + "attributes": { + "type": "object", + "propertyNames": { + "type": "string" + }, + "additionalProperties": { + "anyOf": [ + { + "type": "object", + "properties": { + "type": { + "type": "string", + "const": "media" + }, + "configurable": { + "type": "boolean", + "const": false + }, + "private": { + "type": "boolean" + }, + "pluginOptions": { + "type": "object", + "propertyNames": { + "type": "string" + }, + "additionalProperties": {} + }, + "multiple": { + "type": "boolean" + }, + "required": { + "type": "boolean" + }, + "allowedTypes": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "required": [ + "type", + "multiple" + ], + "additionalProperties": false + }, + { + "type": "object", + "properties": { + "type": { + "type": "string", + "const": "relation" + }, + "configurable": { + "type": "boolean", + "const": false + }, + "private": { + "type": "boolean" + }, + "pluginOptions": { + "type": "object", + "propertyNames": { + "type": "string" + }, + "additionalProperties": {} + }, + "relation": { + "type": "string" + }, + "target": { + "type": "string", + "pattern": "^((strapi|admin)::[\\w-]+|(api|plugin)::[\\w-]+\\.[\\w-]+)$" + }, + "targetAttribute": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "autoPopulate": { + "type": "boolean" + }, + "mappedBy": { + "type": "string" + }, + "inversedBy": { + "type": "string" + } + }, + "required": [ + "type", + "relation", + "target", + "targetAttribute" + ], + "additionalProperties": false + }, + { + "type": "object", + "properties": { + "type": { + "type": "string", + "const": "component" + }, + "configurable": { + "type": "boolean", + "const": false + }, + "private": { + "type": "boolean" + }, + "pluginOptions": { + "type": "object", + "propertyNames": { + "type": "string" + }, + "additionalProperties": {} + }, + "component": { + "type": "string" + }, + "repeatable": { + "type": "boolean" + }, + "required": { + "type": "boolean" + }, + "min": { + "type": "number" + }, + "max": { + "type": "number" + } + }, + "required": [ + "type", + "component", + "repeatable" + ], + "additionalProperties": false + }, + { + "type": "object", + "properties": { + "type": { + "type": "string", + "const": "dynamiczone" + }, + "configurable": { + "type": "boolean", + "const": false + }, + "private": { + "type": "boolean" + }, + "pluginOptions": { + "type": "object", + "propertyNames": { + "type": "string" + }, + "additionalProperties": {} + }, + "components": { + "type": "array", + "items": { + "type": "string", + "pattern": "^[\\w-]+\\.[\\w-]+$" + } + }, + "required": { + "type": "boolean" + }, + "min": { + "type": "number" + }, + "max": { + "type": "number" + } + }, + "required": [ + "type", + "components" + ], + "additionalProperties": false + }, + { + "type": "object", + "properties": { + "type": { + "type": "string", + "const": "uid" + }, + "configurable": { + "type": "boolean", + "const": false + }, + "private": { + "type": "boolean" + }, + "pluginOptions": { + "type": "object", + "propertyNames": { + "type": "string" + }, + "additionalProperties": {} + }, + "targetField": { + "type": "string" + } + }, + "required": [ + "type" + ], + "additionalProperties": false + }, + { + "type": "object", + "properties": { + "type": { + "type": "string" + }, + "required": { + "type": "boolean" + }, + "unique": { + "type": "boolean" + }, + "default": {}, + "min": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "string" + } + ] + }, + "max": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "string" + } + ] + }, + "minLength": { + "type": "number" + }, + "maxLength": { + "type": "number" + }, + "enum": { + "type": "array", + "items": { + "type": "string" + } + }, + "regex": { + "type": "string" + }, + "private": { + "type": "boolean" + }, + "configurable": { + "type": "boolean" + }, + "pluginOptions": { + "type": "object", + "propertyNames": { + "type": "string" + }, + "additionalProperties": {} + } + }, + "required": [ + "type" + ], + "additionalProperties": false + } + ] + } + }, + "visible": { + "type": "boolean" + }, + "restrictRelationsTo": { + "anyOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "null" + } + ] + }, + "pluginOptions": { + "type": "object", + "propertyNames": { + "type": "string" + }, + "additionalProperties": {} + }, + "options": { + "type": "object", + "propertyNames": { + "type": "string" + }, + "additionalProperties": {} + }, + "reviewWorkflows": { + "type": "boolean" + }, + "populateCreatorFields": { + "type": "boolean" + }, + "comment": { + "type": "string" + }, + "version": { + "type": "string" + } + }, + "required": [ + "displayName", + "singularName", + "pluralName", + "description", + "draftAndPublish", + "kind", + "attributes", + "visible", + "restrictRelationsTo" + ], + "additionalProperties": false + } + }, + "required": [ + "uid", + "apiID", + "schema" + ], + "additionalProperties": false + } + } + }, + "required": [ + "data" + ], + "additionalProperties": false + } + } + } + }, + "400": { + "description": "Bad request" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not found" + }, + "500": { + "description": "Internal server error" + } + }, + "tags": [ + "content-type-builder" + ] + } + }, + "/content-types/{uid}": { + "get": { + "operationId": "content-type-builder/get/content_types_by_uid", + "parameters": [ + { + "name": "uid", + "in": "path", + "required": true, + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "type": "string", + "pattern": "^((strapi|admin)::[\\w-]+|(api|plugin)::[\\w-]+\\.[\\w-]+)$" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "type": "object", + "properties": { + "data": { + "type": "object", + "properties": { + "uid": { + "type": "string", + "pattern": "^((strapi|admin)::[\\w-]+|(api|plugin)::[\\w-]+\\.[\\w-]+)$" + }, + "plugin": { + "type": "string" + }, + "apiID": { + "type": "string" + }, + "schema": { + "type": "object", + "properties": { + "displayName": { + "type": "string" + }, + "singularName": { + "type": "string" + }, + "pluralName": { + "type": "string" + }, + "description": { + "type": "string" + }, + "draftAndPublish": { + "type": "boolean" + }, + "kind": { + "type": "string", + "enum": [ + "collectionType", + "singleType" + ] + }, + "collectionName": { + "type": "string" + }, + "attributes": { + "type": "object", + "propertyNames": { + "type": "string" + }, + "additionalProperties": { + "anyOf": [ + { + "type": "object", + "properties": { + "type": { + "type": "string", + "const": "media" + }, + "configurable": { + "type": "boolean", + "const": false + }, + "private": { + "type": "boolean" + }, + "pluginOptions": { + "type": "object", + "propertyNames": { + "type": "string" + }, + "additionalProperties": {} + }, + "multiple": { + "type": "boolean" + }, + "required": { + "type": "boolean" + }, + "allowedTypes": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "required": [ + "type", + "multiple" + ], + "additionalProperties": false + }, + { + "type": "object", + "properties": { + "type": { + "type": "string", + "const": "relation" + }, + "configurable": { + "type": "boolean", + "const": false + }, + "private": { + "type": "boolean" + }, + "pluginOptions": { + "type": "object", + "propertyNames": { + "type": "string" + }, + "additionalProperties": {} + }, + "relation": { + "type": "string" + }, + "target": { + "type": "string", + "pattern": "^((strapi|admin)::[\\w-]+|(api|plugin)::[\\w-]+\\.[\\w-]+)$" + }, + "targetAttribute": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "autoPopulate": { + "type": "boolean" + }, + "mappedBy": { + "type": "string" + }, + "inversedBy": { + "type": "string" + } + }, + "required": [ + "type", + "relation", + "target", + "targetAttribute" + ], + "additionalProperties": false + }, + { + "type": "object", + "properties": { + "type": { + "type": "string", + "const": "component" + }, + "configurable": { + "type": "boolean", + "const": false + }, + "private": { + "type": "boolean" + }, + "pluginOptions": { + "type": "object", + "propertyNames": { + "type": "string" + }, + "additionalProperties": {} + }, + "component": { + "type": "string" + }, + "repeatable": { + "type": "boolean" + }, + "required": { + "type": "boolean" + }, + "min": { + "type": "number" + }, + "max": { + "type": "number" + } + }, + "required": [ + "type", + "component", + "repeatable" + ], + "additionalProperties": false + }, + { + "type": "object", + "properties": { + "type": { + "type": "string", + "const": "dynamiczone" + }, + "configurable": { + "type": "boolean", + "const": false + }, + "private": { + "type": "boolean" + }, + "pluginOptions": { + "type": "object", + "propertyNames": { + "type": "string" + }, + "additionalProperties": {} + }, + "components": { + "type": "array", + "items": { + "type": "string", + "pattern": "^[\\w-]+\\.[\\w-]+$" + } + }, + "required": { + "type": "boolean" + }, + "min": { + "type": "number" + }, + "max": { + "type": "number" + } + }, + "required": [ + "type", + "components" + ], + "additionalProperties": false + }, + { + "type": "object", + "properties": { + "type": { + "type": "string", + "const": "uid" + }, + "configurable": { + "type": "boolean", + "const": false + }, + "private": { + "type": "boolean" + }, + "pluginOptions": { + "type": "object", + "propertyNames": { + "type": "string" + }, + "additionalProperties": {} + }, + "targetField": { + "type": "string" + } + }, + "required": [ + "type" + ], + "additionalProperties": false + }, + { + "type": "object", + "properties": { + "type": { + "type": "string" + }, + "required": { + "type": "boolean" + }, + "unique": { + "type": "boolean" + }, + "default": {}, + "min": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "string" + } + ] + }, + "max": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "string" + } + ] + }, + "minLength": { + "type": "number" + }, + "maxLength": { + "type": "number" + }, + "enum": { + "type": "array", + "items": { + "type": "string" + } + }, + "regex": { + "type": "string" + }, + "private": { + "type": "boolean" + }, + "configurable": { + "type": "boolean" + }, + "pluginOptions": { + "type": "object", + "propertyNames": { + "type": "string" + }, + "additionalProperties": {} + } + }, + "required": [ + "type" + ], + "additionalProperties": false + } + ] + } + }, + "visible": { + "type": "boolean" + }, + "restrictRelationsTo": { + "anyOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "null" + } + ] + }, + "pluginOptions": { + "type": "object", + "propertyNames": { + "type": "string" + }, + "additionalProperties": {} + }, + "options": { + "type": "object", + "propertyNames": { + "type": "string" + }, + "additionalProperties": {} + }, + "reviewWorkflows": { + "type": "boolean" + }, + "populateCreatorFields": { + "type": "boolean" + }, + "comment": { + "type": "string" + }, + "version": { + "type": "string" + } + }, + "required": [ + "displayName", + "singularName", + "pluralName", + "description", + "draftAndPublish", + "kind", + "attributes", + "visible", + "restrictRelationsTo" + ], + "additionalProperties": false + } + }, + "required": [ + "uid", + "apiID", + "schema" + ], + "additionalProperties": false + } + }, + "required": [ + "data" + ], + "additionalProperties": false + } + } + } + }, + "400": { + "description": "Bad request" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not found" + }, + "500": { + "description": "Internal server error" + } + }, + "tags": [ + "content-type-builder" + ] + } + }, + "/components": { + "get": { + "operationId": "content-type-builder/get/components", + "parameters": [], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "type": "object", + "properties": { + "data": { + "type": "array", + "items": { + "type": "object", + "properties": { + "uid": { + "type": "string", + "pattern": "^[\\w-]+\\.[\\w-]+$" + }, + "category": { + "type": "string" + }, + "apiId": { + "type": "string" + }, + "schema": { + "type": "object", + "properties": { + "displayName": { + "type": "string" + }, + "description": { + "type": "string" + }, + "icon": { + "type": "string" + }, + "connection": { + "type": "string" + }, + "collectionName": { + "type": "string" + }, + "attributes": { + "type": "object", + "propertyNames": { + "type": "string" + }, + "additionalProperties": { + "anyOf": [ + { + "type": "object", + "properties": { + "type": { + "type": "string", + "const": "media" + }, + "configurable": { + "type": "boolean", + "const": false + }, + "private": { + "type": "boolean" + }, + "pluginOptions": { + "type": "object", + "propertyNames": { + "type": "string" + }, + "additionalProperties": {} + }, + "multiple": { + "type": "boolean" + }, + "required": { + "type": "boolean" + }, + "allowedTypes": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "required": [ + "type", + "multiple" + ], + "additionalProperties": false + }, + { + "type": "object", + "properties": { + "type": { + "type": "string", + "const": "relation" + }, + "configurable": { + "type": "boolean", + "const": false + }, + "private": { + "type": "boolean" + }, + "pluginOptions": { + "type": "object", + "propertyNames": { + "type": "string" + }, + "additionalProperties": {} + }, + "relation": { + "type": "string" + }, + "target": { + "type": "string", + "pattern": "^((strapi|admin)::[\\w-]+|(api|plugin)::[\\w-]+\\.[\\w-]+)$" + }, + "targetAttribute": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "autoPopulate": { + "type": "boolean" + }, + "mappedBy": { + "type": "string" + }, + "inversedBy": { + "type": "string" + } + }, + "required": [ + "type", + "relation", + "target", + "targetAttribute" + ], + "additionalProperties": false + }, + { + "type": "object", + "properties": { + "type": { + "type": "string", + "const": "component" + }, + "configurable": { + "type": "boolean", + "const": false + }, + "private": { + "type": "boolean" + }, + "pluginOptions": { + "type": "object", + "propertyNames": { + "type": "string" + }, + "additionalProperties": {} + }, + "component": { + "type": "string" + }, + "repeatable": { + "type": "boolean" + }, + "required": { + "type": "boolean" + }, + "min": { + "type": "number" + }, + "max": { + "type": "number" + } + }, + "required": [ + "type", + "component", + "repeatable" + ], + "additionalProperties": false + }, + { + "type": "object", + "properties": { + "type": { + "type": "string", + "const": "dynamiczone" + }, + "configurable": { + "type": "boolean", + "const": false + }, + "private": { + "type": "boolean" + }, + "pluginOptions": { + "type": "object", + "propertyNames": { + "type": "string" + }, + "additionalProperties": {} + }, + "components": { + "type": "array", + "items": { + "type": "string", + "pattern": "^[\\w-]+\\.[\\w-]+$" + } + }, + "required": { + "type": "boolean" + }, + "min": { + "type": "number" + }, + "max": { + "type": "number" + } + }, + "required": [ + "type", + "components" + ], + "additionalProperties": false + }, + { + "type": "object", + "properties": { + "type": { + "type": "string", + "const": "uid" + }, + "configurable": { + "type": "boolean", + "const": false + }, + "private": { + "type": "boolean" + }, + "pluginOptions": { + "type": "object", + "propertyNames": { + "type": "string" + }, + "additionalProperties": {} + }, + "targetField": { + "type": "string" + } + }, + "required": [ + "type" + ], + "additionalProperties": false + }, + { + "type": "object", + "properties": { + "type": { + "type": "string" + }, + "required": { + "type": "boolean" + }, + "unique": { + "type": "boolean" + }, + "default": {}, + "min": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "string" + } + ] + }, + "max": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "string" + } + ] + }, + "minLength": { + "type": "number" + }, + "maxLength": { + "type": "number" + }, + "enum": { + "type": "array", + "items": { + "type": "string" + } + }, + "regex": { + "type": "string" + }, + "private": { + "type": "boolean" + }, + "configurable": { + "type": "boolean" + }, + "pluginOptions": { + "type": "object", + "propertyNames": { + "type": "string" + }, + "additionalProperties": {} + } + }, + "required": [ + "type" + ], + "additionalProperties": false + } + ] + } + }, + "pluginOptions": { + "type": "object", + "propertyNames": { + "type": "string" + }, + "additionalProperties": {} + } + }, + "required": [ + "displayName", + "description", + "attributes" + ], + "additionalProperties": false + } + }, + "required": [ + "uid", + "category", + "apiId", + "schema" + ], + "additionalProperties": false + } + } + }, + "required": [ + "data" + ], + "additionalProperties": false + } + } + } + }, + "400": { + "description": "Bad request" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not found" + }, + "500": { + "description": "Internal server error" + } + }, + "tags": [ + "content-type-builder" + ] + } + }, + "/components/{uid}": { + "get": { + "operationId": "content-type-builder/get/components_by_uid", + "parameters": [ + { + "name": "uid", + "in": "path", + "required": true, + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "type": "string", + "pattern": "^[\\w-]+\\.[\\w-]+$" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "type": "object", + "properties": { + "data": { + "type": "object", + "properties": { + "uid": { + "type": "string", + "pattern": "^[\\w-]+\\.[\\w-]+$" + }, + "category": { + "type": "string" + }, + "apiId": { + "type": "string" + }, + "schema": { + "type": "object", + "properties": { + "displayName": { + "type": "string" + }, + "description": { + "type": "string" + }, + "icon": { + "type": "string" + }, + "connection": { + "type": "string" + }, + "collectionName": { + "type": "string" + }, + "attributes": { + "type": "object", + "propertyNames": { + "type": "string" + }, + "additionalProperties": { + "anyOf": [ + { + "type": "object", + "properties": { + "type": { + "type": "string", + "const": "media" + }, + "configurable": { + "type": "boolean", + "const": false + }, + "private": { + "type": "boolean" + }, + "pluginOptions": { + "type": "object", + "propertyNames": { + "type": "string" + }, + "additionalProperties": {} + }, + "multiple": { + "type": "boolean" + }, + "required": { + "type": "boolean" + }, + "allowedTypes": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "required": [ + "type", + "multiple" + ], + "additionalProperties": false + }, + { + "type": "object", + "properties": { + "type": { + "type": "string", + "const": "relation" + }, + "configurable": { + "type": "boolean", + "const": false + }, + "private": { + "type": "boolean" + }, + "pluginOptions": { + "type": "object", + "propertyNames": { + "type": "string" + }, + "additionalProperties": {} + }, + "relation": { + "type": "string" + }, + "target": { + "type": "string", + "pattern": "^((strapi|admin)::[\\w-]+|(api|plugin)::[\\w-]+\\.[\\w-]+)$" + }, + "targetAttribute": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "autoPopulate": { + "type": "boolean" + }, + "mappedBy": { + "type": "string" + }, + "inversedBy": { + "type": "string" + } + }, + "required": [ + "type", + "relation", + "target", + "targetAttribute" + ], + "additionalProperties": false + }, + { + "type": "object", + "properties": { + "type": { + "type": "string", + "const": "component" + }, + "configurable": { + "type": "boolean", + "const": false + }, + "private": { + "type": "boolean" + }, + "pluginOptions": { + "type": "object", + "propertyNames": { + "type": "string" + }, + "additionalProperties": {} + }, + "component": { + "type": "string" + }, + "repeatable": { + "type": "boolean" + }, + "required": { + "type": "boolean" + }, + "min": { + "type": "number" + }, + "max": { + "type": "number" + } + }, + "required": [ + "type", + "component", + "repeatable" + ], + "additionalProperties": false + }, + { + "type": "object", + "properties": { + "type": { + "type": "string", + "const": "dynamiczone" + }, + "configurable": { + "type": "boolean", + "const": false + }, + "private": { + "type": "boolean" + }, + "pluginOptions": { + "type": "object", + "propertyNames": { + "type": "string" + }, + "additionalProperties": {} + }, + "components": { + "type": "array", + "items": { + "type": "string", + "pattern": "^[\\w-]+\\.[\\w-]+$" + } + }, + "required": { + "type": "boolean" + }, + "min": { + "type": "number" + }, + "max": { + "type": "number" + } + }, + "required": [ + "type", + "components" + ], + "additionalProperties": false + }, + { + "type": "object", + "properties": { + "type": { + "type": "string", + "const": "uid" + }, + "configurable": { + "type": "boolean", + "const": false + }, + "private": { + "type": "boolean" + }, + "pluginOptions": { + "type": "object", + "propertyNames": { + "type": "string" + }, + "additionalProperties": {} + }, + "targetField": { + "type": "string" + } + }, + "required": [ + "type" + ], + "additionalProperties": false + }, + { + "type": "object", + "properties": { + "type": { + "type": "string" + }, + "required": { + "type": "boolean" + }, + "unique": { + "type": "boolean" + }, + "default": {}, + "min": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "string" + } + ] + }, + "max": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "string" + } + ] + }, + "minLength": { + "type": "number" + }, + "maxLength": { + "type": "number" + }, + "enum": { + "type": "array", + "items": { + "type": "string" + } + }, + "regex": { + "type": "string" + }, + "private": { + "type": "boolean" + }, + "configurable": { + "type": "boolean" + }, + "pluginOptions": { + "type": "object", + "propertyNames": { + "type": "string" + }, + "additionalProperties": {} + } + }, + "required": [ + "type" + ], + "additionalProperties": false + } + ] + } + }, + "pluginOptions": { + "type": "object", + "propertyNames": { + "type": "string" + }, + "additionalProperties": {} + } + }, + "required": [ + "displayName", + "description", + "attributes" + ], + "additionalProperties": false + } + }, + "required": [ + "uid", + "category", + "apiId", + "schema" + ], + "additionalProperties": false + } + }, + "required": [ + "data" + ], + "additionalProperties": false + } + } + } + }, + "400": { + "description": "Bad request" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not found" + }, + "500": { + "description": "Internal server error" + } + }, + "tags": [ + "content-type-builder" + ] + } + }, + "/": { + "post": { + "operationId": "upload/post", + "parameters": [ + { + "name": "id", + "in": "query", + "required": false, + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "type": "integer", + "exclusiveMinimum": 0, + "maximum": 9007199254740991 + }, + "x-strapi-serialize": "querystring" + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "anyOf": [ + { + "type": "object", + "properties": { + "id": { + "type": "integer", + "exclusiveMinimum": 0, + "maximum": 9007199254740991 + }, + "documentId": { + "type": "string", + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$" + }, + "name": { + "type": "string" + }, + "alternativeText": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "caption": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "width": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "height": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "formats": { + "type": "object", + "propertyNames": { + "type": "string" + }, + "additionalProperties": {} + }, + "hash": { + "type": "string" + }, + "ext": { + "type": "string" + }, + "mime": { + "type": "string" + }, + "size": { + "type": "number" + }, + "url": { + "type": "string" + }, + "previewUrl": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "folder": { + "type": "number" + }, + "folderPath": { + "type": "string" + }, + "provider": { + "type": "string" + }, + "provider_metadata": { + "anyOf": [ + { + "type": "object", + "propertyNames": { + "type": "string" + }, + "additionalProperties": {} + }, + { + "type": "null" + } + ] + }, + "createdAt": { + "type": "string" + }, + "updatedAt": { + "type": "string" + }, + "createdBy": { + "type": "number" + }, + "updatedBy": { + "type": "number" + } + }, + "required": [ + "id", + "documentId", + "name", + "hash", + "mime", + "size", + "url", + "folderPath", + "provider", + "createdAt", + "updatedAt" + ], + "additionalProperties": false + }, + { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "exclusiveMinimum": 0, + "maximum": 9007199254740991 + }, + "documentId": { + "type": "string", + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$" + }, + "name": { + "type": "string" + }, + "alternativeText": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "caption": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "width": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "height": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "formats": { + "type": "object", + "propertyNames": { + "type": "string" + }, + "additionalProperties": {} + }, + "hash": { + "type": "string" + }, + "ext": { + "type": "string" + }, + "mime": { + "type": "string" + }, + "size": { + "type": "number" + }, + "url": { + "type": "string" + }, + "previewUrl": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "folder": { + "type": "number" + }, + "folderPath": { + "type": "string" + }, + "provider": { + "type": "string" + }, + "provider_metadata": { + "anyOf": [ + { + "type": "object", + "propertyNames": { + "type": "string" + }, + "additionalProperties": {} + }, + { + "type": "null" + } + ] + }, + "createdAt": { + "type": "string" + }, + "updatedAt": { + "type": "string" + }, + "createdBy": { + "type": "number" + }, + "updatedBy": { + "type": "number" + } + }, + "required": [ + "id", + "documentId", + "name", + "hash", + "mime", + "size", + "url", + "folderPath", + "provider", + "createdAt", + "updatedAt" + ], + "additionalProperties": false + } + } + ] + } + } + } + }, + "400": { + "description": "Bad request" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not found" + }, + "500": { + "description": "Internal server error" + } + }, + "tags": [ + "upload" + ] + } + }, + "/files": { + "get": { + "operationId": "upload/get/files", + "parameters": [ + { + "name": "fields", + "in": "query", + "required": false, + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "Select specific fields to return in the response", + "anyOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ] + }, + "x-strapi-serialize": "querystring" + }, + { + "name": "populate", + "in": "query", + "required": false, + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "Specify which relations to populate in the response", + "anyOf": [ + { + "type": "string", + "const": "*" + }, + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "object", + "propertyNames": { + "type": "string" + }, + "additionalProperties": {} + } + ] + }, + "x-strapi-serialize": "querystring" + }, + { + "name": "sort", + "in": "query", + "required": false, + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "Sort the results by specified fields", + "anyOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "object", + "propertyNames": { + "type": "string" + }, + "additionalProperties": { + "type": "string", + "enum": [ + "asc", + "desc" + ] + } + }, + { + "type": "array", + "items": { + "type": "object", + "propertyNames": { + "type": "string" + }, + "additionalProperties": { + "type": "string", + "enum": [ + "asc", + "desc" + ] + } + } + } + ] + }, + "x-strapi-serialize": "querystring" + }, + { + "name": "pagination", + "in": "query", + "required": false, + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "Pagination parameters", + "allOf": [ + { + "type": "object", + "properties": { + "withCount": { + "description": "Include total count in response", + "type": "boolean" + } + }, + "additionalProperties": false + }, + { + "anyOf": [ + { + "description": "Page-based pagination", + "type": "object", + "properties": { + "page": { + "description": "Page number (1-based)", + "type": "integer", + "exclusiveMinimum": 0, + "maximum": 9007199254740991 + }, + "pageSize": { + "description": "Number of entries per page", + "type": "integer", + "exclusiveMinimum": 0, + "maximum": 9007199254740991 + } + }, + "required": [ + "page", + "pageSize" + ], + "additionalProperties": false + }, + { + "description": "Offset-based pagination", + "type": "object", + "properties": { + "start": { + "description": "Number of entries to skip", + "type": "integer", + "minimum": 0, + "maximum": 9007199254740991 + }, + "limit": { + "description": "Maximum number of entries to return", + "type": "integer", + "exclusiveMinimum": 0, + "maximum": 9007199254740991 + } + }, + "required": [ + "start", + "limit" + ], + "additionalProperties": false + } + ] + } + ] + }, + "x-strapi-serialize": "querystring" + }, + { + "name": "filters", + "in": "query", + "required": false, + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "Apply filters to the query", + "type": "object", + "propertyNames": { + "type": "string" + }, + "additionalProperties": {} + }, + "x-strapi-serialize": "querystring" + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "exclusiveMinimum": 0, + "maximum": 9007199254740991 + }, + "documentId": { + "type": "string", + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$" + }, + "name": { + "type": "string" + }, + "alternativeText": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "caption": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "width": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "height": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "formats": { + "type": "object", + "propertyNames": { + "type": "string" + }, + "additionalProperties": {} + }, + "hash": { + "type": "string" + }, + "ext": { + "type": "string" + }, + "mime": { + "type": "string" + }, + "size": { + "type": "number" + }, + "url": { + "type": "string" + }, + "previewUrl": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "folder": { + "type": "number" + }, + "folderPath": { + "type": "string" + }, + "provider": { + "type": "string" + }, + "provider_metadata": { + "anyOf": [ + { + "type": "object", + "propertyNames": { + "type": "string" + }, + "additionalProperties": {} + }, + { + "type": "null" + } + ] + }, + "createdAt": { + "type": "string" + }, + "updatedAt": { + "type": "string" + }, + "createdBy": { + "type": "number" + }, + "updatedBy": { + "type": "number" + } + }, + "required": [ + "id", + "documentId", + "name", + "hash", + "mime", + "size", + "url", + "folderPath", + "provider", + "createdAt", + "updatedAt" + ], + "additionalProperties": false + } + } + } + } + }, + "400": { + "description": "Bad request" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not found" + }, + "500": { + "description": "Internal server error" + } + }, + "tags": [ + "upload" + ] + } + }, + "/files/{id}": { + "get": { + "operationId": "upload/get/files_by_id", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "type": "integer", + "exclusiveMinimum": 0, + "maximum": 9007199254740991 + } + }, + { + "name": "fields", + "in": "query", + "required": false, + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "Select specific fields to return in the response", + "anyOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ] + }, + "x-strapi-serialize": "querystring" + }, + { + "name": "populate", + "in": "query", + "required": false, + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "Specify which relations to populate in the response", + "anyOf": [ + { + "type": "string", + "const": "*" + }, + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "object", + "propertyNames": { + "type": "string" + }, + "additionalProperties": {} + } + ] + }, + "x-strapi-serialize": "querystring" + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "type": "object", + "properties": { + "id": { + "type": "integer", + "exclusiveMinimum": 0, + "maximum": 9007199254740991 + }, + "documentId": { + "type": "string", + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$" + }, + "name": { + "type": "string" + }, + "alternativeText": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "caption": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "width": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "height": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "formats": { + "type": "object", + "propertyNames": { + "type": "string" + }, + "additionalProperties": {} + }, + "hash": { + "type": "string" + }, + "ext": { + "type": "string" + }, + "mime": { + "type": "string" + }, + "size": { + "type": "number" + }, + "url": { + "type": "string" + }, + "previewUrl": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "folder": { + "type": "number" + }, + "folderPath": { + "type": "string" + }, + "provider": { + "type": "string" + }, + "provider_metadata": { + "anyOf": [ + { + "type": "object", + "propertyNames": { + "type": "string" + }, + "additionalProperties": {} + }, + { + "type": "null" + } + ] + }, + "createdAt": { + "type": "string" + }, + "updatedAt": { + "type": "string" + }, + "createdBy": { + "type": "number" + }, + "updatedBy": { + "type": "number" + } + }, + "required": [ + "id", + "documentId", + "name", + "hash", + "mime", + "size", + "url", + "folderPath", + "provider", + "createdAt", + "updatedAt" + ], + "additionalProperties": false + } + } + } + }, + "400": { + "description": "Bad request" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not found" + }, + "500": { + "description": "Internal server error" + } + }, + "tags": [ + "upload" + ] + }, + "delete": { + "operationId": "upload/delete/files_by_id", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "type": "integer", + "exclusiveMinimum": 0, + "maximum": 9007199254740991 + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "type": "object", + "properties": { + "id": { + "type": "integer", + "exclusiveMinimum": 0, + "maximum": 9007199254740991 + }, + "documentId": { + "type": "string", + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$" + }, + "name": { + "type": "string" + }, + "alternativeText": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "caption": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "width": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "height": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "formats": { + "type": "object", + "propertyNames": { + "type": "string" + }, + "additionalProperties": {} + }, + "hash": { + "type": "string" + }, + "ext": { + "type": "string" + }, + "mime": { + "type": "string" + }, + "size": { + "type": "number" + }, + "url": { + "type": "string" + }, + "previewUrl": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "folder": { + "type": "number" + }, + "folderPath": { + "type": "string" + }, + "provider": { + "type": "string" + }, + "provider_metadata": { + "anyOf": [ + { + "type": "object", + "propertyNames": { + "type": "string" + }, + "additionalProperties": {} + }, + { + "type": "null" + } + ] + }, + "createdAt": { + "type": "string" + }, + "updatedAt": { + "type": "string" + }, + "createdBy": { + "type": "number" + }, + "updatedBy": { + "type": "number" + } + }, + "required": [ + "id", + "documentId", + "name", + "hash", + "mime", + "size", + "url", + "folderPath", + "provider", + "createdAt", + "updatedAt" + ], + "additionalProperties": false + } + } + } + }, + "400": { + "description": "Bad request" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not found" + }, + "500": { + "description": "Internal server error" + } + }, + "tags": [ + "upload" + ] + } + }, + "/locales": { + "get": { + "operationId": "i18n/get/locales", + "parameters": [], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "exclusiveMinimum": 0, + "maximum": 9007199254740991 + }, + "documentId": { + "type": "string", + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$" + }, + "name": { + "type": "string" + }, + "code": { + "type": "string", + "minLength": 2, + "maxLength": 2 + }, + "createdAt": { + "type": "string" + }, + "updatedAt": { + "type": "string" + }, + "publishedAt": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "isDefault": { + "type": "boolean" + } + }, + "required": [ + "id", + "documentId", + "name", + "code", + "createdAt", + "updatedAt", + "publishedAt", + "isDefault" + ], + "additionalProperties": false + } + } + } + } + }, + "400": { + "description": "Bad request" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not found" + }, + "500": { + "description": "Internal server error" + } + }, + "tags": [ + "i18n" + ] + } + }, + "/connect/(.*)": { + "get": { + "operationId": "users-permissions/get/connect_____", + "parameters": [], + "responses": { + "400": { + "description": "Bad request" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not found" + }, + "500": { + "description": "Internal server error" + } + }, + "tags": [ + "users-permissions" + ] + } + }, + "/auth/local": { + "post": { + "operationId": "users-permissions/post/auth_local", + "parameters": [], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "type": "object", + "properties": { + "jwt": { + "type": "string" + }, + "user": { + "type": "object", + "properties": { + "id": { + "type": "number" + }, + "documentId": { + "type": "string" + }, + "username": { + "type": "string" + }, + "email": { + "type": "string" + }, + "provider": { + "type": "string" + }, + "confirmed": { + "type": "boolean" + }, + "blocked": { + "type": "boolean" + }, + "role": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "object", + "properties": { + "id": { + "type": "number" + }, + "name": { + "type": "string" + }, + "description": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "type": { + "type": "string" + }, + "createdAt": { + "type": "string" + }, + "updatedAt": { + "type": "string" + } + }, + "required": [ + "id", + "name", + "description", + "type", + "createdAt", + "updatedAt" + ], + "additionalProperties": false + } + ] + }, + "createdAt": { + "type": "string" + }, + "updatedAt": { + "type": "string" + }, + "publishedAt": { + "type": "string" + } + }, + "required": [ + "id", + "documentId", + "username", + "email", + "provider", + "confirmed", + "blocked", + "createdAt", + "updatedAt", + "publishedAt" + ], + "additionalProperties": false + } + }, + "required": [ + "jwt", + "user" + ], + "additionalProperties": false + } + } + } + }, + "400": { + "description": "Bad request" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not found" + }, + "500": { + "description": "Internal server error" + } + }, + "tags": [ + "users-permissions" + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "type": "object", + "properties": { + "identifier": { + "type": "string" + }, + "password": { + "type": "string" + } + }, + "required": [ + "identifier", + "password" + ], + "additionalProperties": false + } + } + } + } + } + }, + "/auth/local/register": { + "post": { + "operationId": "users-permissions/post/auth_local_register", + "parameters": [], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "anyOf": [ + { + "type": "object", + "properties": { + "jwt": { + "type": "string" + }, + "user": { + "type": "object", + "properties": { + "id": { + "type": "number" + }, + "documentId": { + "type": "string" + }, + "username": { + "type": "string" + }, + "email": { + "type": "string" + }, + "provider": { + "type": "string" + }, + "confirmed": { + "type": "boolean" + }, + "blocked": { + "type": "boolean" + }, + "role": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "object", + "properties": { + "id": { + "type": "number" + }, + "name": { + "type": "string" + }, + "description": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "type": { + "type": "string" + }, + "createdAt": { + "type": "string" + }, + "updatedAt": { + "type": "string" + } + }, + "required": [ + "id", + "name", + "description", + "type", + "createdAt", + "updatedAt" + ], + "additionalProperties": false + } + ] + }, + "createdAt": { + "type": "string" + }, + "updatedAt": { + "type": "string" + }, + "publishedAt": { + "type": "string" + } + }, + "required": [ + "id", + "documentId", + "username", + "email", + "provider", + "confirmed", + "blocked", + "createdAt", + "updatedAt", + "publishedAt" + ], + "additionalProperties": false + } + }, + "required": [ + "jwt", + "user" + ], + "additionalProperties": false + }, + { + "type": "object", + "properties": { + "user": { + "type": "object", + "properties": { + "id": { + "type": "number" + }, + "documentId": { + "type": "string" + }, + "username": { + "type": "string" + }, + "email": { + "type": "string" + }, + "provider": { + "type": "string" + }, + "confirmed": { + "type": "boolean" + }, + "blocked": { + "type": "boolean" + }, + "role": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "object", + "properties": { + "id": { + "type": "number" + }, + "name": { + "type": "string" + }, + "description": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "type": { + "type": "string" + }, + "createdAt": { + "type": "string" + }, + "updatedAt": { + "type": "string" + } + }, + "required": [ + "id", + "name", + "description", + "type", + "createdAt", + "updatedAt" + ], + "additionalProperties": false + } + ] + }, + "createdAt": { + "type": "string" + }, + "updatedAt": { + "type": "string" + }, + "publishedAt": { + "type": "string" + } + }, + "required": [ + "id", + "documentId", + "username", + "email", + "provider", + "confirmed", + "blocked", + "createdAt", + "updatedAt", + "publishedAt" + ], + "additionalProperties": false + } + }, + "required": [ + "user" + ], + "additionalProperties": false + } + ] + } + } + } + }, + "400": { + "description": "Bad request" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not found" + }, + "500": { + "description": "Internal server error" + } + }, + "tags": [ + "users-permissions" + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "type": "object", + "properties": { + "username": { + "type": "string" + }, + "email": { + "type": "string", + "format": "email", + "pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$" + }, + "password": { + "type": "string" + } + }, + "required": [ + "username", + "email", + "password" + ], + "additionalProperties": false + } + } + } + } + } + }, + "/auth/{provider}/callback": { + "get": { + "operationId": "users-permissions/get/auth_by_provider_callback", + "parameters": [ + { + "name": "provider", + "in": "path", + "required": true, + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "type": "object", + "properties": { + "jwt": { + "type": "string" + }, + "user": { + "type": "object", + "properties": { + "id": { + "type": "number" + }, + "documentId": { + "type": "string" + }, + "username": { + "type": "string" + }, + "email": { + "type": "string" + }, + "provider": { + "type": "string" + }, + "confirmed": { + "type": "boolean" + }, + "blocked": { + "type": "boolean" + }, + "role": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "object", + "properties": { + "id": { + "type": "number" + }, + "name": { + "type": "string" + }, + "description": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "type": { + "type": "string" + }, + "createdAt": { + "type": "string" + }, + "updatedAt": { + "type": "string" + } + }, + "required": [ + "id", + "name", + "description", + "type", + "createdAt", + "updatedAt" + ], + "additionalProperties": false + } + ] + }, + "createdAt": { + "type": "string" + }, + "updatedAt": { + "type": "string" + }, + "publishedAt": { + "type": "string" + } + }, + "required": [ + "id", + "documentId", + "username", + "email", + "provider", + "confirmed", + "blocked", + "createdAt", + "updatedAt", + "publishedAt" + ], + "additionalProperties": false + } + }, + "required": [ + "jwt", + "user" + ], + "additionalProperties": false + } + } + } + }, + "400": { + "description": "Bad request" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not found" + }, + "500": { + "description": "Internal server error" + } + }, + "tags": [ + "users-permissions" + ] + } + }, + "/auth/forgot-password": { + "post": { + "operationId": "users-permissions/post/auth_forgot_password", + "parameters": [], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "type": "object", + "properties": { + "ok": { + "type": "boolean" + } + }, + "required": [ + "ok" + ], + "additionalProperties": false + } + } + } + }, + "400": { + "description": "Bad request" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not found" + }, + "500": { + "description": "Internal server error" + } + }, + "tags": [ + "users-permissions" + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "type": "object", + "properties": { + "email": { + "type": "string", + "format": "email", + "pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$" + } + }, + "required": [ + "email" + ], + "additionalProperties": false + } + } + } + } + } + }, + "/auth/reset-password": { + "post": { + "operationId": "users-permissions/post/auth_reset_password", + "parameters": [], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "type": "object", + "properties": { + "jwt": { + "type": "string" + }, + "user": { + "type": "object", + "properties": { + "id": { + "type": "number" + }, + "documentId": { + "type": "string" + }, + "username": { + "type": "string" + }, + "email": { + "type": "string" + }, + "provider": { + "type": "string" + }, + "confirmed": { + "type": "boolean" + }, + "blocked": { + "type": "boolean" + }, + "role": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "object", + "properties": { + "id": { + "type": "number" + }, + "name": { + "type": "string" + }, + "description": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "type": { + "type": "string" + }, + "createdAt": { + "type": "string" + }, + "updatedAt": { + "type": "string" + } + }, + "required": [ + "id", + "name", + "description", + "type", + "createdAt", + "updatedAt" + ], + "additionalProperties": false + } + ] + }, + "createdAt": { + "type": "string" + }, + "updatedAt": { + "type": "string" + }, + "publishedAt": { + "type": "string" + } + }, + "required": [ + "id", + "documentId", + "username", + "email", + "provider", + "confirmed", + "blocked", + "createdAt", + "updatedAt", + "publishedAt" + ], + "additionalProperties": false + } + }, + "required": [ + "jwt", + "user" + ], + "additionalProperties": false + } + } + } + }, + "400": { + "description": "Bad request" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not found" + }, + "500": { + "description": "Internal server error" + } + }, + "tags": [ + "users-permissions" + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "type": "object", + "properties": { + "code": { + "type": "string" + }, + "password": { + "type": "string" + }, + "passwordConfirmation": { + "type": "string" + } + }, + "required": [ + "code", + "password", + "passwordConfirmation" + ], + "additionalProperties": false + } + } + } + } + } + }, + "/auth/email-confirmation": { + "get": { + "operationId": "users-permissions/get/auth_email_confirmation", + "parameters": [], + "responses": { + "400": { + "description": "Bad request" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not found" + }, + "500": { + "description": "Internal server error" + } + }, + "tags": [ + "users-permissions" + ] + } + }, + "/auth/send-email-confirmation": { + "post": { + "operationId": "users-permissions/post/auth_send_email_confirmation", + "parameters": [], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "type": "object", + "properties": { + "email": { + "type": "string" + }, + "sent": { + "type": "boolean" + } + }, + "required": [ + "email", + "sent" + ], + "additionalProperties": false + } + } + } + }, + "400": { + "description": "Bad request" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not found" + }, + "500": { + "description": "Internal server error" + } + }, + "tags": [ + "users-permissions" + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "type": "object", + "properties": { + "email": { + "type": "string", + "format": "email", + "pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$" + } + }, + "required": [ + "email" + ], + "additionalProperties": false + } + } + } + } + } + }, + "/auth/change-password": { + "post": { + "operationId": "users-permissions/post/auth_change_password", + "parameters": [], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "type": "object", + "properties": { + "jwt": { + "type": "string" + }, + "user": { + "type": "object", + "properties": { + "id": { + "type": "number" + }, + "documentId": { + "type": "string" + }, + "username": { + "type": "string" + }, + "email": { + "type": "string" + }, + "provider": { + "type": "string" + }, + "confirmed": { + "type": "boolean" + }, + "blocked": { + "type": "boolean" + }, + "role": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "object", + "properties": { + "id": { + "type": "number" + }, + "name": { + "type": "string" + }, + "description": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "type": { + "type": "string" + }, + "createdAt": { + "type": "string" + }, + "updatedAt": { + "type": "string" + } + }, + "required": [ + "id", + "name", + "description", + "type", + "createdAt", + "updatedAt" + ], + "additionalProperties": false + } + ] + }, + "createdAt": { + "type": "string" + }, + "updatedAt": { + "type": "string" + }, + "publishedAt": { + "type": "string" + } + }, + "required": [ + "id", + "documentId", + "username", + "email", + "provider", + "confirmed", + "blocked", + "createdAt", + "updatedAt", + "publishedAt" + ], + "additionalProperties": false + } + }, + "required": [ + "jwt", + "user" + ], + "additionalProperties": false + } + } + } + }, + "400": { + "description": "Bad request" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not found" + }, + "500": { + "description": "Internal server error" + } + }, + "tags": [ + "users-permissions" + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "type": "object", + "properties": { + "currentPassword": { + "type": "string" + }, + "password": { + "type": "string" + }, + "passwordConfirmation": { + "type": "string" + } + }, + "required": [ + "currentPassword", + "password", + "passwordConfirmation" + ], + "additionalProperties": false + } + } + } + } + } + }, + "/users/count": { + "get": { + "operationId": "users-permissions/get/users_count", + "parameters": [ + { + "name": "filters", + "in": "query", + "required": false, + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "Apply filters to the query", + "type": "object", + "propertyNames": { + "type": "string" + }, + "additionalProperties": {} + }, + "x-strapi-serialize": "querystring" + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "type": "number" + } + } + } + }, + "400": { + "description": "Bad request" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not found" + }, + "500": { + "description": "Internal server error" + } + }, + "tags": [ + "users-permissions" + ] + } + }, + "/users": { + "get": { + "operationId": "users-permissions/get/users", + "parameters": [ + { + "name": "fields", + "in": "query", + "required": false, + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "Select specific fields to return in the response", + "anyOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ] + }, + "x-strapi-serialize": "querystring" + }, + { + "name": "populate", + "in": "query", + "required": false, + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "Specify which relations to populate in the response", + "anyOf": [ + { + "type": "string", + "const": "*" + }, + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "object", + "propertyNames": { + "type": "string" + }, + "additionalProperties": {} + } + ] + }, + "x-strapi-serialize": "querystring" + }, + { + "name": "sort", + "in": "query", + "required": false, + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "Sort the results by specified fields", + "anyOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "object", + "propertyNames": { + "type": "string" + }, + "additionalProperties": { + "type": "string", + "enum": [ + "asc", + "desc" + ] + } + }, + { + "type": "array", + "items": { + "type": "object", + "propertyNames": { + "type": "string" + }, + "additionalProperties": { + "type": "string", + "enum": [ + "asc", + "desc" + ] + } + } + } + ] + }, + "x-strapi-serialize": "querystring" + }, + { + "name": "pagination", + "in": "query", + "required": false, + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "Pagination parameters", + "allOf": [ + { + "type": "object", + "properties": { + "withCount": { + "description": "Include total count in response", + "type": "boolean" + } + }, + "additionalProperties": false + }, + { + "anyOf": [ + { + "description": "Page-based pagination", + "type": "object", + "properties": { + "page": { + "description": "Page number (1-based)", + "type": "integer", + "exclusiveMinimum": 0, + "maximum": 9007199254740991 + }, + "pageSize": { + "description": "Number of entries per page", + "type": "integer", + "exclusiveMinimum": 0, + "maximum": 9007199254740991 + } + }, + "required": [ + "page", + "pageSize" + ], + "additionalProperties": false + }, + { + "description": "Offset-based pagination", + "type": "object", + "properties": { + "start": { + "description": "Number of entries to skip", + "type": "integer", + "minimum": 0, + "maximum": 9007199254740991 + }, + "limit": { + "description": "Maximum number of entries to return", + "type": "integer", + "exclusiveMinimum": 0, + "maximum": 9007199254740991 + } + }, + "required": [ + "start", + "limit" + ], + "additionalProperties": false + } + ] + } + ] + }, + "x-strapi-serialize": "querystring" + }, + { + "name": "filters", + "in": "query", + "required": false, + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "Apply filters to the query", + "type": "object", + "propertyNames": { + "type": "string" + }, + "additionalProperties": {} + }, + "x-strapi-serialize": "querystring" + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "number" + }, + "documentId": { + "type": "string" + }, + "username": { + "type": "string" + }, + "email": { + "type": "string" + }, + "provider": { + "type": "string" + }, + "confirmed": { + "type": "boolean" + }, + "blocked": { + "type": "boolean" + }, + "role": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "object", + "properties": { + "id": { + "type": "number" + }, + "name": { + "type": "string" + }, + "description": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "type": { + "type": "string" + }, + "createdAt": { + "type": "string" + }, + "updatedAt": { + "type": "string" + } + }, + "required": [ + "id", + "name", + "description", + "type", + "createdAt", + "updatedAt" + ], + "additionalProperties": false + } + ] + }, + "createdAt": { + "type": "string" + }, + "updatedAt": { + "type": "string" + }, + "publishedAt": { + "type": "string" + } + }, + "required": [ + "id", + "documentId", + "username", + "email", + "provider", + "confirmed", + "blocked", + "createdAt", + "updatedAt", + "publishedAt" + ], + "additionalProperties": false + } + } + } + } + }, + "400": { + "description": "Bad request" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not found" + }, + "500": { + "description": "Internal server error" + } + }, + "tags": [ + "users-permissions" + ] + }, + "post": { + "operationId": "users-permissions/post/users", + "parameters": [], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "type": "object", + "properties": { + "id": { + "type": "number" + }, + "documentId": { + "type": "string" + }, + "username": { + "type": "string" + }, + "email": { + "type": "string" + }, + "provider": { + "type": "string" + }, + "confirmed": { + "type": "boolean" + }, + "blocked": { + "type": "boolean" + }, + "role": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "object", + "properties": { + "id": { + "type": "number" + }, + "name": { + "type": "string" + }, + "description": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "type": { + "type": "string" + }, + "createdAt": { + "type": "string" + }, + "updatedAt": { + "type": "string" + } + }, + "required": [ + "id", + "name", + "description", + "type", + "createdAt", + "updatedAt" + ], + "additionalProperties": false + } + ] + }, + "createdAt": { + "type": "string" + }, + "updatedAt": { + "type": "string" + }, + "publishedAt": { + "type": "string" + } + }, + "required": [ + "id", + "documentId", + "username", + "email", + "provider", + "confirmed", + "blocked", + "createdAt", + "updatedAt", + "publishedAt" + ], + "additionalProperties": false + } + } + } + }, + "400": { + "description": "Bad request" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not found" + }, + "500": { + "description": "Internal server error" + } + }, + "tags": [ + "users-permissions" + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "type": "object", + "properties": { + "username": { + "type": "string" + }, + "email": { + "type": "string", + "format": "email", + "pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$" + }, + "password": { + "type": "string" + }, + "role": { + "type": "number" + } + }, + "required": [ + "username", + "email", + "password" + ], + "additionalProperties": false + } + } + } + } + } + }, + "/users/me": { + "get": { + "operationId": "users-permissions/get/users_me", + "parameters": [ + { + "name": "fields", + "in": "query", + "required": false, + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "Select specific fields to return in the response", + "anyOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ] + }, + "x-strapi-serialize": "querystring" + }, + { + "name": "populate", + "in": "query", + "required": false, + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "Specify which relations to populate in the response", + "anyOf": [ + { + "type": "string", + "const": "*" + }, + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "object", + "propertyNames": { + "type": "string" + }, + "additionalProperties": {} + } + ] + }, + "x-strapi-serialize": "querystring" + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "type": "object", + "properties": { + "id": { + "type": "number" + }, + "documentId": { + "type": "string" + }, + "username": { + "type": "string" + }, + "email": { + "type": "string" + }, + "provider": { + "type": "string" + }, + "confirmed": { + "type": "boolean" + }, + "blocked": { + "type": "boolean" + }, + "role": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "object", + "properties": { + "id": { + "type": "number" + }, + "name": { + "type": "string" + }, + "description": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "type": { + "type": "string" + }, + "createdAt": { + "type": "string" + }, + "updatedAt": { + "type": "string" + } + }, + "required": [ + "id", + "name", + "description", + "type", + "createdAt", + "updatedAt" + ], + "additionalProperties": false + } + ] + }, + "createdAt": { + "type": "string" + }, + "updatedAt": { + "type": "string" + }, + "publishedAt": { + "type": "string" + } + }, + "required": [ + "id", + "documentId", + "username", + "email", + "provider", + "confirmed", + "blocked", + "createdAt", + "updatedAt", + "publishedAt" + ], + "additionalProperties": false + } + } + } + }, + "400": { + "description": "Bad request" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not found" + }, + "500": { + "description": "Internal server error" + } + }, + "tags": [ + "users-permissions" + ] + } + }, + "/users/{id}": { + "get": { + "operationId": "users-permissions/get/users_by_id", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "type": "string" + } + }, + { + "name": "fields", + "in": "query", + "required": false, + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "Select specific fields to return in the response", + "anyOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ] + }, + "x-strapi-serialize": "querystring" + }, + { + "name": "populate", + "in": "query", + "required": false, + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "Specify which relations to populate in the response", + "anyOf": [ + { + "type": "string", + "const": "*" + }, + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "object", + "propertyNames": { + "type": "string" + }, + "additionalProperties": {} + } + ] + }, + "x-strapi-serialize": "querystring" + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "type": "object", + "properties": { + "id": { + "type": "number" + }, + "documentId": { + "type": "string" + }, + "username": { + "type": "string" + }, + "email": { + "type": "string" + }, + "provider": { + "type": "string" + }, + "confirmed": { + "type": "boolean" + }, + "blocked": { + "type": "boolean" + }, + "role": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "object", + "properties": { + "id": { + "type": "number" + }, + "name": { + "type": "string" + }, + "description": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "type": { + "type": "string" + }, + "createdAt": { + "type": "string" + }, + "updatedAt": { + "type": "string" + } + }, + "required": [ + "id", + "name", + "description", + "type", + "createdAt", + "updatedAt" + ], + "additionalProperties": false + } + ] + }, + "createdAt": { + "type": "string" + }, + "updatedAt": { + "type": "string" + }, + "publishedAt": { + "type": "string" + } + }, + "required": [ + "id", + "documentId", + "username", + "email", + "provider", + "confirmed", + "blocked", + "createdAt", + "updatedAt", + "publishedAt" + ], + "additionalProperties": false + } + } + } + }, + "400": { + "description": "Bad request" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not found" + }, + "500": { + "description": "Internal server error" + } + }, + "tags": [ + "users-permissions" + ] + }, + "put": { + "operationId": "users-permissions/put/users_by_id", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "type": "object", + "properties": { + "id": { + "type": "number" + }, + "documentId": { + "type": "string" + }, + "username": { + "type": "string" + }, + "email": { + "type": "string" + }, + "provider": { + "type": "string" + }, + "confirmed": { + "type": "boolean" + }, + "blocked": { + "type": "boolean" + }, + "role": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "object", + "properties": { + "id": { + "type": "number" + }, + "name": { + "type": "string" + }, + "description": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "type": { + "type": "string" + }, + "createdAt": { + "type": "string" + }, + "updatedAt": { + "type": "string" + } + }, + "required": [ + "id", + "name", + "description", + "type", + "createdAt", + "updatedAt" + ], + "additionalProperties": false + } + ] + }, + "createdAt": { + "type": "string" + }, + "updatedAt": { + "type": "string" + }, + "publishedAt": { + "type": "string" + } + }, + "required": [ + "id", + "documentId", + "username", + "email", + "provider", + "confirmed", + "blocked", + "createdAt", + "updatedAt", + "publishedAt" + ], + "additionalProperties": false + } + } + } + }, + "400": { + "description": "Bad request" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not found" + }, + "500": { + "description": "Internal server error" + } + }, + "tags": [ + "users-permissions" + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "type": "object", + "properties": { + "username": { + "type": "string" + }, + "email": { + "type": "string", + "format": "email", + "pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$" + }, + "password": { + "type": "string" + }, + "role": { + "type": "number" + } + }, + "additionalProperties": false + } + } + } + } + }, + "delete": { + "operationId": "users-permissions/delete/users_by_id", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "type": "object", + "properties": { + "id": { + "type": "number" + }, + "documentId": { + "type": "string" + }, + "username": { + "type": "string" + }, + "email": { + "type": "string" + }, + "provider": { + "type": "string" + }, + "confirmed": { + "type": "boolean" + }, + "blocked": { + "type": "boolean" + }, + "role": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "object", + "properties": { + "id": { + "type": "number" + }, + "name": { + "type": "string" + }, + "description": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "type": { + "type": "string" + }, + "createdAt": { + "type": "string" + }, + "updatedAt": { + "type": "string" + } + }, + "required": [ + "id", + "name", + "description", + "type", + "createdAt", + "updatedAt" + ], + "additionalProperties": false + } + ] + }, + "createdAt": { + "type": "string" + }, + "updatedAt": { + "type": "string" + }, + "publishedAt": { + "type": "string" + } + }, + "required": [ + "id", + "documentId", + "username", + "email", + "provider", + "confirmed", + "blocked", + "createdAt", + "updatedAt", + "publishedAt" + ], + "additionalProperties": false + } + } + } + }, + "400": { + "description": "Bad request" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not found" + }, + "500": { + "description": "Internal server error" + } + }, + "tags": [ + "users-permissions" + ] + } + }, + "/roles/{id}": { + "get": { + "operationId": "users-permissions/get/roles_by_id", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "type": "object", + "properties": { + "role": { + "type": "object", + "properties": { + "id": { + "type": "number" + }, + "documentId": { + "type": "string" + }, + "name": { + "type": "string" + }, + "description": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "type": { + "type": "string" + }, + "createdAt": { + "type": "string" + }, + "updatedAt": { + "type": "string" + }, + "publishedAt": { + "type": "string" + }, + "nb_users": { + "type": "number" + }, + "permissions": { + "type": "object", + "propertyNames": { + "type": "string" + }, + "additionalProperties": { + "type": "object", + "properties": { + "controllers": { + "type": "object", + "propertyNames": { + "type": "string" + }, + "additionalProperties": { + "type": "object", + "propertyNames": { + "type": "string" + }, + "additionalProperties": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean" + }, + "policy": { + "type": "string" + } + }, + "required": [ + "enabled", + "policy" + ], + "additionalProperties": false + } + } + } + }, + "required": [ + "controllers" + ], + "additionalProperties": false + } + }, + "users": { + "type": "array", + "items": {} + } + }, + "required": [ + "id", + "documentId", + "name", + "description", + "type", + "createdAt", + "updatedAt", + "publishedAt" + ], + "additionalProperties": false + } + }, + "required": [ + "role" + ], + "additionalProperties": false + } + } + } + }, + "400": { + "description": "Bad request" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not found" + }, + "500": { + "description": "Internal server error" + } + }, + "tags": [ + "users-permissions" + ] + } + }, + "/roles": { + "get": { + "operationId": "users-permissions/get/roles", + "parameters": [], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "type": "object", + "properties": { + "roles": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "number" + }, + "documentId": { + "type": "string" + }, + "name": { + "type": "string" + }, + "description": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "type": { + "type": "string" + }, + "createdAt": { + "type": "string" + }, + "updatedAt": { + "type": "string" + }, + "publishedAt": { + "type": "string" + }, + "nb_users": { + "type": "number" + }, + "permissions": { + "type": "object", + "propertyNames": { + "type": "string" + }, + "additionalProperties": { + "type": "object", + "properties": { + "controllers": { + "type": "object", + "propertyNames": { + "type": "string" + }, + "additionalProperties": { + "type": "object", + "propertyNames": { + "type": "string" + }, + "additionalProperties": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean" + }, + "policy": { + "type": "string" + } + }, + "required": [ + "enabled", + "policy" + ], + "additionalProperties": false + } + } + } + }, + "required": [ + "controllers" + ], + "additionalProperties": false + } + }, + "users": { + "type": "array", + "items": {} + } + }, + "required": [ + "id", + "documentId", + "name", + "description", + "type", + "createdAt", + "updatedAt", + "publishedAt" + ], + "additionalProperties": false + } + } + }, + "required": [ + "roles" + ], + "additionalProperties": false + } + } + } + }, + "400": { + "description": "Bad request" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not found" + }, + "500": { + "description": "Internal server error" + } + }, + "tags": [ + "users-permissions" + ] + }, + "post": { + "operationId": "users-permissions/post/roles", + "parameters": [], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "type": "object", + "properties": { + "ok": { + "type": "boolean" + } + }, + "required": [ + "ok" + ], + "additionalProperties": false + } + } + } + }, + "400": { + "description": "Bad request" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not found" + }, + "500": { + "description": "Internal server error" + } + }, + "tags": [ + "users-permissions" + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "type": { + "type": "string" + }, + "permissions": { + "type": "object", + "propertyNames": { + "type": "string" + }, + "additionalProperties": {} + } + }, + "required": [ + "name", + "type" + ], + "additionalProperties": false + } + } + } + } + } + }, + "/roles/{role}": { + "put": { + "operationId": "users-permissions/put/roles_by_role", + "parameters": [ + { + "name": "role", + "in": "path", + "required": true, + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "type": "object", + "properties": { + "ok": { + "type": "boolean" + } + }, + "required": [ + "ok" + ], + "additionalProperties": false + } + } + } + }, + "400": { + "description": "Bad request" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not found" + }, + "500": { + "description": "Internal server error" + } + }, + "tags": [ + "users-permissions" + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "type": { + "type": "string" + }, + "permissions": { + "type": "object", + "propertyNames": { + "type": "string" + }, + "additionalProperties": {} + } + }, + "additionalProperties": false + } + } + } + } + }, + "delete": { + "operationId": "users-permissions/delete/roles_by_role", + "parameters": [ + { + "name": "role", + "in": "path", + "required": true, + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "type": "object", + "properties": { + "ok": { + "type": "boolean" + } + }, + "required": [ + "ok" + ], + "additionalProperties": false + } + } + } + }, + "400": { + "description": "Bad request" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not found" + }, + "500": { + "description": "Internal server error" + } + }, + "tags": [ + "users-permissions" + ] + } + }, + "/permissions": { + "get": { + "operationId": "users-permissions/get/permissions", + "parameters": [], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "type": "object", + "properties": { + "permissions": { + "type": "object", + "propertyNames": { + "type": "string" + }, + "additionalProperties": { + "type": "object", + "properties": { + "controllers": { + "type": "object", + "propertyNames": { + "type": "string" + }, + "additionalProperties": { + "type": "object", + "propertyNames": { + "type": "string" + }, + "additionalProperties": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean" + }, + "policy": { + "type": "string" + } + }, + "required": [ + "enabled", + "policy" + ], + "additionalProperties": false + } + } + } + }, + "required": [ + "controllers" + ], + "additionalProperties": false + } + } + }, + "required": [ + "permissions" + ], + "additionalProperties": false + } + } + } + }, + "400": { + "description": "Bad request" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not found" + }, + "500": { + "description": "Internal server error" + } + }, + "tags": [ + "users-permissions" + ] + } + }, + "/registration-info": { + "get": { + "operationId": "users-permissions/get/registration_info", + "parameters": [], + "responses": { + "400": { + "description": "Bad request" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not found" + }, + "500": { + "description": "Internal server error" + } + }, + "tags": [ + "users-permissions" + ] + } + }, + "/register": { + "post": { + "operationId": "users-permissions/post/register", + "parameters": [], + "responses": { + "400": { + "description": "Bad request" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not found" + }, + "500": { + "description": "Internal server error" + } + }, + "tags": [ + "users-permissions" + ] + } + } + }, + "components": { + "schemas": { + "ApiActivityTypeActivityTypeDocument": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "type": "object", + "properties": { + "documentId": { + "description": "The document ID, represented by a UUID", + "type": "string", + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$" + }, + "id": { + "type": "number" + }, + "name": { + "description": "A text field", + "type": "string" + }, + "createdAt": { + "description": "A datetime field", + "type": "string" + }, + "updatedAt": { + "description": "A datetime field", + "type": "string" + }, + "publishedAt": { + "description": "A datetime field", + "default": "2025-09-12T06:37:57.249Z", + "type": "string" + } + }, + "required": [ + "documentId", + "id", + "publishedAt" + ], + "additionalProperties": false, + "id": "ApiActivityTypeActivityTypeDocument" + }, + "MatrixQuestionEntry": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "type": "object", + "properties": { + "question": { + "description": "A string field", + "type": "string" + }, + "option_1": { + "description": "A text field", + "type": "string" + }, + "option_2": { + "description": "A text field", + "type": "string" + }, + "option_3": { + "description": "A text field", + "type": "string" + }, + "option_4": { + "description": "A text field", + "type": "string" + }, + "option_5": { + "description": "A text field", + "type": "string" + }, + "tag": { + "description": "A string field", + "type": "string" + } + }, + "additionalProperties": false, + "id": "MatrixQuestionEntry" + }, + "PluginUsersPermissionsPermissionDocument": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "type": "object", + "properties": { + "documentId": { + "description": "The document ID, represented by a UUID", + "type": "string", + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$" + }, + "id": { + "type": "number" + }, + "action": { + "description": "A string field", + "type": "string" + }, + "createdAt": { + "description": "A datetime field", + "type": "string" + }, + "updatedAt": { + "description": "A datetime field", + "type": "string" + }, + "publishedAt": { + "description": "A datetime field", + "default": "2025-09-12T06:37:57.263Z", + "type": "string" + }, + "role": { + "description": "A relational field", + "$ref": "#/components/schemas/PluginUsersPermissionsRoleDocument" + } + }, + "required": [ + "documentId", + "id", + "action", + "publishedAt" + ], + "additionalProperties": false, + "id": "PluginUsersPermissionsPermissionDocument" + }, + "PluginUsersPermissionsRoleDocument": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "type": "object", + "properties": { + "documentId": { + "description": "The document ID, represented by a UUID", + "type": "string", + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$" + }, + "id": { + "type": "number" + }, + "name": { + "description": "A string field", + "type": "string" + }, + "description": { + "description": "A string field", + "type": "string" + }, + "type": { + "description": "A string field", + "type": "string" + }, + "createdAt": { + "description": "A datetime field", + "type": "string" + }, + "updatedAt": { + "description": "A datetime field", + "type": "string" + }, + "publishedAt": { + "description": "A datetime field", + "default": "2025-09-12T06:37:57.262Z", + "type": "string" + }, + "permissions": { + "description": "A relational field", + "type": "array", + "items": { + "$ref": "#/components/schemas/PluginUsersPermissionsPermissionDocument" + } + }, + "users": { + "description": "A relational field", + "type": "array", + "items": { + "$ref": "#/components/schemas/PluginUsersPermissionsUserDocument" + } + } + }, + "required": [ + "documentId", + "id", + "name", + "publishedAt" + ], + "additionalProperties": false, + "id": "PluginUsersPermissionsRoleDocument" + }, + "PluginUploadFileDocument": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "type": "object", + "properties": { + "documentId": { + "description": "The document ID, represented by a UUID", + "type": "string", + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$" + }, + "id": { + "type": "number" + }, + "name": { + "description": "A string field", + "type": "string" + }, + "alternativeText": { + "description": "A string field", + "type": "string" + }, + "caption": { + "description": "A string field", + "type": "string" + }, + "width": { + "description": "An integer field", + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "height": { + "description": "An integer field", + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "formats": { + "description": "A JSON field" + }, + "hash": { + "description": "A string field", + "type": "string" + }, + "ext": { + "description": "A string field", + "type": "string" + }, + "mime": { + "description": "A string field", + "type": "string" + }, + "size": { + "description": "A decimal field", + "type": "number" + }, + "url": { + "description": "A string field", + "type": "string" + }, + "previewUrl": { + "description": "A string field", + "type": "string" + }, + "provider": { + "description": "A string field", + "type": "string" + }, + "provider_metadata": { + "description": "A JSON field" + }, + "createdAt": { + "description": "A datetime field", + "type": "string" + }, + "updatedAt": { + "description": "A datetime field", + "type": "string" + }, + "publishedAt": { + "description": "A datetime field", + "default": "2025-09-12T06:37:57.268Z", + "type": "string" + }, + "related": {} + }, + "required": [ + "documentId", + "id", + "name", + "hash", + "mime", + "size", + "url", + "provider", + "publishedAt", + "related" + ], + "additionalProperties": false, + "id": "PluginUploadFileDocument" + }, + "EvaluationDimensionEntry": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "type": "object", + "properties": { + "comment": { + "description": "A text field", + "type": "string" + }, + "quiz": { + "description": "A component field", + "type": "array", + "items": { + "$ref": "#/components/schemas/EvaluationQuestionEntry" + } + } + }, + "required": [ + "comment" + ], + "additionalProperties": false, + "id": "EvaluationDimensionEntry" + }, + "EvaluationQuestionEntry": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "type": "object", + "properties": { + "answer": { + "description": "An integer field", + "type": "integer", + "minimum": 0, + "maximum": 4 + } + }, + "required": [ + "answer" + ], + "additionalProperties": false, + "id": "EvaluationQuestionEntry" + }, + "ApiEvaluationEvaluationDocument": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "type": "object", + "properties": { + "documentId": { + "description": "The document ID, represented by a UUID", + "type": "string", + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$" + }, + "id": { + "type": "number" + }, + "email": { + "description": "An email field", + "type": "string", + "format": "email", + "pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$" + }, + "createdAt": { + "description": "A datetime field", + "type": "string" + }, + "updatedAt": { + "description": "A datetime field", + "type": "string" + }, + "publishedAt": { + "description": "A datetime field", + "default": "2025-09-12T06:37:57.272Z", + "type": "string" + }, + "dimensions": { + "description": "A component field", + "type": "array", + "items": { + "$ref": "#/components/schemas/EvaluationDimensionEntry" + } + }, + "report": { + "description": "A relational field", + "$ref": "#/components/schemas/ApiReportReportDocument" + } + }, + "required": [ + "documentId", + "id", + "email", + "publishedAt" + ], + "additionalProperties": false, + "id": "ApiEvaluationEvaluationDocument" + }, + "ApiReportReportDocument": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "type": "object", + "properties": { + "documentId": { + "description": "The document ID, represented by a UUID", + "type": "string", + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$" + }, + "id": { + "type": "number" + }, + "deadline": { + "description": "A date field", + "type": "string" + }, + "finished": { + "description": "A boolean field", + "default": false, + "type": "boolean" + }, + "createdAt": { + "description": "A datetime field", + "type": "string" + }, + "updatedAt": { + "description": "A datetime field", + "type": "string" + }, + "publishedAt": { + "description": "A datetime field", + "default": "2025-09-12T06:37:57.271Z", + "type": "string" + }, + "evaluations": { + "description": "A relational field", + "type": "array", + "items": { + "$ref": "#/components/schemas/ApiEvaluationEvaluationDocument" + } + }, + "user": { + "description": "A relational field", + "$ref": "#/components/schemas/PluginUsersPermissionsUserDocument" + } + }, + "required": [ + "documentId", + "id", + "deadline", + "finished", + "publishedAt" + ], + "additionalProperties": false, + "id": "ApiReportReportDocument" + }, + "ApiDomainDomainDocument": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "type": "object", + "properties": { + "documentId": { + "description": "The document ID, represented by a UUID", + "type": "string", + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$" + }, + "id": { + "type": "number" + }, + "name": { + "description": "A string field", + "type": "string" + }, + "createdAt": { + "description": "A datetime field", + "type": "string" + }, + "updatedAt": { + "description": "A datetime field", + "type": "string" + }, + "publishedAt": { + "description": "A datetime field", + "default": "2025-09-12T06:37:57.275Z", + "type": "string" + }, + "mentors": { + "description": "A relational field", + "type": "array", + "items": { + "$ref": "#/components/schemas/PluginUsersPermissionsUserDocument" + } + } + }, + "required": [ + "documentId", + "id", + "publishedAt" + ], + "additionalProperties": false, + "id": "ApiDomainDomainDocument" + }, + "ApiProgramProgramDocument": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "type": "object", + "properties": { + "documentId": { + "description": "The document ID, represented by a UUID", + "type": "string", + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$" + }, + "id": { + "type": "number" + }, + "name": { + "description": "A string field", + "type": "string" + }, + "startDate": { + "description": "A date field", + "type": "string" + }, + "endDate": { + "description": "A date field", + "type": "string" + }, + "sponsorName": { + "description": "A string field", + "type": "string" + }, + "createdAt": { + "description": "A datetime field", + "type": "string" + }, + "updatedAt": { + "description": "A datetime field", + "type": "string" + }, + "publishedAt": { + "description": "A datetime field", + "default": "2025-09-12T06:37:57.279Z", + "type": "string" + }, + "mentors": { + "description": "A relational field", + "type": "array", + "items": { + "$ref": "#/components/schemas/PluginUsersPermissionsUserDocument" + } + }, + "users": { + "description": "A relational field", + "type": "array", + "items": { + "$ref": "#/components/schemas/PluginUsersPermissionsUserDocument" + } + } + }, + "required": [ + "documentId", + "id", + "name", + "startDate", + "endDate", + "publishedAt" + ], + "additionalProperties": false, + "id": "ApiProgramProgramDocument" + }, + "ApiActivityActivityDocument": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "type": "object", + "properties": { + "documentId": { + "description": "The document ID, represented by a UUID", + "type": "string", + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$" + }, + "id": { + "type": "number" + }, + "startDate": { + "description": "A date field", + "type": "string" + }, + "notes": { + "description": "A richtext field", + "type": "string" + }, + "duration": { + "description": "An integer field", + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "createdAt": { + "description": "A datetime field", + "type": "string" + }, + "updatedAt": { + "description": "A datetime field", + "type": "string" + }, + "publishedAt": { + "description": "A datetime field", + "default": "2025-09-12T06:37:57.281Z", + "type": "string" + }, + "type": { + "description": "A relational field", + "$ref": "#/components/schemas/ApiActivityTypeActivityTypeDocument" + }, + "dimension": { + "description": "A relational field", + "$ref": "#/components/schemas/ApiDimensionDimensionDocument" + }, + "mentor": { + "description": "A relational field", + "$ref": "#/components/schemas/PluginUsersPermissionsUserDocument" + }, + "user": { + "description": "A relational field", + "$ref": "#/components/schemas/PluginUsersPermissionsUserDocument" + } + }, + "required": [ + "documentId", + "id", + "startDate", + "publishedAt" + ], + "additionalProperties": false, + "id": "ApiActivityActivityDocument" + }, + "ApiMentorshipRequestMentorshipRequestDocument": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "type": "object", + "properties": { + "documentId": { + "description": "The document ID, represented by a UUID", + "type": "string", + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$" + }, + "id": { + "type": "number" + }, + "createdAt": { + "description": "A datetime field", + "type": "string" + }, + "updatedAt": { + "description": "A datetime field", + "type": "string" + }, + "publishedAt": { + "description": "A datetime field", + "default": "2025-09-12T06:37:57.283Z", + "type": "string" + }, + "mentor": { + "description": "A relational field", + "$ref": "#/components/schemas/PluginUsersPermissionsUserDocument" + }, + "user": { + "description": "A relational field", + "$ref": "#/components/schemas/PluginUsersPermissionsUserDocument" + } + }, + "required": [ + "documentId", + "id", + "publishedAt" + ], + "additionalProperties": false, + "id": "ApiMentorshipRequestMentorshipRequestDocument" + }, + "PluginUsersPermissionsUserDocument": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "type": "object", + "properties": { + "documentId": { + "description": "The document ID, represented by a UUID", + "type": "string", + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$" + }, + "id": { + "type": "number" + }, + "username": { + "description": "A string field", + "type": "string" + }, + "email": { + "description": "An email field", + "type": "string", + "format": "email", + "pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$" + }, + "provider": { + "description": "A string field", + "type": "string" + }, + "confirmed": { + "description": "A boolean field", + "default": false, + "type": "boolean" + }, + "blocked": { + "description": "A boolean field", + "default": false, + "type": "boolean" + }, + "ongName": { + "description": "A string field", + "type": "string" + }, + "ongIdentificationNumber": { + "description": "A string field", + "type": "string" + }, + "county": { + "description": "A string field", + "type": "string" + }, + "city": { + "description": "A string field", + "type": "string" + }, + "phone": { + "description": "A string field", + "type": "string" + }, + "website": { + "description": "A string field", + "type": "string" + }, + "keywords": { + "description": "A string field", + "type": "string" + }, + "description": { + "description": "A text field", + "type": "string" + }, + "contactFirstName": { + "description": "A string field", + "type": "string" + }, + "contactLastName": { + "description": "A string field", + "type": "string" + }, + "contactEmail": { + "description": "A string field", + "type": "string" + }, + "contactPhone": { + "description": "A string field", + "type": "string" + }, + "accountFacebook": { + "description": "A string field", + "type": "string" + }, + "accountTwitter": { + "description": "A string field", + "type": "string" + }, + "accountTiktok": { + "description": "A string field", + "type": "string" + }, + "accountInstagram": { + "description": "A string field", + "type": "string" + }, + "accountLinkedin": { + "description": "A string field", + "type": "string" + }, + "bio": { + "description": "A text field", + "type": "string" + }, + "expertise": { + "description": "A text field", + "type": "string" + }, + "firstName": { + "description": "A string field", + "type": "string" + }, + "lastName": { + "description": "A string field", + "type": "string" + }, + "available": { + "description": "A boolean field", + "default": false, + "type": "boolean" + }, + "createdAt": { + "description": "A datetime field", + "type": "string" + }, + "updatedAt": { + "description": "A datetime field", + "type": "string" + }, + "publishedAt": { + "description": "A datetime field", + "default": "2025-09-12T06:37:57.260Z", + "type": "string" + }, + "role": { + "description": "A relational field", + "$ref": "#/components/schemas/PluginUsersPermissionsRoleDocument" + }, + "avatar": { + "description": "A media field", + "$ref": "#/components/schemas/PluginUploadFileDocument" + }, + "logo": { + "description": "A media field", + "$ref": "#/components/schemas/PluginUploadFileDocument" + }, + "reports": { + "description": "A relational field", + "type": "array", + "items": { + "$ref": "#/components/schemas/ApiReportReportDocument" + } + }, + "domains": { + "description": "A relational field", + "type": "array", + "items": { + "$ref": "#/components/schemas/ApiDomainDomainDocument" + } + }, + "programs": { + "description": "A relational field", + "type": "array", + "items": { + "$ref": "#/components/schemas/ApiProgramProgramDocument" + } + }, + "dimensions": { + "description": "A relational field", + "type": "array", + "items": { + "$ref": "#/components/schemas/ApiDimensionDimensionDocument" + } + }, + "program": { + "description": "A relational field", + "$ref": "#/components/schemas/ApiProgramProgramDocument" + }, + "mentorActivities": { + "description": "A relational field", + "type": "array", + "items": { + "$ref": "#/components/schemas/ApiActivityActivityDocument" + } + }, + "userActivities": { + "description": "A relational field", + "type": "array", + "items": { + "$ref": "#/components/schemas/ApiActivityActivityDocument" + } + }, + "mentorSessions": { + "description": "A relational field", + "type": "array", + "items": { + "$ref": "#/components/schemas/ApiMentorshipRequestMentorshipRequestDocument" + } + }, + "userSessions": { + "description": "A relational field", + "type": "array", + "items": { + "$ref": "#/components/schemas/ApiMentorshipRequestMentorshipRequestDocument" + } + } + }, + "required": [ + "documentId", + "id", + "username", + "email", + "confirmed", + "blocked", + "available", + "publishedAt" + ], + "additionalProperties": false, + "id": "PluginUsersPermissionsUserDocument" + }, + "ApiDimensionDimensionDocument": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "type": "object", + "properties": { + "documentId": { + "description": "The document ID, represented by a UUID", + "type": "string", + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$" + }, + "id": { + "type": "number" + }, + "name": { + "description": "A string field", + "type": "string" + }, + "link": { + "description": "A string field", + "type": "string" + }, + "createdAt": { + "description": "A datetime field", + "type": "string" + }, + "updatedAt": { + "description": "A datetime field", + "type": "string" + }, + "publishedAt": { + "description": "A datetime field", + "default": "2025-09-12T06:37:57.251Z", + "type": "string" + }, + "quiz": { + "description": "A component field", + "type": "array", + "items": { + "$ref": "#/components/schemas/MatrixQuestionEntry" + } + }, + "mentors": { + "description": "A relational field", + "type": "array", + "items": { + "$ref": "#/components/schemas/PluginUsersPermissionsUserDocument" + } + }, + "activities": { + "description": "A relational field", + "type": "array", + "items": { + "$ref": "#/components/schemas/ApiActivityActivityDocument" + } + } + }, + "required": [ + "documentId", + "id", + "name", + "publishedAt" + ], + "additionalProperties": false, + "id": "ApiDimensionDimensionDocument" + } + } + } +} \ No newline at end of file From f7c143b9f45e5429d5fff37a62a22e82976dad8d Mon Sep 17 00:00:00 2001 From: Ion Dormenco Date: Fri, 12 Sep 2025 23:05:29 +0300 Subject: [PATCH 26/61] add tanstack router + query --- client2/components.json | 22 + client2/package.json | 10 +- client2/pnpm-lock.yaml | 730 +++++++++++++++++- .../components/AddMentorInProgram/index.tsx | 56 +- .../src/components/AddUserInProgram/index.tsx | 59 +- client2/src/components/Breadcrumbs/index.tsx | 2 +- client2/src/components/Button/index.tsx | 2 +- .../src/components/CreateEvaluation/index.tsx | 12 +- .../src/components/ExternalLinkItem/index.tsx | 4 - client2/src/components/Footer/index.tsx | 2 +- client2/src/components/LayoutApp/index.tsx | 8 +- .../src/components/LayoutDashboard/index.tsx | 2 +- .../src/components/LayoutEvaluation/index.tsx | 2 +- client2/src/components/MultiSelect/index.tsx | 39 +- client2/src/components/Navbar/index.tsx | 256 +++--- .../src/components/NavbarEvaluation/index.tsx | 2 +- client2/src/components/ProgressBar/index.tsx | 2 +- client2/src/components/RequireUser/index.tsx | 2 +- client2/src/components/ScrollToTop/index.tsx | 2 +- .../src/components/TableEvaluations/index.tsx | 2 +- .../src/components/TableRowReport/index.tsx | 11 +- .../components/TableRowReportFDSC/index.tsx | 2 +- client2/src/components/UserMenu/index.tsx | 9 +- client2/src/components/ui/button.tsx | 59 ++ client2/src/components/ui/form.tsx | 167 ++++ client2/src/components/ui/input.tsx | 21 + client2/src/components/ui/label.tsx | 22 + client2/src/components/ui/password-input.tsx | 58 ++ client2/src/{styles => }/globals.css | 60 +- client2/src/index.tsx | 57 +- client2/src/lib/query.ts | 34 + client2/src/lib/{reports.js => reports.ts} | 0 client2/src/lib/utils.ts | 6 + client2/src/pages/Evaluation/index.tsx | 45 +- client2/src/pages/Home/UsersTable.tsx | 249 +++--- client2/src/pages/NewReport/index.tsx | 20 +- client2/src/pages/Profile/index.tsx | 2 +- client2/src/pages/UserReports/index.tsx | 2 +- .../src/pages/admin/CreateMentor/index.tsx | 28 +- .../src/pages/admin/CreateProgram/index.tsx | 49 +- client2/src/pages/admin/CreateUser/index.tsx | 73 +- .../src/pages/admin/Program/ExportProgram.tsx | 4 +- client2/src/pages/admin/Program/index.tsx | 19 +- .../admin/ProgramsList/ProgramsTable.tsx | 14 +- client2/src/pages/admin/Report/index.tsx | 2 +- .../pages/authenticated/EditProfile/index.tsx | 61 +- .../src/pages/authenticated/Mentor/index.tsx | 2 +- .../authenticated/Report/ReportInProgress.tsx | 10 +- .../src/pages/authenticated/Report/index.tsx | 2 +- .../src/pages/mentor/EditProfile/index.tsx | 36 +- .../src/pages/mentor/NewActivity/index.tsx | 22 +- client2/src/pages/mentor/Report/index.tsx | 2 +- .../src/pages/public/ForgotPassword/index.tsx | 20 +- client2/src/pages/public/Login/index.tsx | 133 ++-- client2/src/pages/public/Register/index.tsx | 94 +-- .../src/pages/public/ResetPassword/index.tsx | 31 +- .../src/pages/public/SetPassword/index.tsx | 31 +- client2/{ => src}/postcss.config.js | 0 client2/src/redux/api/userApi.ts | 2 +- client2/src/redux/store.tsx | 6 +- client2/src/routeTree.gen.ts | 59 ++ client2/src/router/index.tsx | 190 +++-- client2/src/routes/__root.tsx | 23 + client2/src/routes/index.tsx | 30 + client2/src/styles/tailwind.config.css | 61 -- client2/tsconfig.json | 5 +- client2/vite.config.ts | 46 +- 67 files changed, 2168 insertions(+), 927 deletions(-) create mode 100644 client2/components.json create mode 100644 client2/src/components/ui/button.tsx create mode 100644 client2/src/components/ui/form.tsx create mode 100644 client2/src/components/ui/input.tsx create mode 100644 client2/src/components/ui/label.tsx create mode 100644 client2/src/components/ui/password-input.tsx rename client2/src/{styles => }/globals.css (59%) create mode 100644 client2/src/lib/query.ts rename client2/src/lib/{reports.js => reports.ts} (100%) create mode 100644 client2/src/lib/utils.ts rename client2/{ => src}/postcss.config.js (100%) create mode 100644 client2/src/routeTree.gen.ts create mode 100644 client2/src/routes/__root.tsx create mode 100644 client2/src/routes/index.tsx delete mode 100644 client2/src/styles/tailwind.config.css diff --git a/client2/components.json b/client2/components.json new file mode 100644 index 00000000..4b1c517c --- /dev/null +++ b/client2/components.json @@ -0,0 +1,22 @@ +{ + "$schema": "https://ui.shadcn.com/schema.json", + "style": "new-york", + "rsc": false, + "tsx": true, + "tailwind": { + "config": "", + "css": "src/globals.css", + "baseColor": "neutral", + "cssVariables": true, + "prefix": "" + }, + "iconLibrary": "lucide", + "aliases": { + "components": "@/components", + "utils": "@/lib/utils", + "ui": "@/components/ui", + "lib": "@/lib", + "hooks": "@/hooks" + }, + "registries": {} +} diff --git a/client2/package.json b/client2/package.json index c981b57e..4c100fa2 100644 --- a/client2/package.json +++ b/client2/package.json @@ -16,7 +16,12 @@ "@heroicons/react": "^2.2.0", "@hookform/error-message": "^2.0.1", "@hookform/resolvers": "^5.2.1", + "@radix-ui/react-label": "^2.1.7", + "@radix-ui/react-slot": "^1.2.3", "@reduxjs/toolkit": "^2.9.0", + "@tailwindcss/vite": "^4.1.13", + "@tanstack/react-query": "^5.87.4", + "@tanstack/react-router": "^1.131.41", "@types/qs": "^6.14.0", "better-auth": "^1.3.9", "class-variance-authority": "^0.7.1", @@ -35,14 +40,17 @@ "react-hook-form": "^7.62.0", "react-range-slider-input": "^3.2.1", "react-redux": "^9.2.0", - "react-router-dom": "^7.8.2", "react-toastify": "^11.0.5", "tailwind-merge": "^3.3.1", "xlsx": "^0.18.5", "zod": "^4.1.8" }, "devDependencies": { + "@tailwindcss/forms": "^0.5.10", "@tailwindcss/postcss": "^4.1.13", + "@tanstack/react-query-devtools": "^5.87.3", + "@tanstack/react-router-devtools": "^1.131.36", + "@tanstack/router-plugin": "^1.131.36", "@types/js-cookie": "^3.0.6", "@types/node": "^24.3.1", "@types/react": "^19.1.12", diff --git a/client2/pnpm-lock.yaml b/client2/pnpm-lock.yaml index e93484e8..d95abf53 100644 --- a/client2/pnpm-lock.yaml +++ b/client2/pnpm-lock.yaml @@ -20,9 +20,24 @@ importers: '@hookform/resolvers': specifier: ^5.2.1 version: 5.2.1(react-hook-form@7.62.0(react@19.1.1)) + '@radix-ui/react-label': + specifier: ^2.1.7 + version: 2.1.7(@types/react-dom@19.1.9(@types/react@19.1.12))(@types/react@19.1.12)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-slot': + specifier: ^1.2.3 + version: 1.2.3(@types/react@19.1.12)(react@19.1.1) '@reduxjs/toolkit': specifier: ^2.9.0 version: 2.9.0(react-redux@9.2.0(@types/react@19.1.12)(react@19.1.1)(redux@5.0.1))(react@19.1.1) + '@tailwindcss/vite': + specifier: ^4.1.13 + version: 4.1.13(vite@7.1.5(@types/node@24.3.1)(jiti@2.5.1)(lightningcss@1.30.1)(tsx@4.20.5)) + '@tanstack/react-query': + specifier: ^5.87.4 + version: 5.87.4(react@19.1.1) + '@tanstack/react-router': + specifier: ^1.131.41 + version: 1.131.41(react-dom@19.1.1(react@19.1.1))(react@19.1.1) '@types/qs': specifier: ^6.14.0 version: 6.14.0 @@ -77,9 +92,6 @@ importers: react-redux: specifier: ^9.2.0 version: 9.2.0(@types/react@19.1.12)(react@19.1.1)(redux@5.0.1) - react-router-dom: - specifier: ^7.8.2 - version: 7.8.2(react-dom@19.1.1(react@19.1.1))(react@19.1.1) react-toastify: specifier: ^11.0.5 version: 11.0.5(react-dom@19.1.1(react@19.1.1))(react@19.1.1) @@ -93,9 +105,21 @@ importers: specifier: ^4.1.8 version: 4.1.8 devDependencies: + '@tailwindcss/forms': + specifier: ^0.5.10 + version: 0.5.10(tailwindcss@4.1.13) '@tailwindcss/postcss': specifier: ^4.1.13 version: 4.1.13 + '@tanstack/react-query-devtools': + specifier: ^5.87.3 + version: 5.87.4(@tanstack/react-query@5.87.4(react@19.1.1))(react@19.1.1) + '@tanstack/react-router-devtools': + specifier: ^1.131.36 + version: 1.131.42(@tanstack/react-router@1.131.41(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(@tanstack/router-core@1.131.41)(csstype@3.1.3)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(solid-js@1.9.9)(tiny-invariant@1.3.3) + '@tanstack/router-plugin': + specifier: ^1.131.36 + version: 1.131.41(@tanstack/react-router@1.131.41(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(vite@7.1.5(@types/node@24.3.1)(jiti@2.5.1)(lightningcss@1.30.1)(tsx@4.20.5)) '@types/js-cookie': specifier: ^3.0.6 version: 3.0.6 @@ -173,14 +197,28 @@ packages: resolution: {integrity: sha512-3lSpxGgvnmZznmBkCRnVREPUFJv2wrv9iAoFDvADJc0ypmdOxdUtcLeBgBJ6zE0PMeTKnxeQzyk0xTBq4Ep7zw==} engines: {node: '>=6.9.0'} + '@babel/helper-annotate-as-pure@7.27.3': + resolution: {integrity: sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg==} + engines: {node: '>=6.9.0'} + '@babel/helper-compilation-targets@7.27.2': resolution: {integrity: sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==} engines: {node: '>=6.9.0'} + '@babel/helper-create-class-features-plugin@7.28.3': + resolution: {integrity: sha512-V9f6ZFIYSLNEbuGA/92uOvYsGCJNsuA8ESZ4ldc09bWk/j8H8TKiPw8Mk1eG6olpnO0ALHJmYfZvF4MEE4gajg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + '@babel/helper-globals@7.28.0': resolution: {integrity: sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==} engines: {node: '>=6.9.0'} + '@babel/helper-member-expression-to-functions@7.27.1': + resolution: {integrity: sha512-E5chM8eWjTp/aNoVpcbfM7mLxu9XGLWYise2eBKGQomAk/Mb4XoxyqXTZbuTohbsl8EKqdlMhnDI2CCLfcs9wA==} + engines: {node: '>=6.9.0'} + '@babel/helper-module-imports@7.27.1': resolution: {integrity: sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==} engines: {node: '>=6.9.0'} @@ -191,10 +229,24 @@ packages: peerDependencies: '@babel/core': ^7.0.0 + '@babel/helper-optimise-call-expression@7.27.1': + resolution: {integrity: sha512-URMGH08NzYFhubNSGJrpUEphGKQwMQYBySzat5cAByY1/YgIRkULnIy3tAMeszlL/so2HbeilYloUmSpd7GdVw==} + engines: {node: '>=6.9.0'} + '@babel/helper-plugin-utils@7.27.1': resolution: {integrity: sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==} engines: {node: '>=6.9.0'} + '@babel/helper-replace-supers@7.27.1': + resolution: {integrity: sha512-7EHz6qDZc8RYS5ElPoShMheWvEgERonFCs7IAonWLLUTXW59DP14bCZt89/GKyreYn8g3S83m21FelHKbeDCKA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-skip-transparent-expression-wrappers@7.27.1': + resolution: {integrity: sha512-Tub4ZKEXqbPjXgWLl2+3JpQAYBJ8+ikpQ2Ocj/q/r0LwE3UhENh7EUabyHjz2kCEsrRY83ew2DQdHluuiDQFzg==} + engines: {node: '>=6.9.0'} + '@babel/helper-string-parser@7.27.1': resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==} engines: {node: '>=6.9.0'} @@ -216,6 +268,24 @@ packages: engines: {node: '>=6.0.0'} hasBin: true + '@babel/plugin-syntax-jsx@7.27.1': + resolution: {integrity: sha512-y8YTNIeKoyhGd9O0Jiyzyyqk8gdjnumGTQPsz0xOZOQ2RmkVJeZ1vmmfIvFEKqucBG6axJGBZDE/7iI5suUI/w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-typescript@7.27.1': + resolution: {integrity: sha512-xfYCBMxveHrRMnAWl1ZlPXOZjzkN82THFvLhQhFXFt81Z5HnN+EtUkZhv/zcKpmT3fzmWZB0ywiBrbC3vogbwQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-modules-commonjs@7.27.1': + resolution: {integrity: sha512-OJguuwlTYlN0gBZFRPqwOGNWssZjfIUdS7HMYtN8c1KmwpwHFBwTeFZrg9XZa+DFTitWOW5iTAG7tyCUPsCCyw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-react-jsx-self@7.27.1': resolution: {integrity: sha512-6UzkCs+ejGdZ5mFFC/OCUrv028ab2fp1znZmCZjAOBKiBK2jXD1O+BPSfX8X2qjJ75fZBMSnQn3Rq2mrBJK2mw==} engines: {node: '>=6.9.0'} @@ -228,6 +298,18 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-typescript@7.28.0': + resolution: {integrity: sha512-4AEiDEBPIZvLQaWlc9liCavE0xRM0dNca41WtBeM3jgFptfUOSG9z0uteLhq6+3rq+WB6jIvUwKDTpXEHPJ2Vg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/preset-typescript@7.27.1': + resolution: {integrity: sha512-l7WfQfX0WK4M0v2RudjuQK4u99BS6yLHYEmdtVPP7lKV013zr9DygFuWNlnbvQ9LR+LS0Egz/XAvGx5U9MX0fQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/runtime@7.28.4': resolution: {integrity: sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ==} engines: {node: '>=6.9.0'} @@ -852,6 +934,50 @@ packages: '@protobufjs/utf8@1.1.0': resolution: {integrity: sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==} + '@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-label@2.1.7': + resolution: {integrity: sha512-YT1GqPSL8kJn20djelMX7/cTRp/Y9w5IZHvfxQTVHrOqa2yMl7i/UfMqKRU5V7mEyKTrUVgJXhNQPVCG8PBLoQ==} + 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.3': + resolution: {integrity: sha512-m9gTwRkhy2lvCPe6QJp4d3G1TYEUHn/FzJUtq9MjH46an1wJU+GdoGC5VLof8RX8Ft/DlpshApkhswDLZzHIcQ==} + 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.2.3': + resolution: {integrity: sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@react-aria/focus@3.21.1': resolution: {integrity: sha512-hmH1IhHlcQ2lSIxmki1biWzMbGgnhdxJUM0MFfzc71Rv6YAzhlx4kX3GYn4VNcjCeb6cdPv4RZ5vunV4kgMZYQ==} peerDependencies: @@ -1113,6 +1239,11 @@ packages: '@swc/types@0.1.25': resolution: {integrity: sha512-iAoY/qRhNH8a/hBvm3zKj9qQ4oc2+3w1unPJa2XvTK3XjeLXtzcCingVPw/9e5mn1+0yPqxcBGp9Jf0pkfMb1g==} + '@tailwindcss/forms@0.5.10': + resolution: {integrity: sha512-utI1ONF6uf/pPNO68kmN1b8rEwNXv3czukalo8VtJH8ksIkZXr3Q3VYudZLkCsDd4Wku120uF02hYK25XGPorw==} + peerDependencies: + tailwindcss: '>=3.0.0 || >= 3.0.0-alpha.1 || >= 4.0.0-alpha.20 || >= 4.0.0-beta.1' + '@tailwindcss/node@4.1.13': resolution: {integrity: sha512-eq3ouolC1oEFOAvOMOBAmfCIqZBJuvWvvYWh5h5iOYfe1HFC6+GZ6EIL0JdM3/niGRJmnrOc+8gl9/HGUaaptw==} @@ -1201,15 +1332,114 @@ packages: '@tailwindcss/postcss@4.1.13': resolution: {integrity: sha512-HLgx6YSFKJT7rJqh9oJs/TkBFhxuMOfUKSBEPYwV+t78POOBsdQ7crhZLzwcH3T0UyUuOzU/GK5pk5eKr3wCiQ==} + '@tailwindcss/vite@4.1.13': + resolution: {integrity: sha512-0PmqLQ010N58SbMTJ7BVJ4I2xopiQn/5i6nlb4JmxzQf8zcS5+m2Cv6tqh+sfDwtIdjoEnOvwsGQ1hkUi8QEHQ==} + peerDependencies: + vite: ^5.2.0 || ^6 || ^7 + + '@tanstack/history@1.131.2': + resolution: {integrity: sha512-cs1WKawpXIe+vSTeiZUuSBy8JFjEuDgdMKZFRLKwQysKo8y2q6Q1HvS74Yw+m5IhOW1nTZooa6rlgdfXcgFAaw==} + engines: {node: '>=12'} + + '@tanstack/query-core@5.87.4': + resolution: {integrity: sha512-uNsg6zMxraEPDVO2Bn+F3/ctHi+Zsk+MMpcN8h6P7ozqD088F6mFY5TfGM7zuyIrL7HKpDyu6QHfLWiDxh3cuw==} + + '@tanstack/query-devtools@5.87.3': + resolution: {integrity: sha512-LkzxzSr2HS1ALHTgDmJH5eGAVsSQiuwz//VhFW5OqNk0OQ+Fsqba0Tsf+NzWRtXYvpgUqwQr4b2zdFZwxHcGvg==} + + '@tanstack/react-query-devtools@5.87.4': + resolution: {integrity: sha512-JYcnVJBBW1DCPyNGM0S2CyrLpe6KFiL2gpYd/k9tAp62Du7+Y27zkzd+dKFyxpFadYaTxsx4kUA7YvnkMLVUoQ==} + peerDependencies: + '@tanstack/react-query': ^5.87.4 + react: ^18 || ^19 + + '@tanstack/react-query@5.87.4': + resolution: {integrity: sha512-T5GT/1ZaNsUXf5I3RhcYuT17I4CPlbZgyLxc/ZGv7ciS6esytlbjb3DgUFO6c8JWYMDpdjSWInyGZUErgzqhcA==} + peerDependencies: + react: ^18 || ^19 + + '@tanstack/react-router-devtools@1.131.42': + resolution: {integrity: sha512-7pymFB1CCimRHot2Zp0ZekQjd1iN812V88n9NLPSeiv9sVRtRVIaLphJjDeudx1NNgkfSJPx2lOhz6K38cuZog==} + engines: {node: '>=12'} + peerDependencies: + '@tanstack/react-router': ^1.131.41 + react: '>=18.0.0 || >=19.0.0' + react-dom: '>=18.0.0 || >=19.0.0' + + '@tanstack/react-router@1.131.41': + resolution: {integrity: sha512-QEbTYpAosiD8e4qEZRr9aJipGSb8pQc+pfZwK6NCD2Tcxwu2oF6MVtwv0bIDLRpZP0VJMBpxXlTRISUDNMNqIA==} + engines: {node: '>=12'} + peerDependencies: + react: '>=18.0.0 || >=19.0.0' + react-dom: '>=18.0.0 || >=19.0.0' + + '@tanstack/react-store@0.7.5': + resolution: {integrity: sha512-A+WZtEnHZpvbKXm8qR+xndNKywBLez2KKKKEQc7w0Qs45GvY1LpRI3BTZNmELwEVim8+Apf99iEDH2J+MUIzlQ==} + 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 + '@tanstack/react-virtual@3.13.12': resolution: {integrity: sha512-Gd13QdxPSukP8ZrkbgS2RwoZseTTbQPLnQEn7HY/rqtM+8Zt95f7xKC7N0EsKs7aoz0WzZ+fditZux+F8EzYxA==} 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 + '@tanstack/router-core@1.131.41': + resolution: {integrity: sha512-VoLly00DWM0abKuVPRm8wiwGtRBHOKs6K896fy48Q/KYoDVLs8kRCRjFGS7rGnYC2FIkmmvHqYRqNg7jgCx2yg==} + engines: {node: '>=12'} + + '@tanstack/router-devtools-core@1.131.42': + resolution: {integrity: sha512-o8jKTiwXcUSjmkozcMjIw1yhjVYeXcuQO7DtfgjKW3B85iveH6VzYK+bGEVU7wmLNMuUSe2eI/7RBzJ6a5+MCA==} + engines: {node: '>=12'} + peerDependencies: + '@tanstack/router-core': ^1.131.41 + csstype: ^3.0.10 + solid-js: '>=1.9.5' + tiny-invariant: ^1.3.3 + peerDependenciesMeta: + csstype: + optional: true + + '@tanstack/router-generator@1.131.41': + resolution: {integrity: sha512-HsDkBU1u/KvHrzn76v/9oeyMFuxvVlE3dfIu4fldZbPy/i903DWBwODIDGe6fVUsYtzPPrRvNtbjV18HVz5GCA==} + engines: {node: '>=12'} + + '@tanstack/router-plugin@1.131.41': + resolution: {integrity: sha512-MENVYQwvhKFIPZ/YO/CGCwbh3Ba3TRvUYZ2y2KiU6aa1CWao4KHDRsungzv34AbbUBSmzbc8mKVeqd+G+E9cDQ==} + engines: {node: '>=12'} + peerDependencies: + '@rsbuild/core': '>=1.0.2' + '@tanstack/react-router': ^1.131.41 + vite: '>=5.0.0 || >=6.0.0' + vite-plugin-solid: ^2.11.2 + webpack: '>=5.92.0' + peerDependenciesMeta: + '@rsbuild/core': + optional: true + '@tanstack/react-router': + optional: true + vite: + optional: true + vite-plugin-solid: + optional: true + webpack: + optional: true + + '@tanstack/router-utils@1.131.2': + resolution: {integrity: sha512-sr3x0d2sx9YIJoVth0QnfEcAcl+39sQYaNQxThtHmRpyeFYNyM2TTH+Ud3TNEnI3bbzmLYEUD+7YqB987GzhDA==} + engines: {node: '>=12'} + + '@tanstack/store@0.7.5': + resolution: {integrity: sha512-qd/OjkjaFRKqKU4Yjipaen/EOB9MyEg6Wr9fW103RBPACf1ZcKhbhcu2S5mj5IgdPib6xFIgCUti/mKVkl+fRw==} + '@tanstack/virtual-core@3.13.12': resolution: {integrity: sha512-1YBOJfRHV4sXUmWsFSf5rQor4Ss82G8dQWLRbnk3GA4jeP8hQt1hxXh0tmflpC0dz3VgEv/1+qwPyLeWkQuPFA==} + '@tanstack/virtual-file-routes@1.131.2': + resolution: {integrity: sha512-VEEOxc4mvyu67O+Bl0APtYjwcNRcL9it9B4HKbNgcBTIOEalhk+ufBl4kiqc8WP1sx1+NAaiS+3CcJBhrqaSRg==} + engines: {node: '>=12'} + '@tootallnate/once@2.0.0': resolution: {integrity: sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==} engines: {node: '>= 10'} @@ -1321,6 +1551,11 @@ packages: resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} engines: {node: '>=6.5'} + acorn@8.15.0: + resolution: {integrity: sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==} + engines: {node: '>=0.4.0'} + hasBin: true + adler-32@1.3.1: resolution: {integrity: sha512-ynZ4w/nUUv5rrsR8UUGoe1VC9hZj6V5hU9Qw1HlMDJGEJw5S7TfTErWTjMys6M7vr0YWcPqs3qAr4ss0nDfP+A==} engines: {node: '>=0.8'} @@ -1341,6 +1576,14 @@ packages: resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} engines: {node: '>=8'} + ansis@4.1.0: + resolution: {integrity: sha512-BGcItUBWSMRgOCe+SVZJ+S7yTRG0eGt9cXAHev72yuGcY23hnLA7Bky5L/xLyPINoSN95geovfBkqoTlNZYa7w==} + engines: {node: '>=14'} + + anymatch@3.1.3: + resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} + engines: {node: '>= 8'} + asn1js@3.0.6: resolution: {integrity: sha512-UOCGPYbl0tv8+006qks/dTgV9ajs97X2p0FAbyS2iyCRrmLSRolDaHdp+v/CLgnzHc3fVB+CwYiUmei7ndFcgA==} engines: {node: '>=12.0.0'} @@ -1349,6 +1592,10 @@ packages: resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} engines: {node: '>=12'} + 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==} @@ -1359,6 +1606,9 @@ packages: peerDependencies: postcss: ^8.1.0 + babel-dead-code-elimination@1.0.10: + resolution: {integrity: sha512-DV5bdJZTzZ0zn0DC24v3jD7Mnidh6xhKa4GfKCbq3sfW8kaWhDdZjP3i81geA8T33tdYqWKw4D3fVv0CwEgKVA==} + base64-js@1.5.1: resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} @@ -1382,6 +1632,10 @@ packages: bignumber.js@9.3.1: resolution: {integrity: sha512-Ko0uX15oIUS7wJ3Rb30Fs6SkVbLmPBAKdlm7q9+ak9bbIeFf0MwuBsQV6z7+X768/cHsfg+WlysDWJcmthjsjQ==} + binary-extensions@2.3.0: + resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} + engines: {node: '>=8'} + braces@3.0.3: resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} engines: {node: '>=8'} @@ -1425,6 +1679,10 @@ packages: 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'} + chownr@3.0.0: resolution: {integrity: sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==} engines: {node: '>=18'} @@ -1462,9 +1720,8 @@ packages: convert-source-map@2.0.0: resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} - cookie@1.0.2: - resolution: {integrity: sha512-9Kr/j4O16ISv8zBBhJoi4bXOYNTkFLOqSL3UDB0njXxCXNezjeyVrJyGOWtgfs/q2km1gwBcfH8q1yEGoMYunA==} - engines: {node: '>=18'} + cookie-es@1.2.2: + resolution: {integrity: sha512-+W7VmiVINB+ywl1HGXJXmrqkOhpKrIiVZV6tQuV54ZyQC7MMuBt81Vc336GMLoHBq5hV/F9eXgt5Mnx0Rha5Fg==} core-js@3.45.1: resolution: {integrity: sha512-L4NPsJlCfZsPeXukyzHFlg/i7IIVwHSItR0wg0FLNqYClJ4MQYTYLbC7EkjKYRLZF2iof2MUgN0EGy7MdQFChg==} @@ -1505,6 +1762,10 @@ packages: resolution: {integrity: sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA==} engines: {node: '>=8'} + diff@8.0.2: + resolution: {integrity: sha512-sSuxWU5j5SR9QQji/o2qMvqRNYRDOcBTgsJ/DeCf4iSN4gW+gNMXM7wFIP+fdXZxoNiAnHUTGjCr+TSWXdRDKg==} + engines: {node: '>=0.3.1'} + dotenv-expand@12.0.3: resolution: {integrity: sha512-uc47g4b+4k/M/SeaW1y4OApx+mtLWl92l5LMPP0GNXctZqELk+YGgOPIIC5elYmUH4OuoK3JLhuRUYegeySiFA==} engines: {node: '>=12'} @@ -1577,6 +1838,11 @@ packages: resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} engines: {node: '>=6'} + esprima@4.0.1: + resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} + engines: {node: '>=4'} + hasBin: true + estree-walker@3.0.3: resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} @@ -1684,6 +1950,11 @@ packages: globrex@0.1.2: resolution: {integrity: sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==} + goober@2.1.16: + resolution: {integrity: sha512-erjk19y1U33+XAMe1VTvIONHYoSqE4iS7BYUZfHaqeohLmnC0FdxEh7rQU+6MZ4OajItzjZFSRtVANrQwNq6/g==} + peerDependencies: + csstype: ^3.0.10 + google-auth-library@9.15.1: resolution: {integrity: sha512-Jb6Z0+nvECVz+2lzSMt9u98UsoakXxA2HGHMCxh+so3n90XgYWkq5dur19JAJV7ONiJY22yBTyJB1TSkvPq9Ng==} engines: {node: '>=14'} @@ -1760,6 +2031,10 @@ packages: inherits@2.0.4: resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + is-binary-path@2.1.0: + resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} + engines: {node: '>=8'} + is-extglob@2.1.1: resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} engines: {node: '>=0.10.0'} @@ -1792,6 +2067,10 @@ packages: resolution: {integrity: sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==} engines: {node: '>=18'} + isbot@5.1.30: + resolution: {integrity: sha512-3wVJEonAns1OETX83uWsk5IAne2S5zfDcntD2hbtU23LelSqNXzXs9zKjMPOLMzroCgIjCfjYAEHrd2D6FOkiA==} + engines: {node: '>=18'} + isexe@2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} @@ -1972,6 +2251,10 @@ packages: resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} engines: {node: '>= 0.6'} + mini-svg-data-uri@1.4.4: + resolution: {integrity: sha512-r9deDe9p5FJUPZAk3A59wGH7Ii9YrjjWw0jmw/liSbHl2CHiyXj6FcDXDu2K3TjVAXqiJdaw3xxwlZZr9E6nHg==} + hasBin: true + minipass@7.1.2: resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} engines: {node: '>=16 || 14 >=14.17'} @@ -2017,6 +2300,10 @@ packages: resolution: {integrity: sha512-V6gygoYb/5EmNI+MEGrWkC+e6+Rr7mTmfHrxDbLzxQogBkgzo76rkok0Am6thgSF7Mv2nLOajAJj5vDJZEFn7g==} engines: {node: ^16.14.0 || >=18.0.0} + 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'} @@ -2085,6 +2372,11 @@ packages: resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==} engines: {node: ^10 || ^12 || >=14} + prettier@3.6.2: + resolution: {integrity: sha512-I7AIg5boAr5R0FFtJ6rCfD+LFsWHp81dolrFD8S79U9tb8Az2nGrJncnMSnys+bpQJfRUzqs9hnA81OAA3hCuQ==} + engines: {node: '>=14'} + hasBin: true + pretty-ms@9.2.0: resolution: {integrity: sha512-4yf0QO/sllf/1zbZWYnvWw3NxCQwLXKzIj0G849LSufP15BXKM0rbD2Z3wVnkMfjdn/CB0Dpp444gYAACdsplg==} engines: {node: '>=18'} @@ -2155,23 +2447,6 @@ packages: resolution: {integrity: sha512-z6F7K9bV85EfseRCp2bzrpyQ0Gkw1uLoCel9XBVWPg/TjRj94SkJzUTGfOa4bs7iJvBWtQG0Wq7wnI0syw3EBQ==} engines: {node: '>=0.10.0'} - react-router-dom@7.8.2: - resolution: {integrity: sha512-Z4VM5mKDipal2jQ385H6UBhiiEDlnJPx6jyWsTYoZQdl5TrjxEV2a9yl3Fi60NBJxYzOTGTTHXPi0pdizvTwow==} - engines: {node: '>=20.0.0'} - peerDependencies: - react: '>=18' - react-dom: '>=18' - - react-router@7.8.2: - resolution: {integrity: sha512-7M2fR1JbIZ/jFWqelpvSZx+7vd7UlBTfdZqf6OSdF9g6+sfdqJDAWcak6ervbHph200ePlu+7G8LdoiC3ReyAQ==} - engines: {node: '>=20.0.0'} - peerDependencies: - react: '>=18' - react-dom: '>=18' - peerDependenciesMeta: - react-dom: - optional: true - react-toastify@11.0.5: resolution: {integrity: sha512-EpqHBGvnSTtHYhCPLxML05NLY2ZX0JURbAdNYa6BUkk+amz4wbKBQvoKQAB0ardvSarUBuY4Q4s1sluAzZwkmA==} peerDependencies: @@ -2195,6 +2470,14 @@ packages: resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} engines: {node: '>= 6'} + readdirp@3.6.0: + resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} + engines: {node: '>=8.10.0'} + + recast@0.23.11: + resolution: {integrity: sha512-YTUo+Flmw4ZXiWfQKGcwwc11KnoRAYgzAE2E7mXKCjSviTKShtxBsN6YUUBB2gtaBzKzeKunxhUwNHQuRryhWA==} + engines: {node: '>= 4'} + redux-thunk@3.1.0: resolution: {integrity: sha512-NW2r5T6ksUKXCabzhL9z+h206HQw/NJkcLm1GPImRQ8IzfXwRGqjVhKJGauHirT0DAuyy6hjdnMZaRoAcy0Klw==} peerDependencies: @@ -2247,6 +2530,16 @@ packages: engines: {node: '>=10'} hasBin: true + seroval-plugins@1.3.3: + resolution: {integrity: sha512-16OL3NnUBw8JG1jBLUoZJsLnQq0n5Ua6aHalhJK4fMQkz1lqR7Osz1sA30trBtd9VUDc2NgkuRCn8+/pBwqZ+w==} + engines: {node: '>=10'} + peerDependencies: + seroval: ^1.0 + + seroval@1.3.2: + resolution: {integrity: sha512-RbcPH1n5cfwKrru7v7+zrZvjLurgHhGyso3HTyGtRivGWgYjbOmGuivCQaORNELjNONoK35nj28EoWul9sb1zQ==} + engines: {node: '>=10'} + set-cookie-parser@2.7.1: resolution: {integrity: sha512-IOc8uWeOZgnb3ptbCURJWNjWUPcO3ZnTTdzsurqERrP6nPyv+paC55vJM0LpOlT2ne+Ix+9+CRG1MNLlyZ4GjQ==} @@ -2285,10 +2578,21 @@ packages: resolution: {integrity: sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==} engines: {node: '>=14.16'} + solid-js@1.9.9: + resolution: {integrity: sha512-A0ZBPJQldAeGCTW0YRYJmt7RCeh5rbFfPZ2aOttgYnctHE7HgKeHCBB/PVc2P7eOfmNXqMFFFoYYdm3S4dcbkA==} + 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'} + + source-map@0.7.6: + resolution: {integrity: sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ==} + engines: {node: '>= 12'} + spdx-correct@3.2.0: resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==} @@ -2359,6 +2663,12 @@ packages: resolution: {integrity: sha512-resvxdc6Mgb7YEThw6G6bExlXKkv6+YbuzGg9xuXxSgxJF7Ozs+o8Y9+2R3sArdWdW8nOokoQb1yrpFB0pQK2g==} engines: {node: '>=14'} + tiny-invariant@1.3.3: + resolution: {integrity: sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==} + + tiny-warning@1.0.3: + resolution: {integrity: sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==} + tinybench@2.9.0: resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==} @@ -2435,6 +2745,10 @@ packages: resolution: {integrity: sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==} engines: {node: '>=18'} + unplugin@2.3.10: + resolution: {integrity: sha512-6NCPkv1ClwH+/BGE9QeoTIl09nuiAt0gS28nn1PvYXsGKRwM2TCbFA2QiilmehPDTXIe684k4rZI1yl3A1PCUw==} + engines: {node: '>=18.12.0'} + update-browserslist-db@1.1.3: resolution: {integrity: sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==} hasBin: true @@ -2540,6 +2854,9 @@ packages: webidl-conversions@3.0.1: resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} + webpack-virtual-modules@0.6.2: + resolution: {integrity: sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==} + whatwg-mimetype@3.0.0: resolution: {integrity: sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==} engines: {node: '>=12'} @@ -2600,6 +2917,9 @@ packages: resolution: {integrity: sha512-CzhO+pFNo8ajLM2d2IW/R93ipy99LWjtwblvC1RsoSUMZgyLbYFr221TnSNT7GjGdYui6P459mw9JH/g/zW2ug==} engines: {node: '>=18'} + zod@3.25.76: + resolution: {integrity: sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==} + zod@4.1.8: resolution: {integrity: sha512-5R1P+WwQqmmMIEACyzSvo4JXHY5WiAFHRMg+zBZKgKS+Q1viRa0C1hmUKtHltoIFKtIdki3pRxkmpP74jnNYHQ==} @@ -2643,6 +2963,10 @@ snapshots: '@jridgewell/trace-mapping': 0.3.31 jsesc: 3.1.0 + '@babel/helper-annotate-as-pure@7.27.3': + dependencies: + '@babel/types': 7.28.4 + '@babel/helper-compilation-targets@7.27.2': dependencies: '@babel/compat-data': 7.28.4 @@ -2651,8 +2975,28 @@ snapshots: lru-cache: 5.1.1 semver: 6.3.1 + '@babel/helper-create-class-features-plugin@7.28.3(@babel/core@7.28.4)': + dependencies: + '@babel/core': 7.28.4 + '@babel/helper-annotate-as-pure': 7.27.3 + '@babel/helper-member-expression-to-functions': 7.27.1 + '@babel/helper-optimise-call-expression': 7.27.1 + '@babel/helper-replace-supers': 7.27.1(@babel/core@7.28.4) + '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 + '@babel/traverse': 7.28.4 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + '@babel/helper-globals@7.28.0': {} + '@babel/helper-member-expression-to-functions@7.27.1': + dependencies: + '@babel/traverse': 7.28.4 + '@babel/types': 7.28.4 + transitivePeerDependencies: + - supports-color + '@babel/helper-module-imports@7.27.1': dependencies: '@babel/traverse': 7.28.4 @@ -2669,8 +3013,28 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/helper-optimise-call-expression@7.27.1': + dependencies: + '@babel/types': 7.28.4 + '@babel/helper-plugin-utils@7.27.1': {} + '@babel/helper-replace-supers@7.27.1(@babel/core@7.28.4)': + dependencies: + '@babel/core': 7.28.4 + '@babel/helper-member-expression-to-functions': 7.27.1 + '@babel/helper-optimise-call-expression': 7.27.1 + '@babel/traverse': 7.28.4 + transitivePeerDependencies: + - supports-color + + '@babel/helper-skip-transparent-expression-wrappers@7.27.1': + dependencies: + '@babel/traverse': 7.28.4 + '@babel/types': 7.28.4 + transitivePeerDependencies: + - supports-color + '@babel/helper-string-parser@7.27.1': {} '@babel/helper-validator-identifier@7.27.1': {} @@ -2686,6 +3050,24 @@ snapshots: dependencies: '@babel/types': 7.28.4 + '@babel/plugin-syntax-jsx@7.27.1(@babel/core@7.28.4)': + dependencies: + '@babel/core': 7.28.4 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-typescript@7.27.1(@babel/core@7.28.4)': + dependencies: + '@babel/core': 7.28.4 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-modules-commonjs@7.27.1(@babel/core@7.28.4)': + dependencies: + '@babel/core': 7.28.4 + '@babel/helper-module-transforms': 7.28.3(@babel/core@7.28.4) + '@babel/helper-plugin-utils': 7.27.1 + transitivePeerDependencies: + - supports-color + '@babel/plugin-transform-react-jsx-self@7.27.1(@babel/core@7.28.4)': dependencies: '@babel/core': 7.28.4 @@ -2696,6 +3078,28 @@ snapshots: '@babel/core': 7.28.4 '@babel/helper-plugin-utils': 7.27.1 + '@babel/plugin-transform-typescript@7.28.0(@babel/core@7.28.4)': + dependencies: + '@babel/core': 7.28.4 + '@babel/helper-annotate-as-pure': 7.27.3 + '@babel/helper-create-class-features-plugin': 7.28.3(@babel/core@7.28.4) + '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 + '@babel/plugin-syntax-typescript': 7.27.1(@babel/core@7.28.4) + transitivePeerDependencies: + - supports-color + + '@babel/preset-typescript@7.27.1(@babel/core@7.28.4)': + dependencies: + '@babel/core': 7.28.4 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-validator-option': 7.27.1 + '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-modules-commonjs': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-typescript': 7.28.0(@babel/core@7.28.4) + transitivePeerDependencies: + - supports-color + '@babel/runtime@7.28.4': {} '@babel/template@7.27.2': @@ -3122,6 +3526,37 @@ snapshots: '@protobufjs/utf8@1.1.0': {} + '@radix-ui/react-compose-refs@1.1.2(@types/react@19.1.12)(react@19.1.1)': + dependencies: + react: 19.1.1 + optionalDependencies: + '@types/react': 19.1.12 + + '@radix-ui/react-label@2.1.7(@types/react-dom@19.1.9(@types/react@19.1.12))(@types/react@19.1.12)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': + dependencies: + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.9(@types/react@19.1.12))(@types/react@19.1.12)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + react: 19.1.1 + react-dom: 19.1.1(react@19.1.1) + optionalDependencies: + '@types/react': 19.1.12 + '@types/react-dom': 19.1.9(@types/react@19.1.12) + + '@radix-ui/react-primitive@2.1.3(@types/react-dom@19.1.9(@types/react@19.1.12))(@types/react@19.1.12)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': + dependencies: + '@radix-ui/react-slot': 1.2.3(@types/react@19.1.12)(react@19.1.1) + react: 19.1.1 + react-dom: 19.1.1(react@19.1.1) + optionalDependencies: + '@types/react': 19.1.12 + '@types/react-dom': 19.1.9(@types/react@19.1.12) + + '@radix-ui/react-slot@1.2.3(@types/react@19.1.12)(react@19.1.1)': + dependencies: + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.12)(react@19.1.1) + react: 19.1.1 + optionalDependencies: + '@types/react': 19.1.12 + '@react-aria/focus@3.21.1(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': dependencies: '@react-aria/interactions': 3.25.5(react-dom@19.1.1(react@19.1.1))(react@19.1.1) @@ -3329,6 +3764,11 @@ snapshots: dependencies: '@swc/counter': 0.1.3 + '@tailwindcss/forms@0.5.10(tailwindcss@4.1.13)': + dependencies: + mini-svg-data-uri: 1.4.4 + tailwindcss: 4.1.13 + '@tailwindcss/node@4.1.13': dependencies: '@jridgewell/remapping': 2.3.5 @@ -3401,14 +3841,138 @@ snapshots: postcss: 8.5.6 tailwindcss: 4.1.13 + '@tailwindcss/vite@4.1.13(vite@7.1.5(@types/node@24.3.1)(jiti@2.5.1)(lightningcss@1.30.1)(tsx@4.20.5))': + dependencies: + '@tailwindcss/node': 4.1.13 + '@tailwindcss/oxide': 4.1.13 + tailwindcss: 4.1.13 + vite: 7.1.5(@types/node@24.3.1)(jiti@2.5.1)(lightningcss@1.30.1)(tsx@4.20.5) + + '@tanstack/history@1.131.2': {} + + '@tanstack/query-core@5.87.4': {} + + '@tanstack/query-devtools@5.87.3': {} + + '@tanstack/react-query-devtools@5.87.4(@tanstack/react-query@5.87.4(react@19.1.1))(react@19.1.1)': + dependencies: + '@tanstack/query-devtools': 5.87.3 + '@tanstack/react-query': 5.87.4(react@19.1.1) + react: 19.1.1 + + '@tanstack/react-query@5.87.4(react@19.1.1)': + dependencies: + '@tanstack/query-core': 5.87.4 + react: 19.1.1 + + '@tanstack/react-router-devtools@1.131.42(@tanstack/react-router@1.131.41(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(@tanstack/router-core@1.131.41)(csstype@3.1.3)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(solid-js@1.9.9)(tiny-invariant@1.3.3)': + dependencies: + '@tanstack/react-router': 1.131.41(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@tanstack/router-devtools-core': 1.131.42(@tanstack/router-core@1.131.41)(csstype@3.1.3)(solid-js@1.9.9)(tiny-invariant@1.3.3) + react: 19.1.1 + react-dom: 19.1.1(react@19.1.1) + transitivePeerDependencies: + - '@tanstack/router-core' + - csstype + - solid-js + - tiny-invariant + + '@tanstack/react-router@1.131.41(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': + dependencies: + '@tanstack/history': 1.131.2 + '@tanstack/react-store': 0.7.5(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@tanstack/router-core': 1.131.41 + isbot: 5.1.30 + react: 19.1.1 + react-dom: 19.1.1(react@19.1.1) + tiny-invariant: 1.3.3 + tiny-warning: 1.0.3 + + '@tanstack/react-store@0.7.5(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': + dependencies: + '@tanstack/store': 0.7.5 + react: 19.1.1 + react-dom: 19.1.1(react@19.1.1) + use-sync-external-store: 1.5.0(react@19.1.1) + '@tanstack/react-virtual@3.13.12(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': dependencies: '@tanstack/virtual-core': 3.13.12 react: 19.1.1 react-dom: 19.1.1(react@19.1.1) + '@tanstack/router-core@1.131.41': + dependencies: + '@tanstack/history': 1.131.2 + '@tanstack/store': 0.7.5 + cookie-es: 1.2.2 + seroval: 1.3.2 + seroval-plugins: 1.3.3(seroval@1.3.2) + tiny-invariant: 1.3.3 + tiny-warning: 1.0.3 + + '@tanstack/router-devtools-core@1.131.42(@tanstack/router-core@1.131.41)(csstype@3.1.3)(solid-js@1.9.9)(tiny-invariant@1.3.3)': + dependencies: + '@tanstack/router-core': 1.131.41 + clsx: 2.1.1 + goober: 2.1.16(csstype@3.1.3) + solid-js: 1.9.9 + tiny-invariant: 1.3.3 + optionalDependencies: + csstype: 3.1.3 + + '@tanstack/router-generator@1.131.41': + dependencies: + '@tanstack/router-core': 1.131.41 + '@tanstack/router-utils': 1.131.2 + '@tanstack/virtual-file-routes': 1.131.2 + prettier: 3.6.2 + recast: 0.23.11 + source-map: 0.7.6 + tsx: 4.20.5 + zod: 3.25.76 + transitivePeerDependencies: + - supports-color + + '@tanstack/router-plugin@1.131.41(@tanstack/react-router@1.131.41(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(vite@7.1.5(@types/node@24.3.1)(jiti@2.5.1)(lightningcss@1.30.1)(tsx@4.20.5))': + dependencies: + '@babel/core': 7.28.4 + '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-syntax-typescript': 7.27.1(@babel/core@7.28.4) + '@babel/template': 7.27.2 + '@babel/traverse': 7.28.4 + '@babel/types': 7.28.4 + '@tanstack/router-core': 1.131.41 + '@tanstack/router-generator': 1.131.41 + '@tanstack/router-utils': 1.131.2 + '@tanstack/virtual-file-routes': 1.131.2 + babel-dead-code-elimination: 1.0.10 + chokidar: 3.6.0 + unplugin: 2.3.10 + zod: 3.25.76 + optionalDependencies: + '@tanstack/react-router': 1.131.41(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + vite: 7.1.5(@types/node@24.3.1)(jiti@2.5.1)(lightningcss@1.30.1)(tsx@4.20.5) + transitivePeerDependencies: + - supports-color + + '@tanstack/router-utils@1.131.2': + dependencies: + '@babel/core': 7.28.4 + '@babel/generator': 7.28.3 + '@babel/parser': 7.28.4 + '@babel/preset-typescript': 7.27.1(@babel/core@7.28.4) + ansis: 4.1.0 + diff: 8.0.2 + transitivePeerDependencies: + - supports-color + + '@tanstack/store@0.7.5': {} + '@tanstack/virtual-core@3.13.12': {} + '@tanstack/virtual-file-routes@1.131.2': {} + '@tootallnate/once@2.0.0': {} '@types/babel__core@7.20.5': @@ -3545,6 +4109,8 @@ snapshots: dependencies: event-target-shim: 5.0.1 + acorn@8.15.0: {} + adler-32@1.3.1: {} agent-base@6.0.2: @@ -3561,6 +4127,13 @@ snapshots: dependencies: color-convert: 2.0.1 + ansis@4.1.0: {} + + anymatch@3.1.3: + dependencies: + normalize-path: 3.0.0 + picomatch: 2.3.1 + asn1js@3.0.6: dependencies: pvtsutils: 1.3.6 @@ -3569,6 +4142,10 @@ snapshots: assertion-error@2.0.1: {} + ast-types@0.16.1: + dependencies: + tslib: 2.8.1 + asynckit@0.4.0: {} autoprefixer@10.4.21(postcss@8.5.6): @@ -3581,6 +4158,15 @@ snapshots: postcss: 8.5.6 postcss-value-parser: 4.2.0 + babel-dead-code-elimination@1.0.10: + dependencies: + '@babel/core': 7.28.4 + '@babel/parser': 7.28.4 + '@babel/traverse': 7.28.4 + '@babel/types': 7.28.4 + transitivePeerDependencies: + - supports-color + base64-js@1.5.1: {} better-auth@1.3.9(react-dom@19.1.1(react@19.1.1))(react@19.1.1): @@ -3610,6 +4196,8 @@ snapshots: bignumber.js@9.3.1: {} + binary-extensions@2.3.0: {} + braces@3.0.3: dependencies: fill-range: 7.1.1 @@ -3654,6 +4242,18 @@ snapshots: 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 + chownr@3.0.0: {} class-variance-authority@0.7.1: @@ -3684,7 +4284,7 @@ snapshots: convert-source-map@2.0.0: {} - cookie@1.0.2: {} + cookie-es@1.2.2: {} core-js@3.45.1: {} @@ -3710,6 +4310,8 @@ snapshots: detect-libc@2.0.4: {} + diff@8.0.2: {} + dotenv-expand@12.0.3: dependencies: dotenv: 16.6.1 @@ -3862,6 +4464,8 @@ snapshots: escalade@3.2.0: {} + esprima@4.0.1: {} + estree-walker@3.0.3: dependencies: '@types/estree': 1.0.8 @@ -3981,7 +4585,6 @@ snapshots: get-tsconfig@4.10.1: dependencies: resolve-pkg-maps: 1.0.0 - optional: true glob-parent@5.1.2: dependencies: @@ -3998,6 +4601,10 @@ snapshots: globrex@0.1.2: {} + goober@2.1.16(csstype@3.1.3): + dependencies: + csstype: 3.1.3 + google-auth-library@9.15.1: dependencies: base64-js: 1.5.1 @@ -4096,6 +4703,10 @@ snapshots: inherits@2.0.4: {} + is-binary-path@2.1.0: + dependencies: + binary-extensions: 2.3.0 + is-extglob@2.1.1: {} is-fullwidth-code-point@3.0.0: {} @@ -4114,6 +4725,8 @@ snapshots: is-unicode-supported@2.1.0: {} + isbot@5.1.30: {} + isexe@2.0.0: {} jiti@2.5.1: {} @@ -4246,6 +4859,8 @@ snapshots: dependencies: mime-db: 1.52.0 + mini-svg-data-uri@1.4.4: {} + minipass@7.1.2: {} minizlib@3.0.2: @@ -4277,6 +4892,8 @@ snapshots: semver: 7.7.2 validate-npm-package-license: 3.0.4 + normalize-path@3.0.0: {} + normalize-range@0.1.2: {} npm-run-path@6.0.0: @@ -4328,6 +4945,8 @@ snapshots: picocolors: 1.1.1 source-map-js: 1.2.1 + prettier@3.6.2: {} + pretty-ms@9.2.0: dependencies: parse-ms: 4.0.0 @@ -4400,20 +5019,6 @@ snapshots: react-refresh@0.17.0: {} - react-router-dom@7.8.2(react-dom@19.1.1(react@19.1.1))(react@19.1.1): - dependencies: - react: 19.1.1 - react-dom: 19.1.1(react@19.1.1) - react-router: 7.8.2(react-dom@19.1.1(react@19.1.1))(react@19.1.1) - - react-router@7.8.2(react-dom@19.1.1(react@19.1.1))(react@19.1.1): - dependencies: - cookie: 1.0.2 - react: 19.1.1 - set-cookie-parser: 2.7.1 - optionalDependencies: - react-dom: 19.1.1(react@19.1.1) - react-toastify@11.0.5(react-dom@19.1.1(react@19.1.1))(react@19.1.1): dependencies: clsx: 2.1.1 @@ -4442,6 +5047,18 @@ snapshots: string_decoder: 1.3.0 util-deprecate: 1.0.2 + readdirp@3.6.0: + dependencies: + picomatch: 2.3.1 + + recast@0.23.11: + dependencies: + ast-types: 0.16.1 + esprima: 4.0.1 + source-map: 0.6.1 + tiny-invariant: 1.3.3 + tslib: 2.8.1 + redux-thunk@3.1.0(redux@5.0.1): dependencies: redux: 5.0.1 @@ -4452,8 +5069,7 @@ snapshots: reselect@5.1.1: {} - resolve-pkg-maps@1.0.0: - optional: true + resolve-pkg-maps@1.0.0: {} retry-request@7.0.2: dependencies: @@ -4507,6 +5123,12 @@ snapshots: semver@7.7.2: {} + seroval-plugins@1.3.3(seroval@1.3.2): + dependencies: + seroval: 1.3.2 + + seroval@1.3.2: {} + set-cookie-parser@2.7.1: {} shebang-command@2.0.0: @@ -4549,8 +5171,18 @@ snapshots: slash@5.1.0: {} + solid-js@1.9.9: + dependencies: + csstype: 3.1.3 + seroval: 1.3.2 + seroval-plugins: 1.3.3(seroval@1.3.2) + source-map-js@1.2.1: {} + source-map@0.6.1: {} + + source-map@0.7.6: {} + spdx-correct@3.2.0: dependencies: spdx-expression-parse: 3.0.1 @@ -4629,6 +5261,10 @@ snapshots: - encoding - supports-color + tiny-invariant@1.3.3: {} + + tiny-warning@1.0.3: {} + tinybench@2.9.0: {} tinyexec@0.3.2: {} @@ -4662,7 +5298,6 @@ snapshots: get-tsconfig: 4.10.1 optionalDependencies: fsevents: 2.3.3 - optional: true tw-animate-css@1.3.8: {} @@ -4680,6 +5315,13 @@ snapshots: unicorn-magic@0.3.0: {} + unplugin@2.3.10: + dependencies: + '@jridgewell/remapping': 2.3.5 + acorn: 8.15.0 + picomatch: 4.0.3 + webpack-virtual-modules: 0.6.2 + update-browserslist-db@1.1.3(browserslist@4.25.4): dependencies: browserslist: 4.25.4 @@ -4790,6 +5432,8 @@ snapshots: webidl-conversions@3.0.1: {} + webpack-virtual-modules@0.6.2: {} + whatwg-mimetype@3.0.0: {} whatwg-url@5.0.0: @@ -4848,4 +5492,6 @@ snapshots: yoctocolors@2.1.2: {} + zod@3.25.76: {} + zod@4.1.8: {} diff --git a/client2/src/components/AddMentorInProgram/index.tsx b/client2/src/components/AddMentorInProgram/index.tsx index 89a65d95..9358ec23 100644 --- a/client2/src/components/AddMentorInProgram/index.tsx +++ b/client2/src/components/AddMentorInProgram/index.tsx @@ -1,18 +1,34 @@ -import { Fragment, useCallback, useRef } from "react"; -import { Dialog, Transition } from "@headlessui/react"; -import Select from "@/components/Select"; -import { FormProvider, useForm } from "react-hook-form"; import Button from "@/components/Button"; -import { object, string, TypeOf } from "zod"; +import Select from "@/components/Select"; +import { + Dialog, + DialogPanel, + DialogTitle, + Transition, + TransitionChild, +} from "@headlessui/react"; import { zodResolver } from "@hookform/resolvers/zod"; +import { Fragment, useCallback, useRef } from "react"; +import { FormProvider, useForm } from "react-hook-form"; +import { z } from "zod"; -const userIdSchema = object({ - mentor: string(), +const userIdSchema = z.object({ + mentor: z.string(), }); -export type UserIdSchema = TypeOf; - -const AddMentorInProgram = ({ open, setOpen, onSave, mentors }) => { +export type UserIdSchema = z.infer; +export interface AddMentorInProgramProps { + open: boolean; + mentors: { id: string; firstName: string; lastName: string }[]; + setOpen: (value: boolean) => void; + onSave: (data: UserIdSchema, setOpen: (value: boolean) => void) => void; +} +const AddMentorInProgram = ({ + open, + setOpen, + onSave, + mentors, +}: AddMentorInProgramProps) => { const cancelButtonRef = useRef(null); const methods = useForm({ resolver: zodResolver(userIdSchema), @@ -22,14 +38,14 @@ const AddMentorInProgram = ({ open, setOpen, onSave, mentors }) => { }, []); return ( - + - { leaveTo="opacity-0" >
    - +
    - { leaveFrom="opacity-100 translate-y-0 sm:scale-100" leaveTo="opacity-0 translate-y-4 sm:translate-y-0 sm:scale-95" > - +
    - Adaugă persoană resursă în program - +
    {
    - - + +
    -
    + ); }; diff --git a/client2/src/components/Breadcrumbs/index.tsx b/client2/src/components/Breadcrumbs/index.tsx index b415c927..1882dceb 100644 --- a/client2/src/components/Breadcrumbs/index.tsx +++ b/client2/src/components/Breadcrumbs/index.tsx @@ -1,5 +1,5 @@ import { ChevronRightIcon, HomeIcon } from "@heroicons/react/20/solid"; -import { Link } from "react-router-dom"; +import { Link } from "@tanstack/react-router"; export default function Example({ pages, diff --git a/client2/src/components/Button/index.tsx b/client2/src/components/Button/index.tsx index 2856d5e9..4d150412 100644 --- a/client2/src/components/Button/index.tsx +++ b/client2/src/components/Button/index.tsx @@ -1,5 +1,5 @@ import React, { ReactNode } from "react"; -import { Link } from "react-router-dom"; +import { Link } from "@tanstack/react-router"; interface IButton { children: ReactNode; diff --git a/client2/src/components/CreateEvaluation/index.tsx b/client2/src/components/CreateEvaluation/index.tsx index b1ad9a6a..bcaef3d8 100644 --- a/client2/src/components/CreateEvaluation/index.tsx +++ b/client2/src/components/CreateEvaluation/index.tsx @@ -1,18 +1,18 @@ import React, { useCallback, useEffect } from "react"; import Button from "@/components/Button"; import { useCreateEvaluationMutation } from "@/redux/api/userApi"; -import { object, string, TypeOf } from "zod"; +import { z } from "zod"; import { useForm } from "react-hook-form"; import { zodResolver } from "@hookform/resolvers/zod"; import { toast } from "react-toastify"; import { ErrorMessage } from "@hookform/error-message"; -const evaluationSchema = object({ - email: string() - .min(1, "Vă rugăm introduceți adresa de email") - .email("Adresa de email este invalidă"), +const evaluationSchema = z.object({ + email: z + .email("Adresa de email este invalidă") + .min(1, "Vă rugăm introduceți adresa de email"), }); -export type EvaluationInput = TypeOf; +export type EvaluationInput = z.infer; const CreateEvaluation = ({ reportId }: { reportId: string }) => { const [createEvaluation, { isSuccess, isError }] = diff --git a/client2/src/components/ExternalLinkItem/index.tsx b/client2/src/components/ExternalLinkItem/index.tsx index f76c5057..484370b6 100644 --- a/client2/src/components/ExternalLinkItem/index.tsx +++ b/client2/src/components/ExternalLinkItem/index.tsx @@ -3,10 +3,6 @@ import React, { useCallback, useMemo, useState } from "react"; import { useFormContext } from "react-hook-form"; const ExternalLinkItem = ({ options, defaultValue }) => { - const optionsLabels = useMemo( - () => options.map(({ label }) => label), - [options] - ); const [name, setName] = useState(defaultValue); const { register } = useFormContext(); const handleChangeLinkType = useCallback( diff --git a/client2/src/components/Footer/index.tsx b/client2/src/components/Footer/index.tsx index 32b0132e..09947c97 100644 --- a/client2/src/components/Footer/index.tsx +++ b/client2/src/components/Footer/index.tsx @@ -1,6 +1,6 @@ import MadeBy from "@/components/MadeBy"; import Section from "@/components/Section"; -import { Link } from "react-router-dom"; +import { Link } from "@tanstack/react-router"; const Footer = () => ( <> diff --git a/client2/src/components/LayoutApp/index.tsx b/client2/src/components/LayoutApp/index.tsx index 364cff55..ca1f8537 100644 --- a/client2/src/components/LayoutApp/index.tsx +++ b/client2/src/components/LayoutApp/index.tsx @@ -1,14 +1,12 @@ -import { Outlet } from "react-router-dom"; +import type { ReactNode } from "react"; import "react-toastify/dist/ReactToastify.css"; import Footer from "../Footer"; import Navbar from "../Navbar"; -const LayoutApp = () => ( +const LayoutApp = ({ children }: { children: ReactNode }) => (
    -
    - -
    +
    {children}
    ); diff --git a/client2/src/components/LayoutDashboard/index.tsx b/client2/src/components/LayoutDashboard/index.tsx index a1bba367..79a2c161 100644 --- a/client2/src/components/LayoutDashboard/index.tsx +++ b/client2/src/components/LayoutDashboard/index.tsx @@ -1,7 +1,7 @@ import MadeBy from "@/components/MadeBy"; import Navbar from "@/components/Navbar"; import Section from "@/components/Section"; -import { Outlet } from "react-router-dom"; +import { Outlet } from "@tanstack/react-router"; const LayoutDashboard = () => (
    diff --git a/client2/src/components/LayoutEvaluation/index.tsx b/client2/src/components/LayoutEvaluation/index.tsx index 51b80bf6..6bdaa80b 100644 --- a/client2/src/components/LayoutEvaluation/index.tsx +++ b/client2/src/components/LayoutEvaluation/index.tsx @@ -1,4 +1,4 @@ -import { Outlet } from "react-router-dom"; +import { Outlet } from "@tanstack/react-router"; import Footer from "../Footer"; import { Menu } from "../Navbar"; import NavbarEvaluation from "../NavbarEvaluation"; diff --git a/client2/src/components/MultiSelect/index.tsx b/client2/src/components/MultiSelect/index.tsx index 793a0367..afe24845 100644 --- a/client2/src/components/MultiSelect/index.tsx +++ b/client2/src/components/MultiSelect/index.tsx @@ -1,4 +1,11 @@ -import { Combobox, Transition } from "@headlessui/react"; +import { + Combobox, + ComboboxButton, + ComboboxInput, + ComboboxOption, + ComboboxOptions, + Transition, +} from "@headlessui/react"; import { CheckIcon, ChevronUpDownIcon } from "@heroicons/react/20/solid"; import { type ChangeEventHandler, Fragment, useEffect, useState } from "react"; @@ -12,9 +19,9 @@ export default function MultiSelect({ }: { name: string; label: string; - defaultValues: { label: string; name: string }[]; - options: { label: string; name: string }[]; - onChange: ChangeEventHandler; + defaultValues: { id: string; label: string; name: string }[]; + options: { id: string | number; label: string; name: string }[]; + onChange: (event: { target: any; type?: any }) => Promise; required?: boolean; }) { const [selectedItems, setSelectedItems] = useState(defaultValues); @@ -51,19 +58,19 @@ export default function MultiSelect({
    - className="mt-1 block w-full rounded-md border-0 py-1.5 pl-3 pr-10 text-gray-900 ring-1 ring-inset ring-gray-300 focus:ring-2 focus:ring-teal-500 sm:text-sm sm:leading-6" onChange={(event) => setQuery(event.target.value)} displayValue={(options) => options.map((option) => option.name).join(", ") } /> - + +
    setQuery("")} > - + {filteredPeople.length === 0 && query !== "" ? (
    Nu am găsit niciun domeniu similar.
    ) : ( filteredPeople.map((option) => ( - + className={({ selected }) => `relative cursor-default select-none py-2 pl-10 pr-4 ${ - active ? "bg-teal-600 text-white" : "text-gray-900" + selected ? "bg-teal-600 text-white" : "text-gray-900" }` } value={option} > - {({ selected, active }) => ( + {({ focus, selected }) => ( <> {option.name} @@ -100,7 +107,7 @@ export default function MultiSelect({ {selected ? ( )} - + )) )} -
    +
    diff --git a/client2/src/components/Navbar/index.tsx b/client2/src/components/Navbar/index.tsx index 0c912b88..9443ac55 100644 --- a/client2/src/components/Navbar/index.tsx +++ b/client2/src/components/Navbar/index.tsx @@ -3,121 +3,53 @@ import NavbarEvaluation from "@/components/NavbarEvaluation"; import UserMenu from "@/components/UserMenu"; import getUserType from "@/lib/userType"; import { useAppSelector } from "@/redux/store"; -import { Menu as MenuHeadless, Transition } from "@headlessui/react"; +import { + MenuButton, + Menu as MenuHeadless, + MenuItem, + MenuItems, + Transition, +} from "@headlessui/react"; import { Bars3Icon } from "@heroicons/react/20/solid"; import { Fragment } from "react"; -import { NavLink } from "react-router-dom"; +import { Link } from "@tanstack/react-router"; const MENU = { public: [ - { - text: "Acasă", - link: "https://crestem.ong/ro/acasa", - }, - { - text: "Despre", - link: "https://crestem.ong/ro/despre-proiect", - }, - { - text: "Evaluare ONG", - link: "/", - }, - { - text: "Bibliotecă", - link: "https://crestem.ong/ro/biblioteca", - }, + { text: "Acasă", link: "https://crestem.ong/ro/acasa" }, + { text: "Despre", link: "https://crestem.ong/ro/despre-proiect" }, + { text: "Evaluare ONG", link: "/" }, + { text: "Bibliotecă", link: "https://crestem.ong/ro/biblioteca" }, { text: "Programele noastre", link: "https://crestem.ong/ro/programele-noastre", }, - { - text: "FAQ", - link: "https://crestem.ong/ro/intrebari-frecvente", - }, - { - text: "Contact", - link: "https://crestem.ong/ro/contact", - }, + { text: "FAQ", link: "https://crestem.ong/ro/intrebari-frecvente" }, + { text: "Contact", link: "https://crestem.ong/ro/contact" }, ], fdsc: [ - { - text: "Panou de control", - link: "/", - }, - { - text: "Evaluări", - link: "/reports", - }, - { - text: "Organizații", - link: "/users", - }, - { - text: "Persoane resursă", - link: "/mentors", - }, - { - text: "Programe", - link: "/programs", - }, + { text: "Panou de control", link: "/" }, + { text: "Evaluări", link: "/reports" }, + { text: "Organizații", link: "/users" }, + { text: "Persoane resursă", link: "/mentors" }, + { text: "Programe", link: "/programs" }, ], authenticated: [ - { - text: "Acasă", - link: "https://crestem.ong/ro/acasa", - }, - { - text: "Despre", - link: "https://crestem.ong/ro/despre-proiect", - }, - { - text: "Evaluare ONG", - link: "/", - }, - { - text: "Bibliotecă", - link: "https://crestem.ong/ro/biblioteca", - }, + { text: "Acasă", link: "https://crestem.ong/ro/acasa" }, + { text: "Despre", link: "https://crestem.ong/ro/despre-proiect" }, + { text: "Evaluare ONG", link: "/" }, + { text: "Bibliotecă", link: "https://crestem.ong/ro/biblioteca" }, { text: "Persoane resursă", link: "/mentors" }, { text: "Programele noastre", link: "https://crestem.ong/ro/programele-noastre", }, - { - text: "FAQ", - link: "https://crestem.ong/ro/intrebari-frecvente", - }, - { - text: "Contact", - link: "https://crestem.ong/ro/contact", - }, + { text: "FAQ", link: "https://crestem.ong/ro/intrebari-frecvente" }, + { text: "Contact", link: "https://crestem.ong/ro/contact" }, ], mentor: [ - // { - // text: "Acasă", - // link: "https://crestem.ong/ro/acasa", - // }, - // { - // text: "Despre", - // link: "https://crestem.ong/ro/despre-proiect", - // }, - { - text: "Evaluare ONG", - link: "/", - }, - // { - // text: "Bibliotecă", - // link: "https://crestem.ong/ro/biblioteca", - // }, + { text: "Evaluare ONG", link: "/" }, { text: "Jurnal de activitate", link: "/activities" }, - // { - // text: "FAQ", - // link: "https://crestem.ong/ro/intrebari-frecvente", - // }, - // { - // text: "Contact", - // link: "https://crestem.ong/ro/contact", - // }, ], }; @@ -128,34 +60,45 @@ export const Menu = () => { return ( <> + {/* Desktop Menu */}
      {menu.map((menuItem) => (
    • - - `flex flex-wrap border-b-2 px-3 py-2 font-medium items-center text-gray-900 border-teal-600 ${ - isPending ? "bg-gray-50" : isActive ? "bg-gray-100" : "" - }` - } - > - {menuItem.text} - + {menuItem.link.startsWith("https://crestem.ong") ? ( + + {menuItem.text} + + ) : ( + + {menuItem.text} + + )}
    • ))}
    + + {/* Mobile Menu */} - + - + { leaveFrom="transform opacity-100 scale-100" leaveTo="transform opacity-0 scale-95" > - + {menu.map((menuItem) => ( - - - `flex flex-wrap border-b-2 border-transparent px-3 py-2 font-medium items-center text-gray-900 border-teal-600 ${ - isPending ? "bg-gray-50" : isActive ? "bg-gray-100" : "" - }` - } - > - {menuItem.text} - - + + {menuItem.link.startsWith("https://crestem.ong") ? ( + + {menuItem.text} + + ) : ( + + {menuItem.text} + + )} + ))} + {!user && ( <> - + {({ close }) => ( )} - - + + {({ close }) => ( )} - + )} - + @@ -214,26 +166,24 @@ const Navbar = () => { const user = useAppSelector((state) => state.userState.user); return ( - <> - }> -
    - {user ? ( - - ) : ( -
    -
    - -
    -
    - -
    + }> +
    + {user ? ( + + ) : ( +
    +
    +
    - )} -
    - - +
    + +
    +
    + )} +
    + ); }; diff --git a/client2/src/components/NavbarEvaluation/index.tsx b/client2/src/components/NavbarEvaluation/index.tsx index 97e61472..01a8b93f 100644 --- a/client2/src/components/NavbarEvaluation/index.tsx +++ b/client2/src/components/NavbarEvaluation/index.tsx @@ -1,6 +1,6 @@ import logo from "@/assets/logo.png"; import type { ReactNode } from "react"; -import { Link } from "react-router-dom"; +import { Link } from "@tanstack/react-router"; const NavbarEvaluation = ({ children, diff --git a/client2/src/components/ProgressBar/index.tsx b/client2/src/components/ProgressBar/index.tsx index 39088988..13ccc4da 100644 --- a/client2/src/components/ProgressBar/index.tsx +++ b/client2/src/components/ProgressBar/index.tsx @@ -1,4 +1,4 @@ -import { Link } from "react-router-dom"; +import { Link } from "@tanstack/react-router"; const getColor = (percentage: number) => percentage >= 70 diff --git a/client2/src/components/RequireUser/index.tsx b/client2/src/components/RequireUser/index.tsx index a6eff905..14f56e18 100644 --- a/client2/src/components/RequireUser/index.tsx +++ b/client2/src/components/RequireUser/index.tsx @@ -1,5 +1,5 @@ import { useAppSelector } from "@/redux/store"; -import { Navigate, Outlet, useLocation } from "react-router-dom"; +import { Navigate, Outlet, useLocation } from "@tanstack/react-router"; const RequireUser = () => { const location = useLocation(); diff --git a/client2/src/components/ScrollToTop/index.tsx b/client2/src/components/ScrollToTop/index.tsx index 17d3b16f..83cb2bea 100644 --- a/client2/src/components/ScrollToTop/index.tsx +++ b/client2/src/components/ScrollToTop/index.tsx @@ -1,5 +1,5 @@ import { useEffect } from "react"; -import { useLocation } from "react-router-dom"; +import { useLocation } from "@tanstack/react-router"; const ScrollToTop = () => { const { pathname } = useLocation(); diff --git a/client2/src/components/TableEvaluations/index.tsx b/client2/src/components/TableEvaluations/index.tsx index a9979fa4..cc1e3af5 100644 --- a/client2/src/components/TableEvaluations/index.tsx +++ b/client2/src/components/TableEvaluations/index.tsx @@ -1,7 +1,7 @@ import envelope from "@/assets/envelope.svg"; import type { Report } from "@/redux/api/types"; import { useAppSelector } from "@/redux/store"; -import { Link } from "react-router-dom"; +import { Link } from "@tanstack/react-router"; import DeleteEvaluation from "@/components/DeleteEvaluation"; const TableEvaluations = ({ report }: { report: Report }) => { diff --git a/client2/src/components/TableRowReport/index.tsx b/client2/src/components/TableRowReport/index.tsx index 751192ce..80d5a3b2 100644 --- a/client2/src/components/TableRowReport/index.tsx +++ b/client2/src/components/TableRowReport/index.tsx @@ -1,8 +1,15 @@ import React, { memo } from "react"; -import { Link } from "react-router-dom"; +import { Link } from "@tanstack/react-router"; import { calcScore } from "@/lib/score"; -const TableRowReport = ({ id, createdAt, deadline, evaluations, finished, actionLabel = "Vezi"}) => { +const TableRowReport = ({ + id, + createdAt, + deadline, + evaluations, + finished, + actionLabel = "Vezi", +}) => { const evaluationsCompleted = evaluations ? evaluations.filter(({ dimensions }) => dimensions.length === 10) : []; diff --git a/client2/src/components/TableRowReportFDSC/index.tsx b/client2/src/components/TableRowReportFDSC/index.tsx index 6142152a..2bdf9a5c 100644 --- a/client2/src/components/TableRowReportFDSC/index.tsx +++ b/client2/src/components/TableRowReportFDSC/index.tsx @@ -1,5 +1,5 @@ import React, { memo, useCallback, useMemo } from "react"; -import { Link, useNavigate } from "react-router-dom"; +import { Link, useNavigate } from "@tanstack/react-router"; import { calcScore } from "@/lib/score"; import { evaluationsCompletedFilter } from "@/lib/filters"; diff --git a/client2/src/components/UserMenu/index.tsx b/client2/src/components/UserMenu/index.tsx index 614802f4..6e0c1052 100644 --- a/client2/src/components/UserMenu/index.tsx +++ b/client2/src/components/UserMenu/index.tsx @@ -5,11 +5,12 @@ import { MenuItem as HUMenuItem, Menu, MenuButton, + MenuItems, Transition, } from "@headlessui/react"; import Cookies from "js-cookie"; import { Fragment, type ReactNode } from "react"; -import { Link } from "react-router-dom"; +import { Link } from "@tanstack/react-router"; const classNames = (...classes: string[]) => { return classes.filter(Boolean).join(" "); @@ -50,7 +51,7 @@ const MenuItem = ({ }; const UserMenu = () => { - const user = useAppSelector((state) => state.userState.user); + const user = useAppSelector((state) => state.userState.user)!; const dispatch = useAppDispatch(); const handleLogout = () => { @@ -79,11 +80,11 @@ const UserMenu = () => { leaveFrom="transform opacity-100 scale-100" leaveTo="transform opacity-0 scale-95" > - + Acasă Profilul meu Log out - + ); diff --git a/client2/src/components/ui/button.tsx b/client2/src/components/ui/button.tsx new file mode 100644 index 00000000..a2df8dce --- /dev/null +++ b/client2/src/components/ui/button.tsx @@ -0,0 +1,59 @@ +import * as React from "react" +import { Slot } from "@radix-ui/react-slot" +import { cva, type VariantProps } from "class-variance-authority" + +import { cn } from "@/lib/utils" + +const buttonVariants = cva( + "inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive", + { + variants: { + variant: { + default: + "bg-primary text-primary-foreground shadow-xs hover:bg-primary/90", + destructive: + "bg-destructive text-white shadow-xs hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60", + outline: + "border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50", + secondary: + "bg-secondary text-secondary-foreground shadow-xs hover:bg-secondary/80", + ghost: + "hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50", + link: "text-primary underline-offset-4 hover:underline", + }, + size: { + default: "h-9 px-4 py-2 has-[>svg]:px-3", + sm: "h-8 rounded-md gap-1.5 px-3 has-[>svg]:px-2.5", + lg: "h-10 rounded-md px-6 has-[>svg]:px-4", + icon: "size-9", + }, + }, + defaultVariants: { + variant: "default", + size: "default", + }, + } +) + +function Button({ + className, + variant, + size, + asChild = false, + ...props +}: React.ComponentProps<"button"> & + VariantProps & { + asChild?: boolean + }) { + const Comp = asChild ? Slot : "button" + + return ( + + ) +} + +export { Button, buttonVariants } diff --git a/client2/src/components/ui/form.tsx b/client2/src/components/ui/form.tsx new file mode 100644 index 00000000..524b986b --- /dev/null +++ b/client2/src/components/ui/form.tsx @@ -0,0 +1,167 @@ +"use client" + +import * as React from "react" +import * as LabelPrimitive from "@radix-ui/react-label" +import { Slot } from "@radix-ui/react-slot" +import { + Controller, + FormProvider, + useFormContext, + useFormState, + type ControllerProps, + type FieldPath, + type FieldValues, +} from "react-hook-form" + +import { cn } from "@/lib/utils" +import { Label } from "@/components/ui/label" + +const Form = FormProvider + +type FormFieldContextValue< + TFieldValues extends FieldValues = FieldValues, + TName extends FieldPath = FieldPath, +> = { + name: TName +} + +const FormFieldContext = React.createContext( + {} as FormFieldContextValue +) + +const FormField = < + TFieldValues extends FieldValues = FieldValues, + TName extends FieldPath = FieldPath, +>({ + ...props +}: ControllerProps) => { + return ( + + + + ) +} + +const useFormField = () => { + const fieldContext = React.useContext(FormFieldContext) + const itemContext = React.useContext(FormItemContext) + const { getFieldState } = useFormContext() + const formState = useFormState({ name: fieldContext.name }) + const fieldState = getFieldState(fieldContext.name, formState) + + if (!fieldContext) { + throw new Error("useFormField should be used within ") + } + + const { id } = itemContext + + return { + id, + name: fieldContext.name, + formItemId: `${id}-form-item`, + formDescriptionId: `${id}-form-item-description`, + formMessageId: `${id}-form-item-message`, + ...fieldState, + } +} + +type FormItemContextValue = { + id: string +} + +const FormItemContext = React.createContext( + {} as FormItemContextValue +) + +function FormItem({ className, ...props }: React.ComponentProps<"div">) { + const id = React.useId() + + return ( + +
    + + ) +} + +function FormLabel({ + className, + ...props +}: React.ComponentProps) { + const { error, formItemId } = useFormField() + + return ( +
    - {programs?.length &&
    - + {programs?.length && (
    - + +
    + +
    -
    } - {domains?.length &&
    - + )} + {domains?.length && (
    - + +
    + +
    -
    } + )}
    @@ -335,7 +381,18 @@ const UsersTable = () => { {body.map( - ({ ongName, createdAt, program, county, city, domains, lastEvaluationDate }, index) => ( + ( + { + ongName, + createdAt, + program, + county, + city, + domains, + lastEvaluationDate, + }, + index + ) => ( {ongName} diff --git a/client2/src/pages/NewReport/index.tsx b/client2/src/pages/NewReport/index.tsx index bf3bc63a..815eab00 100644 --- a/client2/src/pages/NewReport/index.tsx +++ b/client2/src/pages/NewReport/index.tsx @@ -1,17 +1,17 @@ import React, { useCallback, useEffect } from "react"; import Section from "@/components/Section"; import { useCreateReportMutation } from "@/redux/api/userApi"; -import { useNavigate } from "react-router-dom"; +import { useNavigate } from "@tanstack/react-router"; import Button from "@/components/Button"; import { useForm } from "react-hook-form"; -import { object, string, date, preprocess, array, TypeOf } from "zod"; +import { z } from "zod"; import { zodResolver } from "@hookform/resolvers/zod"; import { ErrorMessage } from "@hookform/error-message"; import { toast } from "react-toastify"; -const emailListSchema = array( - string().email("Adresa de email este invalidă") -).nonempty(); +const emailListSchema = z + .array(z.email("Adresa de email este invalidă")) + .nonempty(); const validateEmails = (input: string) => { const emails = input.trim().split(/\r?\n/); // split input by new line const emailList = emailListSchema.safeParse(emails); @@ -19,17 +19,17 @@ const validateEmails = (input: string) => { return emailList.success; }; -const reportSchema = object({ - deadline: preprocess((arg) => { +const reportSchema = z.object({ + deadline: z.preprocess((arg) => { if (typeof arg == "string" || arg instanceof Date) return new Date(arg); - }, date().min(new Date(), { message: "Alegeti o data in viitor" })), - evaluations: string().refine(validateEmails, { + }, z.date().min(new Date(), { message: "Alegeti o data in viitor" })), + evaluations: z.string().refine(validateEmails, { message: "Ne pare rău, nu am putut procesa informațiile introduse. Vă rugăm să verificați informațiile și să încercați din nou.", }), }); -export type ReportInput = TypeOf; +export type ReportInput = z.infer; const ButtonGroup = ({ className }: { className?: string }) => (
    diff --git a/client2/src/pages/Profile/index.tsx b/client2/src/pages/Profile/index.tsx index f36fd86a..1971a2d9 100644 --- a/client2/src/pages/Profile/index.tsx +++ b/client2/src/pages/Profile/index.tsx @@ -5,7 +5,7 @@ import Heading from "@/components/Heading"; import Table from "@/components/Table"; import Button from "@/components/Button"; import Avatar from "@/components/Avatar"; -import { Link } from "react-router-dom"; +import { Link } from "@tanstack/react-router"; const Profile = () => { const user = useAppSelector((state) => state.userState.user); diff --git a/client2/src/pages/UserReports/index.tsx b/client2/src/pages/UserReports/index.tsx index 59d8e02b..d1ab1786 100644 --- a/client2/src/pages/UserReports/index.tsx +++ b/client2/src/pages/UserReports/index.tsx @@ -1,5 +1,5 @@ import React from "react"; -import { useParams } from "react-router-dom"; +import { useParams } from "@tanstack/react-router"; import { useGetUserReportsQuery } from "@/redux/api/userApi"; import TableHeadReports from "@/components/index/TableHeadReports"; import Section from "@/components/Section"; diff --git a/client2/src/pages/admin/CreateMentor/index.tsx b/client2/src/pages/admin/CreateMentor/index.tsx index 34b1ef4f..560faf71 100644 --- a/client2/src/pages/admin/CreateMentor/index.tsx +++ b/client2/src/pages/admin/CreateMentor/index.tsx @@ -10,27 +10,27 @@ import { } from "@/redux/api/userApi"; import { type SubmitHandler, useForm } from "react-hook-form"; import { zodResolver } from "@hookform/resolvers/zod"; -import { array, custom, number, object, string, TypeOf } from "zod"; +import { z } from "zod"; import { ErrorMessage } from "@hookform/error-message"; import MultiSelect from "@/components/MultiSelect"; -import { useNavigate } from "react-router-dom"; +import { useNavigate } from "@tanstack/react-router"; import { toast } from "react-toastify"; import Avatar from "@/components/Avatar"; -const mentorSchema = object({ - firstName: string().min(1, "Nume este obligatoriu"), - lastName: string().min(1, "Prenume este obligatoriu"), - email: string() - .min(1, "Adresa de email este obligatorie") - .email("Adresa de email este invalidă"), - bio: string().min(1, "Adaugati o scurta descriere"), - expertise: string().nullish(), - dimensions: array(number()).min(1, "Selectează cel puțin o specializare"), - programs: array(number()).min(1, "Selectează cel puțin un program"), - avatar: custom(), +const mentorSchema = z.object({ + firstName: z.string().min(1, "Nume este obligatoriu"), + lastName: z.string().min(1, "Prenume este obligatoriu"), + email: z + .email("Adresa de email este invalidă") + .min(1, "Adresa de email este obligatorie"), + bio: z.string().min(1, "Adaugati o scurta descriere"), + expertise: z.string().nullish(), + dimensions: z.array(z.number()).min(1, "Selectează cel puțin o specializare"), + programs: z.array(z.number()).min(1, "Selectează cel puțin un program"), + avatar: z.custom(), }); -export type MentorInput = TypeOf; +export type MentorInput = z.infer; const InputField = ({ label, diff --git a/client2/src/pages/admin/CreateProgram/index.tsx b/client2/src/pages/admin/CreateProgram/index.tsx index da5f3990..5de5d966 100644 --- a/client2/src/pages/admin/CreateProgram/index.tsx +++ b/client2/src/pages/admin/CreateProgram/index.tsx @@ -4,24 +4,45 @@ import Section from "@/components/Section"; import Heading from "@/components/Heading"; import Button from "@/components/Button"; import { zodResolver } from "@hookform/resolvers/zod"; -import { date, object, preprocess, string, TypeOf } from "zod"; +import { z } from "zod"; import { ErrorMessage } from "@hookform/error-message"; import { useCreateProgramMutation } from "@/redux/api/userApi"; -import { useNavigate } from "react-router-dom"; +import { useNavigate } from "@tanstack/react-router"; -const programSchema = object({ - name: string().min(1, "Denumirea programului este obligatorie"), - startDate: preprocess((arg) => { - if (typeof arg == "string" || arg instanceof Date) return new Date(arg); - }, date({ invalid_type_error: "Alegeti o data" }).min(new Date(), { message: "Alegeti o data in viitor" })), - endDate: preprocess((arg) => { - if (typeof arg == "string" || arg instanceof Date) return new Date(arg); - }, date({ invalid_type_error: "Alegeti o data" }).min(new Date(), { message: "Alegeti o data in viitor" })), - description: string(), - sponsorName: string().optional(), -}); +const programSchema = z + .object({ + name: z.string().min(1, "Denumirea programului este obligatorie"), + startDate: z.preprocess( + (arg) => + typeof arg === "string" || arg instanceof Date + ? new Date(arg) + : undefined, + z.date({ error: "Alegeți o dată validă" }) + ), + endDate: z.preprocess( + (arg) => + typeof arg === "string" || arg instanceof Date + ? new Date(arg) + : undefined, + z.date({ error: "Alegeți o dată validă" }) + ), + description: z.string().min(1, "Descrierea este obligatorie"), + sponsorName: z.string().optional(), + }) + .refine((data) => data.startDate >= new Date(), { + message: "Data de început trebuie să fie în viitor", + path: ["startDate"], + }) + .refine((data) => data.endDate >= new Date(), { + message: "Data de sfârșit trebuie să fie în viitor", + path: ["endDate"], + }) + .refine((data) => data.endDate >= data.startDate, { + message: "Data de sfârșit trebuie să fie după data de început", + path: ["endDate"], + }); -export type ProgramInput = TypeOf; +export type ProgramInput = z.infer; const Input = ({ register, name, label, errors, ...rest }) => (
    diff --git a/client2/src/pages/admin/CreateUser/index.tsx b/client2/src/pages/admin/CreateUser/index.tsx index dd1b5498..2808e6da 100644 --- a/client2/src/pages/admin/CreateUser/index.tsx +++ b/client2/src/pages/admin/CreateUser/index.tsx @@ -1,5 +1,5 @@ import React, { useEffect } from "react"; -import { array, custom, literal, number, object, string, TypeOf } from "zod"; +import { z } from "zod"; import { type SubmitHandler, useForm, FormProvider } from "react-hook-form"; import { zodResolver } from "@hookform/resolvers/zod"; import Heading from "@/components/Heading"; @@ -14,47 +14,48 @@ import { useGetDomainsQuery, useUploadMutation, } from "@/redux/api/userApi"; -import { useNavigate } from "react-router-dom"; +import { useNavigate } from "@tanstack/react-router"; import Cookies from "js-cookie"; import MultiSelect from "@/components/MultiSelect"; import { ErrorMessage } from "@hookform/error-message"; import Avatar from "@/components/Avatar"; -const registerSchema = object({ - ongName: string().min(1, "Numele organizatiei este obligatoriu"), - ongIdentificationNumber: string().min( - 1, - "Numarul de identifiare este obligatoriu" - ), - county: string().min(1, "Judetul este obligatoriu"), - city: string().min(1, "Orasul este obligatoriu"), - email: string() - .min(1, "Adresa de email este obligatorie") - .email("Adresa de email este invalidă"), - phone: string().min(1, "Telefonul este obligatoriu"), - avatar: custom(), - domains: array(number()), - website: string(), - keywords: string(), - description: string(), - contactFirstName: string(), - contactLastName: string(), - contactEmail: string() - .email("Adresa de email este invalida") - .optional() - .or(literal("")), - contactPhone: string(), - accountFacebook: string().optional(), - accountTwitter: string().optional(), - accountTiktok: string().optional(), - accountInstagram: string().optional(), - accountLinkedin: string().optional(), -}).refine((data) => data.password === data.confirmPassword, { - message: "Ne pare rau, parola nu coincide", - path: ["confirmPassword"], -}); +const registerSchema = z + .object({ + ongName: z.string().min(1, "Numele organizatiei este obligatoriu"), + ongIdentificationNumber: z + .string() + .min(1, "Numarul de identifiare este obligatoriu"), + county: z.string().min(1, "Judetul este obligatoriu"), + city: z.string().min(1, "Orasul este obligatoriu"), + email: z + .email("Adresa de email este invalidă") + .min(1, "Adresa de email este obligatorie"), + phone: z.string().min(1, "Telefonul este obligatoriu"), + avatar: z.custom(), + domains: z.array(z.number()), + website: z.string(), + keywords: z.string(), + description: z.string(), + contactFirstName: z.string(), + contactLastName: z.string(), + contactEmail: z + .email("Adresa de email este invalida") + .optional() + .or(z.literal("")), + contactPhone: z.string(), + accountFacebook: z.string().optional(), + accountTwitter: z.string().optional(), + accountTiktok: z.string().optional(), + accountInstagram: z.string().optional(), + accountLinkedin: z.string().optional(), + }) + .refine((data) => data.password === data.confirmPassword, { + message: "Ne pare rau, parola nu coincide", + path: ["confirmPassword"], + }); -export type RegisterInput = TypeOf; +export type RegisterInput = z.infer; const CreateUser = () => { const [submitRegister, { isSuccess, isError, error, data }] = diff --git a/client2/src/pages/admin/Program/ExportProgram.tsx b/client2/src/pages/admin/Program/ExportProgram.tsx index 6bdbb613..3ec23ada 100644 --- a/client2/src/pages/admin/Program/ExportProgram.tsx +++ b/client2/src/pages/admin/Program/ExportProgram.tsx @@ -42,7 +42,7 @@ const getSheets = (data: Program, matrix: Matrix): Sheet[] => { ? user.ongName.slice(0, 23) + "..." : user.ongName; - const rows = []; + const rows: any[] = []; user.reports.forEach((report: any) => { const evaluationsCompleted = evaluationsCompletedFilter( @@ -78,7 +78,7 @@ const getSheets = (data: Program, matrix: Matrix): Sheet[] => { "Scor total obținut": totalScore, }; - scoreByEvaluation.forEach(({ name, score }, index) => { + scoreByEvaluation?.forEach(({ name, score }, index) => { row[`Scor ${name}`] = score; row[`Comentariu ${name}`] = evaluationsCompleted .map((evaluation: any) => evaluation.dimensions[index].comment) diff --git a/client2/src/pages/admin/Program/index.tsx b/client2/src/pages/admin/Program/index.tsx index 31d925c1..99026b41 100644 --- a/client2/src/pages/admin/Program/index.tsx +++ b/client2/src/pages/admin/Program/index.tsx @@ -7,7 +7,7 @@ import { useGetUsersQuery, useUpdateProgramMutation, } from "@/redux/api/userApi"; -import { NavLink, useParams } from "react-router-dom"; +import { NavLink, useParams } from "@tanstack/react-router"; import FullScreenLoader from "@/components/FullScreenLoader"; import Table from "@/components/Table"; import Button from "@/components/Button"; @@ -76,7 +76,7 @@ const Program = () => { {data.name}
    - +
    @@ -130,14 +130,13 @@ const Program = () => { `${user.contactFirstName} ${user.contactLastName}`, "-", user.reports?.length - ? new Date(user.reports[user.reports.length - 1].createdAt).toLocaleString( - "ro-RO", - { - month: "short", - day: "numeric", - year: "numeric", - } - ) + ? new Date( + user.reports[user.reports.length - 1].createdAt + ).toLocaleString("ro-RO", { + month: "short", + day: "numeric", + year: "numeric", + }) : "-", Vezi, ])} diff --git a/client2/src/pages/admin/ProgramsList/ProgramsTable.tsx b/client2/src/pages/admin/ProgramsList/ProgramsTable.tsx index e322bb04..f3d338dc 100644 --- a/client2/src/pages/admin/ProgramsList/ProgramsTable.tsx +++ b/client2/src/pages/admin/ProgramsList/ProgramsTable.tsx @@ -9,15 +9,15 @@ import { useState, } from "react"; import { downloadExcel } from "react-export-table-to-excel"; -import { Link } from "react-router-dom"; -import { object, string, TypeOf } from "zod"; +import { Link } from "@tanstack/react-router"; +import { z } from "zod"; -const filtersSchema = object({ - search: string(), - startDate: string(), - endDate: string(), +const filtersSchema = z.object({ + search: z.string(), + startDate: z.string(), + endDate: z.string(), }); -export type FiltersInput = TypeOf; +export type FiltersInput = z.infer; const UsersTable = () => { const tableRef = useRef(null); diff --git a/client2/src/pages/admin/Report/index.tsx b/client2/src/pages/admin/Report/index.tsx index 4168d3fa..11b8e112 100644 --- a/client2/src/pages/admin/Report/index.tsx +++ b/client2/src/pages/admin/Report/index.tsx @@ -1,5 +1,5 @@ import React, { useMemo } from "react"; -import { useParams } from "react-router-dom"; +import { useParams } from "@tanstack/react-router"; import { useFindReportQuery, userApi } from "@/redux/api/userApi"; import Section from "@/components/Section"; import Heading from "@/components/Heading"; diff --git a/client2/src/pages/authenticated/EditProfile/index.tsx b/client2/src/pages/authenticated/EditProfile/index.tsx index ddd4457e..d2cf592e 100644 --- a/client2/src/pages/authenticated/EditProfile/index.tsx +++ b/client2/src/pages/authenticated/EditProfile/index.tsx @@ -1,5 +1,5 @@ import { useEffect, useMemo } from "react"; -import { custom, literal, number, object, string, TypeOf } from "zod"; +import { z } from "zod"; import { type SubmitHandler, useForm, FormProvider } from "react-hook-form"; import { zodResolver } from "@hookform/resolvers/zod"; import Heading from "@/components/Heading"; @@ -12,7 +12,7 @@ import { useUpdateUserMutation, useUploadMutation, } from "@/redux/api/userApi"; -import { useNavigate } from "react-router-dom"; +import { useNavigate } from "@tanstack/react-router"; import MultiSelect from "@/components/MultiSelect"; import { ErrorMessage } from "@hookform/error-message"; import Select from "@/components/Select"; @@ -20,39 +20,38 @@ import citiesByCounty from "@/lib/orase-dupa-judet.json"; import SocialNetworkLinks from "@/components/SocialNetworkLinks"; import Avatar from "@/components/Avatar"; -const ongProfileSchema = object({ - id: number(), - ongName: string().min(1, "Numele organizatiei este obligatoriu"), - ongIdentificationNumber: string().min( - 1, - "Numarul de identifiare este obligatoriu" - ), - county: string().min(1, "Judetul este obligatoriu"), - city: string().min(1, "Orasul este obligatoriu"), - email: string() - .min(1, "Adresa de email este obligatorie") - .email("Adresa de email este invalidă"), - phone: string().min(1, "Telefonul este obligatoriu"), - avatar: custom(), - domains: number().array().optional(), - website: string(), - keywords: string(), - description: string(), - contactFirstName: string(), - contactLastName: string(), - contactEmail: string() +const ongProfileSchema = z.object({ + id: z.number(), + ongName: z.string().min(1, "Numele organizatiei este obligatoriu"), + ongIdentificationNumber: z + .string() + .min(1, "Numarul de identifiare este obligatoriu"), + county: z.string().min(1, "Judetul este obligatoriu"), + city: z.string().min(1, "Orasul este obligatoriu"), + email: z + .email("Adresa de email este invalidă") + .min(1, "Adresa de email este obligatorie"), + phone: z.string().min(1, "Telefonul este obligatoriu"), + avatar: z.custom(), + domains: z.array(z.number()).optional(), + website: z.string(), + keywords: z.string(), + description: z.string(), + contactFirstName: z.string(), + contactLastName: z.string(), + contactEmail: z .email("Adresa de email este invalida") .optional() - .or(literal("")), - contactPhone: string(), - accountFacebook: string().optional(), - accountTwitter: string().optional(), - accountTiktok: string().optional(), - accountInstagram: string().optional(), - accountLinkedin: string().optional(), + .or(z.literal("")), + contactPhone: z.string(), + accountFacebook: z.string().optional(), + accountTwitter: z.string().optional(), + accountTiktok: z.string().optional(), + accountInstagram: z.string().optional(), + accountLinkedin: z.string().optional(), }); -export type OngProfileInput = TypeOf; +export type OngProfileInput = z.infer; const OngEditProfile = () => { const user = useAppSelector((state) => state.userState.user); diff --git a/client2/src/pages/authenticated/Mentor/index.tsx b/client2/src/pages/authenticated/Mentor/index.tsx index abb0e370..6cf84847 100644 --- a/client2/src/pages/authenticated/Mentor/index.tsx +++ b/client2/src/pages/authenticated/Mentor/index.tsx @@ -1,5 +1,5 @@ import React from "react"; -import { useParams } from "react-router-dom"; +import { useParams } from "@tanstack/react-router"; import { useGetUserReportsQuery } from "@/redux/api/userApi"; import Section from "@/components/Section"; import Heading from "@/components/Heading"; diff --git a/client2/src/pages/authenticated/Report/ReportInProgress.tsx b/client2/src/pages/authenticated/Report/ReportInProgress.tsx index 32ada5e1..c4b5dd82 100644 --- a/client2/src/pages/authenticated/Report/ReportInProgress.tsx +++ b/client2/src/pages/authenticated/Report/ReportInProgress.tsx @@ -6,7 +6,7 @@ import TableEvaluations from "@/components/TableEvaluations"; import Confirm from "@/components/Confirm"; import { useUpdateReportMutation } from "@/redux/api/userApi"; import { ErrorMessage } from "@hookform/error-message"; -import { object, string, date, preprocess, array, TypeOf } from "zod"; +import { z } from "zod"; import { zodResolver } from "@hookform/resolvers/zod"; import { useForm } from "react-hook-form"; @@ -55,13 +55,13 @@ const ReportInProgress = ({ report }) => { } }, [isSuccess]); - const reportSchema = object({ - deadline: preprocess((arg) => { + const reportSchema = z.object({ + deadline: z.preprocess((arg) => { if (typeof arg == "string" || arg instanceof Date) return new Date(arg); - }, date().min(new Date(), { message: "Alegeti o data in viitor" })), + }, z.date().min(new Date(), { message: "Alegeti o data in viitor" })), }); - type ReportInput = TypeOf; + type ReportInput = z.infer; const { register, handleSubmit, formState } = useForm({ resolver: zodResolver(reportSchema), diff --git a/client2/src/pages/authenticated/Report/index.tsx b/client2/src/pages/authenticated/Report/index.tsx index b34aede9..ba6b138c 100644 --- a/client2/src/pages/authenticated/Report/index.tsx +++ b/client2/src/pages/authenticated/Report/index.tsx @@ -1,5 +1,5 @@ import React, { useMemo } from "react"; -import { useParams } from "react-router-dom"; +import { useParams } from "@tanstack/react-router"; import { useFindReportQuery, userApi } from "@/redux/api/userApi"; import Section from "@/components/Section"; import Heading from "@/components/Heading"; diff --git a/client2/src/pages/mentor/EditProfile/index.tsx b/client2/src/pages/mentor/EditProfile/index.tsx index 4a946afa..fec072af 100644 --- a/client2/src/pages/mentor/EditProfile/index.tsx +++ b/client2/src/pages/mentor/EditProfile/index.tsx @@ -1,6 +1,6 @@ import React, { useEffect } from "react"; -import { array, boolean, custom, number, object, string, TypeOf } from "zod"; -import { SubmitHandler, useForm, FormProvider } from "react-hook-form"; +import { z } from "zod"; +import { type SubmitHandler, useForm, FormProvider } from "react-hook-form"; import { zodResolver } from "@hookform/resolvers/zod"; import Heading from "@/components/Heading"; import Section from "@/components/Section"; @@ -13,28 +13,28 @@ import { useUpdateUserMutation, useUploadMutation, } from "@/redux/api/userApi"; -import { useNavigate } from "react-router-dom"; +import { useNavigate } from "@tanstack/react-router"; import MultiSelect from "@/components/MultiSelect"; import { ErrorMessage } from "@hookform/error-message"; import Toggle from "@/components/Toggle"; import Select from "@/components/Select"; import Avatar from "@/components/Avatar"; -const mentorProfileSchema = object({ - firstName: string().min(1, "Nume este obligatoriu"), - lastName: string().min(1, "Prenume este obligatoriu"), - email: string() - .min(1, "Adresa de email este obligatorie") - .email("Adresa de email este invalidă"), - bio: string().min(1, "Adaugati o scurta descriere"), - expertise: string().nullish(), - dimensions: array(number()).min(1, "Selectează cel puțin o specializare"), - program: string(), - available: boolean(), - avatar: custom(), +const mentorProfileSchema = z.object({ + firstName: z.string().min(1, "Nume este obligatoriu"), + lastName: z.string().min(1, "Prenume este obligatoriu"), + email: z + .email("Adresa de email este invalidă") + .min(1, "Adresa de email este obligatorie"), + bio: z.string().min(1, "Adaugati o scurta descriere"), + expertise: z.string().nullish(), + dimensions: z.array(z.number()).min(1, "Selectează cel puțin o specializare"), + program: z.string(), + available: z.boolean(), + avatar: z.custom(), }); -export type MentorProfileInput = TypeOf; +export type MentorProfileInput = z.infer; const EditProfile = () => { const user = useAppSelector((state) => state.userState.user); @@ -55,7 +55,7 @@ const EditProfile = () => { defaultValues: { ...user, available: user.available || false, - program: user.program.id.toString(), + program: user.program.id.toz.String(), dimensions: user.dimensions.map(({ id }) => id), bio: user?.bio || "", }, @@ -97,7 +97,7 @@ const EditProfile = () => { formData.append(`files`, data.avatar[0], data.avatar[0].name); formData.append(`ref`, "plugin::users-permissions.user"); - formData.append(`refId`, user?.id?.toString() || ""); + formData.append(`refId`, user?.id?.toz.String() || ""); formData.append(`field`, "avatar"); uploadAvatar(formData); } diff --git a/client2/src/pages/mentor/NewActivity/index.tsx b/client2/src/pages/mentor/NewActivity/index.tsx index e563a2f9..57a28702 100644 --- a/client2/src/pages/mentor/NewActivity/index.tsx +++ b/client2/src/pages/mentor/NewActivity/index.tsx @@ -10,12 +10,12 @@ import { import Select from "@/components/Select"; import Form from "@/components/Form"; import { useAppSelector } from "@/redux/store"; -import { User } from "@/redux/api/types"; +import type { User } from "@/redux/api/types"; import { ErrorMessage } from "@hookform/error-message"; import { FormProvider, useForm } from "react-hook-form"; import { zodResolver } from "@hookform/resolvers/zod"; -import { object, string, TypeOf } from "zod"; -import { useNavigate } from "react-router-dom"; +import { z } from "zod"; +import { useNavigate } from "@tanstack/react-router"; const ButtonGroup = ({ className }: { className?: string }) => (
    @@ -26,16 +26,16 @@ const ButtonGroup = ({ className }: { className?: string }) => (
    ); -const activitySchema = object({ - user: string(), - dimension: string(), - startDate: string().min(1, "Introduceti data activitatii"), - type: string(), - duration: string().min(1, "Introduceti durata activitatii"), - notes: string().optional(), +const activitySchema = z.object({ + user: z.string(), + dimension: z.string(), + startDate: z.string().min(1, "Introduceti data activitatii"), + type: z.string(), + duration: z.string().min(1, "Introduceti durata activitatii"), + notes: z.string().optional(), }); -export type ActivityInput = TypeOf; +export type ActivityInput = z.infer; const NewActivity = () => { const user = useAppSelector((state) => state.userState.user); diff --git a/client2/src/pages/mentor/Report/index.tsx b/client2/src/pages/mentor/Report/index.tsx index a3078a7f..548c0440 100644 --- a/client2/src/pages/mentor/Report/index.tsx +++ b/client2/src/pages/mentor/Report/index.tsx @@ -1,5 +1,5 @@ import React, { useMemo } from "react"; -import { useParams } from "react-router-dom"; +import { useParams } from "@tanstack/react-router"; import { useFindReportQuery, userApi } from "@/redux/api/userApi"; import Section from "@/components/Section"; import Heading from "@/components/Heading"; diff --git a/client2/src/pages/public/ForgotPassword/index.tsx b/client2/src/pages/public/ForgotPassword/index.tsx index b9e9cbf4..24d50d52 100644 --- a/client2/src/pages/public/ForgotPassword/index.tsx +++ b/client2/src/pages/public/ForgotPassword/index.tsx @@ -1,19 +1,19 @@ -import React, { useCallback } from "react"; import screenshot from "@/assets/illustration.svg"; import Button from "@/components/Button"; -import { useForm } from "react-hook-form"; -import { object, string, TypeOf } from "zod"; -import { zodResolver } from "@hookform/resolvers/zod"; -import { ErrorMessage } from "@hookform/error-message"; import Section from "@/components/Section"; import { useForgotPasswordMutation } from "@/redux/api/authApi"; +import { ErrorMessage } from "@hookform/error-message"; +import { zodResolver } from "@hookform/resolvers/zod"; +import { useCallback } from "react"; +import { useForm } from "react-hook-form"; +import { z } from "zod"; -const forgotPasswordSchema = object({ - email: string() - .min(1, "Adresa de email este obligatorie") - .email("Adresa de email este invalidă"), +const forgotPasswordSchema = z.object({ + email: z + .email("Adresa de email este invalidă") + .min(1, "Adresa de email este obligatorie"), }); -export type ForgotPasswordInput = TypeOf; +export type ForgotPasswordInput = z.infer; const ForgotPassword = () => { const [sendForgotPasswordRequest] = useForgotPasswordMutation(); diff --git a/client2/src/pages/public/Login/index.tsx b/client2/src/pages/public/Login/index.tsx index 60c7e2c2..b8f06800 100644 --- a/client2/src/pages/public/Login/index.tsx +++ b/client2/src/pages/public/Login/index.tsx @@ -1,31 +1,51 @@ -import React, { memo, useEffect } from "react"; -import { Link, useNavigate } from "react-router-dom"; -import { SubmitHandler, useForm, FormProvider } from "react-hook-form"; -import { ErrorMessage } from "@hookform/error-message"; -import { object, string, TypeOf } from "zod"; -import { zodResolver } from "@hookform/resolvers/zod"; -import { useLoginUserMutation } from "@/redux/api/authApi"; -import Section from "@/components/Section"; -import { useAppDispatch } from "@/redux/store"; -import { setToken } from "@/redux/features/userSlice"; -import { toast } from "react-toastify"; -import Heading from "@/components/Heading"; import screenshot from "@/assets/illustration.svg"; import Button from "@/components/Button"; -import Form from "@/components/Form"; +import Heading from "@/components/Heading"; +import Section from "@/components/Section"; +import { useLoginUserMutation } from "@/redux/api/authApi"; +import { setToken } from "@/redux/features/userSlice"; +import { useAppDispatch } from "@/redux/store"; +import { ErrorMessage } from "@hookform/error-message"; +import { zodResolver } from "@hookform/resolvers/zod"; import Cookies from "js-cookie"; +import { memo, useEffect } from "react"; +import { + type FieldValues, + FormProvider, + type SubmitHandler, + useForm, + type Path, + type FieldErrors, + type UseFormRegister, +} from "react-hook-form"; +import { Link, useNavigate } from "@tanstack/react-router"; +import { toast } from "react-toastify"; +import { z } from "zod"; + +import { + Form, + FormControl, + FormDescription, + FormField, + FormItem, + FormLabel, + FormMessage, +} from "@/components/ui/form"; +import { Input } from "@/components/ui/input"; +import { PasswordInput } from "@/components/ui/password-input"; -const loginSchema = object({ - identifier: string() - .min(1, "Adresa de email este obligatorie") - .email("Adresa de email este invalidă"), - password: string() +const loginSchema = z.object({ + identifier: z + .email("Adresa de email este invalidă") + .min(1, "Adresa de email este obligatorie"), + password: z + .string() .min(1, "Parola este obligatorie") .min(8, "Parola trebuie sa contina cel putin 8 caractere") .max(32, "Parola trebuie sa contina cel mult 32 caractere"), }); -export type LoginInput = TypeOf; +export type LoginInput = z.infer; const FormHeader = memo(() => ( <> @@ -60,29 +80,10 @@ const FormFooter = memo(() => (
    )); -const Input = ({ register, name, label, errors, ...rest }) => ( -
    - -
    - - {errors && ( -
    - -
    - )} -
    -
    -); - const Login = memo(() => { const dispatch = useAppDispatch(); const navigate = useNavigate(); - const methods = useForm({ + const form = useForm({ resolver: zodResolver(loginSchema), }); @@ -90,7 +91,7 @@ const Login = memo(() => { register, formState: { errors }, handleSubmit, - } = methods; + } = form; const [loginUser, { isLoading, isError, error, isSuccess, data }] = useLoginUserMutation(); @@ -125,28 +126,48 @@ const Login = memo(() => { return (
    - -
    + + - ( + + Email + + + + + + )} /> - ( + + Parola + + + + + + )} /> - + -
    +
    {"screenshot"}
    diff --git a/client2/src/pages/public/Register/index.tsx b/client2/src/pages/public/Register/index.tsx index 6c1d4230..5f6d768c 100644 --- a/client2/src/pages/public/Register/index.tsx +++ b/client2/src/pages/public/Register/index.tsx @@ -1,7 +1,7 @@ import React, { useEffect, useMemo } from "react"; import { useRegisterUserMutation } from "@/redux/api/authApi"; -import { array, custom, literal, number, object, string, TypeOf } from "zod"; -import { SubmitHandler, useForm, FormProvider } from "react-hook-form"; +import { z } from "zod"; +import { type SubmitHandler, useForm, FormProvider } from "react-hook-form"; import { zodResolver } from "@hookform/resolvers/zod"; import Heading from "@/components/Heading"; import Section from "@/components/Section"; @@ -11,7 +11,7 @@ import { useAppDispatch } from "@/redux/store"; import { toast } from "react-toastify"; import SocialNetworkLinks from "@/components/SocialNetworkLinks"; import { useGetDomainsQuery, useUploadMutation } from "@/redux/api/userApi"; -import { useNavigate } from "react-router-dom"; +import { useNavigate } from "@tanstack/react-router"; import Cookies from "js-cookie"; import MultiSelect from "@/components/MultiSelect"; import { ErrorMessage } from "@hookform/error-message"; @@ -20,49 +20,53 @@ import Select from "@/components/Select"; import Form from "@/components/Form"; import Avatar from "@/components/Avatar"; -const registerSchema = object({ - ongName: string().min(1, "Numele organizatiei este obligatoriu"), - ongIdentificationNumber: string().min( - 1, - "Numarul de identifiare este obligatoriu" - ), - county: string().min(1, "Judetul este obligatoriu"), - city: string().min(1, "Orasul este obligatoriu"), - email: string() - .min(1, "Adresa de email este obligatorie") - .email("Adresa de email este invalidă"), - phone: string().min(1, "Telefonul este obligatoriu"), - password: string() - .min(1, "Parola este obligatorie") - .min(8, "Parola trebuie sa contina cel putin 8 caractere") - .max(32, "Parola trebuie sa contina cel mult 32 caractere"), - confirmPassword: string() - .min(1, "Parola este obligatorie") - .min(8, "Parola trebuie sa contina cel putin 8 caractere") - .max(32, "Parola trebuie sa contina cel mult 32 caractere"), - avatar: custom(), - domains: array(number()).optional(), - website: string(), - keywords: string(), - description: string(), - contactFirstName: string(), - contactLastName: string(), - contactEmail: string() - .email("Adresa de email este invalida") - .optional() - .or(literal("")), - contactPhone: string(), - accountFacebook: string().optional(), - accountTwitter: string().optional(), - accountTiktok: string().optional(), - accountInstagram: string().optional(), - accountLinkedin: string().optional(), -}).refine((data) => data.password === data.confirmPassword, { - message: "Ne pare rau, parola nu coincide", - path: ["confirmPassword"], -}); +const registerSchema = z + .object({ + ongName: z.string().min(1, "Numele organizatiei este obligatoriu"), + ongIdentificationNumber: z + .string() + .min(1, "Numarul de identifiare este obligatoriu"), + county: z.string().min(1, "Judetul este obligatoriu"), + city: z.string().min(1, "Orasul este obligatoriu"), + email: z + .string() + .min(1, "Adresa de email este obligatorie") + .email("Adresa de email este invalidă"), + phone: z.string().min(1, "Telefonul este obligatoriu"), + password: z + .string() + .min(1, "Parola este obligatorie") + .min(8, "Parola trebuie sa contina cel putin 8 caractere") + .max(32, "Parola trebuie sa contina cel mult 32 caractere"), + confirmPassword: z + .string() + .min(1, "Parola este obligatorie") + .min(8, "Parola trebuie sa contina cel putin 8 caractere") + .max(32, "Parola trebuie sa contina cel mult 32 caractere"), + avatar: z.custom(), + domains: z.array(z.number()).optional(), + website: z.string(), + keywords: z.string(), + description: z.string(), + contactFirstName: z.string(), + contactLastName: z.string(), + contactEmail: z + .email("Adresa de email este invalida") + .optional() + .or(z.literal("")), + contactPhone: z.string(), + accountFacebook: z.string().optional(), + accountTwitter: z.string().optional(), + accountTiktok: z.string().optional(), + accountInstagram: z.string().optional(), + accountLinkedin: z.string().optional(), + }) + .refine((data) => data.password === data.confirmPassword, { + message: "Ne pare rau, parola nu coincide", + path: ["confirmPassword"], + }); -export type RegisterInput = TypeOf; +export type RegisterInput = z.infer; const Register = () => { const [submitRegister, { isSuccess, isError, error, data }] = diff --git a/client2/src/pages/public/ResetPassword/index.tsx b/client2/src/pages/public/ResetPassword/index.tsx index 939252bd..50d232d9 100644 --- a/client2/src/pages/public/ResetPassword/index.tsx +++ b/client2/src/pages/public/ResetPassword/index.tsx @@ -2,26 +2,29 @@ import React, { useCallback, useEffect } from "react"; import screenshot from "@/assets/illustration.svg"; import Button from "@/components/Button"; import { useForm } from "react-hook-form"; -import { object, string, TypeOf } from "zod"; +import { z } from "zod"; import { zodResolver } from "@hookform/resolvers/zod"; import { ErrorMessage } from "@hookform/error-message"; import Section from "@/components/Section"; import { useResetPasswordMutation } from "@/redux/api/authApi"; -import { useSearchParams } from "react-router-dom"; -import { useNavigate } from "react-router-dom"; +import { useSearchParams } from "@tanstack/react-router"; +import { useNavigate } from "@tanstack/react-router"; import { toast } from "react-toastify"; -const resetPasswordSchema = object({ - password: string() - .min(1, "Parola este obligatorie") - .min(8, "Parola trebuie sa contina cel putin 8 caractere") - .max(32, "Parola trebuie sa contina cel mult 32 caractere"), - passwordConfirmation: string(), -}).refine((data) => data.password === data.passwordConfirmation, { - message: "Parola nu coincide", - path: ["passwordConfirmation"], -}); -export type ResetPasswordInput = TypeOf & { +const resetPasswordSchema = z + .object({ + password: z + .string() + .min(1, "Parola este obligatorie") + .min(8, "Parola trebuie sa contina cel putin 8 caractere") + .max(32, "Parola trebuie sa contina cel mult 32 caractere"), + passwordConfirmation: z.string(), + }) + .refine((data) => data.password === data.passwordConfirmation, { + message: "Parola nu coincide", + path: ["passwordConfirmation"], + }); +export type ResetPasswordInput = z.infer & { code: string; }; diff --git a/client2/src/pages/public/SetPassword/index.tsx b/client2/src/pages/public/SetPassword/index.tsx index bc77bd70..9fc1638f 100644 --- a/client2/src/pages/public/SetPassword/index.tsx +++ b/client2/src/pages/public/SetPassword/index.tsx @@ -2,13 +2,13 @@ import React, { useCallback, useEffect } from "react"; import screenshot from "@/assets/illustration.svg"; import Button from "@/components/Button"; import { useForm } from "react-hook-form"; -import { object, string, TypeOf } from "zod"; +import { z } from "zod"; import { zodResolver } from "@hookform/resolvers/zod"; import { ErrorMessage } from "@hookform/error-message"; import Section from "@/components/Section"; import { useLoginUserMutation } from "@/redux/api/authApi"; -import { useSearchParams } from "react-router-dom"; -import { useNavigate } from "react-router-dom"; +import { useSearchParams } from "@tanstack/react-router"; +import { useNavigate } from "@tanstack/react-router"; import { toast } from "react-toastify"; import { useGetRegistrationInfoQuery, @@ -18,17 +18,20 @@ import { setToken } from "@/redux/features/userSlice"; import Cookies from "js-cookie"; import { useAppDispatch } from "@/redux/store"; -const resetPasswordSchema = object({ - password: string() - .min(1, "Parola este obligatorie") - .min(8, "Parola trebuie sa contina cel putin 8 caractere") - .max(32, "Parola trebuie sa contina cel mult 32 caractere"), - passwordConfirmation: string(), -}).refine((data) => data.password === data.passwordConfirmation, { - message: "Parola nu coincide", - path: ["passwordConfirmation"], -}); -export type ResetPasswordInput = TypeOf & { +const resetPasswordSchema = z + .object({ + password: z + .string() + .min(1, "Parola este obligatorie") + .min(8, "Parola trebuie sa contina cel putin 8 caractere") + .max(32, "Parola trebuie sa contina cel mult 32 caractere"), + passwordConfirmation: z.string(), + }) + .refine((data) => data.password === data.passwordConfirmation, { + message: "Parola nu coincide", + path: ["passwordConfirmation"], + }); +export type ResetPasswordInput = z.infer & { code: string; }; diff --git a/client2/postcss.config.js b/client2/src/postcss.config.js similarity index 100% rename from client2/postcss.config.js rename to client2/src/postcss.config.js diff --git a/client2/src/redux/api/userApi.ts b/client2/src/redux/api/userApi.ts index 0a867a22..070cac05 100644 --- a/client2/src/redux/api/userApi.ts +++ b/client2/src/redux/api/userApi.ts @@ -4,7 +4,7 @@ import type { RootState } from "@/redux/store"; import { createApi, fetchBaseQuery } from "@reduxjs/toolkit/query/react"; import qs from "qs"; import { setUser } from "../features/userSlice"; -import { +import type { Dimension, Evaluation, EvaluationMatrix, diff --git a/client2/src/redux/store.tsx b/client2/src/redux/store.tsx index f780818f..fc044a9a 100644 --- a/client2/src/redux/store.tsx +++ b/client2/src/redux/store.tsx @@ -1,5 +1,9 @@ import { configureStore } from "@reduxjs/toolkit"; -import { TypedUseSelectorHook, useDispatch, useSelector } from "react-redux"; +import { + type TypedUseSelectorHook, + useDispatch, + useSelector, +} from "react-redux"; import { authApi } from "./api/authApi"; import { userApi } from "./api/userApi"; import userReducer from "./features/userSlice"; diff --git a/client2/src/routeTree.gen.ts b/client2/src/routeTree.gen.ts new file mode 100644 index 00000000..d204c269 --- /dev/null +++ b/client2/src/routeTree.gen.ts @@ -0,0 +1,59 @@ +/* eslint-disable */ + +// @ts-nocheck + +// noinspection JSUnusedGlobalSymbols + +// This file was automatically generated by TanStack Router. +// You should NOT make any changes in this file as it will be overwritten. +// Additionally, you should also exclude this file from your linter and/or formatter to prevent it from being checked or modified. + +import { Route as rootRouteImport } from './routes/__root' +import { Route as IndexRouteImport } from './routes/index' + +const IndexRoute = IndexRouteImport.update({ + id: '/', + path: '/', + getParentRoute: () => rootRouteImport, +} as any) + +export interface FileRoutesByFullPath { + '/': typeof IndexRoute +} +export interface FileRoutesByTo { + '/': typeof IndexRoute +} +export interface FileRoutesById { + __root__: typeof rootRouteImport + '/': typeof IndexRoute +} +export interface FileRouteTypes { + fileRoutesByFullPath: FileRoutesByFullPath + fullPaths: '/' + fileRoutesByTo: FileRoutesByTo + to: '/' + id: '__root__' | '/' + fileRoutesById: FileRoutesById +} +export interface RootRouteChildren { + IndexRoute: typeof IndexRoute +} + +declare module '@tanstack/react-router' { + interface FileRoutesByPath { + '/': { + id: '/' + path: '/' + fullPath: '/' + preLoaderRoute: typeof IndexRouteImport + parentRoute: typeof rootRouteImport + } + } +} + +const rootRouteChildren: RootRouteChildren = { + IndexRoute: IndexRoute, +} +export const routeTree = rootRouteImport + ._addFileChildren(rootRouteChildren) + ._addFileTypes() diff --git a/client2/src/router/index.tsx b/client2/src/router/index.tsx index 903a1a19..3621ed54 100644 --- a/client2/src/router/index.tsx +++ b/client2/src/router/index.tsx @@ -1,100 +1,96 @@ -import { Routes, Route, Navigate } from "react-router-dom"; -import LayoutApp from "@/components/LayoutApp"; -import LayoutEvaluation from "@/components/LayoutEvaluation"; -import LayoutDashboard from "@/components/LayoutDashboard"; -import Home from "@/pages/Home"; -import Evaluation from "@/pages/Evaluation"; -import ForgotPassword from "@/pages/public/ForgotPassword"; -import Login from "@/pages/public/Login"; -import ResetPassword from "@/pages/public/ResetPassword"; -import Register from "@/pages/public/Register"; -import SetPassword from "@/pages/public/SetPassword"; -import Report from "@/pages/authenticated/Report"; -import AdminReport from "@/pages/admin/Report"; -import NewReport from "@/pages/NewReport"; -import UserReports from "@/pages/UserReports"; -import { useAppSelector } from "@/redux/store"; -import Dashboard from "@/pages/Dashboard"; -import ReportsList from "@/pages/ReportsList"; -import UsersList from "@/pages/UsersList"; -import Profile from "@/pages/Profile"; -import Mentors from "@/pages/Mentors"; -import CreateMentor from "@/pages/admin/CreateMentor"; -import ProgramsList from "@/pages/admin/ProgramsList"; -import Program from "@/pages/admin/Program"; -import CreateProgram from "@/pages/admin/CreateProgram"; -import getUserType from "@/lib/userType"; -import HomeMentor from "@/pages/mentor/Home"; -import Activities from "@/pages/mentor/Activities"; -import NewActivity from "@/pages/mentor/NewActivity"; -import MentorProfile from "@/pages/mentor/Profile"; -import MentorEditProfile from "@/pages/mentor/EditProfile"; -import AuthenticatedMentorsList from "@/pages/authenticated/MentorsList"; -import AuthenticatedMentor from "@/pages/authenticated/Mentor"; -import CreateUser from "@/pages/admin/CreateUser"; -import MentorReport from "@/pages/mentor/Report"; -import OngEditProfile from "@/pages/authenticated/EditProfile"; -import AuthenticatedMatrix from "@/pages/authenticated/Matrix"; -import Matrix from "@/components/Matrix"; +// import { Routes, Route, Navigate } from "@tanstack/react-router"; +// import LayoutApp from "@/components/LayoutApp"; +// import LayoutEvaluation from "@/components/LayoutEvaluation"; +// import LayoutDashboard from "@/components/LayoutDashboard"; +// import Home from "@/pages/Home"; +// import Evaluation from "@/pages/Evaluation"; +// import ForgotPassword from "@/pages/public/ForgotPassword"; +// import Login from "@/pages/public/Login"; +// import ResetPassword from "@/pages/public/ResetPassword"; +// import Register from "@/pages/public/Register"; +// import SetPassword from "@/pages/public/SetPassword"; +// import Report from "@/pages/authenticated/Report"; +// import AdminReport from "@/pages/admin/Report"; +// import NewReport from "@/pages/NewReport"; +// import UserReports from "@/pages/UserReports"; +// import { useAppSelector } from "@/redux/store"; +// import Dashboard from "@/pages/Dashboard"; +// import ReportsList from "@/pages/ReportsList"; +// import UsersList from "@/pages/UsersList"; +// import Profile from "@/pages/Profile"; +// import Mentors from "@/pages/Mentors"; +// import CreateMentor from "@/pages/admin/CreateMentor"; +// import ProgramsList from "@/pages/admin/ProgramsList"; +// import Program from "@/pages/admin/Program"; +// import CreateProgram from "@/pages/admin/CreateProgram"; +// import getUserType from "@/lib/userType"; +// import HomeMentor from "@/pages/mentor/Home"; +// import Activities from "@/pages/mentor/Activities"; +// import NewActivity from "@/pages/mentor/NewActivity"; +// import MentorProfile from "@/pages/mentor/Profile"; +// import MentorEditProfile from "@/pages/mentor/EditProfile"; +// import AuthenticatedMentorsList from "@/pages/authenticated/MentorsList"; +// import AuthenticatedMentor from "@/pages/authenticated/Mentor"; +// import CreateUser from "@/pages/admin/CreateUser"; +// import MentorReport from "@/pages/mentor/Report"; +// import OngEditProfile from "@/pages/authenticated/EditProfile"; +// import AuthenticatedMatrix from "@/pages/authenticated/Matrix"; +// import Matrix from "@/components/Matrix"; -const Router = () => { - const user = useAppSelector((state) => state.userState.user); - const userType = getUserType(user); +// const Router = () => { +// const user = useAppSelector((state) => state.userState.user); +// const userType = getUserType(user); - return ( - - }> - } /> - - {userType === "fdsc" ? ( - }> - } /> - } /> - } /> - } /> - } /> - } /> - } /> - } /> - } /> - } /> - } /> - } /> - - ) : userType === "authenticated" ? ( - }> - } /> - } /> - } /> - } /> - } /> - } /> - } /> - } /> - - ) : userType === "mentor" ? ( - }> - } /> - } /> - } /> - } /> - } /> - } /> - - ) : ( - }> - } /> - } /> - } /> - } /> - } /> - } /> - } /> - - )} - } /> - - ); -}; +// return ( +// +// }> +// } /> +// +// {userType === "fdsc" ? ( +// }> +// } /> +// } /> +// } /> +// } /> +// } /> +// } /> +// } /> +// } /> +// } /> +// } /> +// } /> +// +// ) : userType === "authenticated" ? ( +// }> +// } /> +// } /> +// } /> +// } /> +// } /> +// } /> +// } /> +// +// ) : userType === "mentor" ? ( +// }> +// } /> +// } /> +// } /> +// } /> +// } /> +// +// ) : ( +// }> +// } /> +// } /> +// } /> +// } /> +// } /> +// } /> +// +// )} +// } /> +// +// ); +// }; -export default Router; +// export default Router; diff --git a/client2/src/routes/__root.tsx b/client2/src/routes/__root.tsx new file mode 100644 index 00000000..a585820b --- /dev/null +++ b/client2/src/routes/__root.tsx @@ -0,0 +1,23 @@ +import ScrollToTop from "@/components/ScrollToTop"; +import type { QueryClient } from "@tanstack/react-query"; +import { createRootRouteWithContext, Outlet } from "@tanstack/react-router"; +import { TanStackRouterDevtools } from "@tanstack/react-router-devtools"; +import { ToastContainer } from "react-toastify"; + +export const Route = createRootRouteWithContext<{ + // auth: typeof auth; + queryClient: QueryClient; +}>()({ + component: Root, +}); + +export function Root() { + return ( + <> + + {import.meta.env.DEV && } + + + + ); +} diff --git a/client2/src/routes/index.tsx b/client2/src/routes/index.tsx new file mode 100644 index 00000000..0e9f9c05 --- /dev/null +++ b/client2/src/routes/index.tsx @@ -0,0 +1,30 @@ +import LayoutApp from "@/components/LayoutApp"; +import getUserType from "@/lib/userType"; +import Dashboard from "@/pages/Dashboard"; +import Home from "@/pages/Home"; +import HomeMentor from "@/pages/mentor/Home"; +import { useAppSelector } from "@/redux/store"; +import { createFileRoute } from "@tanstack/react-router"; + +export const Route = createFileRoute("/")({ + component: RouteComponent, +}); + +function RouteComponent() { + const user = useAppSelector((state) => state.userState.user); + const userType = getUserType(user); + + return ( + + {userType === "fdsc" ? ( + + ) : userType === "authenticated" ? ( + + ) : userType === "mentor" ? ( + + ) : ( + + )} + + ); +} diff --git a/client2/src/styles/tailwind.config.css b/client2/src/styles/tailwind.config.css deleted file mode 100644 index aad11c75..00000000 --- a/client2/src/styles/tailwind.config.css +++ /dev/null @@ -1,61 +0,0 @@ -/** - * Tailwind CSS v4 Configuration - * - * This file configures Tailwind CSS v4 for the web app. - * It includes paths to scan for the UI package components - * and maps CSS variables to Tailwind utility classes. - * - * @see https://tailwindcss.com/docs/v4-beta - * - * SPDX-FileCopyrightText: 2014-present Kriasoft - * SPDX-License-Identifier: MIT - */ - -@import "tailwindcss"; - - -/* Custom dark mode variant */ -@custom-variant dark (&:is(.dark *)); - -/* Theme configuration */ -@theme inline { - /* Border radius values */ - --radius-sm: calc(var(--radius) - 4px); - --radius-md: calc(var(--radius) - 2px); - --radius-lg: var(--radius); - --radius-xl: calc(var(--radius) + 4px); - - /* Color mappings for Tailwind utilities */ - --color-background: var(--background); - --color-foreground: var(--foreground); - --color-card: var(--card); - --color-card-foreground: var(--card-foreground); - --color-popover: var(--popover); - --color-popover-foreground: var(--popover-foreground); - --color-primary: var(--primary); - --color-primary-foreground: var(--primary-foreground); - --color-secondary: var(--secondary); - --color-secondary-foreground: var(--secondary-foreground); - --color-muted: var(--muted); - --color-muted-foreground: var(--muted-foreground); - --color-accent: var(--accent); - --color-accent-foreground: var(--accent-foreground); - --color-destructive: var(--destructive); - --color-destructive-foreground: var(--destructive-foreground); - --color-border: var(--border); - --color-input: var(--input); - --color-ring: var(--ring); - --color-chart-1: var(--chart-1); - --color-chart-2: var(--chart-2); - --color-chart-3: var(--chart-3); - --color-chart-4: var(--chart-4); - --color-chart-5: var(--chart-5); - --color-sidebar: var(--sidebar); - --color-sidebar-foreground: var(--sidebar-foreground); - --color-sidebar-primary: var(--sidebar-primary); - --color-sidebar-primary-foreground: var(--sidebar-primary-foreground); - --color-sidebar-accent: var(--sidebar-accent); - --color-sidebar-accent-foreground: var(--sidebar-accent-foreground); - --color-sidebar-border: var(--sidebar-border); - --color-sidebar-ring: var(--sidebar-ring); -} diff --git a/client2/tsconfig.json b/client2/tsconfig.json index b6ceb855..900555ee 100644 --- a/client2/tsconfig.json +++ b/client2/tsconfig.json @@ -50,10 +50,7 @@ } }, "include": [ - "**/*.ts", - "**/*.tsx", - "**/*.json", - "./global.d.ts" + "src" ], "exclude": [ "**/dist/**/*", diff --git a/client2/vite.config.ts b/client2/vite.config.ts index a7d22baf..15a4c508 100644 --- a/client2/vite.config.ts +++ b/client2/vite.config.ts @@ -1,11 +1,13 @@ /* SPDX-FileCopyrightText: 2014-present Kriasoft */ /* SPDX-License-Identifier: MIT */ - +import path from "path"; +import tailwindcss from "@tailwindcss/vite"; import react from "@vitejs/plugin-react-swc"; import { URL, fileURLToPath } from "node:url"; import { loadEnv } from "vite"; import tsconfigPaths from "vite-tsconfig-paths"; import { defineProject } from "vitest/config"; +import { tanstackRouter } from "@tanstack/router-plugin/vite"; const publicEnvVars = ["VITE_SERVER_ENDPOINT", "NODE_ENV"]; @@ -23,44 +25,34 @@ export default defineProject(({ mode }) => { }); return { - cacheDir: fileURLToPath(new URL("../../.cache/vite-app", import.meta.url)), - - build: { - rollupOptions: { - output: { - assetFileNames: "_app/assets/[name]-[hash][extname]", - chunkFileNames: "_app/assets/[name]-[hash].js", - entryFileNames: "_app/assets/[name]-[hash].js", - manualChunks: { - react: ["react", "react-dom"], - ui: [ - "@radix-ui/react-slot", - "class-variance-authority", - "clsx", - "tailwind-merge", - ], - }, - }, - }, - }, - resolve: { - conditions: ["module", "browser", "development|production"], + alias: { + "@": path.resolve(__dirname, "./src"), + }, }, css: { - postcss: "./postcss.config.js", + postcss: "./src/postcss.config.js", }, plugins: [ tsconfigPaths(), + tanstackRouter({ + autoCodeSplitting: true, + // eslint-disable-next-line @typescript-eslint/no-explicit-any + }) as any, // https://github.com/vitejs/vite-plugin-react/tree/main/packages/plugin-react-swc react(), + tailwindcss(), ], - test: { - ...{ cache: { dir: "../../.cache/vitest" } }, - environment: "happy-dom", + server: { + host: true, // allows access via LAN/Docker + strictPort: false, + hmr: { + protocol: "ws", // or "wss" if using HTTPS + host: "localhost", // change to your machine IP if accessed remotely + }, }, }; }); From 011e6f966fe77ed55451dc98dbd27f3f74114479 Mon Sep 17 00:00:00 2001 From: Ion Dormenco Date: Sat, 13 Sep 2025 12:33:48 +0300 Subject: [PATCH 27/61] add routes --- client2/src/components/LayoutApp/index.tsx | 5 +- .../src/components/LayoutDashboard/index.tsx | 7 +- client2/src/index.tsx | 26 +- client2/src/routeTree.gen.ts | 679 +++++++++++++++++- client2/src/router/index.tsx | 96 --- client2/src/routes/(app)/activities.tsx | 22 + client2/src/routes/(app)/create/activity.tsx | 15 + client2/src/routes/(app)/create/mentor.tsx | 15 + client2/src/routes/(app)/create/program.tsx | 15 + client2/src/routes/(app)/create/report.tsx | 15 + client2/src/routes/(app)/create/route.tsx | 16 + client2/src/routes/(app)/create/user.tsx | 15 + .../routes/(app)/evaluation/$evaluationId.tsx | 10 + client2/src/routes/(app)/evaluation/route.tsx | 6 + client2/src/routes/(app)/matrix.tsx | 21 + client2/src/routes/(app)/mentors.tsx | 28 + client2/src/routes/(app)/profile/edit.tsx | 22 + client2/src/routes/(app)/profile/index.tsx | 24 + client2/src/routes/(app)/profile/route.tsx | 16 + client2/src/routes/(app)/programs/index.tsx | 15 + .../src/routes/(app)/programs/programId.tsx | 15 + client2/src/routes/(app)/programs/route.tsx | 6 + .../src/routes/(app)/reports/$reportId.tsx | 25 + client2/src/routes/(app)/reports/index.tsx | 15 + client2/src/routes/(app)/reports/route.tsx | 16 + client2/src/routes/(app)/users/$userId.tsx | 22 + client2/src/routes/(app)/users/index.tsx | 15 + client2/src/routes/(app)/users/route.tsx | 16 + client2/src/routes/(auth)/confirm-email.tsx | 7 + client2/src/routes/(auth)/forgot-password.tsx | 6 + client2/src/routes/(auth)/login.tsx | 6 + client2/src/routes/(auth)/register.tsx | 6 + client2/src/routes/(auth)/reset-password.tsx | 10 + client2/src/routes/(auth)/route.tsx | 6 + 34 files changed, 1110 insertions(+), 129 deletions(-) delete mode 100644 client2/src/router/index.tsx create mode 100644 client2/src/routes/(app)/activities.tsx create mode 100644 client2/src/routes/(app)/create/activity.tsx create mode 100644 client2/src/routes/(app)/create/mentor.tsx create mode 100644 client2/src/routes/(app)/create/program.tsx create mode 100644 client2/src/routes/(app)/create/report.tsx create mode 100644 client2/src/routes/(app)/create/route.tsx create mode 100644 client2/src/routes/(app)/create/user.tsx create mode 100644 client2/src/routes/(app)/evaluation/$evaluationId.tsx create mode 100644 client2/src/routes/(app)/evaluation/route.tsx create mode 100644 client2/src/routes/(app)/matrix.tsx create mode 100644 client2/src/routes/(app)/mentors.tsx create mode 100644 client2/src/routes/(app)/profile/edit.tsx create mode 100644 client2/src/routes/(app)/profile/index.tsx create mode 100644 client2/src/routes/(app)/profile/route.tsx create mode 100644 client2/src/routes/(app)/programs/index.tsx create mode 100644 client2/src/routes/(app)/programs/programId.tsx create mode 100644 client2/src/routes/(app)/programs/route.tsx create mode 100644 client2/src/routes/(app)/reports/$reportId.tsx create mode 100644 client2/src/routes/(app)/reports/index.tsx create mode 100644 client2/src/routes/(app)/reports/route.tsx create mode 100644 client2/src/routes/(app)/users/$userId.tsx create mode 100644 client2/src/routes/(app)/users/index.tsx create mode 100644 client2/src/routes/(app)/users/route.tsx create mode 100644 client2/src/routes/(auth)/confirm-email.tsx create mode 100644 client2/src/routes/(auth)/forgot-password.tsx create mode 100644 client2/src/routes/(auth)/login.tsx create mode 100644 client2/src/routes/(auth)/register.tsx create mode 100644 client2/src/routes/(auth)/reset-password.tsx create mode 100644 client2/src/routes/(auth)/route.tsx diff --git a/client2/src/components/LayoutApp/index.tsx b/client2/src/components/LayoutApp/index.tsx index ca1f8537..433b08f9 100644 --- a/client2/src/components/LayoutApp/index.tsx +++ b/client2/src/components/LayoutApp/index.tsx @@ -2,11 +2,12 @@ import type { ReactNode } from "react"; import "react-toastify/dist/ReactToastify.css"; import Footer from "../Footer"; import Navbar from "../Navbar"; +import { Outlet } from "@tanstack/react-router"; -const LayoutApp = ({ children }: { children: ReactNode }) => ( +const LayoutApp = ({ children }: { children?: ReactNode }) => (
    -
    {children}
    +
    {children ?? }
    ); diff --git a/client2/src/components/LayoutDashboard/index.tsx b/client2/src/components/LayoutDashboard/index.tsx index 79a2c161..05085f98 100644 --- a/client2/src/components/LayoutDashboard/index.tsx +++ b/client2/src/components/LayoutDashboard/index.tsx @@ -2,13 +2,12 @@ import MadeBy from "@/components/MadeBy"; import Navbar from "@/components/Navbar"; import Section from "@/components/Section"; import { Outlet } from "@tanstack/react-router"; +import type { ReactNode } from "react"; -const LayoutDashboard = () => ( +const LayoutDashboard = ({ children }: { children?: ReactNode }) => (
    -
    - -
    +
    {children ?? }
    diff --git a/client2/src/index.tsx b/client2/src/index.tsx index b1fc1a26..34351d57 100644 --- a/client2/src/index.tsx +++ b/client2/src/index.tsx @@ -1,20 +1,16 @@ /* SPDX-FileCopyrightText: 2014-present Kriasoft */ /* SPDX-License-Identifier: MIT */ +import { QueryClientProvider } from "@tanstack/react-query"; +import { ReactQueryDevtools } from "@tanstack/react-query-devtools"; +import { createRouter, RouterProvider } from "@tanstack/react-router"; import { StrictMode } from "react"; import { createRoot } from "react-dom/client"; -import { store } from "./redux/store"; import { Provider } from "react-redux"; -import { BrowserRouter } from "@tanstack/react-router"; -import { ToastContainer } from "react-toastify"; import AuthMiddleware from "./components/AuthMiddleware"; -import Router from "./router"; -import ScrollToTop from "./components/ScrollToTop"; import "./globals.css"; -import { QueryClientProvider } from "@tanstack/react-query"; -import { ReactQueryDevtools } from "@tanstack/react-query-devtools"; -import { createRouter, RouterProvider } from "@tanstack/react-router"; import { queryClient } from "./lib/query"; +import { store } from "./redux/store"; import { routeTree } from "./routeTree.gen"; const router = createRouter({ @@ -29,20 +25,6 @@ const container = document.getElementById("root"); const root = createRoot(container!); root.render( - // - // - // - // - // - // - // - // - // - // - // - // - // - diff --git a/client2/src/routeTree.gen.ts b/client2/src/routeTree.gen.ts index d204c269..37f06296 100644 --- a/client2/src/routeTree.gen.ts +++ b/client2/src/routeTree.gen.ts @@ -9,38 +9,395 @@ // Additionally, you should also exclude this file from your linter and/or formatter to prevent it from being checked or modified. import { Route as rootRouteImport } from './routes/__root' +import { Route as authRouteRouteImport } from './routes/(auth)/route' import { Route as IndexRouteImport } from './routes/index' +import { Route as authResetPasswordRouteImport } from './routes/(auth)/reset-password' +import { Route as authRegisterRouteImport } from './routes/(auth)/register' +import { Route as authLoginRouteImport } from './routes/(auth)/login' +import { Route as authForgotPasswordRouteImport } from './routes/(auth)/forgot-password' +import { Route as authConfirmEmailRouteImport } from './routes/(auth)/confirm-email' +import { Route as appMentorsRouteImport } from './routes/(app)/mentors' +import { Route as appMatrixRouteImport } from './routes/(app)/matrix' +import { Route as appActivitiesRouteImport } from './routes/(app)/activities' +import { Route as appUsersRouteRouteImport } from './routes/(app)/users/route' +import { Route as appReportsRouteRouteImport } from './routes/(app)/reports/route' +import { Route as appProgramsRouteRouteImport } from './routes/(app)/programs/route' +import { Route as appProfileRouteRouteImport } from './routes/(app)/profile/route' +import { Route as appEvaluationRouteRouteImport } from './routes/(app)/evaluation/route' +import { Route as appCreateRouteRouteImport } from './routes/(app)/create/route' +import { Route as appUsersIndexRouteImport } from './routes/(app)/users/index' +import { Route as appReportsIndexRouteImport } from './routes/(app)/reports/index' +import { Route as appProgramsIndexRouteImport } from './routes/(app)/programs/index' +import { Route as appProfileIndexRouteImport } from './routes/(app)/profile/index' +import { Route as appUsersUserIdRouteImport } from './routes/(app)/users/$userId' +import { Route as appReportsReportIdRouteImport } from './routes/(app)/reports/$reportId' +import { Route as appProgramsProgramIdRouteImport } from './routes/(app)/programs/programId' +import { Route as appProfileEditRouteImport } from './routes/(app)/profile/edit' +import { Route as appEvaluationEvaluationIdRouteImport } from './routes/(app)/evaluation/$evaluationId' +import { Route as appCreateUserRouteImport } from './routes/(app)/create/user' +import { Route as appCreateReportRouteImport } from './routes/(app)/create/report' +import { Route as appCreateProgramRouteImport } from './routes/(app)/create/program' +import { Route as appCreateMentorRouteImport } from './routes/(app)/create/mentor' +import { Route as appCreateActivityRouteImport } from './routes/(app)/create/activity' +const authRouteRoute = authRouteRouteImport.update({ + id: '/(auth)', + getParentRoute: () => rootRouteImport, +} as any) const IndexRoute = IndexRouteImport.update({ id: '/', path: '/', getParentRoute: () => rootRouteImport, } as any) +const authResetPasswordRoute = authResetPasswordRouteImport.update({ + id: '/reset-password', + path: '/reset-password', + getParentRoute: () => authRouteRoute, +} as any) +const authRegisterRoute = authRegisterRouteImport.update({ + id: '/register', + path: '/register', + getParentRoute: () => authRouteRoute, +} as any) +const authLoginRoute = authLoginRouteImport.update({ + id: '/login', + path: '/login', + getParentRoute: () => authRouteRoute, +} as any) +const authForgotPasswordRoute = authForgotPasswordRouteImport.update({ + id: '/forgot-password', + path: '/forgot-password', + getParentRoute: () => authRouteRoute, +} as any) +const authConfirmEmailRoute = authConfirmEmailRouteImport.update({ + id: '/confirm-email', + path: '/confirm-email', + getParentRoute: () => authRouteRoute, +} as any) +const appMentorsRoute = appMentorsRouteImport.update({ + id: '/(app)/mentors', + path: '/mentors', + getParentRoute: () => rootRouteImport, +} as any) +const appMatrixRoute = appMatrixRouteImport.update({ + id: '/(app)/matrix', + path: '/matrix', + getParentRoute: () => rootRouteImport, +} as any) +const appActivitiesRoute = appActivitiesRouteImport.update({ + id: '/(app)/activities', + path: '/activities', + getParentRoute: () => rootRouteImport, +} as any) +const appUsersRouteRoute = appUsersRouteRouteImport.update({ + id: '/(app)/users', + path: '/users', + getParentRoute: () => rootRouteImport, +} as any) +const appReportsRouteRoute = appReportsRouteRouteImport.update({ + id: '/(app)/reports', + path: '/reports', + getParentRoute: () => rootRouteImport, +} as any) +const appProgramsRouteRoute = appProgramsRouteRouteImport.update({ + id: '/(app)/programs', + path: '/programs', + getParentRoute: () => rootRouteImport, +} as any) +const appProfileRouteRoute = appProfileRouteRouteImport.update({ + id: '/(app)/profile', + path: '/profile', + getParentRoute: () => rootRouteImport, +} as any) +const appEvaluationRouteRoute = appEvaluationRouteRouteImport.update({ + id: '/(app)/evaluation', + path: '/evaluation', + getParentRoute: () => rootRouteImport, +} as any) +const appCreateRouteRoute = appCreateRouteRouteImport.update({ + id: '/(app)/create', + path: '/create', + getParentRoute: () => rootRouteImport, +} as any) +const appUsersIndexRoute = appUsersIndexRouteImport.update({ + id: '/', + path: '/', + getParentRoute: () => appUsersRouteRoute, +} as any) +const appReportsIndexRoute = appReportsIndexRouteImport.update({ + id: '/', + path: '/', + getParentRoute: () => appReportsRouteRoute, +} as any) +const appProgramsIndexRoute = appProgramsIndexRouteImport.update({ + id: '/', + path: '/', + getParentRoute: () => appProgramsRouteRoute, +} as any) +const appProfileIndexRoute = appProfileIndexRouteImport.update({ + id: '/', + path: '/', + getParentRoute: () => appProfileRouteRoute, +} as any) +const appUsersUserIdRoute = appUsersUserIdRouteImport.update({ + id: '/$userId', + path: '/$userId', + getParentRoute: () => appUsersRouteRoute, +} as any) +const appReportsReportIdRoute = appReportsReportIdRouteImport.update({ + id: '/$reportId', + path: '/$reportId', + getParentRoute: () => appReportsRouteRoute, +} as any) +const appProgramsProgramIdRoute = appProgramsProgramIdRouteImport.update({ + id: '/programId', + path: '/programId', + getParentRoute: () => appProgramsRouteRoute, +} as any) +const appProfileEditRoute = appProfileEditRouteImport.update({ + id: '/edit', + path: '/edit', + getParentRoute: () => appProfileRouteRoute, +} as any) +const appEvaluationEvaluationIdRoute = + appEvaluationEvaluationIdRouteImport.update({ + id: '/$evaluationId', + path: '/$evaluationId', + getParentRoute: () => appEvaluationRouteRoute, + } as any) +const appCreateUserRoute = appCreateUserRouteImport.update({ + id: '/user', + path: '/user', + getParentRoute: () => appCreateRouteRoute, +} as any) +const appCreateReportRoute = appCreateReportRouteImport.update({ + id: '/report', + path: '/report', + getParentRoute: () => appCreateRouteRoute, +} as any) +const appCreateProgramRoute = appCreateProgramRouteImport.update({ + id: '/program', + path: '/program', + getParentRoute: () => appCreateRouteRoute, +} as any) +const appCreateMentorRoute = appCreateMentorRouteImport.update({ + id: '/mentor', + path: '/mentor', + getParentRoute: () => appCreateRouteRoute, +} as any) +const appCreateActivityRoute = appCreateActivityRouteImport.update({ + id: '/activity', + path: '/activity', + getParentRoute: () => appCreateRouteRoute, +} as any) export interface FileRoutesByFullPath { - '/': typeof IndexRoute + '/': typeof authRouteRouteWithChildren + '/create': typeof appCreateRouteRouteWithChildren + '/evaluation': typeof appEvaluationRouteRouteWithChildren + '/profile': typeof appProfileRouteRouteWithChildren + '/programs': typeof appProgramsRouteRouteWithChildren + '/reports': typeof appReportsRouteRouteWithChildren + '/users': typeof appUsersRouteRouteWithChildren + '/activities': typeof appActivitiesRoute + '/matrix': typeof appMatrixRoute + '/mentors': typeof appMentorsRoute + '/confirm-email': typeof authConfirmEmailRoute + '/forgot-password': typeof authForgotPasswordRoute + '/login': typeof authLoginRoute + '/register': typeof authRegisterRoute + '/reset-password': typeof authResetPasswordRoute + '/create/activity': typeof appCreateActivityRoute + '/create/mentor': typeof appCreateMentorRoute + '/create/program': typeof appCreateProgramRoute + '/create/report': typeof appCreateReportRoute + '/create/user': typeof appCreateUserRoute + '/evaluation/$evaluationId': typeof appEvaluationEvaluationIdRoute + '/profile/edit': typeof appProfileEditRoute + '/programs/programId': typeof appProgramsProgramIdRoute + '/reports/$reportId': typeof appReportsReportIdRoute + '/users/$userId': typeof appUsersUserIdRoute + '/profile/': typeof appProfileIndexRoute + '/programs/': typeof appProgramsIndexRoute + '/reports/': typeof appReportsIndexRoute + '/users/': typeof appUsersIndexRoute } export interface FileRoutesByTo { - '/': typeof IndexRoute + '/': typeof authRouteRouteWithChildren + '/create': typeof appCreateRouteRouteWithChildren + '/evaluation': typeof appEvaluationRouteRouteWithChildren + '/activities': typeof appActivitiesRoute + '/matrix': typeof appMatrixRoute + '/mentors': typeof appMentorsRoute + '/confirm-email': typeof authConfirmEmailRoute + '/forgot-password': typeof authForgotPasswordRoute + '/login': typeof authLoginRoute + '/register': typeof authRegisterRoute + '/reset-password': typeof authResetPasswordRoute + '/create/activity': typeof appCreateActivityRoute + '/create/mentor': typeof appCreateMentorRoute + '/create/program': typeof appCreateProgramRoute + '/create/report': typeof appCreateReportRoute + '/create/user': typeof appCreateUserRoute + '/evaluation/$evaluationId': typeof appEvaluationEvaluationIdRoute + '/profile/edit': typeof appProfileEditRoute + '/programs/programId': typeof appProgramsProgramIdRoute + '/reports/$reportId': typeof appReportsReportIdRoute + '/users/$userId': typeof appUsersUserIdRoute + '/profile': typeof appProfileIndexRoute + '/programs': typeof appProgramsIndexRoute + '/reports': typeof appReportsIndexRoute + '/users': typeof appUsersIndexRoute } export interface FileRoutesById { __root__: typeof rootRouteImport '/': typeof IndexRoute + '/(auth)': typeof authRouteRouteWithChildren + '/(app)/create': typeof appCreateRouteRouteWithChildren + '/(app)/evaluation': typeof appEvaluationRouteRouteWithChildren + '/(app)/profile': typeof appProfileRouteRouteWithChildren + '/(app)/programs': typeof appProgramsRouteRouteWithChildren + '/(app)/reports': typeof appReportsRouteRouteWithChildren + '/(app)/users': typeof appUsersRouteRouteWithChildren + '/(app)/activities': typeof appActivitiesRoute + '/(app)/matrix': typeof appMatrixRoute + '/(app)/mentors': typeof appMentorsRoute + '/(auth)/confirm-email': typeof authConfirmEmailRoute + '/(auth)/forgot-password': typeof authForgotPasswordRoute + '/(auth)/login': typeof authLoginRoute + '/(auth)/register': typeof authRegisterRoute + '/(auth)/reset-password': typeof authResetPasswordRoute + '/(app)/create/activity': typeof appCreateActivityRoute + '/(app)/create/mentor': typeof appCreateMentorRoute + '/(app)/create/program': typeof appCreateProgramRoute + '/(app)/create/report': typeof appCreateReportRoute + '/(app)/create/user': typeof appCreateUserRoute + '/(app)/evaluation/$evaluationId': typeof appEvaluationEvaluationIdRoute + '/(app)/profile/edit': typeof appProfileEditRoute + '/(app)/programs/programId': typeof appProgramsProgramIdRoute + '/(app)/reports/$reportId': typeof appReportsReportIdRoute + '/(app)/users/$userId': typeof appUsersUserIdRoute + '/(app)/profile/': typeof appProfileIndexRoute + '/(app)/programs/': typeof appProgramsIndexRoute + '/(app)/reports/': typeof appReportsIndexRoute + '/(app)/users/': typeof appUsersIndexRoute } export interface FileRouteTypes { fileRoutesByFullPath: FileRoutesByFullPath - fullPaths: '/' + fullPaths: + | '/' + | '/create' + | '/evaluation' + | '/profile' + | '/programs' + | '/reports' + | '/users' + | '/activities' + | '/matrix' + | '/mentors' + | '/confirm-email' + | '/forgot-password' + | '/login' + | '/register' + | '/reset-password' + | '/create/activity' + | '/create/mentor' + | '/create/program' + | '/create/report' + | '/create/user' + | '/evaluation/$evaluationId' + | '/profile/edit' + | '/programs/programId' + | '/reports/$reportId' + | '/users/$userId' + | '/profile/' + | '/programs/' + | '/reports/' + | '/users/' fileRoutesByTo: FileRoutesByTo - to: '/' - id: '__root__' | '/' + to: + | '/' + | '/create' + | '/evaluation' + | '/activities' + | '/matrix' + | '/mentors' + | '/confirm-email' + | '/forgot-password' + | '/login' + | '/register' + | '/reset-password' + | '/create/activity' + | '/create/mentor' + | '/create/program' + | '/create/report' + | '/create/user' + | '/evaluation/$evaluationId' + | '/profile/edit' + | '/programs/programId' + | '/reports/$reportId' + | '/users/$userId' + | '/profile' + | '/programs' + | '/reports' + | '/users' + id: + | '__root__' + | '/' + | '/(auth)' + | '/(app)/create' + | '/(app)/evaluation' + | '/(app)/profile' + | '/(app)/programs' + | '/(app)/reports' + | '/(app)/users' + | '/(app)/activities' + | '/(app)/matrix' + | '/(app)/mentors' + | '/(auth)/confirm-email' + | '/(auth)/forgot-password' + | '/(auth)/login' + | '/(auth)/register' + | '/(auth)/reset-password' + | '/(app)/create/activity' + | '/(app)/create/mentor' + | '/(app)/create/program' + | '/(app)/create/report' + | '/(app)/create/user' + | '/(app)/evaluation/$evaluationId' + | '/(app)/profile/edit' + | '/(app)/programs/programId' + | '/(app)/reports/$reportId' + | '/(app)/users/$userId' + | '/(app)/profile/' + | '/(app)/programs/' + | '/(app)/reports/' + | '/(app)/users/' fileRoutesById: FileRoutesById } export interface RootRouteChildren { IndexRoute: typeof IndexRoute + authRouteRoute: typeof authRouteRouteWithChildren + appCreateRouteRoute: typeof appCreateRouteRouteWithChildren + appEvaluationRouteRoute: typeof appEvaluationRouteRouteWithChildren + appProfileRouteRoute: typeof appProfileRouteRouteWithChildren + appProgramsRouteRoute: typeof appProgramsRouteRouteWithChildren + appReportsRouteRoute: typeof appReportsRouteRouteWithChildren + appUsersRouteRoute: typeof appUsersRouteRouteWithChildren + appActivitiesRoute: typeof appActivitiesRoute + appMatrixRoute: typeof appMatrixRoute + appMentorsRoute: typeof appMentorsRoute } declare module '@tanstack/react-router' { interface FileRoutesByPath { + '/(auth)': { + id: '/(auth)' + path: '/' + fullPath: '/' + preLoaderRoute: typeof authRouteRouteImport + parentRoute: typeof rootRouteImport + } '/': { id: '/' path: '/' @@ -48,11 +405,323 @@ declare module '@tanstack/react-router' { preLoaderRoute: typeof IndexRouteImport parentRoute: typeof rootRouteImport } + '/(auth)/reset-password': { + id: '/(auth)/reset-password' + path: '/reset-password' + fullPath: '/reset-password' + preLoaderRoute: typeof authResetPasswordRouteImport + parentRoute: typeof authRouteRoute + } + '/(auth)/register': { + id: '/(auth)/register' + path: '/register' + fullPath: '/register' + preLoaderRoute: typeof authRegisterRouteImport + parentRoute: typeof authRouteRoute + } + '/(auth)/login': { + id: '/(auth)/login' + path: '/login' + fullPath: '/login' + preLoaderRoute: typeof authLoginRouteImport + parentRoute: typeof authRouteRoute + } + '/(auth)/forgot-password': { + id: '/(auth)/forgot-password' + path: '/forgot-password' + fullPath: '/forgot-password' + preLoaderRoute: typeof authForgotPasswordRouteImport + parentRoute: typeof authRouteRoute + } + '/(auth)/confirm-email': { + id: '/(auth)/confirm-email' + path: '/confirm-email' + fullPath: '/confirm-email' + preLoaderRoute: typeof authConfirmEmailRouteImport + parentRoute: typeof authRouteRoute + } + '/(app)/mentors': { + id: '/(app)/mentors' + path: '/mentors' + fullPath: '/mentors' + preLoaderRoute: typeof appMentorsRouteImport + parentRoute: typeof rootRouteImport + } + '/(app)/matrix': { + id: '/(app)/matrix' + path: '/matrix' + fullPath: '/matrix' + preLoaderRoute: typeof appMatrixRouteImport + parentRoute: typeof rootRouteImport + } + '/(app)/activities': { + id: '/(app)/activities' + path: '/activities' + fullPath: '/activities' + preLoaderRoute: typeof appActivitiesRouteImport + parentRoute: typeof rootRouteImport + } + '/(app)/users': { + id: '/(app)/users' + path: '/users' + fullPath: '/users' + preLoaderRoute: typeof appUsersRouteRouteImport + parentRoute: typeof rootRouteImport + } + '/(app)/reports': { + id: '/(app)/reports' + path: '/reports' + fullPath: '/reports' + preLoaderRoute: typeof appReportsRouteRouteImport + parentRoute: typeof rootRouteImport + } + '/(app)/programs': { + id: '/(app)/programs' + path: '/programs' + fullPath: '/programs' + preLoaderRoute: typeof appProgramsRouteRouteImport + parentRoute: typeof rootRouteImport + } + '/(app)/profile': { + id: '/(app)/profile' + path: '/profile' + fullPath: '/profile' + preLoaderRoute: typeof appProfileRouteRouteImport + parentRoute: typeof rootRouteImport + } + '/(app)/evaluation': { + id: '/(app)/evaluation' + path: '/evaluation' + fullPath: '/evaluation' + preLoaderRoute: typeof appEvaluationRouteRouteImport + parentRoute: typeof rootRouteImport + } + '/(app)/create': { + id: '/(app)/create' + path: '/create' + fullPath: '/create' + preLoaderRoute: typeof appCreateRouteRouteImport + parentRoute: typeof rootRouteImport + } + '/(app)/users/': { + id: '/(app)/users/' + path: '/' + fullPath: '/users/' + preLoaderRoute: typeof appUsersIndexRouteImport + parentRoute: typeof appUsersRouteRoute + } + '/(app)/reports/': { + id: '/(app)/reports/' + path: '/' + fullPath: '/reports/' + preLoaderRoute: typeof appReportsIndexRouteImport + parentRoute: typeof appReportsRouteRoute + } + '/(app)/programs/': { + id: '/(app)/programs/' + path: '/' + fullPath: '/programs/' + preLoaderRoute: typeof appProgramsIndexRouteImport + parentRoute: typeof appProgramsRouteRoute + } + '/(app)/profile/': { + id: '/(app)/profile/' + path: '/' + fullPath: '/profile/' + preLoaderRoute: typeof appProfileIndexRouteImport + parentRoute: typeof appProfileRouteRoute + } + '/(app)/users/$userId': { + id: '/(app)/users/$userId' + path: '/$userId' + fullPath: '/users/$userId' + preLoaderRoute: typeof appUsersUserIdRouteImport + parentRoute: typeof appUsersRouteRoute + } + '/(app)/reports/$reportId': { + id: '/(app)/reports/$reportId' + path: '/$reportId' + fullPath: '/reports/$reportId' + preLoaderRoute: typeof appReportsReportIdRouteImport + parentRoute: typeof appReportsRouteRoute + } + '/(app)/programs/programId': { + id: '/(app)/programs/programId' + path: '/programId' + fullPath: '/programs/programId' + preLoaderRoute: typeof appProgramsProgramIdRouteImport + parentRoute: typeof appProgramsRouteRoute + } + '/(app)/profile/edit': { + id: '/(app)/profile/edit' + path: '/edit' + fullPath: '/profile/edit' + preLoaderRoute: typeof appProfileEditRouteImport + parentRoute: typeof appProfileRouteRoute + } + '/(app)/evaluation/$evaluationId': { + id: '/(app)/evaluation/$evaluationId' + path: '/$evaluationId' + fullPath: '/evaluation/$evaluationId' + preLoaderRoute: typeof appEvaluationEvaluationIdRouteImport + parentRoute: typeof appEvaluationRouteRoute + } + '/(app)/create/user': { + id: '/(app)/create/user' + path: '/user' + fullPath: '/create/user' + preLoaderRoute: typeof appCreateUserRouteImport + parentRoute: typeof appCreateRouteRoute + } + '/(app)/create/report': { + id: '/(app)/create/report' + path: '/report' + fullPath: '/create/report' + preLoaderRoute: typeof appCreateReportRouteImport + parentRoute: typeof appCreateRouteRoute + } + '/(app)/create/program': { + id: '/(app)/create/program' + path: '/program' + fullPath: '/create/program' + preLoaderRoute: typeof appCreateProgramRouteImport + parentRoute: typeof appCreateRouteRoute + } + '/(app)/create/mentor': { + id: '/(app)/create/mentor' + path: '/mentor' + fullPath: '/create/mentor' + preLoaderRoute: typeof appCreateMentorRouteImport + parentRoute: typeof appCreateRouteRoute + } + '/(app)/create/activity': { + id: '/(app)/create/activity' + path: '/activity' + fullPath: '/create/activity' + preLoaderRoute: typeof appCreateActivityRouteImport + parentRoute: typeof appCreateRouteRoute + } } } +interface authRouteRouteChildren { + authConfirmEmailRoute: typeof authConfirmEmailRoute + authForgotPasswordRoute: typeof authForgotPasswordRoute + authLoginRoute: typeof authLoginRoute + authRegisterRoute: typeof authRegisterRoute + authResetPasswordRoute: typeof authResetPasswordRoute +} + +const authRouteRouteChildren: authRouteRouteChildren = { + authConfirmEmailRoute: authConfirmEmailRoute, + authForgotPasswordRoute: authForgotPasswordRoute, + authLoginRoute: authLoginRoute, + authRegisterRoute: authRegisterRoute, + authResetPasswordRoute: authResetPasswordRoute, +} + +const authRouteRouteWithChildren = authRouteRoute._addFileChildren( + authRouteRouteChildren, +) + +interface appCreateRouteRouteChildren { + appCreateActivityRoute: typeof appCreateActivityRoute + appCreateMentorRoute: typeof appCreateMentorRoute + appCreateProgramRoute: typeof appCreateProgramRoute + appCreateReportRoute: typeof appCreateReportRoute + appCreateUserRoute: typeof appCreateUserRoute +} + +const appCreateRouteRouteChildren: appCreateRouteRouteChildren = { + appCreateActivityRoute: appCreateActivityRoute, + appCreateMentorRoute: appCreateMentorRoute, + appCreateProgramRoute: appCreateProgramRoute, + appCreateReportRoute: appCreateReportRoute, + appCreateUserRoute: appCreateUserRoute, +} + +const appCreateRouteRouteWithChildren = appCreateRouteRoute._addFileChildren( + appCreateRouteRouteChildren, +) + +interface appEvaluationRouteRouteChildren { + appEvaluationEvaluationIdRoute: typeof appEvaluationEvaluationIdRoute +} + +const appEvaluationRouteRouteChildren: appEvaluationRouteRouteChildren = { + appEvaluationEvaluationIdRoute: appEvaluationEvaluationIdRoute, +} + +const appEvaluationRouteRouteWithChildren = + appEvaluationRouteRoute._addFileChildren(appEvaluationRouteRouteChildren) + +interface appProfileRouteRouteChildren { + appProfileEditRoute: typeof appProfileEditRoute + appProfileIndexRoute: typeof appProfileIndexRoute +} + +const appProfileRouteRouteChildren: appProfileRouteRouteChildren = { + appProfileEditRoute: appProfileEditRoute, + appProfileIndexRoute: appProfileIndexRoute, +} + +const appProfileRouteRouteWithChildren = appProfileRouteRoute._addFileChildren( + appProfileRouteRouteChildren, +) + +interface appProgramsRouteRouteChildren { + appProgramsProgramIdRoute: typeof appProgramsProgramIdRoute + appProgramsIndexRoute: typeof appProgramsIndexRoute +} + +const appProgramsRouteRouteChildren: appProgramsRouteRouteChildren = { + appProgramsProgramIdRoute: appProgramsProgramIdRoute, + appProgramsIndexRoute: appProgramsIndexRoute, +} + +const appProgramsRouteRouteWithChildren = + appProgramsRouteRoute._addFileChildren(appProgramsRouteRouteChildren) + +interface appReportsRouteRouteChildren { + appReportsReportIdRoute: typeof appReportsReportIdRoute + appReportsIndexRoute: typeof appReportsIndexRoute +} + +const appReportsRouteRouteChildren: appReportsRouteRouteChildren = { + appReportsReportIdRoute: appReportsReportIdRoute, + appReportsIndexRoute: appReportsIndexRoute, +} + +const appReportsRouteRouteWithChildren = appReportsRouteRoute._addFileChildren( + appReportsRouteRouteChildren, +) + +interface appUsersRouteRouteChildren { + appUsersUserIdRoute: typeof appUsersUserIdRoute + appUsersIndexRoute: typeof appUsersIndexRoute +} + +const appUsersRouteRouteChildren: appUsersRouteRouteChildren = { + appUsersUserIdRoute: appUsersUserIdRoute, + appUsersIndexRoute: appUsersIndexRoute, +} + +const appUsersRouteRouteWithChildren = appUsersRouteRoute._addFileChildren( + appUsersRouteRouteChildren, +) + const rootRouteChildren: RootRouteChildren = { IndexRoute: IndexRoute, + authRouteRoute: authRouteRouteWithChildren, + appCreateRouteRoute: appCreateRouteRouteWithChildren, + appEvaluationRouteRoute: appEvaluationRouteRouteWithChildren, + appProfileRouteRoute: appProfileRouteRouteWithChildren, + appProgramsRouteRoute: appProgramsRouteRouteWithChildren, + appReportsRouteRoute: appReportsRouteRouteWithChildren, + appUsersRouteRoute: appUsersRouteRouteWithChildren, + appActivitiesRoute: appActivitiesRoute, + appMatrixRoute: appMatrixRoute, + appMentorsRoute: appMentorsRoute, } export const routeTree = rootRouteImport ._addFileChildren(rootRouteChildren) diff --git a/client2/src/router/index.tsx b/client2/src/router/index.tsx deleted file mode 100644 index 3621ed54..00000000 --- a/client2/src/router/index.tsx +++ /dev/null @@ -1,96 +0,0 @@ -// import { Routes, Route, Navigate } from "@tanstack/react-router"; -// import LayoutApp from "@/components/LayoutApp"; -// import LayoutEvaluation from "@/components/LayoutEvaluation"; -// import LayoutDashboard from "@/components/LayoutDashboard"; -// import Home from "@/pages/Home"; -// import Evaluation from "@/pages/Evaluation"; -// import ForgotPassword from "@/pages/public/ForgotPassword"; -// import Login from "@/pages/public/Login"; -// import ResetPassword from "@/pages/public/ResetPassword"; -// import Register from "@/pages/public/Register"; -// import SetPassword from "@/pages/public/SetPassword"; -// import Report from "@/pages/authenticated/Report"; -// import AdminReport from "@/pages/admin/Report"; -// import NewReport from "@/pages/NewReport"; -// import UserReports from "@/pages/UserReports"; -// import { useAppSelector } from "@/redux/store"; -// import Dashboard from "@/pages/Dashboard"; -// import ReportsList from "@/pages/ReportsList"; -// import UsersList from "@/pages/UsersList"; -// import Profile from "@/pages/Profile"; -// import Mentors from "@/pages/Mentors"; -// import CreateMentor from "@/pages/admin/CreateMentor"; -// import ProgramsList from "@/pages/admin/ProgramsList"; -// import Program from "@/pages/admin/Program"; -// import CreateProgram from "@/pages/admin/CreateProgram"; -// import getUserType from "@/lib/userType"; -// import HomeMentor from "@/pages/mentor/Home"; -// import Activities from "@/pages/mentor/Activities"; -// import NewActivity from "@/pages/mentor/NewActivity"; -// import MentorProfile from "@/pages/mentor/Profile"; -// import MentorEditProfile from "@/pages/mentor/EditProfile"; -// import AuthenticatedMentorsList from "@/pages/authenticated/MentorsList"; -// import AuthenticatedMentor from "@/pages/authenticated/Mentor"; -// import CreateUser from "@/pages/admin/CreateUser"; -// import MentorReport from "@/pages/mentor/Report"; -// import OngEditProfile from "@/pages/authenticated/EditProfile"; -// import AuthenticatedMatrix from "@/pages/authenticated/Matrix"; -// import Matrix from "@/components/Matrix"; - -// const Router = () => { -// const user = useAppSelector((state) => state.userState.user); -// const userType = getUserType(user); - -// return ( -// -// }> -// } /> -// -// {userType === "fdsc" ? ( -// }> -// } /> -// } /> -// } /> -// } /> -// } /> -// } /> -// } /> -// } /> -// } /> -// } /> -// } /> -// -// ) : userType === "authenticated" ? ( -// }> -// } /> -// } /> -// } /> -// } /> -// } /> -// } /> -// } /> -// -// ) : userType === "mentor" ? ( -// }> -// } /> -// } /> -// } /> -// } /> -// } /> -// -// ) : ( -// }> -// } /> -// } /> -// } /> -// } /> -// } /> -// } /> -// -// )} -// } /> -// -// ); -// }; - -// export default Router; diff --git a/client2/src/routes/(app)/activities.tsx b/client2/src/routes/(app)/activities.tsx new file mode 100644 index 00000000..81852b3d --- /dev/null +++ b/client2/src/routes/(app)/activities.tsx @@ -0,0 +1,22 @@ +import LayoutApp from "@/components/LayoutApp"; +import getUserType from "@/lib/userType"; +import Activities from "@/pages/mentor/Activities"; +import { useAppSelector } from "@/redux/store"; +import { createFileRoute, Navigate } from "@tanstack/react-router"; + +export const Route = createFileRoute("/(app)/activities")({ + component: RouteComponent, +}); + +function RouteComponent() { + const user = useAppSelector((state) => state.userState.user); + const userType = getUserType(user); + + return userType === "mentor" ? ( + + + + ) : ( + + ); +} diff --git a/client2/src/routes/(app)/create/activity.tsx b/client2/src/routes/(app)/create/activity.tsx new file mode 100644 index 00000000..26eb9677 --- /dev/null +++ b/client2/src/routes/(app)/create/activity.tsx @@ -0,0 +1,15 @@ +import getUserType from "@/lib/userType"; +import NewActivity from "@/pages/mentor/NewActivity"; +import { useAppSelector } from "@/redux/store"; +import { createFileRoute, Navigate } from "@tanstack/react-router"; + +export const Route = createFileRoute("/(app)/create/activity")({ + component: RouteComponent, +}); + +function RouteComponent() { + const user = useAppSelector((state) => state.userState.user); + const userType = getUserType(user); + + return userType === "mentor" ? : ; +} diff --git a/client2/src/routes/(app)/create/mentor.tsx b/client2/src/routes/(app)/create/mentor.tsx new file mode 100644 index 00000000..47aeb57d --- /dev/null +++ b/client2/src/routes/(app)/create/mentor.tsx @@ -0,0 +1,15 @@ +import getUserType from "@/lib/userType"; +import CreateMentor from "@/pages/admin/CreateMentor"; +import { useAppSelector } from "@/redux/store"; +import { createFileRoute, Navigate } from "@tanstack/react-router"; + +export const Route = createFileRoute("/(app)/create/mentor")({ + component: RouteComponent, +}); + +function RouteComponent() { + const user = useAppSelector((state) => state.userState.user); + const userType = getUserType(user); + + return userType === "fdsc" ? : ; +} diff --git a/client2/src/routes/(app)/create/program.tsx b/client2/src/routes/(app)/create/program.tsx new file mode 100644 index 00000000..382a1c78 --- /dev/null +++ b/client2/src/routes/(app)/create/program.tsx @@ -0,0 +1,15 @@ +import getUserType from "@/lib/userType"; +import CreateProgram from "@/pages/admin/CreateProgram"; +import { useAppSelector } from "@/redux/store"; +import { createFileRoute, Navigate } from "@tanstack/react-router"; + +export const Route = createFileRoute("/(app)/create/program")({ + component: RouteComponent, +}); + +function RouteComponent() { + const user = useAppSelector((state) => state.userState.user); + const userType = getUserType(user); + + return userType === "fdsc" ? : ; +} diff --git a/client2/src/routes/(app)/create/report.tsx b/client2/src/routes/(app)/create/report.tsx new file mode 100644 index 00000000..6385b4ed --- /dev/null +++ b/client2/src/routes/(app)/create/report.tsx @@ -0,0 +1,15 @@ +import getUserType from "@/lib/userType"; +import NewReport from "@/pages/NewReport"; +import { useAppSelector } from "@/redux/store"; +import { createFileRoute, Navigate } from "@tanstack/react-router"; + +export const Route = createFileRoute("/(app)/create/report")({ + component: RouteComponent, +}); + +function RouteComponent() { + const user = useAppSelector((state) => state.userState.user); + const userType = getUserType(user); + + return userType === "authenticated" ? : ; +} diff --git a/client2/src/routes/(app)/create/route.tsx b/client2/src/routes/(app)/create/route.tsx new file mode 100644 index 00000000..f61eacbb --- /dev/null +++ b/client2/src/routes/(app)/create/route.tsx @@ -0,0 +1,16 @@ +import LayoutApp from "@/components/LayoutApp"; +import getUserType from "@/lib/userType"; +import { useAppSelector } from "@/redux/store"; +import { createFileRoute, Navigate } from "@tanstack/react-router"; +import { LayoutDashboard } from "lucide-react"; + +export const Route = createFileRoute("/(app)/create")({ + component: RouteComponent, +}); + +function RouteComponent() { + const user = useAppSelector((state) => state.userState.user); + const userType = getUserType(user); + + return userType === "fdsc" ? : ; +} diff --git a/client2/src/routes/(app)/create/user.tsx b/client2/src/routes/(app)/create/user.tsx new file mode 100644 index 00000000..6daadee8 --- /dev/null +++ b/client2/src/routes/(app)/create/user.tsx @@ -0,0 +1,15 @@ +import getUserType from "@/lib/userType"; +import CreateUser from "@/pages/admin/CreateUser"; +import { useAppSelector } from "@/redux/store"; +import { createFileRoute, Navigate } from "@tanstack/react-router"; + +export const Route = createFileRoute("/(app)/create/user")({ + component: RouteComponent, +}); + +function RouteComponent() { + const user = useAppSelector((state) => state.userState.user); + const userType = getUserType(user); + + return userType === "fdsc" ? : ; +} diff --git a/client2/src/routes/(app)/evaluation/$evaluationId.tsx b/client2/src/routes/(app)/evaluation/$evaluationId.tsx new file mode 100644 index 00000000..1b1582cc --- /dev/null +++ b/client2/src/routes/(app)/evaluation/$evaluationId.tsx @@ -0,0 +1,10 @@ +import Evaluation from "@/pages/Evaluation"; +import { createFileRoute } from "@tanstack/react-router"; + +export const Route = createFileRoute("/(app)/evaluation/$evaluationId")({ + component: RouteComponent, +}); + +function RouteComponent() { + return ; +} diff --git a/client2/src/routes/(app)/evaluation/route.tsx b/client2/src/routes/(app)/evaluation/route.tsx new file mode 100644 index 00000000..9d4fb56a --- /dev/null +++ b/client2/src/routes/(app)/evaluation/route.tsx @@ -0,0 +1,6 @@ +import LayoutEvaluation from "@/components/LayoutEvaluation"; +import { createFileRoute } from "@tanstack/react-router"; + +export const Route = createFileRoute("/(app)/evaluation")({ + component: LayoutEvaluation, +}); diff --git a/client2/src/routes/(app)/matrix.tsx b/client2/src/routes/(app)/matrix.tsx new file mode 100644 index 00000000..18e75ded --- /dev/null +++ b/client2/src/routes/(app)/matrix.tsx @@ -0,0 +1,21 @@ +import LayoutApp from "@/components/LayoutApp"; +import Matrix from "@/components/Matrix"; +import getUserType from "@/lib/userType"; +import AuthenticatedMatrix from "@/pages/authenticated/Matrix"; +import { useAppSelector } from "@/redux/store"; +import { createFileRoute } from "@tanstack/react-router"; + +export const Route = createFileRoute("/(app)/matrix")({ + component: RouteComponent, +}); + +function RouteComponent() { + const user = useAppSelector((state) => state.userState.user); + const userType = getUserType(user); + + return ( + + {userType === "authenticated" ? : } + + ); +} diff --git a/client2/src/routes/(app)/mentors.tsx b/client2/src/routes/(app)/mentors.tsx new file mode 100644 index 00000000..117cdc73 --- /dev/null +++ b/client2/src/routes/(app)/mentors.tsx @@ -0,0 +1,28 @@ +import LayoutApp from "@/components/LayoutApp"; +import LayoutDashboard from "@/components/LayoutDashboard"; +import getUserType from "@/lib/userType"; +import AuthenticatedMentorsList from "@/pages/authenticated/MentorsList"; +import Mentors from "@/pages/Mentors"; +import { useAppSelector } from "@/redux/store"; +import { createFileRoute, Navigate } from "@tanstack/react-router"; + +export const Route = createFileRoute("/(app)/mentors")({ + component: RouteComponent, +}); + +function RouteComponent() { + const user = useAppSelector((state) => state.userState.user); + const userType = getUserType(user); + + return userType === "fdsc" ? ( + + + + ) : userType === "authenticated" ? ( + + + + ) : ( + + ); +} diff --git a/client2/src/routes/(app)/profile/edit.tsx b/client2/src/routes/(app)/profile/edit.tsx new file mode 100644 index 00000000..a15c283c --- /dev/null +++ b/client2/src/routes/(app)/profile/edit.tsx @@ -0,0 +1,22 @@ +import getUserType from "@/lib/userType"; +import OngEditProfile from "@/pages/authenticated/EditProfile"; +import MentorEditProfile from "@/pages/mentor/EditProfile"; +import { useAppSelector } from "@/redux/store"; +import { createFileRoute, Navigate } from "@tanstack/react-router"; + +export const Route = createFileRoute("/(app)/profile/edit")({ + component: RouteComponent, +}); + +function RouteComponent() { + const user = useAppSelector((state) => state.userState.user); + const userType = getUserType(user); + + return userType === "authenticated" ? ( + + ) : userType === "mentor" ? ( + + ) : ( + + ); +} diff --git a/client2/src/routes/(app)/profile/index.tsx b/client2/src/routes/(app)/profile/index.tsx new file mode 100644 index 00000000..39ceaa41 --- /dev/null +++ b/client2/src/routes/(app)/profile/index.tsx @@ -0,0 +1,24 @@ +import getUserType from "@/lib/userType"; +import MentorProfile from "@/pages/mentor/Profile"; +import Profile from "@/pages/Profile"; +import { useAppSelector } from "@/redux/store"; +import { createFileRoute, Navigate } from "@tanstack/react-router"; + +export const Route = createFileRoute("/(app)/profile/")({ + component: RouteComponent, +}); + +function RouteComponent() { + const user = useAppSelector((state) => state.userState.user); + const userType = getUserType(user); + + return userType === "fdsc" ? ( + + ) : userType === "authenticated" ? ( + + ) : userType === "mentor" ? ( + + ) : ( + + ); +} diff --git a/client2/src/routes/(app)/profile/route.tsx b/client2/src/routes/(app)/profile/route.tsx new file mode 100644 index 00000000..ce8b3ee5 --- /dev/null +++ b/client2/src/routes/(app)/profile/route.tsx @@ -0,0 +1,16 @@ +import LayoutApp from "@/components/LayoutApp"; +import LayoutDashboard from "@/components/LayoutDashboard"; +import getUserType from "@/lib/userType"; +import { useAppSelector } from "@/redux/store"; +import { createFileRoute } from "@tanstack/react-router"; + +export const Route = createFileRoute("/(app)/profile")({ + component: RouteComponent, +}); + +function RouteComponent() { + const user = useAppSelector((state) => state.userState.user); + const userType = getUserType(user); + + return userType === "fdsc" ? : ; +} diff --git a/client2/src/routes/(app)/programs/index.tsx b/client2/src/routes/(app)/programs/index.tsx new file mode 100644 index 00000000..ec0dfaa9 --- /dev/null +++ b/client2/src/routes/(app)/programs/index.tsx @@ -0,0 +1,15 @@ +import getUserType from "@/lib/userType"; +import ProgramsList from "@/pages/admin/ProgramsList"; +import { useAppSelector } from "@/redux/store"; +import { createFileRoute, Navigate } from "@tanstack/react-router"; + +export const Route = createFileRoute("/(app)/programs/")({ + component: RouteComponent, +}); + +function RouteComponent() { + const user = useAppSelector((state) => state.userState.user); + const userType = getUserType(user); + + return userType === "fdsc" ? : ; +} diff --git a/client2/src/routes/(app)/programs/programId.tsx b/client2/src/routes/(app)/programs/programId.tsx new file mode 100644 index 00000000..f950f655 --- /dev/null +++ b/client2/src/routes/(app)/programs/programId.tsx @@ -0,0 +1,15 @@ +import getUserType from "@/lib/userType"; +import Program from "@/pages/admin/Program"; +import { useAppSelector } from "@/redux/store"; +import { createFileRoute, Navigate } from "@tanstack/react-router"; + +export const Route = createFileRoute("/(app)/programs/programId")({ + component: RouteComponent, +}); + +function RouteComponent() { + const user = useAppSelector((state) => state.userState.user); + const userType = getUserType(user); + + return userType === "fdsc" ? : ; +} diff --git a/client2/src/routes/(app)/programs/route.tsx b/client2/src/routes/(app)/programs/route.tsx new file mode 100644 index 00000000..77db99b5 --- /dev/null +++ b/client2/src/routes/(app)/programs/route.tsx @@ -0,0 +1,6 @@ +import LayoutDashboard from "@/components/LayoutDashboard"; +import { createFileRoute } from "@tanstack/react-router"; + +export const Route = createFileRoute("/(app)/programs")({ + component: LayoutDashboard, +}); diff --git a/client2/src/routes/(app)/reports/$reportId.tsx b/client2/src/routes/(app)/reports/$reportId.tsx new file mode 100644 index 00000000..efd38c7b --- /dev/null +++ b/client2/src/routes/(app)/reports/$reportId.tsx @@ -0,0 +1,25 @@ +import getUserType from "@/lib/userType"; +import AdminReport from "@/pages/admin/Report"; +import Report from "@/pages/authenticated/Report"; +import MentorReport from "@/pages/mentor/Report"; +import { useAppSelector } from "@/redux/store"; +import { createFileRoute, Navigate } from "@tanstack/react-router"; + +export const Route = createFileRoute("/(app)/reports/$reportId")({ + component: RouteComponent, +}); + +function RouteComponent() { + const user = useAppSelector((state) => state.userState.user); + const userType = getUserType(user); + + return userType === "fdsc" ? ( + + ) : userType === "authenticated" ? ( + + ) : userType === "mentor" ? ( + + ) : ( + + ); +} diff --git a/client2/src/routes/(app)/reports/index.tsx b/client2/src/routes/(app)/reports/index.tsx new file mode 100644 index 00000000..86cd9c46 --- /dev/null +++ b/client2/src/routes/(app)/reports/index.tsx @@ -0,0 +1,15 @@ +import getUserType from "@/lib/userType"; +import ReportsList from "@/pages/ReportsList"; +import { useAppSelector } from "@/redux/store"; +import { createFileRoute, Navigate } from "@tanstack/react-router"; + +export const Route = createFileRoute("/(app)/reports/")({ + component: RouteComponent, +}); + +function RouteComponent() { + const user = useAppSelector((state) => state.userState.user); + const userType = getUserType(user); + + return userType === "fdsc" ? : ; +} diff --git a/client2/src/routes/(app)/reports/route.tsx b/client2/src/routes/(app)/reports/route.tsx new file mode 100644 index 00000000..05d738c4 --- /dev/null +++ b/client2/src/routes/(app)/reports/route.tsx @@ -0,0 +1,16 @@ +import LayoutApp from "@/components/LayoutApp"; +import LayoutDashboard from "@/components/LayoutDashboard"; +import getUserType from "@/lib/userType"; +import { useAppSelector } from "@/redux/store"; +import { createFileRoute } from "@tanstack/react-router"; + +export const Route = createFileRoute("/(app)/reports")({ + component: RouteComponent, +}); + +function RouteComponent() { + const user = useAppSelector((state) => state.userState.user); + const userType = getUserType(user); + + return userType === "fdsc" ? : ; +} diff --git a/client2/src/routes/(app)/users/$userId.tsx b/client2/src/routes/(app)/users/$userId.tsx new file mode 100644 index 00000000..b3a68733 --- /dev/null +++ b/client2/src/routes/(app)/users/$userId.tsx @@ -0,0 +1,22 @@ +import getUserType from "@/lib/userType"; +import AuthenticatedMentor from "@/pages/authenticated/Mentor"; +import UserReports from "@/pages/UserReports"; +import { useAppSelector } from "@/redux/store"; +import { createFileRoute, Navigate } from "@tanstack/react-router"; + +export const Route = createFileRoute("/(app)/users/$userId")({ + component: RouteComponent, +}); + +function RouteComponent() { + const user = useAppSelector((state) => state.userState.user); + const userType = getUserType(user); + + return userType === "fdsc" ? ( + + ) : userType === "authenticated" ? ( + + ) : ( + + ); +} diff --git a/client2/src/routes/(app)/users/index.tsx b/client2/src/routes/(app)/users/index.tsx new file mode 100644 index 00000000..ec4b70cd --- /dev/null +++ b/client2/src/routes/(app)/users/index.tsx @@ -0,0 +1,15 @@ +import getUserType from "@/lib/userType"; +import UsersList from "@/pages/UsersList"; +import { useAppSelector } from "@/redux/store"; +import { createFileRoute, Navigate } from "@tanstack/react-router"; + +export const Route = createFileRoute("/(app)/users/")({ + component: RouteComponent, +}); + +function RouteComponent() { + const user = useAppSelector((state) => state.userState.user); + const userType = getUserType(user); + + return userType === "fdsc" ? : ; +} diff --git a/client2/src/routes/(app)/users/route.tsx b/client2/src/routes/(app)/users/route.tsx new file mode 100644 index 00000000..704ce512 --- /dev/null +++ b/client2/src/routes/(app)/users/route.tsx @@ -0,0 +1,16 @@ +import LayoutApp from "@/components/LayoutApp"; +import LayoutDashboard from "@/components/LayoutDashboard"; +import getUserType from "@/lib/userType"; +import { useAppSelector } from "@/redux/store"; +import { createFileRoute } from "@tanstack/react-router"; + +export const Route = createFileRoute("/(app)/users")({ + component: RouteComponent, +}); + +function RouteComponent() { + const user = useAppSelector((state) => state.userState.user); + const userType = getUserType(user); + + return userType === "fdsc" ? : ; +} diff --git a/client2/src/routes/(auth)/confirm-email.tsx b/client2/src/routes/(auth)/confirm-email.tsx new file mode 100644 index 00000000..44338be3 --- /dev/null +++ b/client2/src/routes/(auth)/confirm-email.tsx @@ -0,0 +1,7 @@ +import Confirm from "@/components/Confirm"; +import SetPassword from "@/pages/public/SetPassword"; +import { createFileRoute } from "@tanstack/react-router"; + +export const Route = createFileRoute("/(auth)/confirm-email")({ + component: SetPassword, +}); diff --git a/client2/src/routes/(auth)/forgot-password.tsx b/client2/src/routes/(auth)/forgot-password.tsx new file mode 100644 index 00000000..c381a2a4 --- /dev/null +++ b/client2/src/routes/(auth)/forgot-password.tsx @@ -0,0 +1,6 @@ +import ForgotPassword from "@/pages/public/ForgotPassword"; +import { createFileRoute } from "@tanstack/react-router"; + +export const Route = createFileRoute("/(auth)/forgot-password")({ + component: ForgotPassword, +}); diff --git a/client2/src/routes/(auth)/login.tsx b/client2/src/routes/(auth)/login.tsx new file mode 100644 index 00000000..de8c16fc --- /dev/null +++ b/client2/src/routes/(auth)/login.tsx @@ -0,0 +1,6 @@ +import Login from "@/pages/public/Login"; +import { createFileRoute } from "@tanstack/react-router"; + +export const Route = createFileRoute("/(auth)/login")({ + component: Login, +}); diff --git a/client2/src/routes/(auth)/register.tsx b/client2/src/routes/(auth)/register.tsx new file mode 100644 index 00000000..491af37f --- /dev/null +++ b/client2/src/routes/(auth)/register.tsx @@ -0,0 +1,6 @@ +import Register from "@/pages/public/Register"; +import { createFileRoute } from "@tanstack/react-router"; + +export const Route = createFileRoute("/(auth)/register")({ + component: Register, +}); diff --git a/client2/src/routes/(auth)/reset-password.tsx b/client2/src/routes/(auth)/reset-password.tsx new file mode 100644 index 00000000..a3817a32 --- /dev/null +++ b/client2/src/routes/(auth)/reset-password.tsx @@ -0,0 +1,10 @@ +import ResetPassword from "@/pages/public/ResetPassword"; +import { createFileRoute } from "@tanstack/react-router"; + +export const Route = createFileRoute("/(auth)/reset-password")({ + component: ResetPassword, +}); + +function RouteComponent() { + return
    Hello "/(auth)/reset-password"!
    ; +} diff --git a/client2/src/routes/(auth)/route.tsx b/client2/src/routes/(auth)/route.tsx new file mode 100644 index 00000000..a04842b6 --- /dev/null +++ b/client2/src/routes/(auth)/route.tsx @@ -0,0 +1,6 @@ +import LayoutApp from "@/components/LayoutApp"; +import { createFileRoute, Outlet } from "@tanstack/react-router"; + +export const Route = createFileRoute("/(auth)")({ + component: LayoutApp, +}); From 1399e048f72cbb1498eb34d1fb9dbf11e5ff203d Mon Sep 17 00:00:00 2001 From: Ion Dormenco Date: Sat, 13 Sep 2025 21:46:23 +0300 Subject: [PATCH 28/61] clean reset password --- client2/package.json | 4 +- client2/pnpm-lock.yaml | 85 +- client2/src/components/ui/sonner.tsx | 23 + client2/src/globals.css | 2 +- client2/src/pages/public/Register/index.tsx | 10 +- .../src/pages/public/ResetPassword/index.tsx | 213 +- client2/src/routes/(auth)/reset-password.tsx | 13 +- client2/src/routes/__root.tsx | 4 +- client2/src/services/api.ts | 168 + .../src/services/api/forgot-password.api.ts | 7 + client2/src/services/api/login-user.api.ts | 7 + client2/src/services/api/register-user.api.ts | 5 + .../src/services/api/reset-password.api.ts | 9 + client2/src/services/user.mutations.ts | 35 + server2/Api.ts | 8897 +++++++++++++++++ 15 files changed, 9361 insertions(+), 121 deletions(-) create mode 100644 client2/src/components/ui/sonner.tsx create mode 100644 client2/src/services/api.ts create mode 100644 client2/src/services/api/forgot-password.api.ts create mode 100644 client2/src/services/api/login-user.api.ts create mode 100644 client2/src/services/api/register-user.api.ts create mode 100644 client2/src/services/api/reset-password.api.ts create mode 100644 client2/src/services/user.mutations.ts create mode 100644 server2/Api.ts diff --git a/client2/package.json b/client2/package.json index 4c100fa2..8c94ddff 100644 --- a/client2/package.json +++ b/client2/package.json @@ -23,6 +23,7 @@ "@tanstack/react-query": "^5.87.4", "@tanstack/react-router": "^1.131.41", "@types/qs": "^6.14.0", + "axios": "^1.12.1", "better-auth": "^1.3.9", "class-variance-authority": "^0.7.1", "clsx": "^2.1.1", @@ -31,6 +32,7 @@ "js-cookie": "^3.0.5", "localforage": "^1.10.0", "lucide-react": "^0.543.0", + "next-themes": "^0.4.6", "qs": "^6.14.0", "react": "^19.1.1", "react-circle-chart": "^1.0.4", @@ -40,7 +42,7 @@ "react-hook-form": "^7.62.0", "react-range-slider-input": "^3.2.1", "react-redux": "^9.2.0", - "react-toastify": "^11.0.5", + "sonner": "^2.0.7", "tailwind-merge": "^3.3.1", "xlsx": "^0.18.5", "zod": "^4.1.8" diff --git a/client2/pnpm-lock.yaml b/client2/pnpm-lock.yaml index d95abf53..8260f278 100644 --- a/client2/pnpm-lock.yaml +++ b/client2/pnpm-lock.yaml @@ -41,6 +41,9 @@ importers: '@types/qs': specifier: ^6.14.0 version: 6.14.0 + axios: + specifier: ^1.12.1 + version: 1.12.1 better-auth: specifier: ^1.3.9 version: 1.3.9(react-dom@19.1.1(react@19.1.1))(react@19.1.1) @@ -65,6 +68,9 @@ importers: lucide-react: specifier: ^0.543.0 version: 0.543.0(react@19.1.1) + next-themes: + specifier: ^0.4.6 + version: 0.4.6(react-dom@19.1.1(react@19.1.1))(react@19.1.1) qs: specifier: ^6.14.0 version: 6.14.0 @@ -92,9 +98,9 @@ importers: react-redux: specifier: ^9.2.0 version: 9.2.0(@types/react@19.1.12)(react@19.1.1)(redux@5.0.1) - react-toastify: - specifier: ^11.0.5 - version: 11.0.5(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + sonner: + specifier: ^2.0.7 + version: 2.0.7(react-dom@19.1.1(react@19.1.1))(react@19.1.1) tailwind-merge: specifier: ^3.3.1 version: 3.3.1 @@ -1606,6 +1612,9 @@ packages: peerDependencies: postcss: ^8.1.0 + axios@1.12.1: + resolution: {integrity: sha512-Kn4kbSXpkFHCGE6rBFNwIv0GQs4AvDT80jlveJDKFxjbTYMUeB4QtsdPCv6H8Cm19Je7IU6VFtRl2zWZI0rudQ==} + babel-dead-code-elimination@1.0.10: resolution: {integrity: sha512-DV5bdJZTzZ0zn0DC24v3jD7Mnidh6xhKa4GfKCbq3sfW8kaWhDdZjP3i81geA8T33tdYqWKw4D3fVv0CwEgKVA==} @@ -1889,10 +1898,23 @@ packages: resolution: {integrity: sha512-afd4O7zpqHeRyg4PfDQsXmlDe2PfdHtJt6Akt8jOWaApLOZk5JXs6VMR29lz03pRe9mpykrRCYIYxaJYcfpncQ==} engines: {node: '>=18'} + follow-redirects@1.15.11: + resolution: {integrity: sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==} + engines: {node: '>=4.0'} + peerDependencies: + debug: '*' + peerDependenciesMeta: + debug: + optional: true + form-data@2.5.5: resolution: {integrity: sha512-jqdObeR2rxZZbPSGL+3VckHMYtu+f9//KXBsVny6JSX/pa38Fy+bGjuG8eW/H6USNQWhLi8Num++cU2yOCNz4A==} engines: {node: '>= 0.12'} + form-data@4.0.4: + resolution: {integrity: sha512-KrGhL9Q4zjj0kiUt5OO4Mr/A/jlI2jDYs5eHBpYHPcBEVSiipAvn2Ko2HnPe20rmcuuvMHNdZFp+4IlGTMF0Ow==} + engines: {node: '>= 6'} + frac@1.1.2: resolution: {integrity: sha512-w/XBfkibaTl3YDqASwfDUqkna4Z2p9cFSr1aHDt0WoMTECnRfBOv2WArlZILlqgWlmdIlALXGpM2AOhEk5W3IA==} engines: {node: '>=0.8'} @@ -2284,6 +2306,12 @@ packages: resolution: {integrity: sha512-k1oiVNN4hDK8NcNERSZLQiMfRzEGtfnvZvdBvey3SQbgn8Dcrk0h1I6vpxApjb10PFUflZrgJ2WEZyJQ+5v7YQ==} engines: {node: ^18.0.0 || >=20.0.0} + next-themes@0.4.6: + resolution: {integrity: sha512-pZvgD5L0IEvX5/9GWyHMf3m8BKiVQwsCMHfoFosXtXBMnaS0ZnIJ9ST4b4NqLVKDEm8QBxoNNGNaBv2JNF6XNA==} + peerDependencies: + react: ^16.8 || ^17 || ^18 || ^19 || ^19.0.0-rc + react-dom: ^16.8 || ^17 || ^18 || ^19 || ^19.0.0-rc + node-fetch@2.7.0: resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} engines: {node: 4.x || >=6.0.0} @@ -2389,6 +2417,9 @@ packages: resolution: {integrity: sha512-CvexbZtbov6jW2eXAvLukXjXUW1TzFaivC46BpWc/3BpcCysb5Vffu+B3XHMm8lVEuy2Mm4XGex8hBSg1yapPg==} engines: {node: '>=12.0.0'} + proxy-from-env@1.1.0: + resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} + pvtsutils@1.3.6: resolution: {integrity: sha512-PLgQXQ6H2FWCaeRak8vvk1GW462lMxB5s3Jm673N82zI4vqtVUPuZdffdZbPDFRoU8kAhItWFtPCWiPpp4/EDg==} @@ -2447,12 +2478,6 @@ packages: resolution: {integrity: sha512-z6F7K9bV85EfseRCp2bzrpyQ0Gkw1uLoCel9XBVWPg/TjRj94SkJzUTGfOa4bs7iJvBWtQG0Wq7wnI0syw3EBQ==} engines: {node: '>=0.10.0'} - react-toastify@11.0.5: - resolution: {integrity: sha512-EpqHBGvnSTtHYhCPLxML05NLY2ZX0JURbAdNYa6BUkk+amz4wbKBQvoKQAB0ardvSarUBuY4Q4s1sluAzZwkmA==} - peerDependencies: - react: ^18 || ^19 - react-dom: ^18 || ^19 - react@19.1.1: resolution: {integrity: sha512-w8nqGImo45dmMIfljjMwOGtbmC/mk4CMYhWIicdSflH91J9TyCyczcPFXJzrZ/ZXcgGRFeP6BU0BEJTw6tZdfQ==} engines: {node: '>=0.10.0'} @@ -2581,6 +2606,12 @@ packages: solid-js@1.9.9: resolution: {integrity: sha512-A0ZBPJQldAeGCTW0YRYJmt7RCeh5rbFfPZ2aOttgYnctHE7HgKeHCBB/PVc2P7eOfmNXqMFFFoYYdm3S4dcbkA==} + sonner@2.0.7: + resolution: {integrity: sha512-W6ZN4p58k8aDKA4XPcx2hpIQXBRAgyiWVkYhT7CvK6D3iAu7xjvVyhQHg2/iaKJZ1XVJ4r7XuwGL+WGEK37i9w==} + peerDependencies: + react: ^18.0.0 || ^19.0.0 || ^19.0.0-rc + react-dom: ^18.0.0 || ^19.0.0 || ^19.0.0-rc + source-map-js@1.2.1: resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} engines: {node: '>=0.10.0'} @@ -4158,6 +4189,14 @@ snapshots: postcss: 8.5.6 postcss-value-parser: 4.2.0 + axios@1.12.1: + dependencies: + follow-redirects: 1.15.11 + form-data: 4.0.4 + proxy-from-env: 1.1.0 + transitivePeerDependencies: + - debug + babel-dead-code-elimination@1.0.10: dependencies: '@babel/core': 7.28.4 @@ -4517,6 +4556,8 @@ snapshots: find-up-simple@1.0.1: {} + follow-redirects@1.15.11: {} + form-data@2.5.5: dependencies: asynckit: 0.4.0 @@ -4526,6 +4567,14 @@ snapshots: mime-types: 2.1.35 safe-buffer: 5.2.1 + form-data@4.0.4: + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + es-set-tostringtag: 2.1.0 + hasown: 2.0.2 + mime-types: 2.1.35 + frac@1.1.2: {} fraction.js@4.3.7: {} @@ -4880,6 +4929,11 @@ snapshots: nanostores@0.11.4: {} + next-themes@0.4.6(react-dom@19.1.1(react@19.1.1))(react@19.1.1): + dependencies: + react: 19.1.1 + react-dom: 19.1.1(react@19.1.1) + node-fetch@2.7.0: dependencies: whatwg-url: 5.0.0 @@ -4970,6 +5024,8 @@ snapshots: '@types/node': 24.3.1 long: 5.3.2 + proxy-from-env@1.1.0: {} + pvtsutils@1.3.6: dependencies: tslib: 2.8.1 @@ -5019,12 +5075,6 @@ snapshots: react-refresh@0.17.0: {} - react-toastify@11.0.5(react-dom@19.1.1(react@19.1.1))(react@19.1.1): - dependencies: - clsx: 2.1.1 - react: 19.1.1 - react-dom: 19.1.1(react@19.1.1) - react@19.1.1: {} read-pkg-up@11.0.0: @@ -5177,6 +5227,11 @@ snapshots: seroval: 1.3.2 seroval-plugins: 1.3.3(seroval@1.3.2) + sonner@2.0.7(react-dom@19.1.1(react@19.1.1))(react@19.1.1): + dependencies: + react: 19.1.1 + react-dom: 19.1.1(react@19.1.1) + source-map-js@1.2.1: {} source-map@0.6.1: {} diff --git a/client2/src/components/ui/sonner.tsx b/client2/src/components/ui/sonner.tsx new file mode 100644 index 00000000..cd62aff2 --- /dev/null +++ b/client2/src/components/ui/sonner.tsx @@ -0,0 +1,23 @@ +import { useTheme } from "next-themes" +import { Toaster as Sonner, ToasterProps } from "sonner" + +const Toaster = ({ ...props }: ToasterProps) => { + const { theme = "system" } = useTheme() + + return ( + + ) +} + +export { Toaster } diff --git a/client2/src/globals.css b/client2/src/globals.css index 2ba65d5b..cc3032c8 100644 --- a/client2/src/globals.css +++ b/client2/src/globals.css @@ -49,7 +49,7 @@ --card-foreground: oklch(0.145 0 0); --popover: oklch(1 0 0); --popover-foreground: oklch(0.145 0 0); - --primary: oklch(0.205 0 0); + --primary: theme(colors.teal.600); --primary-foreground: oklch(0.985 0 0); --secondary: oklch(0.97 0 0); --secondary-foreground: oklch(0.205 0 0); diff --git a/client2/src/pages/public/Register/index.tsx b/client2/src/pages/public/Register/index.tsx index 5f6d768c..86631e2c 100644 --- a/client2/src/pages/public/Register/index.tsx +++ b/client2/src/pages/public/Register/index.tsx @@ -29,9 +29,8 @@ const registerSchema = z county: z.string().min(1, "Judetul este obligatoriu"), city: z.string().min(1, "Orasul este obligatoriu"), email: z - .string() - .min(1, "Adresa de email este obligatorie") - .email("Adresa de email este invalidă"), + .email("Adresa de email este invalidă") + .min(1, "Adresa de email este obligatorie"), phone: z.string().min(1, "Telefonul este obligatoriu"), password: z .string() @@ -50,10 +49,7 @@ const registerSchema = z description: z.string(), contactFirstName: z.string(), contactLastName: z.string(), - contactEmail: z - .email("Adresa de email este invalida") - .optional() - .or(z.literal("")), + contactEmail: z.email("Adresa de email este invalida").optional().catch(""), contactPhone: z.string(), accountFacebook: z.string().optional(), accountTwitter: z.string().optional(), diff --git a/client2/src/pages/public/ResetPassword/index.tsx b/client2/src/pages/public/ResetPassword/index.tsx index 50d232d9..edbe22bc 100644 --- a/client2/src/pages/public/ResetPassword/index.tsx +++ b/client2/src/pages/public/ResetPassword/index.tsx @@ -1,15 +1,23 @@ -import React, { useCallback, useEffect } from "react"; import screenshot from "@/assets/illustration.svg"; -import Button from "@/components/Button"; -import { useForm } from "react-hook-form"; -import { z } from "zod"; -import { zodResolver } from "@hookform/resolvers/zod"; -import { ErrorMessage } from "@hookform/error-message"; +import { PasswordInput } from "@/components/ui/password-input"; import Section from "@/components/Section"; -import { useResetPasswordMutation } from "@/redux/api/authApi"; -import { useSearchParams } from "@tanstack/react-router"; +import { Button } from "@/components/ui/button"; +import { + Form, + FormControl, + FormField, + FormItem, + FormLabel, + FormMessage, +} from "@/components/ui/form"; +import { Route } from "@/routes/(auth)/reset-password"; +import { useResetPasswordMutation } from "@/services/user.mutations"; +import { zodResolver } from "@hookform/resolvers/zod"; import { useNavigate } from "@tanstack/react-router"; -import { toast } from "react-toastify"; +import { useCallback } from "react"; +import { useForm } from "react-hook-form"; +import { toast } from "sonner"; +import { z } from "zod"; const resetPasswordSchema = z .object({ @@ -17,108 +25,131 @@ const resetPasswordSchema = z .string() .min(1, "Parola este obligatorie") .min(8, "Parola trebuie sa contina cel putin 8 caractere") - .max(32, "Parola trebuie sa contina cel mult 32 caractere"), - passwordConfirmation: z.string(), + .max(32, "Parola trebuie sa contina cel mult 32 caractere") + .regex( + /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)/, + "Parola trebuie sa contina cel putin o litera mica, o litera mare si o cifra" + ), + passwordConfirmation: z + .string() + .min(1, "Confirmarea parolei este obligatorie"), }) .refine((data) => data.password === data.passwordConfirmation, { - message: "Parola nu coincide", + message: "Parolele nu coincid", path: ["passwordConfirmation"], }); -export type ResetPasswordInput = z.infer & { - code: string; -}; + +export type ResetPasswordForm = z.infer; const ResetPassword = () => { - const [sendResetPasswordRequest, { isSuccess, isError }] = - useResetPasswordMutation(); - const { register, handleSubmit, reset, formState } = - useForm({ - resolver: zodResolver(resetPasswordSchema), - }); const navigate = useNavigate(); + const { code } = Route.useSearch(); + // const [sendResetPasswordRequest, { isSuccess, isError }] = + // useResetPasswordMutation(); - const [searchParams] = useSearchParams(); - const code = searchParams.get("code"); + const { mutate: resetPassword, isPending } = useResetPasswordMutation(); + const form = useForm({ + resolver: zodResolver(resetPasswordSchema), + defaultValues: { + password: "", + passwordConfirmation: "", + }, + }); const onSubmitHandler = useCallback( - ({ password, passwordConfirmation }: ResetPasswordInput) => { - if (code) { - sendResetPasswordRequest({ password, passwordConfirmation, code }); - reset(); - } + (values: ResetPasswordForm) => { + console.log("ji"); + resetPassword( + { + password: values.password, + passwordConfirmation: values.passwordConfirmation, + code, + }, + { + onSuccess: () => { + toast.success("Parola a fost schimbata cu succes"); + navigate({ to: "/login" }); + }, + onError: () => { + toast.error("A aparut o problema"); + }, + } + ); + form.reset(); }, - [sendResetPasswordRequest, reset] + [resetPassword, form, code] ); - useEffect(() => { - if (isSuccess) { - toast.success("Parola a fost schimbata cu succes"); - navigate("/login"); - } - }, [isSuccess, navigate]); + // const onSubmitHandler = useCallback( + // ({ password, passwordConfirmation }: ResetPasswordInput) => { + // if (code) { + // sendResetPasswordRequest({ password, passwordConfirmation, code }); + // reset(); + // } + // }, + // [sendResetPasswordRequest, reset] + // ); + + // useEffect(() => { + // if (isSuccess) { + // toast.success("Parola a fost schimbata cu succes"); + // navigate("/login"); + // } + // }, [isSuccess, navigate]); - useEffect(() => { - if (isError) { - toast.error("A aparut o problema"); - } - }, [isError]); + // useEffect(() => { + // if (isError) { + // toast.error("A aparut o problema"); + // } + // }, [isError]); - useEffect(() => { - if (!code) { - navigate("/"); - } - }, [code, navigate]); + // useEffect(() => { + // if (!code) { + // navigate("/"); + // } + // }, [code, navigate]); return (
    -
    -

    - Resetare parola -

    -
    - -
    - -
    - -
    -
    + + + ( + + Parola noua + + + + + + )} + /> + + ( + + Repeta parola + + + + + + )} + /> -
    - -
    - -
    - -
    -
    -
    -
    - -
    + + +
    diff --git a/client2/src/routes/(auth)/reset-password.tsx b/client2/src/routes/(auth)/reset-password.tsx index a3817a32..19014428 100644 --- a/client2/src/routes/(auth)/reset-password.tsx +++ b/client2/src/routes/(auth)/reset-password.tsx @@ -1,10 +1,15 @@ import ResetPassword from "@/pages/public/ResetPassword"; import { createFileRoute } from "@tanstack/react-router"; +type ResetPasswordSearch = { + code: string; +}; export const Route = createFileRoute("/(auth)/reset-password")({ + validateSearch: (search: Record): ResetPasswordSearch => { + // validate and parse the search params into a typed state + return { + code: (search.code as string) || "", + }; + }, component: ResetPassword, }); - -function RouteComponent() { - return
    Hello "/(auth)/reset-password"!
    ; -} diff --git a/client2/src/routes/__root.tsx b/client2/src/routes/__root.tsx index a585820b..bb8ca0b0 100644 --- a/client2/src/routes/__root.tsx +++ b/client2/src/routes/__root.tsx @@ -2,7 +2,7 @@ import ScrollToTop from "@/components/ScrollToTop"; import type { QueryClient } from "@tanstack/react-query"; import { createRootRouteWithContext, Outlet } from "@tanstack/react-router"; import { TanStackRouterDevtools } from "@tanstack/react-router-devtools"; -import { ToastContainer } from "react-toastify"; +import { Toaster } from "@/components/ui/sonner"; export const Route = createRootRouteWithContext<{ // auth: typeof auth; @@ -16,7 +16,7 @@ export function Root() { <> {import.meta.env.DEV && } - + ); diff --git a/client2/src/services/api.ts b/client2/src/services/api.ts new file mode 100644 index 00000000..b3cd2e69 --- /dev/null +++ b/client2/src/services/api.ts @@ -0,0 +1,168 @@ +import axios, { type AxiosRequestHeaders } from "axios"; + +/* + * Token Refresh Mechanism: + * + * 1. When an API call fails with a 401 or token-expired header: + * - If not already refreshing, initiates a token refresh + * - If already refreshing, adds request to queue of subscribers + * + * 2. Token refresh process: + * - Gets current tokens from AsyncStorage + * - Calls refresh endpoint with existing tokens + * - Stores new tokens in AsyncStorage + * - Updates original request with new token + * - Retries original request + * + * 3. For concurrent requests during refresh: + * - Queues them as subscribers + * - Once refresh completes, replays all queued requests with new token + * - Prevents multiple simultaneous refresh calls + * + * 4. On refresh failure: + * - Clears tokens from storage + * - Redirects to login + */ + +const API_BASE_URL = import.meta.env.VITE_SERVER_ENDPOINT as string; + +const TIMEOUT = 60 * 1000; // 60 seconds + +// class TokenRefreshManager { +// private isRefreshing = false; +// private refreshSubscribers: ((token: string) => void)[] = []; + +// onRefreshed(token: string) { +// this.refreshSubscribers.forEach((callback) => callback(token)); +// this.refreshSubscribers = []; +// } + +// addRefreshSubscriber(callback: (token: string) => void) { +// this.refreshSubscribers.push(callback); +// } + +// setRefreshing(value: boolean) { +// this.isRefreshing = value; +// } + +// isCurrentlyRefreshing() { +// return this.isRefreshing; +// } + +// clearSubscribers() { +// this.refreshSubscribers = []; +// } +// } + +// const tokenManager = new TokenRefreshManager(); + +const API = axios.create({ + baseURL: API_BASE_URL, + timeout: TIMEOUT, + headers: { + "Content-Type": "application/json", + }, +}); + +API.interceptors.request.use(async (request) => { + try { + const token = await localStorage.getItem("USER_TOKEN"); + + if (!request.headers) { + request.headers = {} as AxiosRequestHeaders; + } + + if (token) { + request.headers.Authorization = `Bearer ${token}`; + } + } catch (err) { + console.error(err); + } + + return request; +}); + +// const handleTokenRefresh = async (originalRequest: any) => { +// try { +// const [token, refreshToken] = await Promise.all([ +// AsyncStorage.getItem(ASYNC_STORAGE_KEYS.ACCESS_TOKEN), +// AsyncStorage.getItem(ASYNC_STORAGE_KEYS.REFRESH_TOKEN), +// ]); + +// if (!token || !refreshToken) { +// throw new Error("No tokens available"); +// } + +// const { data } = await axios.post(`${API_BASE_URL}auth/refresh`, { +// token, +// refreshToken, +// }); + +// await setAuthTokens( +// data.token, +// data.refreshToken, +// data.refreshTokenExpiryTime +// ); +// tokenManager.onRefreshed(data.token); + +// originalRequest.headers.Authorization = `Bearer ${data.token}`; +// return API(originalRequest); +// } catch (error) { +// await AsyncStorage.multiRemove([ +// ASYNC_STORAGE_KEYS.ACCESS_TOKEN, +// ASYNC_STORAGE_KEYS.REFRESH_TOKEN, +// ]); +// router.replace("/login"); +// throw error; +// } finally { +// tokenManager.setRefreshing(false); +// } +// }; + +// API.interceptors.response.use( +// (response) => response, +// async (error: any) => { +// const originalRequest = error.config; +// const isTokenExpiredError = +// error.response?.headers["token-expired"] === "true" || +// error.response?.status === 401; + +// if ( +// error.response && +// isTokenExpiredError && +// !originalRequest?.url?.includes("auth") && +// !originalRequest._retry +// ) { +// if (tokenManager.isCurrentlyRefreshing()) { +// return new Promise((resolve) => { +// tokenManager.addRefreshSubscriber(async (token: string) => { +// originalRequest.headers.Authorization = `Bearer ${token}`; +// resolve(API(originalRequest)); +// }); +// }); +// } + +// console.log("❌ [API FAILED] URL", originalRequest.url); +// console.log("❌ [API FAILED] Status", error.response?.status); +// console.log("❌ [API FAILED] isTokenExpiredError", isTokenExpiredError); + +// originalRequest._retry = true; +// tokenManager.setRefreshing(true); +// return handleTokenRefresh(originalRequest); +// } + +// if (error.request) { +// console.log("❌ [API FAILED] Request", error.request); +// Sentry.captureException(new Error("Network request failed"), { +// extra: { request: error.request }, +// }); +// } else { +// console.log("❌ [API FAILED] Error", error); +// Sentry.captureException(error); +// } + +// throw error; +// } +// ); + +export default API; diff --git a/client2/src/services/api/forgot-password.api.ts b/client2/src/services/api/forgot-password.api.ts new file mode 100644 index 00000000..9ac81b52 --- /dev/null +++ b/client2/src/services/api/forgot-password.api.ts @@ -0,0 +1,7 @@ +import API from "../api"; + +export const forgotPassword = ({}: {}): Promise => { + return API.get(`election-rounds/${electionRoundId}/observer-guide`).then( + (res) => res.data.guides + ); +}; diff --git a/client2/src/services/api/login-user.api.ts b/client2/src/services/api/login-user.api.ts new file mode 100644 index 00000000..1c681c9d --- /dev/null +++ b/client2/src/services/api/login-user.api.ts @@ -0,0 +1,7 @@ +import API from "../api"; + +export const loginUser = ({}: {}): Promise<> => { + return API.get(`election-rounds/${electionRoundId}/observer-guide`).then( + (res) => res.data.guides + ); +}; diff --git a/client2/src/services/api/register-user.api.ts b/client2/src/services/api/register-user.api.ts new file mode 100644 index 00000000..99e1e361 --- /dev/null +++ b/client2/src/services/api/register-user.api.ts @@ -0,0 +1,5 @@ +import API from "../api"; + +export const registerUser = ({}: {}): Promise => { + return API.get(`auth/local/register`).then((res) => res.data.guides); +}; diff --git a/client2/src/services/api/reset-password.api.ts b/client2/src/services/api/reset-password.api.ts new file mode 100644 index 00000000..77beb7a2 --- /dev/null +++ b/client2/src/services/api/reset-password.api.ts @@ -0,0 +1,9 @@ +import API from "../api"; + +export const resetPassword = (payload: { + code: string; + password: string; + passwordConfirmation: string; +}): Promise => { + return API.post(`/auth/reset-password`, payload).then((res) => res.data); +}; diff --git a/client2/src/services/user.mutations.ts b/client2/src/services/user.mutations.ts new file mode 100644 index 00000000..b54202c1 --- /dev/null +++ b/client2/src/services/user.mutations.ts @@ -0,0 +1,35 @@ +// src/hooks/useAuth.ts +import { useMutation, useQueryClient } from "@tanstack/react-query"; +import { forgotPassword } from "./api/forgot-password.api"; +import { loginUser } from "./api/login-user.api"; +import { registerUser } from "./api/register-user.api"; +import { resetPassword } from "./api/reset-password.api"; + +export function useRegisterUserMutation() { + return useMutation({ + mutationFn: registerUser, + }); +} + +export function useForgotPasswordMutation() { + return useMutation({ + mutationFn: forgotPassword, + }); +} + +export function useResetPasswordMutation() { + return useMutation({ + mutationFn: resetPassword, + }); +} + +export function useLoginUserMutation() { + const queryClient = useQueryClient(); + + return useMutation({ + mutationFn: loginUser, + onSuccess: async () => { + await queryClient.invalidateQueries({ queryKey: ["me"] }); + }, + }); +} diff --git a/server2/Api.ts b/server2/Api.ts new file mode 100644 index 00000000..d838ec6f --- /dev/null +++ b/server2/Api.ts @@ -0,0 +1,8897 @@ +/* eslint-disable */ +/* tslint:disable */ +// @ts-nocheck +/* + * --------------------------------------------------------------- + * ## THIS FILE WAS GENERATED VIA SWAGGER-TYPESCRIPT-API ## + * ## ## + * ## AUTHOR: acacode ## + * ## SOURCE: https://github.com/acacode/swagger-typescript-api ## + * --------------------------------------------------------------- + */ + +export interface ApiActivityTypeActivityTypeDocument { + /** + * The document ID, represented by a UUID + * @format uuid + * @pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$ + */ + documentId: string; + id: number; + /** A text field */ + name?: string; + /** A datetime field */ + createdAt?: string; + /** A datetime field */ + updatedAt?: string; + /** + * A datetime field + * @default "2025-09-12T06:37:57.249Z" + */ + publishedAt: string; +} + +export interface MatrixQuestionEntry { + /** A string field */ + question?: string; + /** A text field */ + option_1?: string; + /** A text field */ + option_2?: string; + /** A text field */ + option_3?: string; + /** A text field */ + option_4?: string; + /** A text field */ + option_5?: string; + /** A string field */ + tag?: string; +} + +export interface PluginUsersPermissionsPermissionDocument { + /** + * The document ID, represented by a UUID + * @format uuid + * @pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$ + */ + documentId: string; + id: number; + /** A string field */ + action: string; + /** A datetime field */ + createdAt?: string; + /** A datetime field */ + updatedAt?: string; + /** + * A datetime field + * @default "2025-09-12T06:37:57.263Z" + */ + publishedAt: string; + /** A relational field */ + role?: PluginUsersPermissionsRoleDocument; +} + +export interface PluginUsersPermissionsRoleDocument { + /** + * The document ID, represented by a UUID + * @format uuid + * @pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$ + */ + documentId: string; + id: number; + /** A string field */ + name: string; + /** A string field */ + description?: string; + /** A string field */ + type?: string; + /** A datetime field */ + createdAt?: string; + /** A datetime field */ + updatedAt?: string; + /** + * A datetime field + * @default "2025-09-12T06:37:57.262Z" + */ + publishedAt: string; + /** A relational field */ + permissions?: PluginUsersPermissionsPermissionDocument[]; + /** A relational field */ + users?: PluginUsersPermissionsUserDocument[]; +} + +export interface PluginUploadFileDocument { + /** + * The document ID, represented by a UUID + * @format uuid + * @pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$ + */ + documentId: string; + id: number; + /** A string field */ + name: string; + /** A string field */ + alternativeText?: string; + /** A string field */ + caption?: string; + /** + * An integer field + * @min -9007199254740991 + * @max 9007199254740991 + */ + width?: number; + /** + * An integer field + * @min -9007199254740991 + * @max 9007199254740991 + */ + height?: number; + /** A JSON field */ + formats?: any; + /** A string field */ + hash: string; + /** A string field */ + ext?: string; + /** A string field */ + mime: string; + /** A decimal field */ + size: number; + /** A string field */ + url: string; + /** A string field */ + previewUrl?: string; + /** A string field */ + provider: string; + /** A JSON field */ + provider_metadata?: any; + /** A datetime field */ + createdAt?: string; + /** A datetime field */ + updatedAt?: string; + /** + * A datetime field + * @default "2025-09-12T06:37:57.268Z" + */ + publishedAt: string; + related: any; +} + +export interface EvaluationDimensionEntry { + /** A text field */ + comment: string; + /** A component field */ + quiz?: EvaluationQuestionEntry[]; +} + +export interface EvaluationQuestionEntry { + /** + * An integer field + * @min 0 + * @max 4 + */ + answer: number; +} + +export interface ApiEvaluationEvaluationDocument { + /** + * The document ID, represented by a UUID + * @format uuid + * @pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$ + */ + documentId: string; + id: number; + /** + * An email field + * @format email + * @pattern ^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$ + */ + email: string; + /** A datetime field */ + createdAt?: string; + /** A datetime field */ + updatedAt?: string; + /** + * A datetime field + * @default "2025-09-12T06:37:57.272Z" + */ + publishedAt: string; + /** A component field */ + dimensions?: EvaluationDimensionEntry[]; + /** A relational field */ + report?: ApiReportReportDocument; +} + +export interface ApiReportReportDocument { + /** + * The document ID, represented by a UUID + * @format uuid + * @pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$ + */ + documentId: string; + id: number; + /** A date field */ + deadline: string; + /** + * A boolean field + * @default false + */ + finished: boolean; + /** A datetime field */ + createdAt?: string; + /** A datetime field */ + updatedAt?: string; + /** + * A datetime field + * @default "2025-09-12T06:37:57.271Z" + */ + publishedAt: string; + /** A relational field */ + evaluations?: ApiEvaluationEvaluationDocument[]; + /** A relational field */ + user?: PluginUsersPermissionsUserDocument; +} + +export interface ApiDomainDomainDocument { + /** + * The document ID, represented by a UUID + * @format uuid + * @pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$ + */ + documentId: string; + id: number; + /** A string field */ + name?: string; + /** A datetime field */ + createdAt?: string; + /** A datetime field */ + updatedAt?: string; + /** + * A datetime field + * @default "2025-09-12T06:37:57.275Z" + */ + publishedAt: string; + /** A relational field */ + mentors?: PluginUsersPermissionsUserDocument[]; +} + +export interface ApiProgramProgramDocument { + /** + * The document ID, represented by a UUID + * @format uuid + * @pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$ + */ + documentId: string; + id: number; + /** A string field */ + name: string; + /** A date field */ + startDate: string; + /** A date field */ + endDate: string; + /** A string field */ + sponsorName?: string; + /** A datetime field */ + createdAt?: string; + /** A datetime field */ + updatedAt?: string; + /** + * A datetime field + * @default "2025-09-12T06:37:57.279Z" + */ + publishedAt: string; + /** A relational field */ + mentors?: PluginUsersPermissionsUserDocument[]; + /** A relational field */ + users?: PluginUsersPermissionsUserDocument[]; +} + +export interface ApiActivityActivityDocument { + /** + * The document ID, represented by a UUID + * @format uuid + * @pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$ + */ + documentId: string; + id: number; + /** A date field */ + startDate: string; + /** A richtext field */ + notes?: string; + /** + * An integer field + * @min -9007199254740991 + * @max 9007199254740991 + */ + duration?: number; + /** A datetime field */ + createdAt?: string; + /** A datetime field */ + updatedAt?: string; + /** + * A datetime field + * @default "2025-09-12T06:37:57.281Z" + */ + publishedAt: string; + /** A relational field */ + type?: ApiActivityTypeActivityTypeDocument; + /** A relational field */ + dimension?: ApiDimensionDimensionDocument; + /** A relational field */ + mentor?: PluginUsersPermissionsUserDocument; + /** A relational field */ + user?: PluginUsersPermissionsUserDocument; +} + +export interface ApiMentorshipRequestMentorshipRequestDocument { + /** + * The document ID, represented by a UUID + * @format uuid + * @pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$ + */ + documentId: string; + id: number; + /** A datetime field */ + createdAt?: string; + /** A datetime field */ + updatedAt?: string; + /** + * A datetime field + * @default "2025-09-12T06:37:57.283Z" + */ + publishedAt: string; + /** A relational field */ + mentor?: PluginUsersPermissionsUserDocument; + /** A relational field */ + user?: PluginUsersPermissionsUserDocument; +} + +export interface PluginUsersPermissionsUserDocument { + /** + * The document ID, represented by a UUID + * @format uuid + * @pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$ + */ + documentId: string; + id: number; + /** A string field */ + username: string; + /** + * An email field + * @format email + * @pattern ^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$ + */ + email: string; + /** A string field */ + provider?: string; + /** + * A boolean field + * @default false + */ + confirmed: boolean; + /** + * A boolean field + * @default false + */ + blocked: boolean; + /** A string field */ + ongName?: string; + /** A string field */ + ongIdentificationNumber?: string; + /** A string field */ + county?: string; + /** A string field */ + city?: string; + /** A string field */ + phone?: string; + /** A string field */ + website?: string; + /** A string field */ + keywords?: string; + /** A text field */ + description?: string; + /** A string field */ + contactFirstName?: string; + /** A string field */ + contactLastName?: string; + /** A string field */ + contactEmail?: string; + /** A string field */ + contactPhone?: string; + /** A string field */ + accountFacebook?: string; + /** A string field */ + accountTwitter?: string; + /** A string field */ + accountTiktok?: string; + /** A string field */ + accountInstagram?: string; + /** A string field */ + accountLinkedin?: string; + /** A text field */ + bio?: string; + /** A text field */ + expertise?: string; + /** A string field */ + firstName?: string; + /** A string field */ + lastName?: string; + /** + * A boolean field + * @default false + */ + available: boolean; + /** A datetime field */ + createdAt?: string; + /** A datetime field */ + updatedAt?: string; + /** + * A datetime field + * @default "2025-09-12T06:37:57.260Z" + */ + publishedAt: string; + /** A relational field */ + role?: PluginUsersPermissionsRoleDocument; + /** A media field */ + avatar?: PluginUploadFileDocument; + /** A media field */ + logo?: PluginUploadFileDocument; + /** A relational field */ + reports?: ApiReportReportDocument[]; + /** A relational field */ + domains?: ApiDomainDomainDocument[]; + /** A relational field */ + programs?: ApiProgramProgramDocument[]; + /** A relational field */ + dimensions?: ApiDimensionDimensionDocument[]; + /** A relational field */ + program?: ApiProgramProgramDocument; + /** A relational field */ + mentorActivities?: ApiActivityActivityDocument[]; + /** A relational field */ + userActivities?: ApiActivityActivityDocument[]; + /** A relational field */ + mentorSessions?: ApiMentorshipRequestMentorshipRequestDocument[]; + /** A relational field */ + userSessions?: ApiMentorshipRequestMentorshipRequestDocument[]; +} + +export interface ApiDimensionDimensionDocument { + /** + * The document ID, represented by a UUID + * @format uuid + * @pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$ + */ + documentId: string; + id: number; + /** A string field */ + name: string; + /** A string field */ + link?: string; + /** A datetime field */ + createdAt?: string; + /** A datetime field */ + updatedAt?: string; + /** + * A datetime field + * @default "2025-09-12T06:37:57.251Z" + */ + publishedAt: string; + /** A component field */ + quiz?: MatrixQuestionEntry[]; + /** A relational field */ + mentors?: PluginUsersPermissionsUserDocument[]; + /** A relational field */ + activities?: ApiActivityActivityDocument[]; +} + +export type QueryParamsType = Record; +export type ResponseFormat = keyof Omit; + +export interface FullRequestParams extends Omit { + /** set parameter to `true` for call `securityWorker` for this request */ + secure?: boolean; + /** request path */ + path: string; + /** content type of request body */ + type?: ContentType; + /** query params */ + query?: QueryParamsType; + /** format of response (i.e. response.json() -> format: "json") */ + format?: ResponseFormat; + /** request body */ + body?: unknown; + /** base url */ + baseUrl?: string; + /** request cancellation token */ + cancelToken?: CancelToken; +} + +export type RequestParams = Omit< + FullRequestParams, + "body" | "method" | "query" | "path" +>; + +export interface ApiConfig { + baseUrl?: string; + baseApiParams?: Omit; + securityWorker?: ( + securityData: SecurityDataType | null, + ) => Promise | RequestParams | void; + customFetch?: typeof fetch; +} + +export interface HttpResponse + extends Response { + data: D; + error: E; +} + +type CancelToken = Symbol | string | number; + +export enum ContentType { + Json = "application/json", + JsonApi = "application/vnd.api+json", + FormData = "multipart/form-data", + UrlEncoded = "application/x-www-form-urlencoded", + Text = "text/plain", +} + +export class HttpClient { + public baseUrl: string = ""; + private securityData: SecurityDataType | null = null; + private securityWorker?: ApiConfig["securityWorker"]; + private abortControllers = new Map(); + private customFetch = (...fetchParams: Parameters) => + fetch(...fetchParams); + + private baseApiParams: RequestParams = { + credentials: "same-origin", + headers: {}, + redirect: "follow", + referrerPolicy: "no-referrer", + }; + + constructor(apiConfig: ApiConfig = {}) { + Object.assign(this, apiConfig); + } + + public setSecurityData = (data: SecurityDataType | null) => { + this.securityData = data; + }; + + protected encodeQueryParam(key: string, value: any) { + const encodedKey = encodeURIComponent(key); + return `${encodedKey}=${encodeURIComponent(typeof value === "number" ? value : `${value}`)}`; + } + + protected addQueryParam(query: QueryParamsType, key: string) { + return this.encodeQueryParam(key, query[key]); + } + + protected addArrayQueryParam(query: QueryParamsType, key: string) { + const value = query[key]; + return value.map((v: any) => this.encodeQueryParam(key, v)).join("&"); + } + + protected toQueryString(rawQuery?: QueryParamsType): string { + const query = rawQuery || {}; + const keys = Object.keys(query).filter( + (key) => "undefined" !== typeof query[key], + ); + return keys + .map((key) => + Array.isArray(query[key]) + ? this.addArrayQueryParam(query, key) + : this.addQueryParam(query, key), + ) + .join("&"); + } + + protected addQueryParams(rawQuery?: QueryParamsType): string { + const queryString = this.toQueryString(rawQuery); + return queryString ? `?${queryString}` : ""; + } + + private contentFormatters: Record any> = { + [ContentType.Json]: (input: any) => + input !== null && (typeof input === "object" || typeof input === "string") + ? JSON.stringify(input) + : input, + [ContentType.JsonApi]: (input: any) => + input !== null && (typeof input === "object" || typeof input === "string") + ? JSON.stringify(input) + : input, + [ContentType.Text]: (input: any) => + input !== null && typeof input !== "string" + ? JSON.stringify(input) + : input, + [ContentType.FormData]: (input: any) => { + if (input instanceof FormData) { + return input; + } + + return Object.keys(input || {}).reduce((formData, key) => { + const property = input[key]; + formData.append( + key, + property instanceof Blob + ? property + : typeof property === "object" && property !== null + ? JSON.stringify(property) + : `${property}`, + ); + return formData; + }, new FormData()); + }, + [ContentType.UrlEncoded]: (input: any) => this.toQueryString(input), + }; + + protected mergeRequestParams( + params1: RequestParams, + params2?: RequestParams, + ): RequestParams { + return { + ...this.baseApiParams, + ...params1, + ...(params2 || {}), + headers: { + ...(this.baseApiParams.headers || {}), + ...(params1.headers || {}), + ...((params2 && params2.headers) || {}), + }, + }; + } + + protected createAbortSignal = ( + cancelToken: CancelToken, + ): AbortSignal | undefined => { + if (this.abortControllers.has(cancelToken)) { + const abortController = this.abortControllers.get(cancelToken); + if (abortController) { + return abortController.signal; + } + return void 0; + } + + const abortController = new AbortController(); + this.abortControllers.set(cancelToken, abortController); + return abortController.signal; + }; + + public abortRequest = (cancelToken: CancelToken) => { + const abortController = this.abortControllers.get(cancelToken); + + if (abortController) { + abortController.abort(); + this.abortControllers.delete(cancelToken); + } + }; + + public request = async ({ + body, + secure, + path, + type, + query, + format, + baseUrl, + cancelToken, + ...params + }: FullRequestParams): Promise> => { + const secureParams = + ((typeof secure === "boolean" ? secure : this.baseApiParams.secure) && + this.securityWorker && + (await this.securityWorker(this.securityData))) || + {}; + const requestParams = this.mergeRequestParams(params, secureParams); + const queryString = query && this.toQueryString(query); + const payloadFormatter = this.contentFormatters[type || ContentType.Json]; + const responseFormat = format || requestParams.format; + + return this.customFetch( + `${baseUrl || this.baseUrl || ""}${path}${queryString ? `?${queryString}` : ""}`, + { + ...requestParams, + headers: { + ...(requestParams.headers || {}), + ...(type && type !== ContentType.FormData + ? { "Content-Type": type } + : {}), + }, + signal: + (cancelToken + ? this.createAbortSignal(cancelToken) + : requestParams.signal) || null, + body: + typeof body === "undefined" || body === null + ? null + : payloadFormatter(body), + }, + ).then(async (response) => { + const r = response as HttpResponse; + r.data = null as unknown as T; + r.error = null as unknown as E; + + const data = !responseFormat + ? r + : await response[responseFormat]() + .then((data) => { + if (r.ok) { + r.data = data; + } else { + r.error = data; + } + return r; + }) + .catch((e) => { + r.error = e; + return r; + }); + + if (cancelToken) { + this.abortControllers.delete(cancelToken); + } + + if (!response.ok) throw data; + return data; + }); + }; +} + +/** + * @title server-2 + * @version 0.1.0 + * + * API documentation for server-2 v0.1.0 + */ +export class Api< + SecurityDataType extends unknown, +> extends HttpClient { + /** + * No description + * + * @tags upload + * @name UploadPost + * @request POST:/ + * @response `200` `({ + \** + * @exclusiveMin 0 + * @max 9007199254740991 + *\ + id: number, + \** + * @format uuid + * @pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$ + *\ + documentId: string, + name: string, + alternativeText?: (string | null), + caption?: (string | null), + \** + * @min -9007199254740991 + * @max 9007199254740991 + *\ + width?: number, + \** + * @min -9007199254740991 + * @max 9007199254740991 + *\ + height?: number, + formats?: Record, + hash: string, + ext?: string, + mime: string, + size: number, + url: string, + previewUrl?: (string | null), + folder?: number, + folderPath: string, + provider: string, + provider_metadata?: (Record | null), + createdAt: string, + updatedAt: string, + createdBy?: number, + updatedBy?: number, + +} | ({ + \** + * @exclusiveMin 0 + * @max 9007199254740991 + *\ + id: number, + \** + * @format uuid + * @pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$ + *\ + documentId: string, + name: string, + alternativeText?: (string | null), + caption?: (string | null), + \** + * @min -9007199254740991 + * @max 9007199254740991 + *\ + width?: number, + \** + * @min -9007199254740991 + * @max 9007199254740991 + *\ + height?: number, + formats?: Record, + hash: string, + ext?: string, + mime: string, + size: number, + url: string, + previewUrl?: (string | null), + folder?: number, + folderPath: string, + provider: string, + provider_metadata?: (Record | null), + createdAt: string, + updatedAt: string, + createdBy?: number, + updatedBy?: number, + +})[])` OK + * @response `400` `void` Bad request + * @response `401` `void` Unauthorized + * @response `403` `void` Forbidden + * @response `404` `void` Not found + * @response `500` `void` Internal server error + */ + uploadPost = ( + query?: { + /** + * @exclusiveMin 0 + * @max 9007199254740991 + */ + id?: number; + }, + params: RequestParams = {}, + ) => + this.request< + | { + /** + * @exclusiveMin 0 + * @max 9007199254740991 + */ + id: number; + /** + * @format uuid + * @pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$ + */ + documentId: string; + name: string; + alternativeText?: string | null; + caption?: string | null; + /** + * @min -9007199254740991 + * @max 9007199254740991 + */ + width?: number; + /** + * @min -9007199254740991 + * @max 9007199254740991 + */ + height?: number; + formats?: Record; + hash: string; + ext?: string; + mime: string; + size: number; + url: string; + previewUrl?: string | null; + folder?: number; + folderPath: string; + provider: string; + provider_metadata?: Record | null; + createdAt: string; + updatedAt: string; + createdBy?: number; + updatedBy?: number; + } + | { + /** + * @exclusiveMin 0 + * @max 9007199254740991 + */ + id: number; + /** + * @format uuid + * @pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$ + */ + documentId: string; + name: string; + alternativeText?: string | null; + caption?: string | null; + /** + * @min -9007199254740991 + * @max 9007199254740991 + */ + width?: number; + /** + * @min -9007199254740991 + * @max 9007199254740991 + */ + height?: number; + formats?: Record; + hash: string; + ext?: string; + mime: string; + size: number; + url: string; + previewUrl?: string | null; + folder?: number; + folderPath: string; + provider: string; + provider_metadata?: Record | null; + createdAt: string; + updatedAt: string; + createdBy?: number; + updatedBy?: number; + }[], + void + >({ + path: `/`, + method: "POST", + query: query, + format: "json", + ...params, + }); + + activities = { + /** + * No description + * + * @tags activity + * @name ActivityGetActivities + * @request GET:/activities + * @response `200` `{ + data: ({ + \** + * The document ID, represented by a UUID + * @format uuid + * @pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$ + *\ + documentId: string, + id: number, + \** A date field *\ + startDate: string, + \** A richtext field *\ + notes?: string, + \** + * An integer field + * @min -9007199254740991 + * @max 9007199254740991 + *\ + duration?: number, + \** A datetime field *\ + createdAt?: string, + \** A datetime field *\ + updatedAt?: string, + \** + * A datetime field + * @default "2025-09-12T06:37:57.244Z" + *\ + publishedAt: string, + \** A relational field *\ + type?: ApiActivityTypeActivityTypeDocument, + \** A relational field *\ + dimension?: ApiDimensionDimensionDocument, + \** A relational field *\ + mentor?: PluginUsersPermissionsUserDocument, + \** A relational field *\ + user?: PluginUsersPermissionsUserDocument, + +})[], + +}` OK + * @response `400` `void` Bad request + * @response `401` `void` Unauthorized + * @response `403` `void` Forbidden + * @response `404` `void` Not found + * @response `500` `void` Internal server error + */ + activityGetActivities: ( + query?: { + /** The fields to return, this doesn't include populatable fields like relations, components, files, or dynamic zones */ + fields?: ( + | "startDate" + | "notes" + | "duration" + | "createdAt" + | "updatedAt" + | "publishedAt" + )[]; + /** Filters to apply to the query */ + filters?: Record< + | "startDate" + | "notes" + | "duration" + | "createdAt" + | "updatedAt" + | "publishedAt", + any + >; + _q?: string; + /** Pagination parameters */ + pagination?: { + /** Include total count in response */ + withCount?: boolean; + } & ( + | { + /** + * Page number (1-based) + * @exclusiveMin 0 + * @max 9007199254740991 + */ + page: number; + /** + * Number of entries per page + * @exclusiveMin 0 + * @max 9007199254740991 + */ + pageSize: number; + } + | { + /** + * Number of entries to skip + * @min 0 + * @max 9007199254740991 + */ + start: number; + /** + * Maximum number of entries to return + * @exclusiveMin 0 + * @max 9007199254740991 + */ + limit: number; + } + ); + /** Sort the result */ + sort?: + | "startDate" + | "notes" + | "duration" + | "createdAt" + | "updatedAt" + | "publishedAt" + | ( + | "startDate" + | "notes" + | "duration" + | "createdAt" + | "updatedAt" + | "publishedAt" + )[] + | Record< + | "startDate" + | "notes" + | "duration" + | "createdAt" + | "updatedAt" + | "publishedAt", + "asc" | "desc" + > + | Record< + | "startDate" + | "notes" + | "duration" + | "createdAt" + | "updatedAt" + | "publishedAt", + "asc" | "desc" + >[]; + /** Populate all the first level relations, components, files, and dynamic zones for the entry */ + populate?: + | "*" + | "type" + | "dimension" + | "mentor" + | "user" + | ("type" | "dimension" | "mentor" | "user")[]; + }, + params: RequestParams = {}, + ) => + this.request< + { + data: { + /** + * The document ID, represented by a UUID + * @format uuid + * @pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$ + */ + documentId: string; + id: number; + /** A date field */ + startDate: string; + /** A richtext field */ + notes?: string; + /** + * An integer field + * @min -9007199254740991 + * @max 9007199254740991 + */ + duration?: number; + /** A datetime field */ + createdAt?: string; + /** A datetime field */ + updatedAt?: string; + /** + * A datetime field + * @default "2025-09-12T06:37:57.244Z" + */ + publishedAt: string; + /** A relational field */ + type?: ApiActivityTypeActivityTypeDocument; + /** A relational field */ + dimension?: ApiDimensionDimensionDocument; + /** A relational field */ + mentor?: PluginUsersPermissionsUserDocument; + /** A relational field */ + user?: PluginUsersPermissionsUserDocument; + }[]; + }, + void + >({ + path: `/activities`, + method: "GET", + query: query, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags activity + * @name ActivityPostActivities + * @request POST:/activities + * @response `200` `{ + data: { + \** + * The document ID, represented by a UUID + * @format uuid + * @pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$ + *\ + documentId: string, + id: number, + \** A date field *\ + startDate: string, + \** A richtext field *\ + notes?: string, + \** + * An integer field + * @min -9007199254740991 + * @max 9007199254740991 + *\ + duration?: number, + \** A datetime field *\ + createdAt?: string, + \** A datetime field *\ + updatedAt?: string, + \** + * A datetime field + * @default "2025-09-12T06:37:57.297Z" + *\ + publishedAt: string, + \** A relational field *\ + type?: ApiActivityTypeActivityTypeDocument, + \** A relational field *\ + dimension?: ApiDimensionDimensionDocument, + \** A relational field *\ + mentor?: PluginUsersPermissionsUserDocument, + \** A relational field *\ + user?: PluginUsersPermissionsUserDocument, + +}, + +}` OK + * @response `400` `void` Bad request + * @response `401` `void` Unauthorized + * @response `403` `void` Forbidden + * @response `404` `void` Not found + * @response `500` `void` Internal server error + */ + activityPostActivities: ( + data: { + data: { + /** A date field */ + startDate: string; + /** A richtext field */ + notes?: string; + /** + * A float field + * @min -9007199254740991 + * @max 9007199254740991 + */ + duration?: number; + /** + * A datetime field + * @default "2025-09-12T06:37:57.295Z" + */ + publishedAt: string; + /** + * A relational field + * @format uuid + * @pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$ + */ + type?: string; + /** + * A relational field + * @format uuid + * @pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$ + */ + dimension?: string; + /** + * A relational field + * @format uuid + * @pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$ + */ + mentor?: string; + /** + * A relational field + * @format uuid + * @pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$ + */ + user?: string; + }; + }, + query?: { + /** The fields to return, this doesn't include populatable fields like relations, components, files, or dynamic zones */ + fields?: ( + | "startDate" + | "notes" + | "duration" + | "createdAt" + | "updatedAt" + | "publishedAt" + )[]; + /** Populate all the first level relations, components, files, and dynamic zones for the entry */ + populate?: + | "*" + | "type" + | "dimension" + | "mentor" + | "user" + | ("type" | "dimension" | "mentor" | "user")[]; + }, + params: RequestParams = {}, + ) => + this.request< + { + data: { + /** + * The document ID, represented by a UUID + * @format uuid + * @pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$ + */ + documentId: string; + id: number; + /** A date field */ + startDate: string; + /** A richtext field */ + notes?: string; + /** + * An integer field + * @min -9007199254740991 + * @max 9007199254740991 + */ + duration?: number; + /** A datetime field */ + createdAt?: string; + /** A datetime field */ + updatedAt?: string; + /** + * A datetime field + * @default "2025-09-12T06:37:57.297Z" + */ + publishedAt: string; + /** A relational field */ + type?: ApiActivityTypeActivityTypeDocument; + /** A relational field */ + dimension?: ApiDimensionDimensionDocument; + /** A relational field */ + mentor?: PluginUsersPermissionsUserDocument; + /** A relational field */ + user?: PluginUsersPermissionsUserDocument; + }; + }, + void + >({ + path: `/activities`, + method: "POST", + query: query, + body: data, + type: ContentType.Json, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags activity + * @name ActivityGetActivitiesById + * @request GET:/activities/{id} + * @response `200` `{ + data: { + \** + * The document ID, represented by a UUID + * @format uuid + * @pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$ + *\ + documentId: string, + id: number, + \** A date field *\ + startDate: string, + \** A richtext field *\ + notes?: string, + \** + * An integer field + * @min -9007199254740991 + * @max 9007199254740991 + *\ + duration?: number, + \** A datetime field *\ + createdAt?: string, + \** A datetime field *\ + updatedAt?: string, + \** + * A datetime field + * @default "2025-09-12T06:37:57.289Z" + *\ + publishedAt: string, + \** A relational field *\ + type?: ApiActivityTypeActivityTypeDocument, + \** A relational field *\ + dimension?: ApiDimensionDimensionDocument, + \** A relational field *\ + mentor?: PluginUsersPermissionsUserDocument, + \** A relational field *\ + user?: PluginUsersPermissionsUserDocument, + +}, + +}` OK + * @response `400` `void` Bad request + * @response `401` `void` Unauthorized + * @response `403` `void` Forbidden + * @response `404` `void` Not found + * @response `500` `void` Internal server error + */ + activityGetActivitiesById: ( + id: string, + query?: { + /** The fields to return, this doesn't include populatable fields like relations, components, files, or dynamic zones */ + fields?: ( + | "startDate" + | "notes" + | "duration" + | "createdAt" + | "updatedAt" + | "publishedAt" + )[]; + /** Populate all the first level relations, components, files, and dynamic zones for the entry */ + populate?: + | "*" + | "type" + | "dimension" + | "mentor" + | "user" + | ("type" | "dimension" | "mentor" | "user")[]; + /** Filters to apply to the query */ + filters?: Record< + | "startDate" + | "notes" + | "duration" + | "createdAt" + | "updatedAt" + | "publishedAt", + any + >; + /** Sort the result */ + sort?: + | "startDate" + | "notes" + | "duration" + | "createdAt" + | "updatedAt" + | "publishedAt" + | ( + | "startDate" + | "notes" + | "duration" + | "createdAt" + | "updatedAt" + | "publishedAt" + )[] + | Record< + | "startDate" + | "notes" + | "duration" + | "createdAt" + | "updatedAt" + | "publishedAt", + "asc" | "desc" + > + | Record< + | "startDate" + | "notes" + | "duration" + | "createdAt" + | "updatedAt" + | "publishedAt", + "asc" | "desc" + >[]; + }, + params: RequestParams = {}, + ) => + this.request< + { + data: { + /** + * The document ID, represented by a UUID + * @format uuid + * @pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$ + */ + documentId: string; + id: number; + /** A date field */ + startDate: string; + /** A richtext field */ + notes?: string; + /** + * An integer field + * @min -9007199254740991 + * @max 9007199254740991 + */ + duration?: number; + /** A datetime field */ + createdAt?: string; + /** A datetime field */ + updatedAt?: string; + /** + * A datetime field + * @default "2025-09-12T06:37:57.289Z" + */ + publishedAt: string; + /** A relational field */ + type?: ApiActivityTypeActivityTypeDocument; + /** A relational field */ + dimension?: ApiDimensionDimensionDocument; + /** A relational field */ + mentor?: PluginUsersPermissionsUserDocument; + /** A relational field */ + user?: PluginUsersPermissionsUserDocument; + }; + }, + void + >({ + path: `/activities/${id}`, + method: "GET", + query: query, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags activity + * @name ActivityPutActivitiesById + * @request PUT:/activities/{id} + * @response `200` `{ + data: { + \** + * The document ID, represented by a UUID + * @format uuid + * @pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$ + *\ + documentId: string, + id: number, + \** A date field *\ + startDate: string, + \** A richtext field *\ + notes?: string, + \** + * An integer field + * @min -9007199254740991 + * @max 9007199254740991 + *\ + duration?: number, + \** A datetime field *\ + createdAt?: string, + \** A datetime field *\ + updatedAt?: string, + \** + * A datetime field + * @default "2025-09-12T06:37:57.304Z" + *\ + publishedAt: string, + \** A relational field *\ + type?: ApiActivityTypeActivityTypeDocument, + \** A relational field *\ + dimension?: ApiDimensionDimensionDocument, + \** A relational field *\ + mentor?: PluginUsersPermissionsUserDocument, + \** A relational field *\ + user?: PluginUsersPermissionsUserDocument, + +}, + +}` OK + * @response `400` `void` Bad request + * @response `401` `void` Unauthorized + * @response `403` `void` Forbidden + * @response `404` `void` Not found + * @response `500` `void` Internal server error + */ + activityPutActivitiesById: ( + id: string, + data: { + data: { + /** A date field */ + startDate?: string; + /** A richtext field */ + notes?: string; + /** + * A float field + * @min -9007199254740991 + * @max 9007199254740991 + */ + duration?: number; + /** + * A datetime field + * @default "2025-09-12T06:37:57.302Z" + */ + publishedAt?: string; + /** + * A relational field + * @format uuid + * @pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$ + */ + type?: string; + /** + * A relational field + * @format uuid + * @pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$ + */ + dimension?: string; + /** + * A relational field + * @format uuid + * @pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$ + */ + mentor?: string; + /** + * A relational field + * @format uuid + * @pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$ + */ + user?: string; + }; + }, + query?: { + /** The fields to return, this doesn't include populatable fields like relations, components, files, or dynamic zones */ + fields?: ( + | "startDate" + | "notes" + | "duration" + | "createdAt" + | "updatedAt" + | "publishedAt" + )[]; + /** Populate all the first level relations, components, files, and dynamic zones for the entry */ + populate?: + | "*" + | "type" + | "dimension" + | "mentor" + | "user" + | ("type" | "dimension" | "mentor" | "user")[]; + }, + params: RequestParams = {}, + ) => + this.request< + { + data: { + /** + * The document ID, represented by a UUID + * @format uuid + * @pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$ + */ + documentId: string; + id: number; + /** A date field */ + startDate: string; + /** A richtext field */ + notes?: string; + /** + * An integer field + * @min -9007199254740991 + * @max 9007199254740991 + */ + duration?: number; + /** A datetime field */ + createdAt?: string; + /** A datetime field */ + updatedAt?: string; + /** + * A datetime field + * @default "2025-09-12T06:37:57.304Z" + */ + publishedAt: string; + /** A relational field */ + type?: ApiActivityTypeActivityTypeDocument; + /** A relational field */ + dimension?: ApiDimensionDimensionDocument; + /** A relational field */ + mentor?: PluginUsersPermissionsUserDocument; + /** A relational field */ + user?: PluginUsersPermissionsUserDocument; + }; + }, + void + >({ + path: `/activities/${id}`, + method: "PUT", + query: query, + body: data, + type: ContentType.Json, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags activity + * @name ActivityDeleteActivitiesById + * @request DELETE:/activities/{id} + * @response `200` `{ + data: { + \** + * The document ID, represented by a UUID + * @format uuid + * @pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$ + *\ + documentId: string, + id: number, + \** A date field *\ + startDate: string, + \** A richtext field *\ + notes?: string, + \** + * An integer field + * @min -9007199254740991 + * @max 9007199254740991 + *\ + duration?: number, + \** A datetime field *\ + createdAt?: string, + \** A datetime field *\ + updatedAt?: string, + \** + * A datetime field + * @default "2025-09-12T06:37:57.307Z" + *\ + publishedAt: string, + \** A relational field *\ + type?: ApiActivityTypeActivityTypeDocument, + \** A relational field *\ + dimension?: ApiDimensionDimensionDocument, + \** A relational field *\ + mentor?: PluginUsersPermissionsUserDocument, + \** A relational field *\ + user?: PluginUsersPermissionsUserDocument, + +}, + +}` OK + * @response `400` `void` Bad request + * @response `401` `void` Unauthorized + * @response `403` `void` Forbidden + * @response `404` `void` Not found + * @response `500` `void` Internal server error + */ + activityDeleteActivitiesById: ( + id: string, + query?: { + /** The fields to return, this doesn't include populatable fields like relations, components, files, or dynamic zones */ + fields?: ( + | "startDate" + | "notes" + | "duration" + | "createdAt" + | "updatedAt" + | "publishedAt" + )[]; + /** Populate all the first level relations, components, files, and dynamic zones for the entry */ + populate?: + | "*" + | "type" + | "dimension" + | "mentor" + | "user" + | ("type" | "dimension" | "mentor" | "user")[]; + /** Filters to apply to the query */ + filters?: Record< + | "startDate" + | "notes" + | "duration" + | "createdAt" + | "updatedAt" + | "publishedAt", + any + >; + }, + params: RequestParams = {}, + ) => + this.request< + { + data: { + /** + * The document ID, represented by a UUID + * @format uuid + * @pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$ + */ + documentId: string; + id: number; + /** A date field */ + startDate: string; + /** A richtext field */ + notes?: string; + /** + * An integer field + * @min -9007199254740991 + * @max 9007199254740991 + */ + duration?: number; + /** A datetime field */ + createdAt?: string; + /** A datetime field */ + updatedAt?: string; + /** + * A datetime field + * @default "2025-09-12T06:37:57.307Z" + */ + publishedAt: string; + /** A relational field */ + type?: ApiActivityTypeActivityTypeDocument; + /** A relational field */ + dimension?: ApiDimensionDimensionDocument; + /** A relational field */ + mentor?: PluginUsersPermissionsUserDocument; + /** A relational field */ + user?: PluginUsersPermissionsUserDocument; + }; + }, + void + >({ + path: `/activities/${id}`, + method: "DELETE", + query: query, + format: "json", + ...params, + }), + }; + activityTypes = { + /** + * No description + * + * @tags activity-type + * @name ActivityTypeGetActivityTypes + * @request GET:/activity-types + * @response `200` `{ + data: ({ + \** + * The document ID, represented by a UUID + * @format uuid + * @pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$ + *\ + documentId: string, + id: number, + \** A text field *\ + name?: string, + \** A datetime field *\ + createdAt?: string, + \** A datetime field *\ + updatedAt?: string, + \** + * A datetime field + * @default "2025-09-12T06:37:57.313Z" + *\ + publishedAt: string, + +})[], + +}` OK + * @response `400` `void` Bad request + * @response `401` `void` Unauthorized + * @response `403` `void` Forbidden + * @response `404` `void` Not found + * @response `500` `void` Internal server error + */ + activityTypeGetActivityTypes: ( + query?: { + /** The fields to return, this doesn't include populatable fields like relations, components, files, or dynamic zones */ + fields?: ("name" | "createdAt" | "updatedAt" | "publishedAt")[]; + /** Filters to apply to the query */ + filters?: Record< + "name" | "createdAt" | "updatedAt" | "publishedAt", + any + >; + _q?: string; + /** Pagination parameters */ + pagination?: { + /** Include total count in response */ + withCount?: boolean; + } & ( + | { + /** + * Page number (1-based) + * @exclusiveMin 0 + * @max 9007199254740991 + */ + page: number; + /** + * Number of entries per page + * @exclusiveMin 0 + * @max 9007199254740991 + */ + pageSize: number; + } + | { + /** + * Number of entries to skip + * @min 0 + * @max 9007199254740991 + */ + start: number; + /** + * Maximum number of entries to return + * @exclusiveMin 0 + * @max 9007199254740991 + */ + limit: number; + } + ); + /** Sort the result */ + sort?: + | "name" + | "createdAt" + | "updatedAt" + | "publishedAt" + | ("name" | "createdAt" | "updatedAt" | "publishedAt")[] + | Record< + "name" | "createdAt" | "updatedAt" | "publishedAt", + "asc" | "desc" + > + | Record< + "name" | "createdAt" | "updatedAt" | "publishedAt", + "asc" | "desc" + >[]; + /** Populate all the first level relations, components, files, and dynamic zones for the entry */ + populate?: "*" | string | string[]; + }, + params: RequestParams = {}, + ) => + this.request< + { + data: { + /** + * The document ID, represented by a UUID + * @format uuid + * @pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$ + */ + documentId: string; + id: number; + /** A text field */ + name?: string; + /** A datetime field */ + createdAt?: string; + /** A datetime field */ + updatedAt?: string; + /** + * A datetime field + * @default "2025-09-12T06:37:57.313Z" + */ + publishedAt: string; + }[]; + }, + void + >({ + path: `/activity-types`, + method: "GET", + query: query, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags activity-type + * @name ActivityTypePostActivityTypes + * @request POST:/activity-types + * @response `200` `{ + data: { + \** + * The document ID, represented by a UUID + * @format uuid + * @pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$ + *\ + documentId: string, + id: number, + \** A text field *\ + name?: string, + \** A datetime field *\ + createdAt?: string, + \** A datetime field *\ + updatedAt?: string, + \** + * A datetime field + * @default "2025-09-12T06:37:57.327Z" + *\ + publishedAt: string, + +}, + +}` OK + * @response `400` `void` Bad request + * @response `401` `void` Unauthorized + * @response `403` `void` Forbidden + * @response `404` `void` Not found + * @response `500` `void` Internal server error + */ + activityTypePostActivityTypes: ( + data: { + data: { + /** A text field */ + name?: string; + /** + * A datetime field + * @default "2025-09-12T06:38:03.737Z" + */ + publishedAt: string; + }; + }, + query?: { + /** The fields to return, this doesn't include populatable fields like relations, components, files, or dynamic zones */ + fields?: ("name" | "createdAt" | "updatedAt" | "publishedAt")[]; + /** Populate all the first level relations, components, files, and dynamic zones for the entry */ + populate?: "*" | string | string[]; + }, + params: RequestParams = {}, + ) => + this.request< + { + data: { + /** + * The document ID, represented by a UUID + * @format uuid + * @pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$ + */ + documentId: string; + id: number; + /** A text field */ + name?: string; + /** A datetime field */ + createdAt?: string; + /** A datetime field */ + updatedAt?: string; + /** + * A datetime field + * @default "2025-09-12T06:37:57.327Z" + */ + publishedAt: string; + }; + }, + void + >({ + path: `/activity-types`, + method: "POST", + query: query, + body: data, + type: ContentType.Json, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags activity-type + * @name ActivityTypeGetActivityTypesById + * @request GET:/activity-types/{id} + * @response `200` `{ + data: { + \** + * The document ID, represented by a UUID + * @format uuid + * @pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$ + *\ + documentId: string, + id: number, + \** A text field *\ + name?: string, + \** A datetime field *\ + createdAt?: string, + \** A datetime field *\ + updatedAt?: string, + \** + * A datetime field + * @default "2025-09-12T06:37:57.321Z" + *\ + publishedAt: string, + +}, + +}` OK + * @response `400` `void` Bad request + * @response `401` `void` Unauthorized + * @response `403` `void` Forbidden + * @response `404` `void` Not found + * @response `500` `void` Internal server error + */ + activityTypeGetActivityTypesById: ( + id: string, + query?: { + /** The fields to return, this doesn't include populatable fields like relations, components, files, or dynamic zones */ + fields?: ("name" | "createdAt" | "updatedAt" | "publishedAt")[]; + /** Populate all the first level relations, components, files, and dynamic zones for the entry */ + populate?: "*" | string | string[]; + /** Filters to apply to the query */ + filters?: Record< + "name" | "createdAt" | "updatedAt" | "publishedAt", + any + >; + /** Sort the result */ + sort?: + | "name" + | "createdAt" + | "updatedAt" + | "publishedAt" + | ("name" | "createdAt" | "updatedAt" | "publishedAt")[] + | Record< + "name" | "createdAt" | "updatedAt" | "publishedAt", + "asc" | "desc" + > + | Record< + "name" | "createdAt" | "updatedAt" | "publishedAt", + "asc" | "desc" + >[]; + }, + params: RequestParams = {}, + ) => + this.request< + { + data: { + /** + * The document ID, represented by a UUID + * @format uuid + * @pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$ + */ + documentId: string; + id: number; + /** A text field */ + name?: string; + /** A datetime field */ + createdAt?: string; + /** A datetime field */ + updatedAt?: string; + /** + * A datetime field + * @default "2025-09-12T06:37:57.321Z" + */ + publishedAt: string; + }; + }, + void + >({ + path: `/activity-types/${id}`, + method: "GET", + query: query, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags activity-type + * @name ActivityTypePutActivityTypesById + * @request PUT:/activity-types/{id} + * @response `200` `{ + data: { + \** + * The document ID, represented by a UUID + * @format uuid + * @pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$ + *\ + documentId: string, + id: number, + \** A text field *\ + name?: string, + \** A datetime field *\ + createdAt?: string, + \** A datetime field *\ + updatedAt?: string, + \** + * A datetime field + * @default "2025-09-12T06:37:57.332Z" + *\ + publishedAt: string, + +}, + +}` OK + * @response `400` `void` Bad request + * @response `401` `void` Unauthorized + * @response `403` `void` Forbidden + * @response `404` `void` Not found + * @response `500` `void` Internal server error + */ + activityTypePutActivityTypesById: ( + id: string, + data: { + data: { + /** A text field */ + name?: string; + /** + * A datetime field + * @default "2025-09-12T06:37:57.330Z" + */ + publishedAt?: string; + }; + }, + query?: { + /** The fields to return, this doesn't include populatable fields like relations, components, files, or dynamic zones */ + fields?: ("name" | "createdAt" | "updatedAt" | "publishedAt")[]; + /** Populate all the first level relations, components, files, and dynamic zones for the entry */ + populate?: "*" | string | string[]; + }, + params: RequestParams = {}, + ) => + this.request< + { + data: { + /** + * The document ID, represented by a UUID + * @format uuid + * @pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$ + */ + documentId: string; + id: number; + /** A text field */ + name?: string; + /** A datetime field */ + createdAt?: string; + /** A datetime field */ + updatedAt?: string; + /** + * A datetime field + * @default "2025-09-12T06:37:57.332Z" + */ + publishedAt: string; + }; + }, + void + >({ + path: `/activity-types/${id}`, + method: "PUT", + query: query, + body: data, + type: ContentType.Json, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags activity-type + * @name ActivityTypeDeleteActivityTypesById + * @request DELETE:/activity-types/{id} + * @response `200` `{ + data: { + \** + * The document ID, represented by a UUID + * @format uuid + * @pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$ + *\ + documentId: string, + id: number, + \** A text field *\ + name?: string, + \** A datetime field *\ + createdAt?: string, + \** A datetime field *\ + updatedAt?: string, + \** + * A datetime field + * @default "2025-09-12T06:37:57.336Z" + *\ + publishedAt: string, + +}, + +}` OK + * @response `400` `void` Bad request + * @response `401` `void` Unauthorized + * @response `403` `void` Forbidden + * @response `404` `void` Not found + * @response `500` `void` Internal server error + */ + activityTypeDeleteActivityTypesById: ( + id: string, + query?: { + /** The fields to return, this doesn't include populatable fields like relations, components, files, or dynamic zones */ + fields?: ("name" | "createdAt" | "updatedAt" | "publishedAt")[]; + /** Populate all the first level relations, components, files, and dynamic zones for the entry */ + populate?: "*" | string | string[]; + /** Filters to apply to the query */ + filters?: Record< + "name" | "createdAt" | "updatedAt" | "publishedAt", + any + >; + }, + params: RequestParams = {}, + ) => + this.request< + { + data: { + /** + * The document ID, represented by a UUID + * @format uuid + * @pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$ + */ + documentId: string; + id: number; + /** A text field */ + name?: string; + /** A datetime field */ + createdAt?: string; + /** A datetime field */ + updatedAt?: string; + /** + * A datetime field + * @default "2025-09-12T06:37:57.336Z" + */ + publishedAt: string; + }; + }, + void + >({ + path: `/activity-types/${id}`, + method: "DELETE", + query: query, + format: "json", + ...params, + }), + }; + dimensions = { + /** + * No description + * + * @tags dimension + * @name DimensionGetDimensions + * @request GET:/dimensions + * @response `200` `{ + data: ({ + \** + * The document ID, represented by a UUID + * @format uuid + * @pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$ + *\ + documentId: string, + id: number, + \** A string field *\ + name: string, + \** A string field *\ + link?: string, + \** A datetime field *\ + createdAt?: string, + \** A datetime field *\ + updatedAt?: string, + \** + * A datetime field + * @default "2025-09-12T06:37:57.347Z" + *\ + publishedAt: string, + \** A component field *\ + quiz?: (MatrixQuestionEntry)[], + \** A relational field *\ + mentors?: (PluginUsersPermissionsUserDocument)[], + \** A relational field *\ + activities?: (ApiActivityActivityDocument)[], + +})[], + +}` OK + * @response `400` `void` Bad request + * @response `401` `void` Unauthorized + * @response `403` `void` Forbidden + * @response `404` `void` Not found + * @response `500` `void` Internal server error + */ + dimensionGetDimensions: ( + query?: { + /** The fields to return, this doesn't include populatable fields like relations, components, files, or dynamic zones */ + fields?: ( + | "name" + | "link" + | "createdAt" + | "updatedAt" + | "publishedAt" + )[]; + /** Filters to apply to the query */ + filters?: Record< + "name" | "link" | "createdAt" | "updatedAt" | "publishedAt", + any + >; + _q?: string; + /** Pagination parameters */ + pagination?: { + /** Include total count in response */ + withCount?: boolean; + } & ( + | { + /** + * Page number (1-based) + * @exclusiveMin 0 + * @max 9007199254740991 + */ + page: number; + /** + * Number of entries per page + * @exclusiveMin 0 + * @max 9007199254740991 + */ + pageSize: number; + } + | { + /** + * Number of entries to skip + * @min 0 + * @max 9007199254740991 + */ + start: number; + /** + * Maximum number of entries to return + * @exclusiveMin 0 + * @max 9007199254740991 + */ + limit: number; + } + ); + /** Sort the result */ + sort?: + | "name" + | "link" + | "createdAt" + | "updatedAt" + | "publishedAt" + | ("name" | "link" | "createdAt" | "updatedAt" | "publishedAt")[] + | Record< + "name" | "link" | "createdAt" | "updatedAt" | "publishedAt", + "asc" | "desc" + > + | Record< + "name" | "link" | "createdAt" | "updatedAt" | "publishedAt", + "asc" | "desc" + >[]; + /** Populate all the first level relations, components, files, and dynamic zones for the entry */ + populate?: + | "*" + | "quiz" + | "mentors" + | "activities" + | ("quiz" | "mentors" | "activities")[]; + }, + params: RequestParams = {}, + ) => + this.request< + { + data: { + /** + * The document ID, represented by a UUID + * @format uuid + * @pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$ + */ + documentId: string; + id: number; + /** A string field */ + name: string; + /** A string field */ + link?: string; + /** A datetime field */ + createdAt?: string; + /** A datetime field */ + updatedAt?: string; + /** + * A datetime field + * @default "2025-09-12T06:37:57.347Z" + */ + publishedAt: string; + /** A component field */ + quiz?: MatrixQuestionEntry[]; + /** A relational field */ + mentors?: PluginUsersPermissionsUserDocument[]; + /** A relational field */ + activities?: ApiActivityActivityDocument[]; + }[]; + }, + void + >({ + path: `/dimensions`, + method: "GET", + query: query, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags dimension + * @name DimensionPostDimensions + * @request POST:/dimensions + * @response `200` `{ + data: { + \** + * The document ID, represented by a UUID + * @format uuid + * @pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$ + *\ + documentId: string, + id: number, + \** A string field *\ + name: string, + \** A string field *\ + link?: string, + \** A datetime field *\ + createdAt?: string, + \** A datetime field *\ + updatedAt?: string, + \** + * A datetime field + * @default "2025-09-12T06:37:57.367Z" + *\ + publishedAt: string, + \** A component field *\ + quiz?: (MatrixQuestionEntry)[], + \** A relational field *\ + mentors?: (PluginUsersPermissionsUserDocument)[], + \** A relational field *\ + activities?: (ApiActivityActivityDocument)[], + +}, + +}` OK + * @response `400` `void` Bad request + * @response `401` `void` Unauthorized + * @response `403` `void` Forbidden + * @response `404` `void` Not found + * @response `500` `void` Internal server error + */ + dimensionPostDimensions: ( + data: { + data: { + /** A string field */ + name: string; + /** A string field */ + link?: string; + /** + * A datetime field + * @default "2025-09-12T06:37:57.365Z" + */ + publishedAt: string; + /** A component field */ + quiz?: any[]; + /** A relational field */ + mentors?: string[]; + /** A relational field */ + activities?: string[]; + }; + }, + query?: { + /** The fields to return, this doesn't include populatable fields like relations, components, files, or dynamic zones */ + fields?: ( + | "name" + | "link" + | "createdAt" + | "updatedAt" + | "publishedAt" + )[]; + /** Populate all the first level relations, components, files, and dynamic zones for the entry */ + populate?: + | "*" + | "quiz" + | "mentors" + | "activities" + | ("quiz" | "mentors" | "activities")[]; + }, + params: RequestParams = {}, + ) => + this.request< + { + data: { + /** + * The document ID, represented by a UUID + * @format uuid + * @pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$ + */ + documentId: string; + id: number; + /** A string field */ + name: string; + /** A string field */ + link?: string; + /** A datetime field */ + createdAt?: string; + /** A datetime field */ + updatedAt?: string; + /** + * A datetime field + * @default "2025-09-12T06:37:57.367Z" + */ + publishedAt: string; + /** A component field */ + quiz?: MatrixQuestionEntry[]; + /** A relational field */ + mentors?: PluginUsersPermissionsUserDocument[]; + /** A relational field */ + activities?: ApiActivityActivityDocument[]; + }; + }, + void + >({ + path: `/dimensions`, + method: "POST", + query: query, + body: data, + type: ContentType.Json, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags dimension + * @name DimensionGetDimensionsById + * @request GET:/dimensions/{id} + * @response `200` `{ + data: { + \** + * The document ID, represented by a UUID + * @format uuid + * @pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$ + *\ + documentId: string, + id: number, + \** A string field *\ + name: string, + \** A string field *\ + link?: string, + \** A datetime field *\ + createdAt?: string, + \** A datetime field *\ + updatedAt?: string, + \** + * A datetime field + * @default "2025-09-12T06:37:57.354Z" + *\ + publishedAt: string, + \** A component field *\ + quiz?: (MatrixQuestionEntry)[], + \** A relational field *\ + mentors?: (PluginUsersPermissionsUserDocument)[], + \** A relational field *\ + activities?: (ApiActivityActivityDocument)[], + +}, + +}` OK + * @response `400` `void` Bad request + * @response `401` `void` Unauthorized + * @response `403` `void` Forbidden + * @response `404` `void` Not found + * @response `500` `void` Internal server error + */ + dimensionGetDimensionsById: ( + id: string, + query?: { + /** The fields to return, this doesn't include populatable fields like relations, components, files, or dynamic zones */ + fields?: ( + | "name" + | "link" + | "createdAt" + | "updatedAt" + | "publishedAt" + )[]; + /** Populate all the first level relations, components, files, and dynamic zones for the entry */ + populate?: + | "*" + | "quiz" + | "mentors" + | "activities" + | ("quiz" | "mentors" | "activities")[]; + /** Filters to apply to the query */ + filters?: Record< + "name" | "link" | "createdAt" | "updatedAt" | "publishedAt", + any + >; + /** Sort the result */ + sort?: + | "name" + | "link" + | "createdAt" + | "updatedAt" + | "publishedAt" + | ("name" | "link" | "createdAt" | "updatedAt" | "publishedAt")[] + | Record< + "name" | "link" | "createdAt" | "updatedAt" | "publishedAt", + "asc" | "desc" + > + | Record< + "name" | "link" | "createdAt" | "updatedAt" | "publishedAt", + "asc" | "desc" + >[]; + }, + params: RequestParams = {}, + ) => + this.request< + { + data: { + /** + * The document ID, represented by a UUID + * @format uuid + * @pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$ + */ + documentId: string; + id: number; + /** A string field */ + name: string; + /** A string field */ + link?: string; + /** A datetime field */ + createdAt?: string; + /** A datetime field */ + updatedAt?: string; + /** + * A datetime field + * @default "2025-09-12T06:37:57.354Z" + */ + publishedAt: string; + /** A component field */ + quiz?: MatrixQuestionEntry[]; + /** A relational field */ + mentors?: PluginUsersPermissionsUserDocument[]; + /** A relational field */ + activities?: ApiActivityActivityDocument[]; + }; + }, + void + >({ + path: `/dimensions/${id}`, + method: "GET", + query: query, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags dimension + * @name DimensionPutDimensionsById + * @request PUT:/dimensions/{id} + * @response `200` `{ + data: { + \** + * The document ID, represented by a UUID + * @format uuid + * @pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$ + *\ + documentId: string, + id: number, + \** A string field *\ + name: string, + \** A string field *\ + link?: string, + \** A datetime field *\ + createdAt?: string, + \** A datetime field *\ + updatedAt?: string, + \** + * A datetime field + * @default "2025-09-12T06:37:57.371Z" + *\ + publishedAt: string, + \** A component field *\ + quiz?: (MatrixQuestionEntry)[], + \** A relational field *\ + mentors?: (PluginUsersPermissionsUserDocument)[], + \** A relational field *\ + activities?: (ApiActivityActivityDocument)[], + +}, + +}` OK + * @response `400` `void` Bad request + * @response `401` `void` Unauthorized + * @response `403` `void` Forbidden + * @response `404` `void` Not found + * @response `500` `void` Internal server error + */ + dimensionPutDimensionsById: ( + id: string, + data: { + data: { + /** A string field */ + name?: string; + /** A string field */ + link?: string; + /** + * A datetime field + * @default "2025-09-12T06:37:57.370Z" + */ + publishedAt?: string; + /** A component field */ + quiz?: any[]; + /** A relational field */ + mentors?: string[]; + /** A relational field */ + activities?: string[]; + }; + }, + query?: { + /** The fields to return, this doesn't include populatable fields like relations, components, files, or dynamic zones */ + fields?: ( + | "name" + | "link" + | "createdAt" + | "updatedAt" + | "publishedAt" + )[]; + /** Populate all the first level relations, components, files, and dynamic zones for the entry */ + populate?: + | "*" + | "quiz" + | "mentors" + | "activities" + | ("quiz" | "mentors" | "activities")[]; + }, + params: RequestParams = {}, + ) => + this.request< + { + data: { + /** + * The document ID, represented by a UUID + * @format uuid + * @pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$ + */ + documentId: string; + id: number; + /** A string field */ + name: string; + /** A string field */ + link?: string; + /** A datetime field */ + createdAt?: string; + /** A datetime field */ + updatedAt?: string; + /** + * A datetime field + * @default "2025-09-12T06:37:57.371Z" + */ + publishedAt: string; + /** A component field */ + quiz?: MatrixQuestionEntry[]; + /** A relational field */ + mentors?: PluginUsersPermissionsUserDocument[]; + /** A relational field */ + activities?: ApiActivityActivityDocument[]; + }; + }, + void + >({ + path: `/dimensions/${id}`, + method: "PUT", + query: query, + body: data, + type: ContentType.Json, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags dimension + * @name DimensionDeleteDimensionsById + * @request DELETE:/dimensions/{id} + * @response `200` `{ + data: { + \** + * The document ID, represented by a UUID + * @format uuid + * @pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$ + *\ + documentId: string, + id: number, + \** A string field *\ + name: string, + \** A string field *\ + link?: string, + \** A datetime field *\ + createdAt?: string, + \** A datetime field *\ + updatedAt?: string, + \** + * A datetime field + * @default "2025-09-12T06:37:57.374Z" + *\ + publishedAt: string, + \** A component field *\ + quiz?: (MatrixQuestionEntry)[], + \** A relational field *\ + mentors?: (PluginUsersPermissionsUserDocument)[], + \** A relational field *\ + activities?: (ApiActivityActivityDocument)[], + +}, + +}` OK + * @response `400` `void` Bad request + * @response `401` `void` Unauthorized + * @response `403` `void` Forbidden + * @response `404` `void` Not found + * @response `500` `void` Internal server error + */ + dimensionDeleteDimensionsById: ( + id: string, + query?: { + /** The fields to return, this doesn't include populatable fields like relations, components, files, or dynamic zones */ + fields?: ( + | "name" + | "link" + | "createdAt" + | "updatedAt" + | "publishedAt" + )[]; + /** Populate all the first level relations, components, files, and dynamic zones for the entry */ + populate?: + | "*" + | "quiz" + | "mentors" + | "activities" + | ("quiz" | "mentors" | "activities")[]; + /** Filters to apply to the query */ + filters?: Record< + "name" | "link" | "createdAt" | "updatedAt" | "publishedAt", + any + >; + }, + params: RequestParams = {}, + ) => + this.request< + { + data: { + /** + * The document ID, represented by a UUID + * @format uuid + * @pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$ + */ + documentId: string; + id: number; + /** A string field */ + name: string; + /** A string field */ + link?: string; + /** A datetime field */ + createdAt?: string; + /** A datetime field */ + updatedAt?: string; + /** + * A datetime field + * @default "2025-09-12T06:37:57.374Z" + */ + publishedAt: string; + /** A component field */ + quiz?: MatrixQuestionEntry[]; + /** A relational field */ + mentors?: PluginUsersPermissionsUserDocument[]; + /** A relational field */ + activities?: ApiActivityActivityDocument[]; + }; + }, + void + >({ + path: `/dimensions/${id}`, + method: "DELETE", + query: query, + format: "json", + ...params, + }), + }; + domains = { + /** + * No description + * + * @tags domain + * @name DomainGetDomains + * @request GET:/domains + * @response `200` `{ + data: ({ + \** + * The document ID, represented by a UUID + * @format uuid + * @pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$ + *\ + documentId: string, + id: number, + \** A string field *\ + name?: string, + \** A datetime field *\ + createdAt?: string, + \** A datetime field *\ + updatedAt?: string, + \** + * A datetime field + * @default "2025-09-12T06:37:57.379Z" + *\ + publishedAt: string, + \** A relational field *\ + mentors?: (PluginUsersPermissionsUserDocument)[], + +})[], + +}` OK + * @response `400` `void` Bad request + * @response `401` `void` Unauthorized + * @response `403` `void` Forbidden + * @response `404` `void` Not found + * @response `500` `void` Internal server error + */ + domainGetDomains: ( + query?: { + /** The fields to return, this doesn't include populatable fields like relations, components, files, or dynamic zones */ + fields?: ("name" | "createdAt" | "updatedAt" | "publishedAt")[]; + /** Filters to apply to the query */ + filters?: Record< + "name" | "createdAt" | "updatedAt" | "publishedAt", + any + >; + _q?: string; + /** Pagination parameters */ + pagination?: { + /** Include total count in response */ + withCount?: boolean; + } & ( + | { + /** + * Page number (1-based) + * @exclusiveMin 0 + * @max 9007199254740991 + */ + page: number; + /** + * Number of entries per page + * @exclusiveMin 0 + * @max 9007199254740991 + */ + pageSize: number; + } + | { + /** + * Number of entries to skip + * @min 0 + * @max 9007199254740991 + */ + start: number; + /** + * Maximum number of entries to return + * @exclusiveMin 0 + * @max 9007199254740991 + */ + limit: number; + } + ); + /** Sort the result */ + sort?: + | "name" + | "createdAt" + | "updatedAt" + | "publishedAt" + | ("name" | "createdAt" | "updatedAt" | "publishedAt")[] + | Record< + "name" | "createdAt" | "updatedAt" | "publishedAt", + "asc" | "desc" + > + | Record< + "name" | "createdAt" | "updatedAt" | "publishedAt", + "asc" | "desc" + >[]; + /** Populate all the first level relations, components, files, and dynamic zones for the entry */ + populate?: "*" | "mentors" | "mentors"[]; + }, + params: RequestParams = {}, + ) => + this.request< + { + data: { + /** + * The document ID, represented by a UUID + * @format uuid + * @pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$ + */ + documentId: string; + id: number; + /** A string field */ + name?: string; + /** A datetime field */ + createdAt?: string; + /** A datetime field */ + updatedAt?: string; + /** + * A datetime field + * @default "2025-09-12T06:37:57.379Z" + */ + publishedAt: string; + /** A relational field */ + mentors?: PluginUsersPermissionsUserDocument[]; + }[]; + }, + void + >({ + path: `/domains`, + method: "GET", + query: query, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags domain + * @name DomainPostDomains + * @request POST:/domains + * @response `200` `{ + data: { + \** + * The document ID, represented by a UUID + * @format uuid + * @pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$ + *\ + documentId: string, + id: number, + \** A string field *\ + name?: string, + \** A datetime field *\ + createdAt?: string, + \** A datetime field *\ + updatedAt?: string, + \** + * A datetime field + * @default "2025-09-12T06:37:57.389Z" + *\ + publishedAt: string, + \** A relational field *\ + mentors?: (PluginUsersPermissionsUserDocument)[], + +}, + +}` OK + * @response `400` `void` Bad request + * @response `401` `void` Unauthorized + * @response `403` `void` Forbidden + * @response `404` `void` Not found + * @response `500` `void` Internal server error + */ + domainPostDomains: ( + data: { + data: { + /** A string field */ + name?: string; + /** + * A datetime field + * @default "2025-09-12T06:37:57.388Z" + */ + publishedAt: string; + /** A relational field */ + mentors?: string[]; + }; + }, + query?: { + /** The fields to return, this doesn't include populatable fields like relations, components, files, or dynamic zones */ + fields?: ("name" | "createdAt" | "updatedAt" | "publishedAt")[]; + /** Populate all the first level relations, components, files, and dynamic zones for the entry */ + populate?: "*" | "mentors" | "mentors"[]; + }, + params: RequestParams = {}, + ) => + this.request< + { + data: { + /** + * The document ID, represented by a UUID + * @format uuid + * @pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$ + */ + documentId: string; + id: number; + /** A string field */ + name?: string; + /** A datetime field */ + createdAt?: string; + /** A datetime field */ + updatedAt?: string; + /** + * A datetime field + * @default "2025-09-12T06:37:57.389Z" + */ + publishedAt: string; + /** A relational field */ + mentors?: PluginUsersPermissionsUserDocument[]; + }; + }, + void + >({ + path: `/domains`, + method: "POST", + query: query, + body: data, + type: ContentType.Json, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags domain + * @name DomainGetDomainsById + * @request GET:/domains/{id} + * @response `200` `{ + data: { + \** + * The document ID, represented by a UUID + * @format uuid + * @pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$ + *\ + documentId: string, + id: number, + \** A string field *\ + name?: string, + \** A datetime field *\ + createdAt?: string, + \** A datetime field *\ + updatedAt?: string, + \** + * A datetime field + * @default "2025-09-12T06:37:57.384Z" + *\ + publishedAt: string, + \** A relational field *\ + mentors?: (PluginUsersPermissionsUserDocument)[], + +}, + +}` OK + * @response `400` `void` Bad request + * @response `401` `void` Unauthorized + * @response `403` `void` Forbidden + * @response `404` `void` Not found + * @response `500` `void` Internal server error + */ + domainGetDomainsById: ( + id: string, + query?: { + /** The fields to return, this doesn't include populatable fields like relations, components, files, or dynamic zones */ + fields?: ("name" | "createdAt" | "updatedAt" | "publishedAt")[]; + /** Populate all the first level relations, components, files, and dynamic zones for the entry */ + populate?: "*" | "mentors" | "mentors"[]; + /** Filters to apply to the query */ + filters?: Record< + "name" | "createdAt" | "updatedAt" | "publishedAt", + any + >; + /** Sort the result */ + sort?: + | "name" + | "createdAt" + | "updatedAt" + | "publishedAt" + | ("name" | "createdAt" | "updatedAt" | "publishedAt")[] + | Record< + "name" | "createdAt" | "updatedAt" | "publishedAt", + "asc" | "desc" + > + | Record< + "name" | "createdAt" | "updatedAt" | "publishedAt", + "asc" | "desc" + >[]; + }, + params: RequestParams = {}, + ) => + this.request< + { + data: { + /** + * The document ID, represented by a UUID + * @format uuid + * @pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$ + */ + documentId: string; + id: number; + /** A string field */ + name?: string; + /** A datetime field */ + createdAt?: string; + /** A datetime field */ + updatedAt?: string; + /** + * A datetime field + * @default "2025-09-12T06:37:57.384Z" + */ + publishedAt: string; + /** A relational field */ + mentors?: PluginUsersPermissionsUserDocument[]; + }; + }, + void + >({ + path: `/domains/${id}`, + method: "GET", + query: query, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags domain + * @name DomainPutDomainsById + * @request PUT:/domains/{id} + * @response `200` `{ + data: { + \** + * The document ID, represented by a UUID + * @format uuid + * @pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$ + *\ + documentId: string, + id: number, + \** A string field *\ + name?: string, + \** A datetime field *\ + createdAt?: string, + \** A datetime field *\ + updatedAt?: string, + \** + * A datetime field + * @default "2025-09-12T06:37:57.392Z" + *\ + publishedAt: string, + \** A relational field *\ + mentors?: (PluginUsersPermissionsUserDocument)[], + +}, + +}` OK + * @response `400` `void` Bad request + * @response `401` `void` Unauthorized + * @response `403` `void` Forbidden + * @response `404` `void` Not found + * @response `500` `void` Internal server error + */ + domainPutDomainsById: ( + id: string, + data: { + data: { + /** A string field */ + name?: string; + /** + * A datetime field + * @default "2025-09-12T06:37:57.391Z" + */ + publishedAt?: string; + /** A relational field */ + mentors?: string[]; + }; + }, + query?: { + /** The fields to return, this doesn't include populatable fields like relations, components, files, or dynamic zones */ + fields?: ("name" | "createdAt" | "updatedAt" | "publishedAt")[]; + /** Populate all the first level relations, components, files, and dynamic zones for the entry */ + populate?: "*" | "mentors" | "mentors"[]; + }, + params: RequestParams = {}, + ) => + this.request< + { + data: { + /** + * The document ID, represented by a UUID + * @format uuid + * @pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$ + */ + documentId: string; + id: number; + /** A string field */ + name?: string; + /** A datetime field */ + createdAt?: string; + /** A datetime field */ + updatedAt?: string; + /** + * A datetime field + * @default "2025-09-12T06:37:57.392Z" + */ + publishedAt: string; + /** A relational field */ + mentors?: PluginUsersPermissionsUserDocument[]; + }; + }, + void + >({ + path: `/domains/${id}`, + method: "PUT", + query: query, + body: data, + type: ContentType.Json, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags domain + * @name DomainDeleteDomainsById + * @request DELETE:/domains/{id} + * @response `200` `{ + data: { + \** + * The document ID, represented by a UUID + * @format uuid + * @pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$ + *\ + documentId: string, + id: number, + \** A string field *\ + name?: string, + \** A datetime field *\ + createdAt?: string, + \** A datetime field *\ + updatedAt?: string, + \** + * A datetime field + * @default "2025-09-12T06:37:57.395Z" + *\ + publishedAt: string, + \** A relational field *\ + mentors?: (PluginUsersPermissionsUserDocument)[], + +}, + +}` OK + * @response `400` `void` Bad request + * @response `401` `void` Unauthorized + * @response `403` `void` Forbidden + * @response `404` `void` Not found + * @response `500` `void` Internal server error + */ + domainDeleteDomainsById: ( + id: string, + query?: { + /** The fields to return, this doesn't include populatable fields like relations, components, files, or dynamic zones */ + fields?: ("name" | "createdAt" | "updatedAt" | "publishedAt")[]; + /** Populate all the first level relations, components, files, and dynamic zones for the entry */ + populate?: "*" | "mentors" | "mentors"[]; + /** Filters to apply to the query */ + filters?: Record< + "name" | "createdAt" | "updatedAt" | "publishedAt", + any + >; + }, + params: RequestParams = {}, + ) => + this.request< + { + data: { + /** + * The document ID, represented by a UUID + * @format uuid + * @pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$ + */ + documentId: string; + id: number; + /** A string field */ + name?: string; + /** A datetime field */ + createdAt?: string; + /** A datetime field */ + updatedAt?: string; + /** + * A datetime field + * @default "2025-09-12T06:37:57.395Z" + */ + publishedAt: string; + /** A relational field */ + mentors?: PluginUsersPermissionsUserDocument[]; + }; + }, + void + >({ + path: `/domains/${id}`, + method: "DELETE", + query: query, + format: "json", + ...params, + }), + }; + evaluations = { + /** + * No description + * + * @tags evaluation + * @name EvaluationGetEvaluations + * @request GET:/evaluations + * @response `200` `{ + data: ({ + \** + * The document ID, represented by a UUID + * @format uuid + * @pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$ + *\ + documentId: string, + id: number, + \** + * An email field + * @format email + * @pattern ^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$ + *\ + email: string, + \** A datetime field *\ + createdAt?: string, + \** A datetime field *\ + updatedAt?: string, + \** + * A datetime field + * @default "2025-09-12T06:37:57.400Z" + *\ + publishedAt: string, + \** A component field *\ + dimensions?: (EvaluationDimensionEntry)[], + \** A relational field *\ + report?: ApiReportReportDocument, + +})[], + +}` OK + * @response `400` `void` Bad request + * @response `401` `void` Unauthorized + * @response `403` `void` Forbidden + * @response `404` `void` Not found + * @response `500` `void` Internal server error + */ + evaluationGetEvaluations: ( + query?: { + /** The fields to return, this doesn't include populatable fields like relations, components, files, or dynamic zones */ + fields?: ("email" | "createdAt" | "updatedAt" | "publishedAt")[]; + /** Filters to apply to the query */ + filters?: Record< + "email" | "createdAt" | "updatedAt" | "publishedAt", + any + >; + _q?: string; + /** Pagination parameters */ + pagination?: { + /** Include total count in response */ + withCount?: boolean; + } & ( + | { + /** + * Page number (1-based) + * @exclusiveMin 0 + * @max 9007199254740991 + */ + page: number; + /** + * Number of entries per page + * @exclusiveMin 0 + * @max 9007199254740991 + */ + pageSize: number; + } + | { + /** + * Number of entries to skip + * @min 0 + * @max 9007199254740991 + */ + start: number; + /** + * Maximum number of entries to return + * @exclusiveMin 0 + * @max 9007199254740991 + */ + limit: number; + } + ); + /** Sort the result */ + sort?: + | "email" + | "createdAt" + | "updatedAt" + | "publishedAt" + | ("email" | "createdAt" | "updatedAt" | "publishedAt")[] + | Record< + "email" | "createdAt" | "updatedAt" | "publishedAt", + "asc" | "desc" + > + | Record< + "email" | "createdAt" | "updatedAt" | "publishedAt", + "asc" | "desc" + >[]; + /** Populate all the first level relations, components, files, and dynamic zones for the entry */ + populate?: "*" | "dimensions" | "report" | ("dimensions" | "report")[]; + }, + params: RequestParams = {}, + ) => + this.request< + { + data: { + /** + * The document ID, represented by a UUID + * @format uuid + * @pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$ + */ + documentId: string; + id: number; + /** + * An email field + * @format email + * @pattern ^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$ + */ + email: string; + /** A datetime field */ + createdAt?: string; + /** A datetime field */ + updatedAt?: string; + /** + * A datetime field + * @default "2025-09-12T06:37:57.400Z" + */ + publishedAt: string; + /** A component field */ + dimensions?: EvaluationDimensionEntry[]; + /** A relational field */ + report?: ApiReportReportDocument; + }[]; + }, + void + >({ + path: `/evaluations`, + method: "GET", + query: query, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags evaluation + * @name EvaluationPostEvaluations + * @request POST:/evaluations + * @response `200` `{ + data: { + \** + * The document ID, represented by a UUID + * @format uuid + * @pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$ + *\ + documentId: string, + id: number, + \** + * An email field + * @format email + * @pattern ^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$ + *\ + email: string, + \** A datetime field *\ + createdAt?: string, + \** A datetime field *\ + updatedAt?: string, + \** + * A datetime field + * @default "2025-09-12T06:37:57.409Z" + *\ + publishedAt: string, + \** A component field *\ + dimensions?: (EvaluationDimensionEntry)[], + \** A relational field *\ + report?: ApiReportReportDocument, + +}, + +}` OK + * @response `400` `void` Bad request + * @response `401` `void` Unauthorized + * @response `403` `void` Forbidden + * @response `404` `void` Not found + * @response `500` `void` Internal server error + */ + evaluationPostEvaluations: ( + data: { + data: { + /** + * An email field + * @format email + * @pattern ^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$ + */ + email: string; + /** + * A datetime field + * @default "2025-09-12T06:37:57.408Z" + */ + publishedAt: string; + /** A component field */ + dimensions?: any[]; + /** + * A relational field + * @format uuid + * @pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$ + */ + report?: string; + }; + }, + query?: { + /** The fields to return, this doesn't include populatable fields like relations, components, files, or dynamic zones */ + fields?: ("email" | "createdAt" | "updatedAt" | "publishedAt")[]; + /** Populate all the first level relations, components, files, and dynamic zones for the entry */ + populate?: "*" | "dimensions" | "report" | ("dimensions" | "report")[]; + }, + params: RequestParams = {}, + ) => + this.request< + { + data: { + /** + * The document ID, represented by a UUID + * @format uuid + * @pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$ + */ + documentId: string; + id: number; + /** + * An email field + * @format email + * @pattern ^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$ + */ + email: string; + /** A datetime field */ + createdAt?: string; + /** A datetime field */ + updatedAt?: string; + /** + * A datetime field + * @default "2025-09-12T06:37:57.409Z" + */ + publishedAt: string; + /** A component field */ + dimensions?: EvaluationDimensionEntry[]; + /** A relational field */ + report?: ApiReportReportDocument; + }; + }, + void + >({ + path: `/evaluations`, + method: "POST", + query: query, + body: data, + type: ContentType.Json, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags evaluation + * @name EvaluationGetEvaluationsById + * @request GET:/evaluations/{id} + * @response `200` `{ + data: { + \** + * The document ID, represented by a UUID + * @format uuid + * @pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$ + *\ + documentId: string, + id: number, + \** + * An email field + * @format email + * @pattern ^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$ + *\ + email: string, + \** A datetime field *\ + createdAt?: string, + \** A datetime field *\ + updatedAt?: string, + \** + * A datetime field + * @default "2025-09-12T06:37:57.406Z" + *\ + publishedAt: string, + \** A component field *\ + dimensions?: (EvaluationDimensionEntry)[], + \** A relational field *\ + report?: ApiReportReportDocument, + +}, + +}` OK + * @response `400` `void` Bad request + * @response `401` `void` Unauthorized + * @response `403` `void` Forbidden + * @response `404` `void` Not found + * @response `500` `void` Internal server error + */ + evaluationGetEvaluationsById: ( + id: string, + query?: { + /** The fields to return, this doesn't include populatable fields like relations, components, files, or dynamic zones */ + fields?: ("email" | "createdAt" | "updatedAt" | "publishedAt")[]; + /** Populate all the first level relations, components, files, and dynamic zones for the entry */ + populate?: "*" | "dimensions" | "report" | ("dimensions" | "report")[]; + /** Filters to apply to the query */ + filters?: Record< + "email" | "createdAt" | "updatedAt" | "publishedAt", + any + >; + /** Sort the result */ + sort?: + | "email" + | "createdAt" + | "updatedAt" + | "publishedAt" + | ("email" | "createdAt" | "updatedAt" | "publishedAt")[] + | Record< + "email" | "createdAt" | "updatedAt" | "publishedAt", + "asc" | "desc" + > + | Record< + "email" | "createdAt" | "updatedAt" | "publishedAt", + "asc" | "desc" + >[]; + }, + params: RequestParams = {}, + ) => + this.request< + { + data: { + /** + * The document ID, represented by a UUID + * @format uuid + * @pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$ + */ + documentId: string; + id: number; + /** + * An email field + * @format email + * @pattern ^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$ + */ + email: string; + /** A datetime field */ + createdAt?: string; + /** A datetime field */ + updatedAt?: string; + /** + * A datetime field + * @default "2025-09-12T06:37:57.406Z" + */ + publishedAt: string; + /** A component field */ + dimensions?: EvaluationDimensionEntry[]; + /** A relational field */ + report?: ApiReportReportDocument; + }; + }, + void + >({ + path: `/evaluations/${id}`, + method: "GET", + query: query, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags evaluation + * @name EvaluationPutEvaluationsById + * @request PUT:/evaluations/{id} + * @response `200` `{ + data: { + \** + * The document ID, represented by a UUID + * @format uuid + * @pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$ + *\ + documentId: string, + id: number, + \** + * An email field + * @format email + * @pattern ^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$ + *\ + email: string, + \** A datetime field *\ + createdAt?: string, + \** A datetime field *\ + updatedAt?: string, + \** + * A datetime field + * @default "2025-09-12T06:37:57.413Z" + *\ + publishedAt: string, + \** A component field *\ + dimensions?: (EvaluationDimensionEntry)[], + \** A relational field *\ + report?: ApiReportReportDocument, + +}, + +}` OK + * @response `400` `void` Bad request + * @response `401` `void` Unauthorized + * @response `403` `void` Forbidden + * @response `404` `void` Not found + * @response `500` `void` Internal server error + */ + evaluationPutEvaluationsById: ( + id: string, + data: { + data: { + /** + * An email field + * @format email + * @pattern ^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$ + */ + email?: string; + /** + * A datetime field + * @default "2025-09-12T06:37:57.411Z" + */ + publishedAt?: string; + /** A component field */ + dimensions?: any[]; + /** + * A relational field + * @format uuid + * @pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$ + */ + report?: string; + }; + }, + query?: { + /** The fields to return, this doesn't include populatable fields like relations, components, files, or dynamic zones */ + fields?: ("email" | "createdAt" | "updatedAt" | "publishedAt")[]; + /** Populate all the first level relations, components, files, and dynamic zones for the entry */ + populate?: "*" | "dimensions" | "report" | ("dimensions" | "report")[]; + }, + params: RequestParams = {}, + ) => + this.request< + { + data: { + /** + * The document ID, represented by a UUID + * @format uuid + * @pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$ + */ + documentId: string; + id: number; + /** + * An email field + * @format email + * @pattern ^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$ + */ + email: string; + /** A datetime field */ + createdAt?: string; + /** A datetime field */ + updatedAt?: string; + /** + * A datetime field + * @default "2025-09-12T06:37:57.413Z" + */ + publishedAt: string; + /** A component field */ + dimensions?: EvaluationDimensionEntry[]; + /** A relational field */ + report?: ApiReportReportDocument; + }; + }, + void + >({ + path: `/evaluations/${id}`, + method: "PUT", + query: query, + body: data, + type: ContentType.Json, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags evaluation + * @name EvaluationDeleteEvaluationsById + * @request DELETE:/evaluations/{id} + * @response `200` `{ + data: { + \** + * The document ID, represented by a UUID + * @format uuid + * @pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$ + *\ + documentId: string, + id: number, + \** + * An email field + * @format email + * @pattern ^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$ + *\ + email: string, + \** A datetime field *\ + createdAt?: string, + \** A datetime field *\ + updatedAt?: string, + \** + * A datetime field + * @default "2025-09-12T06:37:57.416Z" + *\ + publishedAt: string, + \** A component field *\ + dimensions?: (EvaluationDimensionEntry)[], + \** A relational field *\ + report?: ApiReportReportDocument, + +}, + +}` OK + * @response `400` `void` Bad request + * @response `401` `void` Unauthorized + * @response `403` `void` Forbidden + * @response `404` `void` Not found + * @response `500` `void` Internal server error + */ + evaluationDeleteEvaluationsById: ( + id: string, + query?: { + /** The fields to return, this doesn't include populatable fields like relations, components, files, or dynamic zones */ + fields?: ("email" | "createdAt" | "updatedAt" | "publishedAt")[]; + /** Populate all the first level relations, components, files, and dynamic zones for the entry */ + populate?: "*" | "dimensions" | "report" | ("dimensions" | "report")[]; + /** Filters to apply to the query */ + filters?: Record< + "email" | "createdAt" | "updatedAt" | "publishedAt", + any + >; + }, + params: RequestParams = {}, + ) => + this.request< + { + data: { + /** + * The document ID, represented by a UUID + * @format uuid + * @pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$ + */ + documentId: string; + id: number; + /** + * An email field + * @format email + * @pattern ^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$ + */ + email: string; + /** A datetime field */ + createdAt?: string; + /** A datetime field */ + updatedAt?: string; + /** + * A datetime field + * @default "2025-09-12T06:37:57.416Z" + */ + publishedAt: string; + /** A component field */ + dimensions?: EvaluationDimensionEntry[]; + /** A relational field */ + report?: ApiReportReportDocument; + }; + }, + void + >({ + path: `/evaluations/${id}`, + method: "DELETE", + query: query, + format: "json", + ...params, + }), + }; + matrix = { + /** + * No description + * + * @tags matrix + * @name MatrixGetMatrix + * @request GET:/matrix + * @response `200` `{ + data: { + \** + * The document ID, represented by a UUID + * @format uuid + * @pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$ + *\ + documentId: string, + id: number, + \** A datetime field *\ + createdAt?: string, + \** A datetime field *\ + updatedAt?: string, + \** + * A datetime field + * @default "2025-09-12T06:37:57.421Z" + *\ + publishedAt: string, + \** A relational field *\ + dimensions?: (ApiDimensionDimensionDocument)[], + +}, + +}` OK + * @response `400` `void` Bad request + * @response `401` `void` Unauthorized + * @response `403` `void` Forbidden + * @response `404` `void` Not found + * @response `500` `void` Internal server error + */ + matrixGetMatrix: ( + query?: { + /** The fields to return, this doesn't include populatable fields like relations, components, files, or dynamic zones */ + fields?: ("createdAt" | "updatedAt" | "publishedAt")[]; + /** Populate all the first level relations, components, files, and dynamic zones for the entry */ + populate?: "*" | "dimensions" | "dimensions"[]; + /** Filters to apply to the query */ + filters?: Record<"createdAt" | "updatedAt" | "publishedAt", any>; + }, + params: RequestParams = {}, + ) => + this.request< + { + data: { + /** + * The document ID, represented by a UUID + * @format uuid + * @pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$ + */ + documentId: string; + id: number; + /** A datetime field */ + createdAt?: string; + /** A datetime field */ + updatedAt?: string; + /** + * A datetime field + * @default "2025-09-12T06:37:57.421Z" + */ + publishedAt: string; + /** A relational field */ + dimensions?: ApiDimensionDimensionDocument[]; + }; + }, + void + >({ + path: `/matrix`, + method: "GET", + query: query, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags matrix + * @name MatrixPutMatrix + * @request PUT:/matrix + * @response `200` `{ + data: { + \** + * The document ID, represented by a UUID + * @format uuid + * @pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$ + *\ + documentId: string, + id: number, + \** A datetime field *\ + createdAt?: string, + \** A datetime field *\ + updatedAt?: string, + \** + * A datetime field + * @default "2025-09-12T06:37:57.424Z" + *\ + publishedAt: string, + \** A relational field *\ + dimensions?: (ApiDimensionDimensionDocument)[], + +}, + +}` OK + * @response `400` `void` Bad request + * @response `401` `void` Unauthorized + * @response `403` `void` Forbidden + * @response `404` `void` Not found + * @response `500` `void` Internal server error + */ + matrixPutMatrix: ( + data: { + data: { + /** + * A datetime field + * @default "2025-09-12T06:37:57.423Z" + */ + publishedAt?: string; + /** A relational field */ + dimensions?: string[]; + }; + }, + query?: { + /** The fields to return, this doesn't include populatable fields like relations, components, files, or dynamic zones */ + fields?: ("createdAt" | "updatedAt" | "publishedAt")[]; + /** Populate all the first level relations, components, files, and dynamic zones for the entry */ + populate?: "*" | "dimensions" | "dimensions"[]; + }, + params: RequestParams = {}, + ) => + this.request< + { + data: { + /** + * The document ID, represented by a UUID + * @format uuid + * @pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$ + */ + documentId: string; + id: number; + /** A datetime field */ + createdAt?: string; + /** A datetime field */ + updatedAt?: string; + /** + * A datetime field + * @default "2025-09-12T06:37:57.424Z" + */ + publishedAt: string; + /** A relational field */ + dimensions?: ApiDimensionDimensionDocument[]; + }; + }, + void + >({ + path: `/matrix`, + method: "PUT", + query: query, + body: data, + type: ContentType.Json, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags matrix + * @name MatrixDeleteMatrix + * @request DELETE:/matrix + * @response `200` `{ + data: { + \** + * The document ID, represented by a UUID + * @format uuid + * @pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$ + *\ + documentId: string, + id: number, + \** A datetime field *\ + createdAt?: string, + \** A datetime field *\ + updatedAt?: string, + \** + * A datetime field + * @default "2025-09-12T06:37:57.426Z" + *\ + publishedAt: string, + \** A relational field *\ + dimensions?: (ApiDimensionDimensionDocument)[], + +}, + +}` OK + * @response `400` `void` Bad request + * @response `401` `void` Unauthorized + * @response `403` `void` Forbidden + * @response `404` `void` Not found + * @response `500` `void` Internal server error + */ + matrixDeleteMatrix: ( + query?: { + /** The fields to return, this doesn't include populatable fields like relations, components, files, or dynamic zones */ + fields?: ("createdAt" | "updatedAt" | "publishedAt")[]; + /** Populate all the first level relations, components, files, and dynamic zones for the entry */ + populate?: "*" | "dimensions" | "dimensions"[]; + }, + params: RequestParams = {}, + ) => + this.request< + { + data: { + /** + * The document ID, represented by a UUID + * @format uuid + * @pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$ + */ + documentId: string; + id: number; + /** A datetime field */ + createdAt?: string; + /** A datetime field */ + updatedAt?: string; + /** + * A datetime field + * @default "2025-09-12T06:37:57.426Z" + */ + publishedAt: string; + /** A relational field */ + dimensions?: ApiDimensionDimensionDocument[]; + }; + }, + void + >({ + path: `/matrix`, + method: "DELETE", + query: query, + format: "json", + ...params, + }), + }; + mentorshipRequests = { + /** + * No description + * + * @tags mentorship-request + * @name MentorshipRequestGetMentorshipRequests + * @request GET:/mentorship-requests + * @response `200` `{ + data: ({ + \** + * The document ID, represented by a UUID + * @format uuid + * @pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$ + *\ + documentId: string, + id: number, + \** A datetime field *\ + createdAt?: string, + \** A datetime field *\ + updatedAt?: string, + \** + * A datetime field + * @default "2025-09-12T06:37:57.430Z" + *\ + publishedAt: string, + \** A relational field *\ + mentor?: PluginUsersPermissionsUserDocument, + \** A relational field *\ + user?: PluginUsersPermissionsUserDocument, + +})[], + +}` OK + * @response `400` `void` Bad request + * @response `401` `void` Unauthorized + * @response `403` `void` Forbidden + * @response `404` `void` Not found + * @response `500` `void` Internal server error + */ + mentorshipRequestGetMentorshipRequests: ( + query?: { + /** The fields to return, this doesn't include populatable fields like relations, components, files, or dynamic zones */ + fields?: ("createdAt" | "updatedAt" | "publishedAt")[]; + /** Filters to apply to the query */ + filters?: Record<"createdAt" | "updatedAt" | "publishedAt", any>; + _q?: string; + /** Pagination parameters */ + pagination?: { + /** Include total count in response */ + withCount?: boolean; + } & ( + | { + /** + * Page number (1-based) + * @exclusiveMin 0 + * @max 9007199254740991 + */ + page: number; + /** + * Number of entries per page + * @exclusiveMin 0 + * @max 9007199254740991 + */ + pageSize: number; + } + | { + /** + * Number of entries to skip + * @min 0 + * @max 9007199254740991 + */ + start: number; + /** + * Maximum number of entries to return + * @exclusiveMin 0 + * @max 9007199254740991 + */ + limit: number; + } + ); + /** Sort the result */ + sort?: + | "createdAt" + | "updatedAt" + | "publishedAt" + | ("createdAt" | "updatedAt" | "publishedAt")[] + | Record<"createdAt" | "updatedAt" | "publishedAt", "asc" | "desc"> + | Record<"createdAt" | "updatedAt" | "publishedAt", "asc" | "desc">[]; + /** Populate all the first level relations, components, files, and dynamic zones for the entry */ + populate?: "*" | "mentor" | "user" | ("mentor" | "user")[]; + }, + params: RequestParams = {}, + ) => + this.request< + { + data: { + /** + * The document ID, represented by a UUID + * @format uuid + * @pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$ + */ + documentId: string; + id: number; + /** A datetime field */ + createdAt?: string; + /** A datetime field */ + updatedAt?: string; + /** + * A datetime field + * @default "2025-09-12T06:37:57.430Z" + */ + publishedAt: string; + /** A relational field */ + mentor?: PluginUsersPermissionsUserDocument; + /** A relational field */ + user?: PluginUsersPermissionsUserDocument; + }[]; + }, + void + >({ + path: `/mentorship-requests`, + method: "GET", + query: query, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags mentorship-request + * @name MentorshipRequestPostMentorshipRequests + * @request POST:/mentorship-requests + * @response `200` `{ + data: { + \** + * The document ID, represented by a UUID + * @format uuid + * @pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$ + *\ + documentId: string, + id: number, + \** A datetime field *\ + createdAt?: string, + \** A datetime field *\ + updatedAt?: string, + \** + * A datetime field + * @default "2025-09-12T06:37:57.439Z" + *\ + publishedAt: string, + \** A relational field *\ + mentor?: PluginUsersPermissionsUserDocument, + \** A relational field *\ + user?: PluginUsersPermissionsUserDocument, + +}, + +}` OK + * @response `400` `void` Bad request + * @response `401` `void` Unauthorized + * @response `403` `void` Forbidden + * @response `404` `void` Not found + * @response `500` `void` Internal server error + */ + mentorshipRequestPostMentorshipRequests: ( + data: { + data: { + /** + * A datetime field + * @default "2025-09-12T06:37:57.438Z" + */ + publishedAt: string; + /** + * A relational field + * @format uuid + * @pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$ + */ + mentor?: string; + /** + * A relational field + * @format uuid + * @pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$ + */ + user?: string; + }; + }, + query?: { + /** The fields to return, this doesn't include populatable fields like relations, components, files, or dynamic zones */ + fields?: ("createdAt" | "updatedAt" | "publishedAt")[]; + /** Populate all the first level relations, components, files, and dynamic zones for the entry */ + populate?: "*" | "mentor" | "user" | ("mentor" | "user")[]; + }, + params: RequestParams = {}, + ) => + this.request< + { + data: { + /** + * The document ID, represented by a UUID + * @format uuid + * @pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$ + */ + documentId: string; + id: number; + /** A datetime field */ + createdAt?: string; + /** A datetime field */ + updatedAt?: string; + /** + * A datetime field + * @default "2025-09-12T06:37:57.439Z" + */ + publishedAt: string; + /** A relational field */ + mentor?: PluginUsersPermissionsUserDocument; + /** A relational field */ + user?: PluginUsersPermissionsUserDocument; + }; + }, + void + >({ + path: `/mentorship-requests`, + method: "POST", + query: query, + body: data, + type: ContentType.Json, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags mentorship-request + * @name MentorshipRequestGetMentorshipRequestsById + * @request GET:/mentorship-requests/{id} + * @response `200` `{ + data: { + \** + * The document ID, represented by a UUID + * @format uuid + * @pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$ + *\ + documentId: string, + id: number, + \** A datetime field *\ + createdAt?: string, + \** A datetime field *\ + updatedAt?: string, + \** + * A datetime field + * @default "2025-09-12T06:37:57.433Z" + *\ + publishedAt: string, + \** A relational field *\ + mentor?: PluginUsersPermissionsUserDocument, + \** A relational field *\ + user?: PluginUsersPermissionsUserDocument, + +}, + +}` OK + * @response `400` `void` Bad request + * @response `401` `void` Unauthorized + * @response `403` `void` Forbidden + * @response `404` `void` Not found + * @response `500` `void` Internal server error + */ + mentorshipRequestGetMentorshipRequestsById: ( + id: string, + query?: { + /** The fields to return, this doesn't include populatable fields like relations, components, files, or dynamic zones */ + fields?: ("createdAt" | "updatedAt" | "publishedAt")[]; + /** Populate all the first level relations, components, files, and dynamic zones for the entry */ + populate?: "*" | "mentor" | "user" | ("mentor" | "user")[]; + /** Filters to apply to the query */ + filters?: Record<"createdAt" | "updatedAt" | "publishedAt", any>; + /** Sort the result */ + sort?: + | "createdAt" + | "updatedAt" + | "publishedAt" + | ("createdAt" | "updatedAt" | "publishedAt")[] + | Record<"createdAt" | "updatedAt" | "publishedAt", "asc" | "desc"> + | Record<"createdAt" | "updatedAt" | "publishedAt", "asc" | "desc">[]; + }, + params: RequestParams = {}, + ) => + this.request< + { + data: { + /** + * The document ID, represented by a UUID + * @format uuid + * @pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$ + */ + documentId: string; + id: number; + /** A datetime field */ + createdAt?: string; + /** A datetime field */ + updatedAt?: string; + /** + * A datetime field + * @default "2025-09-12T06:37:57.433Z" + */ + publishedAt: string; + /** A relational field */ + mentor?: PluginUsersPermissionsUserDocument; + /** A relational field */ + user?: PluginUsersPermissionsUserDocument; + }; + }, + void + >({ + path: `/mentorship-requests/${id}`, + method: "GET", + query: query, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags mentorship-request + * @name MentorshipRequestPutMentorshipRequestsById + * @request PUT:/mentorship-requests/{id} + * @response `200` `{ + data: { + \** + * The document ID, represented by a UUID + * @format uuid + * @pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$ + *\ + documentId: string, + id: number, + \** A datetime field *\ + createdAt?: string, + \** A datetime field *\ + updatedAt?: string, + \** + * A datetime field + * @default "2025-09-12T06:37:57.441Z" + *\ + publishedAt: string, + \** A relational field *\ + mentor?: PluginUsersPermissionsUserDocument, + \** A relational field *\ + user?: PluginUsersPermissionsUserDocument, + +}, + +}` OK + * @response `400` `void` Bad request + * @response `401` `void` Unauthorized + * @response `403` `void` Forbidden + * @response `404` `void` Not found + * @response `500` `void` Internal server error + */ + mentorshipRequestPutMentorshipRequestsById: ( + id: string, + data: { + data: { + /** + * A datetime field + * @default "2025-09-12T06:37:57.440Z" + */ + publishedAt?: string; + /** + * A relational field + * @format uuid + * @pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$ + */ + mentor?: string; + /** + * A relational field + * @format uuid + * @pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$ + */ + user?: string; + }; + }, + query?: { + /** The fields to return, this doesn't include populatable fields like relations, components, files, or dynamic zones */ + fields?: ("createdAt" | "updatedAt" | "publishedAt")[]; + /** Populate all the first level relations, components, files, and dynamic zones for the entry */ + populate?: "*" | "mentor" | "user" | ("mentor" | "user")[]; + }, + params: RequestParams = {}, + ) => + this.request< + { + data: { + /** + * The document ID, represented by a UUID + * @format uuid + * @pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$ + */ + documentId: string; + id: number; + /** A datetime field */ + createdAt?: string; + /** A datetime field */ + updatedAt?: string; + /** + * A datetime field + * @default "2025-09-12T06:37:57.441Z" + */ + publishedAt: string; + /** A relational field */ + mentor?: PluginUsersPermissionsUserDocument; + /** A relational field */ + user?: PluginUsersPermissionsUserDocument; + }; + }, + void + >({ + path: `/mentorship-requests/${id}`, + method: "PUT", + query: query, + body: data, + type: ContentType.Json, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags mentorship-request + * @name MentorshipRequestDeleteMentorshipRequestsById + * @request DELETE:/mentorship-requests/{id} + * @response `200` `{ + data: { + \** + * The document ID, represented by a UUID + * @format uuid + * @pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$ + *\ + documentId: string, + id: number, + \** A datetime field *\ + createdAt?: string, + \** A datetime field *\ + updatedAt?: string, + \** + * A datetime field + * @default "2025-09-12T06:37:57.442Z" + *\ + publishedAt: string, + \** A relational field *\ + mentor?: PluginUsersPermissionsUserDocument, + \** A relational field *\ + user?: PluginUsersPermissionsUserDocument, + +}, + +}` OK + * @response `400` `void` Bad request + * @response `401` `void` Unauthorized + * @response `403` `void` Forbidden + * @response `404` `void` Not found + * @response `500` `void` Internal server error + */ + mentorshipRequestDeleteMentorshipRequestsById: ( + id: string, + query?: { + /** The fields to return, this doesn't include populatable fields like relations, components, files, or dynamic zones */ + fields?: ("createdAt" | "updatedAt" | "publishedAt")[]; + /** Populate all the first level relations, components, files, and dynamic zones for the entry */ + populate?: "*" | "mentor" | "user" | ("mentor" | "user")[]; + /** Filters to apply to the query */ + filters?: Record<"createdAt" | "updatedAt" | "publishedAt", any>; + }, + params: RequestParams = {}, + ) => + this.request< + { + data: { + /** + * The document ID, represented by a UUID + * @format uuid + * @pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$ + */ + documentId: string; + id: number; + /** A datetime field */ + createdAt?: string; + /** A datetime field */ + updatedAt?: string; + /** + * A datetime field + * @default "2025-09-12T06:37:57.442Z" + */ + publishedAt: string; + /** A relational field */ + mentor?: PluginUsersPermissionsUserDocument; + /** A relational field */ + user?: PluginUsersPermissionsUserDocument; + }; + }, + void + >({ + path: `/mentorship-requests/${id}`, + method: "DELETE", + query: query, + format: "json", + ...params, + }), + }; + programs = { + /** + * No description + * + * @tags program + * @name ProgramGetPrograms + * @request GET:/programs + * @response `200` `{ + data: ({ + \** + * The document ID, represented by a UUID + * @format uuid + * @pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$ + *\ + documentId: string, + id: number, + \** A string field *\ + name: string, + \** A date field *\ + startDate: string, + \** A date field *\ + endDate: string, + \** A string field *\ + sponsorName?: string, + \** A datetime field *\ + createdAt?: string, + \** A datetime field *\ + updatedAt?: string, + \** + * A datetime field + * @default "2025-09-12T06:37:57.449Z" + *\ + publishedAt: string, + \** A relational field *\ + mentors?: (PluginUsersPermissionsUserDocument)[], + \** A relational field *\ + users?: (PluginUsersPermissionsUserDocument)[], + +})[], + +}` OK + * @response `400` `void` Bad request + * @response `401` `void` Unauthorized + * @response `403` `void` Forbidden + * @response `404` `void` Not found + * @response `500` `void` Internal server error + */ + programGetPrograms: ( + query?: { + /** The fields to return, this doesn't include populatable fields like relations, components, files, or dynamic zones */ + fields?: ( + | "name" + | "startDate" + | "endDate" + | "sponsorName" + | "createdAt" + | "updatedAt" + | "publishedAt" + )[]; + /** Filters to apply to the query */ + filters?: Record< + | "name" + | "startDate" + | "endDate" + | "sponsorName" + | "createdAt" + | "updatedAt" + | "publishedAt", + any + >; + _q?: string; + /** Pagination parameters */ + pagination?: { + /** Include total count in response */ + withCount?: boolean; + } & ( + | { + /** + * Page number (1-based) + * @exclusiveMin 0 + * @max 9007199254740991 + */ + page: number; + /** + * Number of entries per page + * @exclusiveMin 0 + * @max 9007199254740991 + */ + pageSize: number; + } + | { + /** + * Number of entries to skip + * @min 0 + * @max 9007199254740991 + */ + start: number; + /** + * Maximum number of entries to return + * @exclusiveMin 0 + * @max 9007199254740991 + */ + limit: number; + } + ); + /** Sort the result */ + sort?: + | "name" + | "startDate" + | "endDate" + | "sponsorName" + | "createdAt" + | "updatedAt" + | "publishedAt" + | ( + | "name" + | "startDate" + | "endDate" + | "sponsorName" + | "createdAt" + | "updatedAt" + | "publishedAt" + )[] + | Record< + | "name" + | "startDate" + | "endDate" + | "sponsorName" + | "createdAt" + | "updatedAt" + | "publishedAt", + "asc" | "desc" + > + | Record< + | "name" + | "startDate" + | "endDate" + | "sponsorName" + | "createdAt" + | "updatedAt" + | "publishedAt", + "asc" | "desc" + >[]; + /** Populate all the first level relations, components, files, and dynamic zones for the entry */ + populate?: "*" | "mentors" | "users" | ("mentors" | "users")[]; + }, + params: RequestParams = {}, + ) => + this.request< + { + data: { + /** + * The document ID, represented by a UUID + * @format uuid + * @pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$ + */ + documentId: string; + id: number; + /** A string field */ + name: string; + /** A date field */ + startDate: string; + /** A date field */ + endDate: string; + /** A string field */ + sponsorName?: string; + /** A datetime field */ + createdAt?: string; + /** A datetime field */ + updatedAt?: string; + /** + * A datetime field + * @default "2025-09-12T06:37:57.449Z" + */ + publishedAt: string; + /** A relational field */ + mentors?: PluginUsersPermissionsUserDocument[]; + /** A relational field */ + users?: PluginUsersPermissionsUserDocument[]; + }[]; + }, + void + >({ + path: `/programs`, + method: "GET", + query: query, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags program + * @name ProgramPostPrograms + * @request POST:/programs + * @response `200` `{ + data: { + \** + * The document ID, represented by a UUID + * @format uuid + * @pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$ + *\ + documentId: string, + id: number, + \** A string field *\ + name: string, + \** A date field *\ + startDate: string, + \** A date field *\ + endDate: string, + \** A string field *\ + sponsorName?: string, + \** A datetime field *\ + createdAt?: string, + \** A datetime field *\ + updatedAt?: string, + \** + * A datetime field + * @default "2025-09-12T06:37:57.456Z" + *\ + publishedAt: string, + \** A relational field *\ + mentors?: (PluginUsersPermissionsUserDocument)[], + \** A relational field *\ + users?: (PluginUsersPermissionsUserDocument)[], + +}, + +}` OK + * @response `400` `void` Bad request + * @response `401` `void` Unauthorized + * @response `403` `void` Forbidden + * @response `404` `void` Not found + * @response `500` `void` Internal server error + */ + programPostPrograms: ( + data: { + data: { + /** A string field */ + name: string; + /** A date field */ + startDate: string; + /** A date field */ + endDate: string; + /** A string field */ + sponsorName?: string; + /** + * A datetime field + * @default "2025-09-12T06:37:57.455Z" + */ + publishedAt: string; + /** A relational field */ + mentors?: string[]; + /** A relational field */ + users?: string[]; + }; + }, + query?: { + /** The fields to return, this doesn't include populatable fields like relations, components, files, or dynamic zones */ + fields?: ( + | "name" + | "startDate" + | "endDate" + | "sponsorName" + | "createdAt" + | "updatedAt" + | "publishedAt" + )[]; + /** Populate all the first level relations, components, files, and dynamic zones for the entry */ + populate?: "*" | "mentors" | "users" | ("mentors" | "users")[]; + }, + params: RequestParams = {}, + ) => + this.request< + { + data: { + /** + * The document ID, represented by a UUID + * @format uuid + * @pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$ + */ + documentId: string; + id: number; + /** A string field */ + name: string; + /** A date field */ + startDate: string; + /** A date field */ + endDate: string; + /** A string field */ + sponsorName?: string; + /** A datetime field */ + createdAt?: string; + /** A datetime field */ + updatedAt?: string; + /** + * A datetime field + * @default "2025-09-12T06:37:57.456Z" + */ + publishedAt: string; + /** A relational field */ + mentors?: PluginUsersPermissionsUserDocument[]; + /** A relational field */ + users?: PluginUsersPermissionsUserDocument[]; + }; + }, + void + >({ + path: `/programs`, + method: "POST", + query: query, + body: data, + type: ContentType.Json, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags program + * @name ProgramGetProgramsById + * @request GET:/programs/{id} + * @response `200` `{ + data: { + \** + * The document ID, represented by a UUID + * @format uuid + * @pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$ + *\ + documentId: string, + id: number, + \** A string field *\ + name: string, + \** A date field *\ + startDate: string, + \** A date field *\ + endDate: string, + \** A string field *\ + sponsorName?: string, + \** A datetime field *\ + createdAt?: string, + \** A datetime field *\ + updatedAt?: string, + \** + * A datetime field + * @default "2025-09-12T06:37:57.453Z" + *\ + publishedAt: string, + \** A relational field *\ + mentors?: (PluginUsersPermissionsUserDocument)[], + \** A relational field *\ + users?: (PluginUsersPermissionsUserDocument)[], + +}, + +}` OK + * @response `400` `void` Bad request + * @response `401` `void` Unauthorized + * @response `403` `void` Forbidden + * @response `404` `void` Not found + * @response `500` `void` Internal server error + */ + programGetProgramsById: ( + id: string, + query?: { + /** The fields to return, this doesn't include populatable fields like relations, components, files, or dynamic zones */ + fields?: ( + | "name" + | "startDate" + | "endDate" + | "sponsorName" + | "createdAt" + | "updatedAt" + | "publishedAt" + )[]; + /** Populate all the first level relations, components, files, and dynamic zones for the entry */ + populate?: "*" | "mentors" | "users" | ("mentors" | "users")[]; + /** Filters to apply to the query */ + filters?: Record< + | "name" + | "startDate" + | "endDate" + | "sponsorName" + | "createdAt" + | "updatedAt" + | "publishedAt", + any + >; + /** Sort the result */ + sort?: + | "name" + | "startDate" + | "endDate" + | "sponsorName" + | "createdAt" + | "updatedAt" + | "publishedAt" + | ( + | "name" + | "startDate" + | "endDate" + | "sponsorName" + | "createdAt" + | "updatedAt" + | "publishedAt" + )[] + | Record< + | "name" + | "startDate" + | "endDate" + | "sponsorName" + | "createdAt" + | "updatedAt" + | "publishedAt", + "asc" | "desc" + > + | Record< + | "name" + | "startDate" + | "endDate" + | "sponsorName" + | "createdAt" + | "updatedAt" + | "publishedAt", + "asc" | "desc" + >[]; + }, + params: RequestParams = {}, + ) => + this.request< + { + data: { + /** + * The document ID, represented by a UUID + * @format uuid + * @pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$ + */ + documentId: string; + id: number; + /** A string field */ + name: string; + /** A date field */ + startDate: string; + /** A date field */ + endDate: string; + /** A string field */ + sponsorName?: string; + /** A datetime field */ + createdAt?: string; + /** A datetime field */ + updatedAt?: string; + /** + * A datetime field + * @default "2025-09-12T06:37:57.453Z" + */ + publishedAt: string; + /** A relational field */ + mentors?: PluginUsersPermissionsUserDocument[]; + /** A relational field */ + users?: PluginUsersPermissionsUserDocument[]; + }; + }, + void + >({ + path: `/programs/${id}`, + method: "GET", + query: query, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags program + * @name ProgramPutProgramsById + * @request PUT:/programs/{id} + * @response `200` `{ + data: { + \** + * The document ID, represented by a UUID + * @format uuid + * @pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$ + *\ + documentId: string, + id: number, + \** A string field *\ + name: string, + \** A date field *\ + startDate: string, + \** A date field *\ + endDate: string, + \** A string field *\ + sponsorName?: string, + \** A datetime field *\ + createdAt?: string, + \** A datetime field *\ + updatedAt?: string, + \** + * A datetime field + * @default "2025-09-12T06:37:57.463Z" + *\ + publishedAt: string, + \** A relational field *\ + mentors?: (PluginUsersPermissionsUserDocument)[], + \** A relational field *\ + users?: (PluginUsersPermissionsUserDocument)[], + +}, + +}` OK + * @response `400` `void` Bad request + * @response `401` `void` Unauthorized + * @response `403` `void` Forbidden + * @response `404` `void` Not found + * @response `500` `void` Internal server error + */ + programPutProgramsById: ( + id: string, + data: { + data: { + /** A string field */ + name?: string; + /** A date field */ + startDate?: string; + /** A date field */ + endDate?: string; + /** A string field */ + sponsorName?: string; + /** + * A datetime field + * @default "2025-09-12T06:37:57.458Z" + */ + publishedAt?: string; + /** A relational field */ + mentors?: string[]; + /** A relational field */ + users?: string[]; + }; + }, + query?: { + /** The fields to return, this doesn't include populatable fields like relations, components, files, or dynamic zones */ + fields?: ( + | "name" + | "startDate" + | "endDate" + | "sponsorName" + | "createdAt" + | "updatedAt" + | "publishedAt" + )[]; + /** Populate all the first level relations, components, files, and dynamic zones for the entry */ + populate?: "*" | "mentors" | "users" | ("mentors" | "users")[]; + }, + params: RequestParams = {}, + ) => + this.request< + { + data: { + /** + * The document ID, represented by a UUID + * @format uuid + * @pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$ + */ + documentId: string; + id: number; + /** A string field */ + name: string; + /** A date field */ + startDate: string; + /** A date field */ + endDate: string; + /** A string field */ + sponsorName?: string; + /** A datetime field */ + createdAt?: string; + /** A datetime field */ + updatedAt?: string; + /** + * A datetime field + * @default "2025-09-12T06:37:57.463Z" + */ + publishedAt: string; + /** A relational field */ + mentors?: PluginUsersPermissionsUserDocument[]; + /** A relational field */ + users?: PluginUsersPermissionsUserDocument[]; + }; + }, + void + >({ + path: `/programs/${id}`, + method: "PUT", + query: query, + body: data, + type: ContentType.Json, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags program + * @name ProgramDeleteProgramsById + * @request DELETE:/programs/{id} + * @response `200` `{ + data: { + \** + * The document ID, represented by a UUID + * @format uuid + * @pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$ + *\ + documentId: string, + id: number, + \** A string field *\ + name: string, + \** A date field *\ + startDate: string, + \** A date field *\ + endDate: string, + \** A string field *\ + sponsorName?: string, + \** A datetime field *\ + createdAt?: string, + \** A datetime field *\ + updatedAt?: string, + \** + * A datetime field + * @default "2025-09-12T06:37:57.465Z" + *\ + publishedAt: string, + \** A relational field *\ + mentors?: (PluginUsersPermissionsUserDocument)[], + \** A relational field *\ + users?: (PluginUsersPermissionsUserDocument)[], + +}, + +}` OK + * @response `400` `void` Bad request + * @response `401` `void` Unauthorized + * @response `403` `void` Forbidden + * @response `404` `void` Not found + * @response `500` `void` Internal server error + */ + programDeleteProgramsById: ( + id: string, + query?: { + /** The fields to return, this doesn't include populatable fields like relations, components, files, or dynamic zones */ + fields?: ( + | "name" + | "startDate" + | "endDate" + | "sponsorName" + | "createdAt" + | "updatedAt" + | "publishedAt" + )[]; + /** Populate all the first level relations, components, files, and dynamic zones for the entry */ + populate?: "*" | "mentors" | "users" | ("mentors" | "users")[]; + /** Filters to apply to the query */ + filters?: Record< + | "name" + | "startDate" + | "endDate" + | "sponsorName" + | "createdAt" + | "updatedAt" + | "publishedAt", + any + >; + }, + params: RequestParams = {}, + ) => + this.request< + { + data: { + /** + * The document ID, represented by a UUID + * @format uuid + * @pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$ + */ + documentId: string; + id: number; + /** A string field */ + name: string; + /** A date field */ + startDate: string; + /** A date field */ + endDate: string; + /** A string field */ + sponsorName?: string; + /** A datetime field */ + createdAt?: string; + /** A datetime field */ + updatedAt?: string; + /** + * A datetime field + * @default "2025-09-12T06:37:57.465Z" + */ + publishedAt: string; + /** A relational field */ + mentors?: PluginUsersPermissionsUserDocument[]; + /** A relational field */ + users?: PluginUsersPermissionsUserDocument[]; + }; + }, + void + >({ + path: `/programs/${id}`, + method: "DELETE", + query: query, + format: "json", + ...params, + }), + }; + reports = { + /** + * No description + * + * @tags report + * @name ReportGetReports + * @request GET:/reports + * @response `200` `{ + data: ({ + \** + * The document ID, represented by a UUID + * @format uuid + * @pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$ + *\ + documentId: string, + id: number, + \** A date field *\ + deadline: string, + \** + * A boolean field + * @default false + *\ + finished: boolean, + \** A datetime field *\ + createdAt?: string, + \** A datetime field *\ + updatedAt?: string, + \** + * A datetime field + * @default "2025-09-12T06:37:57.469Z" + *\ + publishedAt: string, + \** A relational field *\ + evaluations?: (ApiEvaluationEvaluationDocument)[], + \** A relational field *\ + user?: PluginUsersPermissionsUserDocument, + +})[], + +}` OK + * @response `400` `void` Bad request + * @response `401` `void` Unauthorized + * @response `403` `void` Forbidden + * @response `404` `void` Not found + * @response `500` `void` Internal server error + */ + reportGetReports: ( + query?: { + /** The fields to return, this doesn't include populatable fields like relations, components, files, or dynamic zones */ + fields?: ( + | "deadline" + | "finished" + | "createdAt" + | "updatedAt" + | "publishedAt" + )[]; + /** Filters to apply to the query */ + filters?: Record< + "deadline" | "finished" | "createdAt" | "updatedAt" | "publishedAt", + any + >; + _q?: string; + /** Pagination parameters */ + pagination?: { + /** Include total count in response */ + withCount?: boolean; + } & ( + | { + /** + * Page number (1-based) + * @exclusiveMin 0 + * @max 9007199254740991 + */ + page: number; + /** + * Number of entries per page + * @exclusiveMin 0 + * @max 9007199254740991 + */ + pageSize: number; + } + | { + /** + * Number of entries to skip + * @min 0 + * @max 9007199254740991 + */ + start: number; + /** + * Maximum number of entries to return + * @exclusiveMin 0 + * @max 9007199254740991 + */ + limit: number; + } + ); + /** Sort the result */ + sort?: + | "deadline" + | "finished" + | "createdAt" + | "updatedAt" + | "publishedAt" + | ( + | "deadline" + | "finished" + | "createdAt" + | "updatedAt" + | "publishedAt" + )[] + | Record< + | "deadline" + | "finished" + | "createdAt" + | "updatedAt" + | "publishedAt", + "asc" | "desc" + > + | Record< + | "deadline" + | "finished" + | "createdAt" + | "updatedAt" + | "publishedAt", + "asc" | "desc" + >[]; + /** Populate all the first level relations, components, files, and dynamic zones for the entry */ + populate?: "*" | "evaluations" | "user" | ("evaluations" | "user")[]; + }, + params: RequestParams = {}, + ) => + this.request< + { + data: { + /** + * The document ID, represented by a UUID + * @format uuid + * @pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$ + */ + documentId: string; + id: number; + /** A date field */ + deadline: string; + /** + * A boolean field + * @default false + */ + finished: boolean; + /** A datetime field */ + createdAt?: string; + /** A datetime field */ + updatedAt?: string; + /** + * A datetime field + * @default "2025-09-12T06:37:57.469Z" + */ + publishedAt: string; + /** A relational field */ + evaluations?: ApiEvaluationEvaluationDocument[]; + /** A relational field */ + user?: PluginUsersPermissionsUserDocument; + }[]; + }, + void + >({ + path: `/reports`, + method: "GET", + query: query, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags report + * @name ReportPostReports + * @request POST:/reports + * @response `200` `{ + data: { + \** + * The document ID, represented by a UUID + * @format uuid + * @pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$ + *\ + documentId: string, + id: number, + \** A date field *\ + deadline: string, + \** + * A boolean field + * @default false + *\ + finished: boolean, + \** A datetime field *\ + createdAt?: string, + \** A datetime field *\ + updatedAt?: string, + \** + * A datetime field + * @default "2025-09-12T06:37:57.475Z" + *\ + publishedAt: string, + \** A relational field *\ + evaluations?: (ApiEvaluationEvaluationDocument)[], + \** A relational field *\ + user?: PluginUsersPermissionsUserDocument, + +}, + +}` OK + * @response `400` `void` Bad request + * @response `401` `void` Unauthorized + * @response `403` `void` Forbidden + * @response `404` `void` Not found + * @response `500` `void` Internal server error + */ + reportPostReports: ( + data: { + data: { + /** A date field */ + deadline: string; + /** + * A boolean field + * @default false + */ + finished: "0" | "1" | "t" | "true" | "f" | "false"; + /** + * A datetime field + * @default "2025-09-12T06:37:57.474Z" + */ + publishedAt: string; + /** A relational field */ + evaluations?: string[]; + /** + * A relational field + * @format uuid + * @pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$ + */ + user?: string; + }; + }, + query?: { + /** The fields to return, this doesn't include populatable fields like relations, components, files, or dynamic zones */ + fields?: ( + | "deadline" + | "finished" + | "createdAt" + | "updatedAt" + | "publishedAt" + )[]; + /** Populate all the first level relations, components, files, and dynamic zones for the entry */ + populate?: "*" | "evaluations" | "user" | ("evaluations" | "user")[]; + }, + params: RequestParams = {}, + ) => + this.request< + { + data: { + /** + * The document ID, represented by a UUID + * @format uuid + * @pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$ + */ + documentId: string; + id: number; + /** A date field */ + deadline: string; + /** + * A boolean field + * @default false + */ + finished: boolean; + /** A datetime field */ + createdAt?: string; + /** A datetime field */ + updatedAt?: string; + /** + * A datetime field + * @default "2025-09-12T06:37:57.475Z" + */ + publishedAt: string; + /** A relational field */ + evaluations?: ApiEvaluationEvaluationDocument[]; + /** A relational field */ + user?: PluginUsersPermissionsUserDocument; + }; + }, + void + >({ + path: `/reports`, + method: "POST", + query: query, + body: data, + type: ContentType.Json, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags report + * @name ReportGetReportsById + * @request GET:/reports/{id} + * @response `200` `{ + data: { + \** + * The document ID, represented by a UUID + * @format uuid + * @pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$ + *\ + documentId: string, + id: number, + \** A date field *\ + deadline: string, + \** + * A boolean field + * @default false + *\ + finished: boolean, + \** A datetime field *\ + createdAt?: string, + \** A datetime field *\ + updatedAt?: string, + \** + * A datetime field + * @default "2025-09-12T06:37:57.472Z" + *\ + publishedAt: string, + \** A relational field *\ + evaluations?: (ApiEvaluationEvaluationDocument)[], + \** A relational field *\ + user?: PluginUsersPermissionsUserDocument, + +}, + +}` OK + * @response `400` `void` Bad request + * @response `401` `void` Unauthorized + * @response `403` `void` Forbidden + * @response `404` `void` Not found + * @response `500` `void` Internal server error + */ + reportGetReportsById: ( + id: string, + query?: { + /** The fields to return, this doesn't include populatable fields like relations, components, files, or dynamic zones */ + fields?: ( + | "deadline" + | "finished" + | "createdAt" + | "updatedAt" + | "publishedAt" + )[]; + /** Populate all the first level relations, components, files, and dynamic zones for the entry */ + populate?: "*" | "evaluations" | "user" | ("evaluations" | "user")[]; + /** Filters to apply to the query */ + filters?: Record< + "deadline" | "finished" | "createdAt" | "updatedAt" | "publishedAt", + any + >; + /** Sort the result */ + sort?: + | "deadline" + | "finished" + | "createdAt" + | "updatedAt" + | "publishedAt" + | ( + | "deadline" + | "finished" + | "createdAt" + | "updatedAt" + | "publishedAt" + )[] + | Record< + | "deadline" + | "finished" + | "createdAt" + | "updatedAt" + | "publishedAt", + "asc" | "desc" + > + | Record< + | "deadline" + | "finished" + | "createdAt" + | "updatedAt" + | "publishedAt", + "asc" | "desc" + >[]; + }, + params: RequestParams = {}, + ) => + this.request< + { + data: { + /** + * The document ID, represented by a UUID + * @format uuid + * @pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$ + */ + documentId: string; + id: number; + /** A date field */ + deadline: string; + /** + * A boolean field + * @default false + */ + finished: boolean; + /** A datetime field */ + createdAt?: string; + /** A datetime field */ + updatedAt?: string; + /** + * A datetime field + * @default "2025-09-12T06:37:57.472Z" + */ + publishedAt: string; + /** A relational field */ + evaluations?: ApiEvaluationEvaluationDocument[]; + /** A relational field */ + user?: PluginUsersPermissionsUserDocument; + }; + }, + void + >({ + path: `/reports/${id}`, + method: "GET", + query: query, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags report + * @name ReportPutReportsById + * @request PUT:/reports/{id} + * @response `200` `{ + data: { + \** + * The document ID, represented by a UUID + * @format uuid + * @pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$ + *\ + documentId: string, + id: number, + \** A date field *\ + deadline: string, + \** + * A boolean field + * @default false + *\ + finished: boolean, + \** A datetime field *\ + createdAt?: string, + \** A datetime field *\ + updatedAt?: string, + \** + * A datetime field + * @default "2025-09-12T06:37:57.478Z" + *\ + publishedAt: string, + \** A relational field *\ + evaluations?: (ApiEvaluationEvaluationDocument)[], + \** A relational field *\ + user?: PluginUsersPermissionsUserDocument, + +}, + +}` OK + * @response `400` `void` Bad request + * @response `401` `void` Unauthorized + * @response `403` `void` Forbidden + * @response `404` `void` Not found + * @response `500` `void` Internal server error + */ + reportPutReportsById: ( + id: string, + data: { + data: { + /** A date field */ + deadline?: string; + /** + * A boolean field + * @default false + */ + finished?: "0" | "1" | "t" | "true" | "f" | "false"; + /** + * A datetime field + * @default "2025-09-12T06:37:57.477Z" + */ + publishedAt?: string; + /** A relational field */ + evaluations?: string[]; + /** + * A relational field + * @format uuid + * @pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$ + */ + user?: string; + }; + }, + query?: { + /** The fields to return, this doesn't include populatable fields like relations, components, files, or dynamic zones */ + fields?: ( + | "deadline" + | "finished" + | "createdAt" + | "updatedAt" + | "publishedAt" + )[]; + /** Populate all the first level relations, components, files, and dynamic zones for the entry */ + populate?: "*" | "evaluations" | "user" | ("evaluations" | "user")[]; + }, + params: RequestParams = {}, + ) => + this.request< + { + data: { + /** + * The document ID, represented by a UUID + * @format uuid + * @pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$ + */ + documentId: string; + id: number; + /** A date field */ + deadline: string; + /** + * A boolean field + * @default false + */ + finished: boolean; + /** A datetime field */ + createdAt?: string; + /** A datetime field */ + updatedAt?: string; + /** + * A datetime field + * @default "2025-09-12T06:37:57.478Z" + */ + publishedAt: string; + /** A relational field */ + evaluations?: ApiEvaluationEvaluationDocument[]; + /** A relational field */ + user?: PluginUsersPermissionsUserDocument; + }; + }, + void + >({ + path: `/reports/${id}`, + method: "PUT", + query: query, + body: data, + type: ContentType.Json, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags report + * @name ReportDeleteReportsById + * @request DELETE:/reports/{id} + * @response `200` `{ + data: { + \** + * The document ID, represented by a UUID + * @format uuid + * @pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$ + *\ + documentId: string, + id: number, + \** A date field *\ + deadline: string, + \** + * A boolean field + * @default false + *\ + finished: boolean, + \** A datetime field *\ + createdAt?: string, + \** A datetime field *\ + updatedAt?: string, + \** + * A datetime field + * @default "2025-09-12T06:37:57.479Z" + *\ + publishedAt: string, + \** A relational field *\ + evaluations?: (ApiEvaluationEvaluationDocument)[], + \** A relational field *\ + user?: PluginUsersPermissionsUserDocument, + +}, + +}` OK + * @response `400` `void` Bad request + * @response `401` `void` Unauthorized + * @response `403` `void` Forbidden + * @response `404` `void` Not found + * @response `500` `void` Internal server error + */ + reportDeleteReportsById: ( + id: string, + query?: { + /** The fields to return, this doesn't include populatable fields like relations, components, files, or dynamic zones */ + fields?: ( + | "deadline" + | "finished" + | "createdAt" + | "updatedAt" + | "publishedAt" + )[]; + /** Populate all the first level relations, components, files, and dynamic zones for the entry */ + populate?: "*" | "evaluations" | "user" | ("evaluations" | "user")[]; + /** Filters to apply to the query */ + filters?: Record< + "deadline" | "finished" | "createdAt" | "updatedAt" | "publishedAt", + any + >; + }, + params: RequestParams = {}, + ) => + this.request< + { + data: { + /** + * The document ID, represented by a UUID + * @format uuid + * @pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$ + */ + documentId: string; + id: number; + /** A date field */ + deadline: string; + /** + * A boolean field + * @default false + */ + finished: boolean; + /** A datetime field */ + createdAt?: string; + /** A datetime field */ + updatedAt?: string; + /** + * A datetime field + * @default "2025-09-12T06:37:57.479Z" + */ + publishedAt: string; + /** A relational field */ + evaluations?: ApiEvaluationEvaluationDocument[]; + /** A relational field */ + user?: PluginUsersPermissionsUserDocument; + }; + }, + void + >({ + path: `/reports/${id}`, + method: "DELETE", + query: query, + format: "json", + ...params, + }), + }; + contentTypes = { + /** + * No description + * + * @tags content-type-builder + * @name ContentTypeBuilderGetContentTypes + * @request GET:/content-types + * @response `200` `{ + data: ({ + \** @pattern ^((strapi|admin)::[\w-]+|(api|plugin)::[\w-]+\.[\w-]+)$ *\ + uid: string, + plugin?: string, + apiID: string, + schema: { + displayName: string, + singularName: string, + pluralName: string, + description: string, + draftAndPublish: boolean, + kind: "collectionType" | "singleType", + collectionName?: string, + attributes: Record, + multiple: boolean, + required?: boolean, + allowedTypes?: (string)[], + +} | { + type: "relation", + configurable?: false, + private?: boolean, + pluginOptions?: Record, + relation: string, + \** @pattern ^((strapi|admin)::[\w-]+|(api|plugin)::[\w-]+\.[\w-]+)$ *\ + target: string, + targetAttribute: (string | null), + autoPopulate?: boolean, + mappedBy?: string, + inversedBy?: string, + +} | { + type: "component", + configurable?: false, + private?: boolean, + pluginOptions?: Record, + component: string, + repeatable: boolean, + required?: boolean, + min?: number, + max?: number, + +} | { + type: "dynamiczone", + configurable?: false, + private?: boolean, + pluginOptions?: Record, + components: (string)[], + required?: boolean, + min?: number, + max?: number, + +} | { + type: "uid", + configurable?: false, + private?: boolean, + pluginOptions?: Record, + targetField?: string, + +} | { + type: string, + required?: boolean, + unique?: boolean, + default?: any, + min?: (number | string), + max?: (number | string), + minLength?: number, + maxLength?: number, + enum?: (string)[], + regex?: string, + private?: boolean, + configurable?: boolean, + pluginOptions?: Record, + +})>, + visible: boolean, + restrictRelationsTo: ((string)[] | null), + pluginOptions?: Record, + options?: Record, + reviewWorkflows?: boolean, + populateCreatorFields?: boolean, + comment?: string, + version?: string, + +}, + +})[], + +}` OK + * @response `400` `void` Bad request + * @response `401` `void` Unauthorized + * @response `403` `void` Forbidden + * @response `404` `void` Not found + * @response `500` `void` Internal server error + */ + contentTypeBuilderGetContentTypes: ( + query: { + kind: "collectionType" | "singleType"; + }, + params: RequestParams = {}, + ) => + this.request< + { + data: { + /** @pattern ^((strapi|admin)::[\w-]+|(api|plugin)::[\w-]+\.[\w-]+)$ */ + uid: string; + plugin?: string; + apiID: string; + schema: { + displayName: string; + singularName: string; + pluralName: string; + description: string; + draftAndPublish: boolean; + kind: "collectionType" | "singleType"; + collectionName?: string; + attributes: Record< + string, + | { + type: "media"; + configurable?: false; + private?: boolean; + pluginOptions?: Record; + multiple: boolean; + required?: boolean; + allowedTypes?: string[]; + } + | { + type: "relation"; + configurable?: false; + private?: boolean; + pluginOptions?: Record; + relation: string; + /** @pattern ^((strapi|admin)::[\w-]+|(api|plugin)::[\w-]+\.[\w-]+)$ */ + target: string; + targetAttribute: string | null; + autoPopulate?: boolean; + mappedBy?: string; + inversedBy?: string; + } + | { + type: "component"; + configurable?: false; + private?: boolean; + pluginOptions?: Record; + component: string; + repeatable: boolean; + required?: boolean; + min?: number; + max?: number; + } + | { + type: "dynamiczone"; + configurable?: false; + private?: boolean; + pluginOptions?: Record; + components: string[]; + required?: boolean; + min?: number; + max?: number; + } + | { + type: "uid"; + configurable?: false; + private?: boolean; + pluginOptions?: Record; + targetField?: string; + } + | { + type: string; + required?: boolean; + unique?: boolean; + default?: any; + min?: number | string; + max?: number | string; + minLength?: number; + maxLength?: number; + enum?: string[]; + regex?: string; + private?: boolean; + configurable?: boolean; + pluginOptions?: Record; + } + >; + visible: boolean; + restrictRelationsTo: string[] | null; + pluginOptions?: Record; + options?: Record; + reviewWorkflows?: boolean; + populateCreatorFields?: boolean; + comment?: string; + version?: string; + }; + }[]; + }, + void + >({ + path: `/content-types`, + method: "GET", + query: query, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags content-type-builder + * @name ContentTypeBuilderGetContentTypesByUid + * @request GET:/content-types/{uid} + * @response `200` `{ + data: { + \** @pattern ^((strapi|admin)::[\w-]+|(api|plugin)::[\w-]+\.[\w-]+)$ *\ + uid: string, + plugin?: string, + apiID: string, + schema: { + displayName: string, + singularName: string, + pluralName: string, + description: string, + draftAndPublish: boolean, + kind: "collectionType" | "singleType", + collectionName?: string, + attributes: Record, + multiple: boolean, + required?: boolean, + allowedTypes?: (string)[], + +} | { + type: "relation", + configurable?: false, + private?: boolean, + pluginOptions?: Record, + relation: string, + \** @pattern ^((strapi|admin)::[\w-]+|(api|plugin)::[\w-]+\.[\w-]+)$ *\ + target: string, + targetAttribute: (string | null), + autoPopulate?: boolean, + mappedBy?: string, + inversedBy?: string, + +} | { + type: "component", + configurable?: false, + private?: boolean, + pluginOptions?: Record, + component: string, + repeatable: boolean, + required?: boolean, + min?: number, + max?: number, + +} | { + type: "dynamiczone", + configurable?: false, + private?: boolean, + pluginOptions?: Record, + components: (string)[], + required?: boolean, + min?: number, + max?: number, + +} | { + type: "uid", + configurable?: false, + private?: boolean, + pluginOptions?: Record, + targetField?: string, + +} | { + type: string, + required?: boolean, + unique?: boolean, + default?: any, + min?: (number | string), + max?: (number | string), + minLength?: number, + maxLength?: number, + enum?: (string)[], + regex?: string, + private?: boolean, + configurable?: boolean, + pluginOptions?: Record, + +})>, + visible: boolean, + restrictRelationsTo: ((string)[] | null), + pluginOptions?: Record, + options?: Record, + reviewWorkflows?: boolean, + populateCreatorFields?: boolean, + comment?: string, + version?: string, + +}, + +}, + +}` OK + * @response `400` `void` Bad request + * @response `401` `void` Unauthorized + * @response `403` `void` Forbidden + * @response `404` `void` Not found + * @response `500` `void` Internal server error + */ + contentTypeBuilderGetContentTypesByUid: ( + uid: string, + params: RequestParams = {}, + ) => + this.request< + { + data: { + /** @pattern ^((strapi|admin)::[\w-]+|(api|plugin)::[\w-]+\.[\w-]+)$ */ + uid: string; + plugin?: string; + apiID: string; + schema: { + displayName: string; + singularName: string; + pluralName: string; + description: string; + draftAndPublish: boolean; + kind: "collectionType" | "singleType"; + collectionName?: string; + attributes: Record< + string, + | { + type: "media"; + configurable?: false; + private?: boolean; + pluginOptions?: Record; + multiple: boolean; + required?: boolean; + allowedTypes?: string[]; + } + | { + type: "relation"; + configurable?: false; + private?: boolean; + pluginOptions?: Record; + relation: string; + /** @pattern ^((strapi|admin)::[\w-]+|(api|plugin)::[\w-]+\.[\w-]+)$ */ + target: string; + targetAttribute: string | null; + autoPopulate?: boolean; + mappedBy?: string; + inversedBy?: string; + } + | { + type: "component"; + configurable?: false; + private?: boolean; + pluginOptions?: Record; + component: string; + repeatable: boolean; + required?: boolean; + min?: number; + max?: number; + } + | { + type: "dynamiczone"; + configurable?: false; + private?: boolean; + pluginOptions?: Record; + components: string[]; + required?: boolean; + min?: number; + max?: number; + } + | { + type: "uid"; + configurable?: false; + private?: boolean; + pluginOptions?: Record; + targetField?: string; + } + | { + type: string; + required?: boolean; + unique?: boolean; + default?: any; + min?: number | string; + max?: number | string; + minLength?: number; + maxLength?: number; + enum?: string[]; + regex?: string; + private?: boolean; + configurable?: boolean; + pluginOptions?: Record; + } + >; + visible: boolean; + restrictRelationsTo: string[] | null; + pluginOptions?: Record; + options?: Record; + reviewWorkflows?: boolean; + populateCreatorFields?: boolean; + comment?: string; + version?: string; + }; + }; + }, + void + >({ + path: `/content-types/${uid}`, + method: "GET", + format: "json", + ...params, + }), + }; + components = { + /** + * No description + * + * @tags content-type-builder + * @name ContentTypeBuilderGetComponents + * @request GET:/components + * @response `200` `{ + data: ({ + \** @pattern ^[\w-]+\.[\w-]+$ *\ + uid: string, + category: string, + apiId: string, + schema: { + displayName: string, + description: string, + icon?: string, + connection?: string, + collectionName?: string, + attributes: Record, + multiple: boolean, + required?: boolean, + allowedTypes?: (string)[], + +} | { + type: "relation", + configurable?: false, + private?: boolean, + pluginOptions?: Record, + relation: string, + \** @pattern ^((strapi|admin)::[\w-]+|(api|plugin)::[\w-]+\.[\w-]+)$ *\ + target: string, + targetAttribute: (string | null), + autoPopulate?: boolean, + mappedBy?: string, + inversedBy?: string, + +} | { + type: "component", + configurable?: false, + private?: boolean, + pluginOptions?: Record, + component: string, + repeatable: boolean, + required?: boolean, + min?: number, + max?: number, + +} | { + type: "dynamiczone", + configurable?: false, + private?: boolean, + pluginOptions?: Record, + components: (string)[], + required?: boolean, + min?: number, + max?: number, + +} | { + type: "uid", + configurable?: false, + private?: boolean, + pluginOptions?: Record, + targetField?: string, + +} | { + type: string, + required?: boolean, + unique?: boolean, + default?: any, + min?: (number | string), + max?: (number | string), + minLength?: number, + maxLength?: number, + enum?: (string)[], + regex?: string, + private?: boolean, + configurable?: boolean, + pluginOptions?: Record, + +})>, + pluginOptions?: Record, + +}, + +})[], + +}` OK + * @response `400` `void` Bad request + * @response `401` `void` Unauthorized + * @response `403` `void` Forbidden + * @response `404` `void` Not found + * @response `500` `void` Internal server error + */ + contentTypeBuilderGetComponents: (params: RequestParams = {}) => + this.request< + { + data: { + /** @pattern ^[\w-]+\.[\w-]+$ */ + uid: string; + category: string; + apiId: string; + schema: { + displayName: string; + description: string; + icon?: string; + connection?: string; + collectionName?: string; + attributes: Record< + string, + | { + type: "media"; + configurable?: false; + private?: boolean; + pluginOptions?: Record; + multiple: boolean; + required?: boolean; + allowedTypes?: string[]; + } + | { + type: "relation"; + configurable?: false; + private?: boolean; + pluginOptions?: Record; + relation: string; + /** @pattern ^((strapi|admin)::[\w-]+|(api|plugin)::[\w-]+\.[\w-]+)$ */ + target: string; + targetAttribute: string | null; + autoPopulate?: boolean; + mappedBy?: string; + inversedBy?: string; + } + | { + type: "component"; + configurable?: false; + private?: boolean; + pluginOptions?: Record; + component: string; + repeatable: boolean; + required?: boolean; + min?: number; + max?: number; + } + | { + type: "dynamiczone"; + configurable?: false; + private?: boolean; + pluginOptions?: Record; + components: string[]; + required?: boolean; + min?: number; + max?: number; + } + | { + type: "uid"; + configurable?: false; + private?: boolean; + pluginOptions?: Record; + targetField?: string; + } + | { + type: string; + required?: boolean; + unique?: boolean; + default?: any; + min?: number | string; + max?: number | string; + minLength?: number; + maxLength?: number; + enum?: string[]; + regex?: string; + private?: boolean; + configurable?: boolean; + pluginOptions?: Record; + } + >; + pluginOptions?: Record; + }; + }[]; + }, + void + >({ + path: `/components`, + method: "GET", + format: "json", + ...params, + }), + + /** + * No description + * + * @tags content-type-builder + * @name ContentTypeBuilderGetComponentsByUid + * @request GET:/components/{uid} + * @response `200` `{ + data: { + \** @pattern ^[\w-]+\.[\w-]+$ *\ + uid: string, + category: string, + apiId: string, + schema: { + displayName: string, + description: string, + icon?: string, + connection?: string, + collectionName?: string, + attributes: Record, + multiple: boolean, + required?: boolean, + allowedTypes?: (string)[], + +} | { + type: "relation", + configurable?: false, + private?: boolean, + pluginOptions?: Record, + relation: string, + \** @pattern ^((strapi|admin)::[\w-]+|(api|plugin)::[\w-]+\.[\w-]+)$ *\ + target: string, + targetAttribute: (string | null), + autoPopulate?: boolean, + mappedBy?: string, + inversedBy?: string, + +} | { + type: "component", + configurable?: false, + private?: boolean, + pluginOptions?: Record, + component: string, + repeatable: boolean, + required?: boolean, + min?: number, + max?: number, + +} | { + type: "dynamiczone", + configurable?: false, + private?: boolean, + pluginOptions?: Record, + components: (string)[], + required?: boolean, + min?: number, + max?: number, + +} | { + type: "uid", + configurable?: false, + private?: boolean, + pluginOptions?: Record, + targetField?: string, + +} | { + type: string, + required?: boolean, + unique?: boolean, + default?: any, + min?: (number | string), + max?: (number | string), + minLength?: number, + maxLength?: number, + enum?: (string)[], + regex?: string, + private?: boolean, + configurable?: boolean, + pluginOptions?: Record, + +})>, + pluginOptions?: Record, + +}, + +}, + +}` OK + * @response `400` `void` Bad request + * @response `401` `void` Unauthorized + * @response `403` `void` Forbidden + * @response `404` `void` Not found + * @response `500` `void` Internal server error + */ + contentTypeBuilderGetComponentsByUid: ( + uid: string, + params: RequestParams = {}, + ) => + this.request< + { + data: { + /** @pattern ^[\w-]+\.[\w-]+$ */ + uid: string; + category: string; + apiId: string; + schema: { + displayName: string; + description: string; + icon?: string; + connection?: string; + collectionName?: string; + attributes: Record< + string, + | { + type: "media"; + configurable?: false; + private?: boolean; + pluginOptions?: Record; + multiple: boolean; + required?: boolean; + allowedTypes?: string[]; + } + | { + type: "relation"; + configurable?: false; + private?: boolean; + pluginOptions?: Record; + relation: string; + /** @pattern ^((strapi|admin)::[\w-]+|(api|plugin)::[\w-]+\.[\w-]+)$ */ + target: string; + targetAttribute: string | null; + autoPopulate?: boolean; + mappedBy?: string; + inversedBy?: string; + } + | { + type: "component"; + configurable?: false; + private?: boolean; + pluginOptions?: Record; + component: string; + repeatable: boolean; + required?: boolean; + min?: number; + max?: number; + } + | { + type: "dynamiczone"; + configurable?: false; + private?: boolean; + pluginOptions?: Record; + components: string[]; + required?: boolean; + min?: number; + max?: number; + } + | { + type: "uid"; + configurable?: false; + private?: boolean; + pluginOptions?: Record; + targetField?: string; + } + | { + type: string; + required?: boolean; + unique?: boolean; + default?: any; + min?: number | string; + max?: number | string; + minLength?: number; + maxLength?: number; + enum?: string[]; + regex?: string; + private?: boolean; + configurable?: boolean; + pluginOptions?: Record; + } + >; + pluginOptions?: Record; + }; + }; + }, + void + >({ + path: `/components/${uid}`, + method: "GET", + format: "json", + ...params, + }), + }; + files = { + /** + * No description + * + * @tags upload + * @name UploadGetFiles + * @request GET:/files + * @response `200` `({ + \** + * @exclusiveMin 0 + * @max 9007199254740991 + *\ + id: number, + \** + * @format uuid + * @pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$ + *\ + documentId: string, + name: string, + alternativeText?: (string | null), + caption?: (string | null), + \** + * @min -9007199254740991 + * @max 9007199254740991 + *\ + width?: number, + \** + * @min -9007199254740991 + * @max 9007199254740991 + *\ + height?: number, + formats?: Record, + hash: string, + ext?: string, + mime: string, + size: number, + url: string, + previewUrl?: (string | null), + folder?: number, + folderPath: string, + provider: string, + provider_metadata?: (Record | null), + createdAt: string, + updatedAt: string, + createdBy?: number, + updatedBy?: number, + +})[]` OK + * @response `400` `void` Bad request + * @response `401` `void` Unauthorized + * @response `403` `void` Forbidden + * @response `404` `void` Not found + * @response `500` `void` Internal server error + */ + uploadGetFiles: ( + query?: { + /** Select specific fields to return in the response */ + fields?: string | string[]; + /** Specify which relations to populate in the response */ + populate?: "*" | string | string[] | Record; + /** Sort the results by specified fields */ + sort?: + | string + | string[] + | Record + | Record[]; + /** Pagination parameters */ + pagination?: { + /** Include total count in response */ + withCount?: boolean; + } & ( + | { + /** + * Page number (1-based) + * @exclusiveMin 0 + * @max 9007199254740991 + */ + page: number; + /** + * Number of entries per page + * @exclusiveMin 0 + * @max 9007199254740991 + */ + pageSize: number; + } + | { + /** + * Number of entries to skip + * @min 0 + * @max 9007199254740991 + */ + start: number; + /** + * Maximum number of entries to return + * @exclusiveMin 0 + * @max 9007199254740991 + */ + limit: number; + } + ); + /** Apply filters to the query */ + filters?: Record; + }, + params: RequestParams = {}, + ) => + this.request< + { + /** + * @exclusiveMin 0 + * @max 9007199254740991 + */ + id: number; + /** + * @format uuid + * @pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$ + */ + documentId: string; + name: string; + alternativeText?: string | null; + caption?: string | null; + /** + * @min -9007199254740991 + * @max 9007199254740991 + */ + width?: number; + /** + * @min -9007199254740991 + * @max 9007199254740991 + */ + height?: number; + formats?: Record; + hash: string; + ext?: string; + mime: string; + size: number; + url: string; + previewUrl?: string | null; + folder?: number; + folderPath: string; + provider: string; + provider_metadata?: Record | null; + createdAt: string; + updatedAt: string; + createdBy?: number; + updatedBy?: number; + }[], + void + >({ + path: `/files`, + method: "GET", + query: query, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags upload + * @name UploadGetFilesById + * @request GET:/files/{id} + * @response `200` `{ + \** + * @exclusiveMin 0 + * @max 9007199254740991 + *\ + id: number, + \** + * @format uuid + * @pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$ + *\ + documentId: string, + name: string, + alternativeText?: (string | null), + caption?: (string | null), + \** + * @min -9007199254740991 + * @max 9007199254740991 + *\ + width?: number, + \** + * @min -9007199254740991 + * @max 9007199254740991 + *\ + height?: number, + formats?: Record, + hash: string, + ext?: string, + mime: string, + size: number, + url: string, + previewUrl?: (string | null), + folder?: number, + folderPath: string, + provider: string, + provider_metadata?: (Record | null), + createdAt: string, + updatedAt: string, + createdBy?: number, + updatedBy?: number, + +}` OK + * @response `400` `void` Bad request + * @response `401` `void` Unauthorized + * @response `403` `void` Forbidden + * @response `404` `void` Not found + * @response `500` `void` Internal server error + */ + uploadGetFilesById: ( + id: number, + query?: { + /** Select specific fields to return in the response */ + fields?: string | string[]; + /** Specify which relations to populate in the response */ + populate?: "*" | string | string[] | Record; + }, + params: RequestParams = {}, + ) => + this.request< + { + /** + * @exclusiveMin 0 + * @max 9007199254740991 + */ + id: number; + /** + * @format uuid + * @pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$ + */ + documentId: string; + name: string; + alternativeText?: string | null; + caption?: string | null; + /** + * @min -9007199254740991 + * @max 9007199254740991 + */ + width?: number; + /** + * @min -9007199254740991 + * @max 9007199254740991 + */ + height?: number; + formats?: Record; + hash: string; + ext?: string; + mime: string; + size: number; + url: string; + previewUrl?: string | null; + folder?: number; + folderPath: string; + provider: string; + provider_metadata?: Record | null; + createdAt: string; + updatedAt: string; + createdBy?: number; + updatedBy?: number; + }, + void + >({ + path: `/files/${id}`, + method: "GET", + query: query, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags upload + * @name UploadDeleteFilesById + * @request DELETE:/files/{id} + * @response `200` `{ + \** + * @exclusiveMin 0 + * @max 9007199254740991 + *\ + id: number, + \** + * @format uuid + * @pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$ + *\ + documentId: string, + name: string, + alternativeText?: (string | null), + caption?: (string | null), + \** + * @min -9007199254740991 + * @max 9007199254740991 + *\ + width?: number, + \** + * @min -9007199254740991 + * @max 9007199254740991 + *\ + height?: number, + formats?: Record, + hash: string, + ext?: string, + mime: string, + size: number, + url: string, + previewUrl?: (string | null), + folder?: number, + folderPath: string, + provider: string, + provider_metadata?: (Record | null), + createdAt: string, + updatedAt: string, + createdBy?: number, + updatedBy?: number, + +}` OK + * @response `400` `void` Bad request + * @response `401` `void` Unauthorized + * @response `403` `void` Forbidden + * @response `404` `void` Not found + * @response `500` `void` Internal server error + */ + uploadDeleteFilesById: (id: number, params: RequestParams = {}) => + this.request< + { + /** + * @exclusiveMin 0 + * @max 9007199254740991 + */ + id: number; + /** + * @format uuid + * @pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$ + */ + documentId: string; + name: string; + alternativeText?: string | null; + caption?: string | null; + /** + * @min -9007199254740991 + * @max 9007199254740991 + */ + width?: number; + /** + * @min -9007199254740991 + * @max 9007199254740991 + */ + height?: number; + formats?: Record; + hash: string; + ext?: string; + mime: string; + size: number; + url: string; + previewUrl?: string | null; + folder?: number; + folderPath: string; + provider: string; + provider_metadata?: Record | null; + createdAt: string; + updatedAt: string; + createdBy?: number; + updatedBy?: number; + }, + void + >({ + path: `/files/${id}`, + method: "DELETE", + format: "json", + ...params, + }), + }; + locales = { + /** + * No description + * + * @tags i18n + * @name I18NGetLocales + * @request GET:/locales + * @response `200` `({ + \** + * @exclusiveMin 0 + * @max 9007199254740991 + *\ + id: number, + \** + * @format uuid + * @pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$ + *\ + documentId: string, + name: string, + \** + * @minLength 2 + * @maxLength 2 + *\ + code: string, + createdAt: string, + updatedAt: string, + publishedAt: (string | null), + isDefault: boolean, + +})[]` OK + * @response `400` `void` Bad request + * @response `401` `void` Unauthorized + * @response `403` `void` Forbidden + * @response `404` `void` Not found + * @response `500` `void` Internal server error + */ + i18NGetLocales: (params: RequestParams = {}) => + this.request< + { + /** + * @exclusiveMin 0 + * @max 9007199254740991 + */ + id: number; + /** + * @format uuid + * @pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$ + */ + documentId: string; + name: string; + /** + * @minLength 2 + * @maxLength 2 + */ + code: string; + createdAt: string; + updatedAt: string; + publishedAt: string | null; + isDefault: boolean; + }[], + void + >({ + path: `/locales`, + method: "GET", + format: "json", + ...params, + }), + }; + connect = { + /** + * No description + * + * @tags users-permissions + * @name UsersPermissionsGetConnect + * @request GET:/connect/(.*) + * @response `400` `void` Bad request + * @response `401` `void` Unauthorized + * @response `403` `void` Forbidden + * @response `404` `void` Not found + * @response `500` `void` Internal server error + */ + usersPermissionsGetConnect: (params: RequestParams = {}) => + this.request({ + path: `/connect/(.*)`, + method: "GET", + ...params, + }), + }; + auth = { + /** + * No description + * + * @tags users-permissions + * @name UsersPermissionsPostAuthLocal + * @request POST:/auth/local + * @response `200` `{ + jwt: string, + user: { + id: number, + documentId: string, + username: string, + email: string, + provider: string, + confirmed: boolean, + blocked: boolean, + role?: (number | { + id: number, + name: string, + description: (string | null), + type: string, + createdAt: string, + updatedAt: string, + +}), + createdAt: string, + updatedAt: string, + publishedAt: string, + +}, + +}` OK + * @response `400` `void` Bad request + * @response `401` `void` Unauthorized + * @response `403` `void` Forbidden + * @response `404` `void` Not found + * @response `500` `void` Internal server error + */ + usersPermissionsPostAuthLocal: ( + data: { + identifier: string; + password: string; + }, + params: RequestParams = {}, + ) => + this.request< + { + jwt: string; + user: { + id: number; + documentId: string; + username: string; + email: string; + provider: string; + confirmed: boolean; + blocked: boolean; + role?: + | number + | { + id: number; + name: string; + description: string | null; + type: string; + createdAt: string; + updatedAt: string; + }; + createdAt: string; + updatedAt: string; + publishedAt: string; + }; + }, + void + >({ + path: `/auth/local`, + method: "POST", + body: data, + type: ContentType.Json, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags users-permissions + * @name UsersPermissionsPostAuthLocalRegister + * @request POST:/auth/local/register + * @response `200` `({ + jwt: string, + user: { + id: number, + documentId: string, + username: string, + email: string, + provider: string, + confirmed: boolean, + blocked: boolean, + role?: (number | { + id: number, + name: string, + description: (string | null), + type: string, + createdAt: string, + updatedAt: string, + +}), + createdAt: string, + updatedAt: string, + publishedAt: string, + +}, + +} | { + user: { + id: number, + documentId: string, + username: string, + email: string, + provider: string, + confirmed: boolean, + blocked: boolean, + role?: (number | { + id: number, + name: string, + description: (string | null), + type: string, + createdAt: string, + updatedAt: string, + +}), + createdAt: string, + updatedAt: string, + publishedAt: string, + +}, + +})` OK + * @response `400` `void` Bad request + * @response `401` `void` Unauthorized + * @response `403` `void` Forbidden + * @response `404` `void` Not found + * @response `500` `void` Internal server error + */ + usersPermissionsPostAuthLocalRegister: ( + data: { + username: string; + /** + * @format email + * @pattern ^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$ + */ + email: string; + password: string; + }, + params: RequestParams = {}, + ) => + this.request< + | { + jwt: string; + user: { + id: number; + documentId: string; + username: string; + email: string; + provider: string; + confirmed: boolean; + blocked: boolean; + role?: + | number + | { + id: number; + name: string; + description: string | null; + type: string; + createdAt: string; + updatedAt: string; + }; + createdAt: string; + updatedAt: string; + publishedAt: string; + }; + } + | { + user: { + id: number; + documentId: string; + username: string; + email: string; + provider: string; + confirmed: boolean; + blocked: boolean; + role?: + | number + | { + id: number; + name: string; + description: string | null; + type: string; + createdAt: string; + updatedAt: string; + }; + createdAt: string; + updatedAt: string; + publishedAt: string; + }; + }, + void + >({ + path: `/auth/local/register`, + method: "POST", + body: data, + type: ContentType.Json, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags users-permissions + * @name UsersPermissionsGetAuthByProviderCallback + * @request GET:/auth/{provider}/callback + * @response `200` `{ + jwt: string, + user: { + id: number, + documentId: string, + username: string, + email: string, + provider: string, + confirmed: boolean, + blocked: boolean, + role?: (number | { + id: number, + name: string, + description: (string | null), + type: string, + createdAt: string, + updatedAt: string, + +}), + createdAt: string, + updatedAt: string, + publishedAt: string, + +}, + +}` OK + * @response `400` `void` Bad request + * @response `401` `void` Unauthorized + * @response `403` `void` Forbidden + * @response `404` `void` Not found + * @response `500` `void` Internal server error + */ + usersPermissionsGetAuthByProviderCallback: ( + provider: string, + params: RequestParams = {}, + ) => + this.request< + { + jwt: string; + user: { + id: number; + documentId: string; + username: string; + email: string; + provider: string; + confirmed: boolean; + blocked: boolean; + role?: + | number + | { + id: number; + name: string; + description: string | null; + type: string; + createdAt: string; + updatedAt: string; + }; + createdAt: string; + updatedAt: string; + publishedAt: string; + }; + }, + void + >({ + path: `/auth/${provider}/callback`, + method: "GET", + format: "json", + ...params, + }), + + /** + * No description + * + * @tags users-permissions + * @name UsersPermissionsPostAuthForgotPassword + * @request POST:/auth/forgot-password + * @response `200` `{ + ok: boolean, + +}` OK + * @response `400` `void` Bad request + * @response `401` `void` Unauthorized + * @response `403` `void` Forbidden + * @response `404` `void` Not found + * @response `500` `void` Internal server error + */ + usersPermissionsPostAuthForgotPassword: ( + data: { + /** + * @format email + * @pattern ^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$ + */ + email: string; + }, + params: RequestParams = {}, + ) => + this.request< + { + ok: boolean; + }, + void + >({ + path: `/auth/forgot-password`, + method: "POST", + body: data, + type: ContentType.Json, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags users-permissions + * @name UsersPermissionsPostAuthResetPassword + * @request POST:/auth/reset-password + * @response `200` `{ + jwt: string, + user: { + id: number, + documentId: string, + username: string, + email: string, + provider: string, + confirmed: boolean, + blocked: boolean, + role?: (number | { + id: number, + name: string, + description: (string | null), + type: string, + createdAt: string, + updatedAt: string, + +}), + createdAt: string, + updatedAt: string, + publishedAt: string, + +}, + +}` OK + * @response `400` `void` Bad request + * @response `401` `void` Unauthorized + * @response `403` `void` Forbidden + * @response `404` `void` Not found + * @response `500` `void` Internal server error + */ + usersPermissionsPostAuthResetPassword: ( + data: { + code: string; + password: string; + passwordConfirmation: string; + }, + params: RequestParams = {}, + ) => + this.request< + { + jwt: string; + user: { + id: number; + documentId: string; + username: string; + email: string; + provider: string; + confirmed: boolean; + blocked: boolean; + role?: + | number + | { + id: number; + name: string; + description: string | null; + type: string; + createdAt: string; + updatedAt: string; + }; + createdAt: string; + updatedAt: string; + publishedAt: string; + }; + }, + void + >({ + path: `/auth/reset-password`, + method: "POST", + body: data, + type: ContentType.Json, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags users-permissions + * @name UsersPermissionsGetAuthEmailConfirmation + * @request GET:/auth/email-confirmation + * @response `400` `void` Bad request + * @response `401` `void` Unauthorized + * @response `403` `void` Forbidden + * @response `404` `void` Not found + * @response `500` `void` Internal server error + */ + usersPermissionsGetAuthEmailConfirmation: (params: RequestParams = {}) => + this.request({ + path: `/auth/email-confirmation`, + method: "GET", + ...params, + }), + + /** + * No description + * + * @tags users-permissions + * @name UsersPermissionsPostAuthSendEmailConfirmation + * @request POST:/auth/send-email-confirmation + * @response `200` `{ + email: string, + sent: boolean, + +}` OK + * @response `400` `void` Bad request + * @response `401` `void` Unauthorized + * @response `403` `void` Forbidden + * @response `404` `void` Not found + * @response `500` `void` Internal server error + */ + usersPermissionsPostAuthSendEmailConfirmation: ( + data: { + /** + * @format email + * @pattern ^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$ + */ + email: string; + }, + params: RequestParams = {}, + ) => + this.request< + { + email: string; + sent: boolean; + }, + void + >({ + path: `/auth/send-email-confirmation`, + method: "POST", + body: data, + type: ContentType.Json, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags users-permissions + * @name UsersPermissionsPostAuthChangePassword + * @request POST:/auth/change-password + * @response `200` `{ + jwt: string, + user: { + id: number, + documentId: string, + username: string, + email: string, + provider: string, + confirmed: boolean, + blocked: boolean, + role?: (number | { + id: number, + name: string, + description: (string | null), + type: string, + createdAt: string, + updatedAt: string, + +}), + createdAt: string, + updatedAt: string, + publishedAt: string, + +}, + +}` OK + * @response `400` `void` Bad request + * @response `401` `void` Unauthorized + * @response `403` `void` Forbidden + * @response `404` `void` Not found + * @response `500` `void` Internal server error + */ + usersPermissionsPostAuthChangePassword: ( + data: { + currentPassword: string; + password: string; + passwordConfirmation: string; + }, + params: RequestParams = {}, + ) => + this.request< + { + jwt: string; + user: { + id: number; + documentId: string; + username: string; + email: string; + provider: string; + confirmed: boolean; + blocked: boolean; + role?: + | number + | { + id: number; + name: string; + description: string | null; + type: string; + createdAt: string; + updatedAt: string; + }; + createdAt: string; + updatedAt: string; + publishedAt: string; + }; + }, + void + >({ + path: `/auth/change-password`, + method: "POST", + body: data, + type: ContentType.Json, + format: "json", + ...params, + }), + }; + users = { + /** + * No description + * + * @tags users-permissions + * @name UsersPermissionsGetUsersCount + * @request GET:/users/count + * @response `200` `number` OK + * @response `400` `void` Bad request + * @response `401` `void` Unauthorized + * @response `403` `void` Forbidden + * @response `404` `void` Not found + * @response `500` `void` Internal server error + */ + usersPermissionsGetUsersCount: ( + query?: { + /** Apply filters to the query */ + filters?: Record; + }, + params: RequestParams = {}, + ) => + this.request({ + path: `/users/count`, + method: "GET", + query: query, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags users-permissions + * @name UsersPermissionsGetUsers + * @request GET:/users + * @response `200` `({ + id: number, + documentId: string, + username: string, + email: string, + provider: string, + confirmed: boolean, + blocked: boolean, + role?: (number | { + id: number, + name: string, + description: (string | null), + type: string, + createdAt: string, + updatedAt: string, + +}), + createdAt: string, + updatedAt: string, + publishedAt: string, + +})[]` OK + * @response `400` `void` Bad request + * @response `401` `void` Unauthorized + * @response `403` `void` Forbidden + * @response `404` `void` Not found + * @response `500` `void` Internal server error + */ + usersPermissionsGetUsers: ( + query?: { + /** Select specific fields to return in the response */ + fields?: string | string[]; + /** Specify which relations to populate in the response */ + populate?: "*" | string | string[] | Record; + /** Sort the results by specified fields */ + sort?: + | string + | string[] + | Record + | Record[]; + /** Pagination parameters */ + pagination?: { + /** Include total count in response */ + withCount?: boolean; + } & ( + | { + /** + * Page number (1-based) + * @exclusiveMin 0 + * @max 9007199254740991 + */ + page: number; + /** + * Number of entries per page + * @exclusiveMin 0 + * @max 9007199254740991 + */ + pageSize: number; + } + | { + /** + * Number of entries to skip + * @min 0 + * @max 9007199254740991 + */ + start: number; + /** + * Maximum number of entries to return + * @exclusiveMin 0 + * @max 9007199254740991 + */ + limit: number; + } + ); + /** Apply filters to the query */ + filters?: Record; + }, + params: RequestParams = {}, + ) => + this.request< + { + id: number; + documentId: string; + username: string; + email: string; + provider: string; + confirmed: boolean; + blocked: boolean; + role?: + | number + | { + id: number; + name: string; + description: string | null; + type: string; + createdAt: string; + updatedAt: string; + }; + createdAt: string; + updatedAt: string; + publishedAt: string; + }[], + void + >({ + path: `/users`, + method: "GET", + query: query, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags users-permissions + * @name UsersPermissionsPostUsers + * @request POST:/users + * @response `200` `{ + id: number, + documentId: string, + username: string, + email: string, + provider: string, + confirmed: boolean, + blocked: boolean, + role?: (number | { + id: number, + name: string, + description: (string | null), + type: string, + createdAt: string, + updatedAt: string, + +}), + createdAt: string, + updatedAt: string, + publishedAt: string, + +}` OK + * @response `400` `void` Bad request + * @response `401` `void` Unauthorized + * @response `403` `void` Forbidden + * @response `404` `void` Not found + * @response `500` `void` Internal server error + */ + usersPermissionsPostUsers: ( + data: { + username: string; + /** + * @format email + * @pattern ^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$ + */ + email: string; + password: string; + role?: number; + }, + params: RequestParams = {}, + ) => + this.request< + { + id: number; + documentId: string; + username: string; + email: string; + provider: string; + confirmed: boolean; + blocked: boolean; + role?: + | number + | { + id: number; + name: string; + description: string | null; + type: string; + createdAt: string; + updatedAt: string; + }; + createdAt: string; + updatedAt: string; + publishedAt: string; + }, + void + >({ + path: `/users`, + method: "POST", + body: data, + type: ContentType.Json, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags users-permissions + * @name UsersPermissionsGetUsersMe + * @request GET:/users/me + * @response `200` `{ + id: number, + documentId: string, + username: string, + email: string, + provider: string, + confirmed: boolean, + blocked: boolean, + role?: (number | { + id: number, + name: string, + description: (string | null), + type: string, + createdAt: string, + updatedAt: string, + +}), + createdAt: string, + updatedAt: string, + publishedAt: string, + +}` OK + * @response `400` `void` Bad request + * @response `401` `void` Unauthorized + * @response `403` `void` Forbidden + * @response `404` `void` Not found + * @response `500` `void` Internal server error + */ + usersPermissionsGetUsersMe: ( + query?: { + /** Select specific fields to return in the response */ + fields?: string | string[]; + /** Specify which relations to populate in the response */ + populate?: "*" | string | string[] | Record; + }, + params: RequestParams = {}, + ) => + this.request< + { + id: number; + documentId: string; + username: string; + email: string; + provider: string; + confirmed: boolean; + blocked: boolean; + role?: + | number + | { + id: number; + name: string; + description: string | null; + type: string; + createdAt: string; + updatedAt: string; + }; + createdAt: string; + updatedAt: string; + publishedAt: string; + }, + void + >({ + path: `/users/me`, + method: "GET", + query: query, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags users-permissions + * @name UsersPermissionsGetUsersById + * @request GET:/users/{id} + * @response `200` `{ + id: number, + documentId: string, + username: string, + email: string, + provider: string, + confirmed: boolean, + blocked: boolean, + role?: (number | { + id: number, + name: string, + description: (string | null), + type: string, + createdAt: string, + updatedAt: string, + +}), + createdAt: string, + updatedAt: string, + publishedAt: string, + +}` OK + * @response `400` `void` Bad request + * @response `401` `void` Unauthorized + * @response `403` `void` Forbidden + * @response `404` `void` Not found + * @response `500` `void` Internal server error + */ + usersPermissionsGetUsersById: ( + id: string, + query?: { + /** Select specific fields to return in the response */ + fields?: string | string[]; + /** Specify which relations to populate in the response */ + populate?: "*" | string | string[] | Record; + }, + params: RequestParams = {}, + ) => + this.request< + { + id: number; + documentId: string; + username: string; + email: string; + provider: string; + confirmed: boolean; + blocked: boolean; + role?: + | number + | { + id: number; + name: string; + description: string | null; + type: string; + createdAt: string; + updatedAt: string; + }; + createdAt: string; + updatedAt: string; + publishedAt: string; + }, + void + >({ + path: `/users/${id}`, + method: "GET", + query: query, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags users-permissions + * @name UsersPermissionsPutUsersById + * @request PUT:/users/{id} + * @response `200` `{ + id: number, + documentId: string, + username: string, + email: string, + provider: string, + confirmed: boolean, + blocked: boolean, + role?: (number | { + id: number, + name: string, + description: (string | null), + type: string, + createdAt: string, + updatedAt: string, + +}), + createdAt: string, + updatedAt: string, + publishedAt: string, + +}` OK + * @response `400` `void` Bad request + * @response `401` `void` Unauthorized + * @response `403` `void` Forbidden + * @response `404` `void` Not found + * @response `500` `void` Internal server error + */ + usersPermissionsPutUsersById: ( + id: string, + data: { + username?: string; + /** + * @format email + * @pattern ^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$ + */ + email?: string; + password?: string; + role?: number; + }, + params: RequestParams = {}, + ) => + this.request< + { + id: number; + documentId: string; + username: string; + email: string; + provider: string; + confirmed: boolean; + blocked: boolean; + role?: + | number + | { + id: number; + name: string; + description: string | null; + type: string; + createdAt: string; + updatedAt: string; + }; + createdAt: string; + updatedAt: string; + publishedAt: string; + }, + void + >({ + path: `/users/${id}`, + method: "PUT", + body: data, + type: ContentType.Json, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags users-permissions + * @name UsersPermissionsDeleteUsersById + * @request DELETE:/users/{id} + * @response `200` `{ + id: number, + documentId: string, + username: string, + email: string, + provider: string, + confirmed: boolean, + blocked: boolean, + role?: (number | { + id: number, + name: string, + description: (string | null), + type: string, + createdAt: string, + updatedAt: string, + +}), + createdAt: string, + updatedAt: string, + publishedAt: string, + +}` OK + * @response `400` `void` Bad request + * @response `401` `void` Unauthorized + * @response `403` `void` Forbidden + * @response `404` `void` Not found + * @response `500` `void` Internal server error + */ + usersPermissionsDeleteUsersById: (id: string, params: RequestParams = {}) => + this.request< + { + id: number; + documentId: string; + username: string; + email: string; + provider: string; + confirmed: boolean; + blocked: boolean; + role?: + | number + | { + id: number; + name: string; + description: string | null; + type: string; + createdAt: string; + updatedAt: string; + }; + createdAt: string; + updatedAt: string; + publishedAt: string; + }, + void + >({ + path: `/users/${id}`, + method: "DELETE", + format: "json", + ...params, + }), + }; + roles = { + /** + * No description + * + * @tags users-permissions + * @name UsersPermissionsGetRolesById + * @request GET:/roles/{id} + * @response `200` `{ + role: { + id: number, + documentId: string, + name: string, + description: (string | null), + type: string, + createdAt: string, + updatedAt: string, + publishedAt: string, + nb_users?: number, + permissions?: Record>, + +}>, + users?: (any)[], + +}, + +}` OK + * @response `400` `void` Bad request + * @response `401` `void` Unauthorized + * @response `403` `void` Forbidden + * @response `404` `void` Not found + * @response `500` `void` Internal server error + */ + usersPermissionsGetRolesById: (id: string, params: RequestParams = {}) => + this.request< + { + role: { + id: number; + documentId: string; + name: string; + description: string | null; + type: string; + createdAt: string; + updatedAt: string; + publishedAt: string; + nb_users?: number; + permissions?: Record< + string, + { + controllers: Record< + string, + Record< + string, + { + enabled: boolean; + policy: string; + } + > + >; + } + >; + users?: any[]; + }; + }, + void + >({ + path: `/roles/${id}`, + method: "GET", + format: "json", + ...params, + }), + + /** + * No description + * + * @tags users-permissions + * @name UsersPermissionsGetRoles + * @request GET:/roles + * @response `200` `{ + roles: ({ + id: number, + documentId: string, + name: string, + description: (string | null), + type: string, + createdAt: string, + updatedAt: string, + publishedAt: string, + nb_users?: number, + permissions?: Record>, + +}>, + users?: (any)[], + +})[], + +}` OK + * @response `400` `void` Bad request + * @response `401` `void` Unauthorized + * @response `403` `void` Forbidden + * @response `404` `void` Not found + * @response `500` `void` Internal server error + */ + usersPermissionsGetRoles: (params: RequestParams = {}) => + this.request< + { + roles: { + id: number; + documentId: string; + name: string; + description: string | null; + type: string; + createdAt: string; + updatedAt: string; + publishedAt: string; + nb_users?: number; + permissions?: Record< + string, + { + controllers: Record< + string, + Record< + string, + { + enabled: boolean; + policy: string; + } + > + >; + } + >; + users?: any[]; + }[]; + }, + void + >({ + path: `/roles`, + method: "GET", + format: "json", + ...params, + }), + + /** + * No description + * + * @tags users-permissions + * @name UsersPermissionsPostRoles + * @request POST:/roles + * @response `200` `{ + ok: boolean, + +}` OK + * @response `400` `void` Bad request + * @response `401` `void` Unauthorized + * @response `403` `void` Forbidden + * @response `404` `void` Not found + * @response `500` `void` Internal server error + */ + usersPermissionsPostRoles: ( + data: { + name: string; + description?: string; + type: string; + permissions?: Record; + }, + params: RequestParams = {}, + ) => + this.request< + { + ok: boolean; + }, + void + >({ + path: `/roles`, + method: "POST", + body: data, + type: ContentType.Json, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags users-permissions + * @name UsersPermissionsPutRolesByRole + * @request PUT:/roles/{role} + * @response `200` `{ + ok: boolean, + +}` OK + * @response `400` `void` Bad request + * @response `401` `void` Unauthorized + * @response `403` `void` Forbidden + * @response `404` `void` Not found + * @response `500` `void` Internal server error + */ + usersPermissionsPutRolesByRole: ( + role: string, + data: { + name?: string; + description?: string; + type?: string; + permissions?: Record; + }, + params: RequestParams = {}, + ) => + this.request< + { + ok: boolean; + }, + void + >({ + path: `/roles/${role}`, + method: "PUT", + body: data, + type: ContentType.Json, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags users-permissions + * @name UsersPermissionsDeleteRolesByRole + * @request DELETE:/roles/{role} + * @response `200` `{ + ok: boolean, + +}` OK + * @response `400` `void` Bad request + * @response `401` `void` Unauthorized + * @response `403` `void` Forbidden + * @response `404` `void` Not found + * @response `500` `void` Internal server error + */ + usersPermissionsDeleteRolesByRole: ( + role: string, + params: RequestParams = {}, + ) => + this.request< + { + ok: boolean; + }, + void + >({ + path: `/roles/${role}`, + method: "DELETE", + format: "json", + ...params, + }), + }; + permissions = { + /** + * No description + * + * @tags users-permissions + * @name UsersPermissionsGetPermissions + * @request GET:/permissions + * @response `200` `{ + permissions: Record>, + +}>, + +}` OK + * @response `400` `void` Bad request + * @response `401` `void` Unauthorized + * @response `403` `void` Forbidden + * @response `404` `void` Not found + * @response `500` `void` Internal server error + */ + usersPermissionsGetPermissions: (params: RequestParams = {}) => + this.request< + { + permissions: Record< + string, + { + controllers: Record< + string, + Record< + string, + { + enabled: boolean; + policy: string; + } + > + >; + } + >; + }, + void + >({ + path: `/permissions`, + method: "GET", + format: "json", + ...params, + }), + }; + registrationInfo = { + /** + * No description + * + * @tags users-permissions + * @name UsersPermissionsGetRegistrationInfo + * @request GET:/registration-info + * @response `400` `void` Bad request + * @response `401` `void` Unauthorized + * @response `403` `void` Forbidden + * @response `404` `void` Not found + * @response `500` `void` Internal server error + */ + usersPermissionsGetRegistrationInfo: (params: RequestParams = {}) => + this.request({ + path: `/registration-info`, + method: "GET", + ...params, + }), + }; + register = { + /** + * No description + * + * @tags users-permissions + * @name UsersPermissionsPostRegister + * @request POST:/register + * @response `400` `void` Bad request + * @response `401` `void` Unauthorized + * @response `403` `void` Forbidden + * @response `404` `void` Not found + * @response `500` `void` Internal server error + */ + usersPermissionsPostRegister: (params: RequestParams = {}) => + this.request({ + path: `/register`, + method: "POST", + ...params, + }), + }; +} From 95999c8db9465c3cfe0234eae4cc3fa2683fb5f1 Mon Sep 17 00:00:00 2001 From: Ion Dormenco Date: Sat, 13 Sep 2025 22:25:52 +0300 Subject: [PATCH 29/61] fix login --- .../src/components/CreateEvaluation/index.tsx | 2 +- .../src/components/DeleteEvaluation/index.tsx | 2 +- client2/src/components/LayoutApp/index.tsx | 1 - client2/src/pages/NewReport/index.tsx | 2 +- .../src/pages/admin/CreateMentor/index.tsx | 2 +- client2/src/pages/admin/CreateUser/index.tsx | 2 +- .../pages/authenticated/EditProfile/index.tsx | 2 +- .../authenticated/MentorsList/MentorCard.tsx | 2 +- .../src/pages/mentor/EditProfile/index.tsx | 2 +- .../src/pages/public/ForgotPassword/index.tsx | 27 ++++--- client2/src/pages/public/Login/index.tsx | 80 +++++++------------ client2/src/pages/public/Register/index.tsx | 2 +- .../src/pages/public/ResetPassword/index.tsx | 4 +- .../src/pages/public/SetPassword/index.tsx | 2 +- client2/src/redux/api/authApi.ts | 45 +++++------ client2/src/routeTree.gen.ts | 21 +++++ client2/src/routes/(auth)/email-sent.tsx | 9 +++ client2/src/routes/__root.tsx | 2 +- .../src/services/api/forgot-password.api.ts | 6 +- client2/src/services/api/login-user.api.ts | 15 ++-- client2/src/services/api/register-user.api.ts | 4 +- .../src/services/api/reset-password.api.ts | 2 +- client2/src/services/user.mutations.ts | 8 +- 23 files changed, 131 insertions(+), 113 deletions(-) create mode 100644 client2/src/routes/(auth)/email-sent.tsx diff --git a/client2/src/components/CreateEvaluation/index.tsx b/client2/src/components/CreateEvaluation/index.tsx index bcaef3d8..8dff393d 100644 --- a/client2/src/components/CreateEvaluation/index.tsx +++ b/client2/src/components/CreateEvaluation/index.tsx @@ -4,7 +4,7 @@ import { useCreateEvaluationMutation } from "@/redux/api/userApi"; import { z } from "zod"; import { useForm } from "react-hook-form"; import { zodResolver } from "@hookform/resolvers/zod"; -import { toast } from "react-toastify"; +import { toast } from "sonner"; import { ErrorMessage } from "@hookform/error-message"; const evaluationSchema = z.object({ diff --git a/client2/src/components/DeleteEvaluation/index.tsx b/client2/src/components/DeleteEvaluation/index.tsx index aa044327..4b0be257 100644 --- a/client2/src/components/DeleteEvaluation/index.tsx +++ b/client2/src/components/DeleteEvaluation/index.tsx @@ -2,7 +2,7 @@ import Confirm from "@/components/Confirm"; import { useDeleteEvaluationMutation } from "@/redux/api/userApi"; import { TrashIcon } from "@heroicons/react/20/solid"; import { useCallback, useEffect, useState } from "react"; -import { toast } from "react-toastify"; +import { toast } from "sonner"; const DeleteEvaluation = ({ id }: { id: number }) => { const [deleteEvaluation, { isSuccess, isError, error }] = diff --git a/client2/src/components/LayoutApp/index.tsx b/client2/src/components/LayoutApp/index.tsx index 433b08f9..0a47ff85 100644 --- a/client2/src/components/LayoutApp/index.tsx +++ b/client2/src/components/LayoutApp/index.tsx @@ -1,5 +1,4 @@ import type { ReactNode } from "react"; -import "react-toastify/dist/ReactToastify.css"; import Footer from "../Footer"; import Navbar from "../Navbar"; import { Outlet } from "@tanstack/react-router"; diff --git a/client2/src/pages/NewReport/index.tsx b/client2/src/pages/NewReport/index.tsx index 815eab00..b4b66c7f 100644 --- a/client2/src/pages/NewReport/index.tsx +++ b/client2/src/pages/NewReport/index.tsx @@ -7,7 +7,7 @@ import { useForm } from "react-hook-form"; import { z } from "zod"; import { zodResolver } from "@hookform/resolvers/zod"; import { ErrorMessage } from "@hookform/error-message"; -import { toast } from "react-toastify"; +import { toast } from "sonner"; const emailListSchema = z .array(z.email("Adresa de email este invalidă")) diff --git a/client2/src/pages/admin/CreateMentor/index.tsx b/client2/src/pages/admin/CreateMentor/index.tsx index 560faf71..b6a4ad8f 100644 --- a/client2/src/pages/admin/CreateMentor/index.tsx +++ b/client2/src/pages/admin/CreateMentor/index.tsx @@ -14,7 +14,7 @@ import { z } from "zod"; import { ErrorMessage } from "@hookform/error-message"; import MultiSelect from "@/components/MultiSelect"; import { useNavigate } from "@tanstack/react-router"; -import { toast } from "react-toastify"; +import { toast } from "sonner"; import Avatar from "@/components/Avatar"; const mentorSchema = z.object({ diff --git a/client2/src/pages/admin/CreateUser/index.tsx b/client2/src/pages/admin/CreateUser/index.tsx index 2808e6da..b828aec4 100644 --- a/client2/src/pages/admin/CreateUser/index.tsx +++ b/client2/src/pages/admin/CreateUser/index.tsx @@ -7,7 +7,7 @@ import Section from "@/components/Section"; import Button from "@/components/Button"; import { setToken } from "@/redux/features/userSlice"; import { useAppDispatch } from "@/redux/store"; -import { toast } from "react-toastify"; +import { toast } from "sonner"; import SocialNetworkLinks from "@/components/SocialNetworkLinks"; import { useCreateUserMutation, diff --git a/client2/src/pages/authenticated/EditProfile/index.tsx b/client2/src/pages/authenticated/EditProfile/index.tsx index d2cf592e..5be64827 100644 --- a/client2/src/pages/authenticated/EditProfile/index.tsx +++ b/client2/src/pages/authenticated/EditProfile/index.tsx @@ -6,7 +6,7 @@ import Heading from "@/components/Heading"; import Section from "@/components/Section"; import Button from "@/components/Button"; import { useAppDispatch, useAppSelector } from "@/redux/store"; -import { toast } from "react-toastify"; +import { toast } from "sonner"; import { useGetDomainsQuery, useUpdateUserMutation, diff --git a/client2/src/pages/authenticated/MentorsList/MentorCard.tsx b/client2/src/pages/authenticated/MentorsList/MentorCard.tsx index e61326b2..6c387931 100644 --- a/client2/src/pages/authenticated/MentorsList/MentorCard.tsx +++ b/client2/src/pages/authenticated/MentorsList/MentorCard.tsx @@ -11,7 +11,7 @@ import { UserIcon, } from "@heroicons/react/20/solid"; import { useEffect, useState } from "react"; -import { toast } from "react-toastify"; +import { toast } from "sonner"; const MentorCard = ({ id, diff --git a/client2/src/pages/mentor/EditProfile/index.tsx b/client2/src/pages/mentor/EditProfile/index.tsx index fec072af..8b8b6e91 100644 --- a/client2/src/pages/mentor/EditProfile/index.tsx +++ b/client2/src/pages/mentor/EditProfile/index.tsx @@ -6,7 +6,7 @@ import Heading from "@/components/Heading"; import Section from "@/components/Section"; import Button from "@/components/Button"; import { useAppDispatch, useAppSelector } from "@/redux/store"; -import { toast } from "react-toastify"; +import { toast } from "sonner"; import { useGetDimensionsQuery, useGetProgramsQuery, diff --git a/client2/src/pages/public/ForgotPassword/index.tsx b/client2/src/pages/public/ForgotPassword/index.tsx index 24d50d52..35fd2209 100644 --- a/client2/src/pages/public/ForgotPassword/index.tsx +++ b/client2/src/pages/public/ForgotPassword/index.tsx @@ -1,11 +1,13 @@ import screenshot from "@/assets/illustration.svg"; import Button from "@/components/Button"; import Section from "@/components/Section"; -import { useForgotPasswordMutation } from "@/redux/api/authApi"; +import { useForgotPasswordMutation } from "@/services/user.mutations"; import { ErrorMessage } from "@hookform/error-message"; import { zodResolver } from "@hookform/resolvers/zod"; +import { useNavigate } from "@tanstack/react-router"; import { useCallback } from "react"; import { useForm } from "react-hook-form"; +import { toast } from "sonner"; import { z } from "zod"; const forgotPasswordSchema = z.object({ @@ -13,22 +15,29 @@ const forgotPasswordSchema = z.object({ .email("Adresa de email este invalidă") .min(1, "Adresa de email este obligatorie"), }); -export type ForgotPasswordInput = z.infer; +export type ForgotPasswordForm = z.infer; const ForgotPassword = () => { - const [sendForgotPasswordRequest] = useForgotPasswordMutation(); + const navigate = useNavigate(); + const { mutate: requestForgotPasswordEmail, isPending } = + useForgotPasswordMutation(); const { register, handleSubmit, reset, formState } = - useForm({ + useForm({ resolver: zodResolver(forgotPasswordSchema), }); const onSubmitHandler = useCallback( - ({ email }: ForgotPasswordInput) => { - console.log("send password"); - sendForgotPasswordRequest({ email }); - reset(); + ({ email }: ForgotPasswordForm) => { + requestForgotPasswordEmail(email, { + onSuccess: () => { + navigate({ to: "/email-sent" }); + }, + onError: () => { + toast.error("A aparut o problema"); + }, + }); }, - [reset] + [requestForgotPasswordEmail] ); return ( diff --git a/client2/src/pages/public/Login/index.tsx b/client2/src/pages/public/Login/index.tsx index b8f06800..96dcd0c1 100644 --- a/client2/src/pages/public/Login/index.tsx +++ b/client2/src/pages/public/Login/index.tsx @@ -2,30 +2,16 @@ import screenshot from "@/assets/illustration.svg"; import Button from "@/components/Button"; import Heading from "@/components/Heading"; import Section from "@/components/Section"; -import { useLoginUserMutation } from "@/redux/api/authApi"; -import { setToken } from "@/redux/features/userSlice"; -import { useAppDispatch } from "@/redux/store"; -import { ErrorMessage } from "@hookform/error-message"; import { zodResolver } from "@hookform/resolvers/zod"; -import Cookies from "js-cookie"; -import { memo, useEffect } from "react"; -import { - type FieldValues, - FormProvider, - type SubmitHandler, - useForm, - type Path, - type FieldErrors, - type UseFormRegister, -} from "react-hook-form"; import { Link, useNavigate } from "@tanstack/react-router"; -import { toast } from "react-toastify"; +import { memo } from "react"; +import { type SubmitHandler, useForm } from "react-hook-form"; +import { toast } from "sonner"; import { z } from "zod"; import { Form, FormControl, - FormDescription, FormField, FormItem, FormLabel, @@ -33,6 +19,7 @@ import { } from "@/components/ui/form"; import { Input } from "@/components/ui/input"; import { PasswordInput } from "@/components/ui/password-input"; +import { useLoginUserMutation } from "@/services/user.mutations"; const loginSchema = z.object({ identifier: z @@ -81,46 +68,35 @@ const FormFooter = memo(() => ( )); const Login = memo(() => { - const dispatch = useAppDispatch(); const navigate = useNavigate(); const form = useForm({ resolver: zodResolver(loginSchema), }); - const { - register, - formState: { errors }, - handleSubmit, - } = form; - - const [loginUser, { isLoading, isError, error, isSuccess, data }] = - useLoginUserMutation(); - - useEffect(() => { - if (isSuccess && data?.jwt) { - dispatch(setToken(data.jwt)); - Cookies.set("jwt", data.jwt); - navigate("/"); - } - }, [isSuccess, data, dispatch]); - - useEffect(() => { - const message = error?.data?.error?.message; - if (isError) { - if (message) { - toast.error( - "Credențialele introduse nu sunt corecte. Vă rugăm să verificați și să încercați din nou." - ); - } else { - toast.error( - "Ne pare rău, dar serverul este momentan indisponibil. Vă rugăm să încercați din nou mai târziu." - ); - } - } - }, [isError, error?.data?.error?.message]); + const { mutate: login, isPending } = useLoginUserMutation(); const onSubmitHandler: SubmitHandler = (values) => { - loginUser(values); + login(values, { + onSuccess: () => { + navigate({ to: "/" }); + }, + onError: (error) => { + const message = (error as any)?.response?.data?.error?.message; + if (message) { + toast.error( + "Credențialele introduse nu sunt corecte. Vă rugăm să verificați și să încercați din nou." + ); + form.setError("password", { + message: + "Credențialele introduse nu sunt corecte. Vă rugăm să verificați și să încercați din nou.", + }); + } else { + toast.error( + "Ne pare rău, dar serverul este momentan indisponibil. Vă rugăm să încercați din nou mai târziu." + ); + } + }, + }); }; return ( @@ -165,7 +141,9 @@ const Login = memo(() => { )} /> - +
    diff --git a/client2/src/pages/public/Register/index.tsx b/client2/src/pages/public/Register/index.tsx index 86631e2c..7abf6707 100644 --- a/client2/src/pages/public/Register/index.tsx +++ b/client2/src/pages/public/Register/index.tsx @@ -8,7 +8,7 @@ import Section from "@/components/Section"; import Button from "@/components/Button"; import { setToken } from "@/redux/features/userSlice"; import { useAppDispatch } from "@/redux/store"; -import { toast } from "react-toastify"; +import { toast } from "sonner"; import SocialNetworkLinks from "@/components/SocialNetworkLinks"; import { useGetDomainsQuery, useUploadMutation } from "@/redux/api/userApi"; import { useNavigate } from "@tanstack/react-router"; diff --git a/client2/src/pages/public/ResetPassword/index.tsx b/client2/src/pages/public/ResetPassword/index.tsx index edbe22bc..bcdcf5a1 100644 --- a/client2/src/pages/public/ResetPassword/index.tsx +++ b/client2/src/pages/public/ResetPassword/index.tsx @@ -42,10 +42,8 @@ const resetPasswordSchema = z export type ResetPasswordForm = z.infer; const ResetPassword = () => { - const navigate = useNavigate(); + const navigate = Route.useNavigate(); const { code } = Route.useSearch(); - // const [sendResetPasswordRequest, { isSuccess, isError }] = - // useResetPasswordMutation(); const { mutate: resetPassword, isPending } = useResetPasswordMutation(); const form = useForm({ diff --git a/client2/src/pages/public/SetPassword/index.tsx b/client2/src/pages/public/SetPassword/index.tsx index 9fc1638f..35e982a5 100644 --- a/client2/src/pages/public/SetPassword/index.tsx +++ b/client2/src/pages/public/SetPassword/index.tsx @@ -9,7 +9,7 @@ import Section from "@/components/Section"; import { useLoginUserMutation } from "@/redux/api/authApi"; import { useSearchParams } from "@tanstack/react-router"; import { useNavigate } from "@tanstack/react-router"; -import { toast } from "react-toastify"; +import { toast } from "sonner"; import { useGetRegistrationInfoQuery, useRegisterWithConfirmationTokenMutation, diff --git a/client2/src/redux/api/authApi.ts b/client2/src/redux/api/authApi.ts index bb650464..720ad58f 100644 --- a/client2/src/redux/api/authApi.ts +++ b/client2/src/redux/api/authApi.ts @@ -3,8 +3,6 @@ import { LoginInput } from "src/pages/public/Login"; import { RegisterInput } from "src/pages/public/Register"; import { RegisterResponse } from "./types"; import { userApi } from "./userApi"; -import { ForgotPasswordInput } from "src/pages/public/ForgotPassword"; -import { ResetPasswordInput } from "src/pages/public/ResetPassword"; const BASE_URL = import.meta.env.VITE_SERVER_ENDPOINT as string; @@ -23,24 +21,24 @@ export const authApi = createApi({ }; }, }), - forgotPassword: builder.mutation({ - query(data) { - return { - url: "forgot-password", - method: "POST", - body: data, - }; - }, - }), - resetPassword: builder.mutation({ - query(data) { - return { - url: "reset-password", - method: "POST", - body: data, - }; - }, - }), + // forgotPassword: builder.mutation({ + // query(data) { + // return { + // url: "forgot-password", + // method: "POST", + // body: data, + // }; + // }, + // }), + // resetPassword: builder.mutation({ + // query(data) { + // return { + // url: "reset-password", + // method: "POST", + // body: data, + // }; + // }, + // }), loginUser: builder.mutation< { jwt: string; user: { username: string } }, LoginInput @@ -63,9 +61,4 @@ export const authApi = createApi({ }), }); -export const { - useLoginUserMutation, - useRegisterUserMutation, - useForgotPasswordMutation, - useResetPasswordMutation, -} = authApi; +export const { useRegisterUserMutation } = authApi; diff --git a/client2/src/routeTree.gen.ts b/client2/src/routeTree.gen.ts index 37f06296..2cd9ab73 100644 --- a/client2/src/routeTree.gen.ts +++ b/client2/src/routeTree.gen.ts @@ -15,6 +15,7 @@ import { Route as authResetPasswordRouteImport } from './routes/(auth)/reset-pas import { Route as authRegisterRouteImport } from './routes/(auth)/register' import { Route as authLoginRouteImport } from './routes/(auth)/login' import { Route as authForgotPasswordRouteImport } from './routes/(auth)/forgot-password' +import { Route as authEmailSentRouteImport } from './routes/(auth)/email-sent' import { Route as authConfirmEmailRouteImport } from './routes/(auth)/confirm-email' import { Route as appMentorsRouteImport } from './routes/(app)/mentors' import { Route as appMatrixRouteImport } from './routes/(app)/matrix' @@ -69,6 +70,11 @@ const authForgotPasswordRoute = authForgotPasswordRouteImport.update({ path: '/forgot-password', getParentRoute: () => authRouteRoute, } as any) +const authEmailSentRoute = authEmailSentRouteImport.update({ + id: '/email-sent', + path: '/email-sent', + getParentRoute: () => authRouteRoute, +} as any) const authConfirmEmailRoute = authConfirmEmailRouteImport.update({ id: '/confirm-email', path: '/confirm-email', @@ -203,6 +209,7 @@ export interface FileRoutesByFullPath { '/matrix': typeof appMatrixRoute '/mentors': typeof appMentorsRoute '/confirm-email': typeof authConfirmEmailRoute + '/email-sent': typeof authEmailSentRoute '/forgot-password': typeof authForgotPasswordRoute '/login': typeof authLoginRoute '/register': typeof authRegisterRoute @@ -230,6 +237,7 @@ export interface FileRoutesByTo { '/matrix': typeof appMatrixRoute '/mentors': typeof appMentorsRoute '/confirm-email': typeof authConfirmEmailRoute + '/email-sent': typeof authEmailSentRoute '/forgot-password': typeof authForgotPasswordRoute '/login': typeof authLoginRoute '/register': typeof authRegisterRoute @@ -263,6 +271,7 @@ export interface FileRoutesById { '/(app)/matrix': typeof appMatrixRoute '/(app)/mentors': typeof appMentorsRoute '/(auth)/confirm-email': typeof authConfirmEmailRoute + '/(auth)/email-sent': typeof authEmailSentRoute '/(auth)/forgot-password': typeof authForgotPasswordRoute '/(auth)/login': typeof authLoginRoute '/(auth)/register': typeof authRegisterRoute @@ -296,6 +305,7 @@ export interface FileRouteTypes { | '/matrix' | '/mentors' | '/confirm-email' + | '/email-sent' | '/forgot-password' | '/login' | '/register' @@ -323,6 +333,7 @@ export interface FileRouteTypes { | '/matrix' | '/mentors' | '/confirm-email' + | '/email-sent' | '/forgot-password' | '/login' | '/register' @@ -355,6 +366,7 @@ export interface FileRouteTypes { | '/(app)/matrix' | '/(app)/mentors' | '/(auth)/confirm-email' + | '/(auth)/email-sent' | '/(auth)/forgot-password' | '/(auth)/login' | '/(auth)/register' @@ -433,6 +445,13 @@ declare module '@tanstack/react-router' { preLoaderRoute: typeof authForgotPasswordRouteImport parentRoute: typeof authRouteRoute } + '/(auth)/email-sent': { + id: '/(auth)/email-sent' + path: '/email-sent' + fullPath: '/email-sent' + preLoaderRoute: typeof authEmailSentRouteImport + parentRoute: typeof authRouteRoute + } '/(auth)/confirm-email': { id: '/(auth)/confirm-email' path: '/confirm-email' @@ -606,6 +625,7 @@ declare module '@tanstack/react-router' { interface authRouteRouteChildren { authConfirmEmailRoute: typeof authConfirmEmailRoute + authEmailSentRoute: typeof authEmailSentRoute authForgotPasswordRoute: typeof authForgotPasswordRoute authLoginRoute: typeof authLoginRoute authRegisterRoute: typeof authRegisterRoute @@ -614,6 +634,7 @@ interface authRouteRouteChildren { const authRouteRouteChildren: authRouteRouteChildren = { authConfirmEmailRoute: authConfirmEmailRoute, + authEmailSentRoute: authEmailSentRoute, authForgotPasswordRoute: authForgotPasswordRoute, authLoginRoute: authLoginRoute, authRegisterRoute: authRegisterRoute, diff --git a/client2/src/routes/(auth)/email-sent.tsx b/client2/src/routes/(auth)/email-sent.tsx new file mode 100644 index 00000000..01b0d1c3 --- /dev/null +++ b/client2/src/routes/(auth)/email-sent.tsx @@ -0,0 +1,9 @@ +import { createFileRoute } from "@tanstack/react-router"; + +export const Route = createFileRoute("/(auth)/email-sent")({ + component: RouteComponent, +}); + +function RouteComponent() { + return
    Hello "/(auth)/email-sent"!
    ; +} diff --git a/client2/src/routes/__root.tsx b/client2/src/routes/__root.tsx index bb8ca0b0..d0a98773 100644 --- a/client2/src/routes/__root.tsx +++ b/client2/src/routes/__root.tsx @@ -16,7 +16,7 @@ export function Root() { <> {import.meta.env.DEV && } - + ); diff --git a/client2/src/services/api/forgot-password.api.ts b/client2/src/services/api/forgot-password.api.ts index 9ac81b52..dea72193 100644 --- a/client2/src/services/api/forgot-password.api.ts +++ b/client2/src/services/api/forgot-password.api.ts @@ -1,7 +1,7 @@ import API from "../api"; -export const forgotPassword = ({}: {}): Promise => { - return API.get(`election-rounds/${electionRoundId}/observer-guide`).then( - (res) => res.data.guides +export const forgotPassword = (email: string): Promise => { + return API.post(`api/auth/forgot-password`, { email }).then( + (res) => res.data ); }; diff --git a/client2/src/services/api/login-user.api.ts b/client2/src/services/api/login-user.api.ts index 1c681c9d..191607f1 100644 --- a/client2/src/services/api/login-user.api.ts +++ b/client2/src/services/api/login-user.api.ts @@ -1,7 +1,12 @@ import API from "../api"; - -export const loginUser = ({}: {}): Promise<> => { - return API.get(`election-rounds/${electionRoundId}/observer-guide`).then( - (res) => res.data.guides - ); +export interface LoginRequest { + identifier: string; + password: string; +} +export interface LoginResponse { + jwt: string; + user: { username: string }; +} +export const loginUser = (request: LoginRequest): Promise => { + return API.post(`api/auth/local`, request).then((res) => res.data); }; diff --git a/client2/src/services/api/register-user.api.ts b/client2/src/services/api/register-user.api.ts index 99e1e361..db85ecbf 100644 --- a/client2/src/services/api/register-user.api.ts +++ b/client2/src/services/api/register-user.api.ts @@ -1,5 +1,5 @@ import API from "../api"; -export const registerUser = ({}: {}): Promise => { - return API.get(`auth/local/register`).then((res) => res.data.guides); +export const registerUser = ({}: {}): Promise => { + return API.get(`auth/local/register`).then((res) => res.data); }; diff --git a/client2/src/services/api/reset-password.api.ts b/client2/src/services/api/reset-password.api.ts index 77beb7a2..bf1ff7a6 100644 --- a/client2/src/services/api/reset-password.api.ts +++ b/client2/src/services/api/reset-password.api.ts @@ -4,6 +4,6 @@ export const resetPassword = (payload: { code: string; password: string; passwordConfirmation: string; -}): Promise => { +}): Promise => { return API.post(`/auth/reset-password`, payload).then((res) => res.data); }; diff --git a/client2/src/services/user.mutations.ts b/client2/src/services/user.mutations.ts index b54202c1..558963df 100644 --- a/client2/src/services/user.mutations.ts +++ b/client2/src/services/user.mutations.ts @@ -1,9 +1,12 @@ // src/hooks/useAuth.ts +import { useAppDispatch } from "@/redux/store"; import { useMutation, useQueryClient } from "@tanstack/react-query"; +import Cookies from "js-cookie"; import { forgotPassword } from "./api/forgot-password.api"; import { loginUser } from "./api/login-user.api"; import { registerUser } from "./api/register-user.api"; import { resetPassword } from "./api/reset-password.api"; +import { setToken } from "@/redux/features/userSlice"; export function useRegisterUserMutation() { return useMutation({ @@ -25,10 +28,13 @@ export function useResetPasswordMutation() { export function useLoginUserMutation() { const queryClient = useQueryClient(); + const dispatch = useAppDispatch(); return useMutation({ mutationFn: loginUser, - onSuccess: async () => { + onSuccess: async (data) => { + dispatch(setToken(data.jwt)); + Cookies.set("jwt", data.jwt); await queryClient.invalidateQueries({ queryKey: ["me"] }); }, }); From fe9630045e19a05c6f645a0b18151abf2080d8e7 Mon Sep 17 00:00:00 2001 From: Ion Dormenco Date: Sat, 13 Sep 2025 22:38:05 +0300 Subject: [PATCH 30/61] fix reset password --- client2/src/pages/public/EmailSent/index.tsx | 26 ++++++ .../src/pages/public/ForgotPassword/index.tsx | 91 +++++++++++-------- client2/src/routes/(auth)/email-sent.tsx | 7 +- 3 files changed, 79 insertions(+), 45 deletions(-) create mode 100644 client2/src/pages/public/EmailSent/index.tsx diff --git a/client2/src/pages/public/EmailSent/index.tsx b/client2/src/pages/public/EmailSent/index.tsx new file mode 100644 index 00000000..2c2cde3e --- /dev/null +++ b/client2/src/pages/public/EmailSent/index.tsx @@ -0,0 +1,26 @@ +import screenshot from "@/assets/illustration.svg"; +import Section from "@/components/Section"; + +const EmailSent = () => { + return ( +
    +
    +
    +

    + Verifică-ți căsuța de email +

    +

    + Ți-am trimis un mesaj cu instrucțiuni pentru resetarea parolei. Dacă + nu îl găsești, verifică și folderul Spam sau{" "} + Promoții. +

    +
    +
    + Ilustrație resetare parolă +
    +
    +
    + ); +}; + +export default EmailSent; diff --git a/client2/src/pages/public/ForgotPassword/index.tsx b/client2/src/pages/public/ForgotPassword/index.tsx index 35fd2209..e8216be7 100644 --- a/client2/src/pages/public/ForgotPassword/index.tsx +++ b/client2/src/pages/public/ForgotPassword/index.tsx @@ -1,15 +1,25 @@ import screenshot from "@/assets/illustration.svg"; import Button from "@/components/Button"; import Section from "@/components/Section"; -import { useForgotPasswordMutation } from "@/services/user.mutations"; -import { ErrorMessage } from "@hookform/error-message"; import { zodResolver } from "@hookform/resolvers/zod"; import { useNavigate } from "@tanstack/react-router"; -import { useCallback } from "react"; import { useForm } from "react-hook-form"; import { toast } from "sonner"; import { z } from "zod"; +import { + Form, + FormControl, + FormField, + FormItem, + FormLabel, + FormMessage, +} from "@/components/ui/form"; +import { Input } from "@/components/ui/input"; +import { PasswordInput } from "@/components/ui/password-input"; +import { useForgotPasswordMutation } from "@/services/user.mutations"; +import { useCallback } from "react"; + const forgotPasswordSchema = z.object({ email: z .email("Adresa de email este invalidă") @@ -21,10 +31,9 @@ const ForgotPassword = () => { const navigate = useNavigate(); const { mutate: requestForgotPasswordEmail, isPending } = useForgotPasswordMutation(); - const { register, handleSubmit, reset, formState } = - useForm({ - resolver: zodResolver(forgotPasswordSchema), - }); + const form = useForm({ + resolver: zodResolver(forgotPasswordSchema), + }); const onSubmitHandler = useCallback( ({ email }: ForgotPasswordForm) => { @@ -42,39 +51,41 @@ const ForgotPassword = () => { return (
    -
    -
    -

    - Resetare parola -

    - {/*

    */} - {/* Lorem ipsum dolor sit amet consectetur adipisicing elit. Ea sit eaque*/} - {/* totam aliquid veritatis assumenda temporibus harum unde!*/} - {/*

    */} -
    - -
    - -
    - -
    -
    -
    - -
    -
    - +
    +
    + +

    + Resetare parola +

    + + ( + + Email + + + + + + )} + /> + + + + +
    + {"screenshot"}
    diff --git a/client2/src/routes/(auth)/email-sent.tsx b/client2/src/routes/(auth)/email-sent.tsx index 01b0d1c3..abcaae9a 100644 --- a/client2/src/routes/(auth)/email-sent.tsx +++ b/client2/src/routes/(auth)/email-sent.tsx @@ -1,9 +1,6 @@ +import EmailSent from "@/pages/public/EmailSent"; import { createFileRoute } from "@tanstack/react-router"; export const Route = createFileRoute("/(auth)/email-sent")({ - component: RouteComponent, + component: EmailSent, }); - -function RouteComponent() { - return
    Hello "/(auth)/email-sent"!
    ; -} From 737ddf972567d5f0e5c54af46a121c7649843db5 Mon Sep 17 00:00:00 2001 From: Ion Dormenco Date: Sun, 14 Sep 2025 16:13:06 +0300 Subject: [PATCH 31/61] rework register --- client2/package.json | 6 + client2/pnpm-lock.yaml | 751 +- client2/src/components/ui/aspect-ratio.tsx | 9 + client2/src/components/ui/avatar.tsx | 51 + client2/src/components/ui/badge.tsx | 46 + client2/src/components/ui/card.tsx | 92 + client2/src/components/ui/command.tsx | 184 + client2/src/components/ui/dialog.tsx | 141 + client2/src/components/ui/multi-select.tsx | 398 + client2/src/components/ui/select.tsx | 183 + client2/src/components/ui/textarea.tsx | 18 + client2/src/lib/orase-dupa-judet.json | 123881 --------------- client2/src/lib/orase-dupa-judet.ts | 14419 ++ client2/src/pages/Home/UsersTable.tsx | 2 +- .../pages/authenticated/EditProfile/index.tsx | 2 +- client2/src/pages/public/Login/index.tsx | 4 - .../src/pages/public/Register/LogoUpload.tsx | 169 + client2/src/pages/public/Register/index.tsx | 986 +- client2/src/redux/api/authApi.ts | 122 +- client2/src/redux/store.tsx | 6 +- client2/src/routes/(auth)/register.tsx | 3 + client2/src/services/api/get-domains.api.ts | 53 + client2/src/services/api/register-user.api.ts | 35 +- client2/src/services/domains.queries.ts | 16 + client2/src/services/user.mutations.ts | 1 + 25 files changed, 17203 insertions(+), 124375 deletions(-) create mode 100644 client2/src/components/ui/aspect-ratio.tsx create mode 100644 client2/src/components/ui/avatar.tsx create mode 100644 client2/src/components/ui/badge.tsx create mode 100644 client2/src/components/ui/card.tsx create mode 100644 client2/src/components/ui/command.tsx create mode 100644 client2/src/components/ui/dialog.tsx create mode 100644 client2/src/components/ui/multi-select.tsx create mode 100644 client2/src/components/ui/select.tsx create mode 100644 client2/src/components/ui/textarea.tsx delete mode 100644 client2/src/lib/orase-dupa-judet.json create mode 100644 client2/src/lib/orase-dupa-judet.ts create mode 100644 client2/src/pages/public/Register/LogoUpload.tsx create mode 100644 client2/src/services/api/get-domains.api.ts create mode 100644 client2/src/services/domains.queries.ts diff --git a/client2/package.json b/client2/package.json index 8c94ddff..5786b39d 100644 --- a/client2/package.json +++ b/client2/package.json @@ -16,7 +16,11 @@ "@heroicons/react": "^2.2.0", "@hookform/error-message": "^2.0.1", "@hookform/resolvers": "^5.2.1", + "@radix-ui/react-aspect-ratio": "^1.1.7", + "@radix-ui/react-avatar": "^1.1.10", + "@radix-ui/react-dialog": "^1.1.15", "@radix-ui/react-label": "^2.1.7", + "@radix-ui/react-select": "^2.2.6", "@radix-ui/react-slot": "^1.2.3", "@reduxjs/toolkit": "^2.9.0", "@tailwindcss/vite": "^4.1.13", @@ -27,6 +31,7 @@ "better-auth": "^1.3.9", "class-variance-authority": "^0.7.1", "clsx": "^2.1.1", + "cmdk": "^1.1.1", "jotai": "^2.14.0", "jotai-effect": "^2.1.1", "js-cookie": "^3.0.5", @@ -37,6 +42,7 @@ "react": "^19.1.1", "react-circle-chart": "^1.0.4", "react-dom": "^19.1.1", + "react-dropzone": "^14.3.8", "react-error-boundary": "^6.0.0", "react-export-table-to-excel": "^1.0.6", "react-hook-form": "^7.62.0", diff --git a/client2/pnpm-lock.yaml b/client2/pnpm-lock.yaml index 8260f278..0c4aff5f 100644 --- a/client2/pnpm-lock.yaml +++ b/client2/pnpm-lock.yaml @@ -20,9 +20,21 @@ importers: '@hookform/resolvers': specifier: ^5.2.1 version: 5.2.1(react-hook-form@7.62.0(react@19.1.1)) + '@radix-ui/react-aspect-ratio': + specifier: ^1.1.7 + version: 1.1.7(@types/react-dom@19.1.9(@types/react@19.1.12))(@types/react@19.1.12)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-avatar': + specifier: ^1.1.10 + version: 1.1.10(@types/react-dom@19.1.9(@types/react@19.1.12))(@types/react@19.1.12)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-dialog': + specifier: ^1.1.15 + version: 1.1.15(@types/react-dom@19.1.9(@types/react@19.1.12))(@types/react@19.1.12)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) '@radix-ui/react-label': specifier: ^2.1.7 version: 2.1.7(@types/react-dom@19.1.9(@types/react@19.1.12))(@types/react@19.1.12)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-select': + specifier: ^2.2.6 + version: 2.2.6(@types/react-dom@19.1.9(@types/react@19.1.12))(@types/react@19.1.12)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) '@radix-ui/react-slot': specifier: ^1.2.3 version: 1.2.3(@types/react@19.1.12)(react@19.1.1) @@ -53,6 +65,9 @@ importers: clsx: specifier: ^2.1.1 version: 2.1.1 + cmdk: + specifier: ^1.1.1 + version: 1.1.1(@types/react-dom@19.1.9(@types/react@19.1.12))(@types/react@19.1.12)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) jotai: specifier: ^2.14.0 version: 2.14.0(@babel/core@7.28.4)(@babel/template@7.27.2)(@types/react@19.1.12)(react@19.1.1) @@ -83,6 +98,9 @@ importers: react-dom: specifier: ^19.1.1 version: 19.1.1(react@19.1.1) + react-dropzone: + specifier: ^14.3.8 + version: 14.3.8(react@19.1.1) react-error-boundary: specifier: ^6.0.0 version: 6.0.0(react@19.1.1) @@ -940,6 +958,64 @@ packages: '@protobufjs/utf8@1.1.0': resolution: {integrity: sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==} + '@radix-ui/number@1.1.1': + resolution: {integrity: sha512-MkKCwxlXTgz6CFoJx3pCwn07GKp36+aZyu/u2Ln2VrA5DcdyCZkASEDBTd8x5whTQQL5CiYf4prXKLcgQdv29g==} + + '@radix-ui/primitive@1.1.3': + resolution: {integrity: sha512-JTF99U/6XIjCBo0wqkU5sK10glYe27MRRsfwoiq5zzOEZLHU3A3KCMa5X/azekYRCJ0HlwI0crAXS/5dEHTzDg==} + + '@radix-ui/react-arrow@1.1.7': + resolution: {integrity: sha512-F+M1tLhO+mlQaOWspE8Wstg+z6PwxwRd8oQ8IXceWz92kfAmalTRf0EjrouQeo7QssEPfCn05B4Ihs1K9WQ/7w==} + 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-aspect-ratio@1.1.7': + resolution: {integrity: sha512-Yq6lvO9HQyPwev1onK1daHCHqXVLzPhSVjmsNjCa2Zcxy2f7uJD2itDtxknv6FzAKCwD1qQkeVDmX/cev13n/g==} + 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.10': + resolution: {integrity: sha512-V8piFfWapM5OmNCXTzVQY+E1rDa53zY+MQ4Y7356v4fFz6vqCyUtIz2rUD44ZEdwg78/jKmMJHj07+C/Z/rcog==} + 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.7': + resolution: {integrity: sha512-Fh9rGN0MoI4ZFUNyfFVNU4y9LUz93u9/0K+yLgA2bwRojxM8JU1DyvvMBabnZPBgMWREAJvU2jjVzq+LrFUglw==} + 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.1.2': resolution: {integrity: sha512-z4eqJvfiNnFMHIIvXP3CY57y2WJs5g2v3X0zm9mEJkrkNv4rDxu+sg9Jh8EkXyeqBkB7SOcboo9dMVqhyrACIg==} peerDependencies: @@ -949,6 +1025,81 @@ packages: '@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.1.15': + resolution: {integrity: sha512-TCglVRtzlffRNxRMEyR36DGBLJpeusFcgMVD9PZEzAKnUs1lKCgX5u9BmC2Yg+LL9MgZDugFFs1Vl+Jp4t/PGw==} + 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.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.1.11': + resolution: {integrity: sha512-Nqcp+t5cTB8BinFkZgXiMJniQH0PsUt2k51FUhbdfeKvc4ACcG2uQniY/8+h1Yv6Kza4Q7lD7PQV0z0oicE0Mg==} + 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.1.3': + resolution: {integrity: sha512-0rFg/Rj2Q62NCm62jZw0QX7a3sz6QCQU0LpZdNrJX8byRGaGVTqbrW9jAoIAHyMQqsNpeZ81YgSizOt5WXq0Pw==} + 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.1.7': + resolution: {integrity: sha512-t2ODlkXBQyn7jkl6TNaw/MtVEVvIGelJDCG41Okq/KwUsJBwQ4XVZsHAVUkK4mBv3ewiAS3PGuUWuY2BoK4ZUw==} + 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.1.1': + resolution: {integrity: sha512-kGkGegYIdQsOb4XjsfM97rXsiHaBwco+hFI66oO4s9LU+PLAC5oJ7khdOVFxkhsmlbpUqDAvXw11CluXP+jkHg==} + 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.7': resolution: {integrity: sha512-YT1GqPSL8kJn20djelMX7/cTRp/Y9w5IZHvfxQTVHrOqa2yMl7i/UfMqKRU5V7mEyKTrUVgJXhNQPVCG8PBLoQ==} peerDependencies: @@ -962,6 +1113,45 @@ packages: '@types/react-dom': optional: true + '@radix-ui/react-popper@1.2.8': + resolution: {integrity: sha512-0NJQ4LFFUuWkE7Oxf0htBKS6zLkkjBH+hM1uk7Ng705ReR8m/uelduy1DBo0PyBXPKVnBA6YBlU94MBGXrSBCw==} + 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.1.9': + resolution: {integrity: sha512-bpIxvq03if6UNwXZ+HTK71JLh4APvnXntDc6XOX8UVq4XQOVl7lwok0AvIl+b8zgCw3fSaVTZMpAPPagXbKmHQ==} + 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.5': + resolution: {integrity: sha512-/jfEwNDdQVBCNvjkGit4h6pMOzq8bHkopq458dPt2lMjx+eBQUohZNG9A7DtO/O5ukSbxuaNGXMjHicgwy6rQQ==} + 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.3': resolution: {integrity: sha512-m9gTwRkhy2lvCPe6QJp4d3G1TYEUHn/FzJUtq9MjH46an1wJU+GdoGC5VLof8RX8Ft/DlpshApkhswDLZzHIcQ==} peerDependencies: @@ -975,6 +1165,19 @@ packages: '@types/react-dom': optional: true + '@radix-ui/react-select@2.2.6': + resolution: {integrity: sha512-I30RydO+bnn2PQztvo25tswPH+wFBjehVGtmagkU78yMdwTwVf12wnAOF+AeP8S2N8xD+5UPbGhkUfPyvT+mwQ==} + 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.2.3': resolution: {integrity: sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A==} peerDependencies: @@ -984,6 +1187,103 @@ packages: '@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.2.2': + resolution: {integrity: sha512-BjasUjixPFdS+NKkypcyyN5Pmg83Olst0+c6vGov0diwTEo6mgdqVR6hxcEgFuh4QrAs7Rc+9KuGJ9TVCj0Zzg==} + 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-effect-event@0.0.2': + resolution: {integrity: sha512-Qp8WbZOBe+blgpuUT+lw2xheLP8q0oatc9UpmiemEICxGvFLYmHm9QowVZGHtJlGbS6A6yJ3iViad/2cVjnOiA==} + 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.1.1': + resolution: {integrity: sha512-Il0+boE7w/XebUHyBjroE+DbByORGR9KKmITzbR7MyQ4akpORYP/ZmbhAr0DG7RmmBqoOnZdy2QlvajJ2QA59g==} + 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-is-hydrated@0.1.0': + resolution: {integrity: sha512-U+UORVEq+cTnRIaostJv9AGdV3G6Y+zbVd+12e18jQ5A3c0xL03IhnHuiU4UV69wolOQp5GfR58NW/EgdQhwOA==} + 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.1': + resolution: {integrity: sha512-2dHfToCj/pzca2Ck724OZ5L0EVrr3eHRNsG/b3xQJLA2hZpVCS99bLAX+hm1IHXDEnzU6by5z/5MIY794/a8NQ==} + 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.1': + resolution: {integrity: sha512-QTYuDesS0VtuHNNvMh+CjlKJ4LJickCMUAqjlE3+j8w+RlRpwyX3apEQKGFzbZGdo7XNG1tXa+bQqIE7HIXT2w==} + 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.1': + resolution: {integrity: sha512-ewrXRDTAqAXlkl6t/fkXWNAhFX9I+CkKlw6zjEwk86RSPKwZr3xpBRso655aqYafwtnbpHLj6toFzmd6xdVptQ==} + 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.2.3': + resolution: {integrity: sha512-pzJq12tEaaIhqjbzpCuv/OypJY/BPavOofm+dbab+MHLajy277+1lLm6JFcGgF5eskJ6mquGirhXY2GD/8u8Ug==} + 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.1': + resolution: {integrity: sha512-HPwpGIzkl28mWyZqG52jiqDJ12waP11Pa1lGoiyUkIEuMLBP0oeK/C89esbXrxsky5we7dfd8U58nm0SgAWpVw==} + '@react-aria/focus@3.21.1': resolution: {integrity: sha512-hmH1IhHlcQ2lSIxmki1biWzMbGgnhdxJUM0MFfzc71Rv6YAzhlx4kX3GYn4VNcjCeb6cdPv4RZ5vunV4kgMZYQ==} peerDependencies: @@ -1590,6 +1890,10 @@ packages: resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} engines: {node: '>= 8'} + aria-hidden@1.2.6: + resolution: {integrity: sha512-ik3ZgC9dY/lYVVM++OISsaYDeg1tb0VtP5uL3ouh1koGOaUMDPpbFIei4JkFimWUFPn90sbMNMXQAIVOlnYKJA==} + engines: {node: '>=10'} + asn1js@3.0.6: resolution: {integrity: sha512-UOCGPYbl0tv8+006qks/dTgV9ajs97X2p0FAbyS2iyCRrmLSRolDaHdp+v/CLgnzHc3fVB+CwYiUmei7ndFcgA==} engines: {node: '>=12.0.0'} @@ -1605,6 +1909,10 @@ packages: asynckit@0.4.0: resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} + attr-accept@2.2.5: + resolution: {integrity: sha512-0bDNnY/u6pPwHDMoF0FieU354oBi0a8rD9FcsLwzcGWbc8KS8KPIi7y+s13OlVY+gMWc/9xEMUgNE6Qm8ZllYQ==} + engines: {node: '>=4'} + autoprefixer@10.4.21: resolution: {integrity: sha512-O+A6LWV5LDHSJD3LjHYoNi4VLsj/Whi7k6zG12xTYaU4cQ8oxQGckXNX8cRHK5yOZ/ppVHe0ZBXGzSV9jXdVbQ==} engines: {node: ^10 || ^12 || >=14} @@ -1711,6 +2019,12 @@ packages: resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==} engines: {node: '>=6'} + cmdk@1.1.1: + resolution: {integrity: sha512-Vsv7kFaXm+ptHDMZ7izaRsP70GgrW9NBNGswt9OZaVBLlE0SNpDq8eu/VGXyF9r7M0azK3Wy7OlYXsuyYLFzHg==} + peerDependencies: + react: ^18 || ^19 || ^19.0.0-rc + react-dom: ^18 || ^19 || ^19.0.0-rc + codepage@1.15.0: resolution: {integrity: sha512-3g6NUTPd/YtuuGrhMnOMRjFc+LJw/bnMp3+0r/Wcz3IXUuCosKRJvMphm5+Q+bvTVGcJJuRvVLuYba+WojaFaA==} engines: {node: '>=0.8'} @@ -1771,6 +2085,9 @@ packages: resolution: {integrity: sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA==} engines: {node: '>=8'} + detect-node-es@1.1.0: + resolution: {integrity: sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==} + diff@8.0.2: resolution: {integrity: sha512-sSuxWU5j5SR9QQji/o2qMvqRNYRDOcBTgsJ/DeCf4iSN4gW+gNMXM7wFIP+fdXZxoNiAnHUTGjCr+TSWXdRDKg==} engines: {node: '>=0.3.1'} @@ -1890,6 +2207,10 @@ packages: resolution: {integrity: sha512-d+l3qxjSesT4V7v2fh+QnmFnUWv9lSpjarhShNTgBOfA0ttejbQUAlHLitbjkoRiDulW0OPoQPYIGhIC8ohejg==} engines: {node: '>=18'} + file-selector@2.1.2: + resolution: {integrity: sha512-QgXo+mXTe8ljeqUFaX3QVHc5osSItJ/Km+xpocx0aSqWGMSCf6qYs/VnzZgS864Pjn5iceMRFigeAV7AfTlaig==} + engines: {node: '>= 12'} + fill-range@7.1.1: resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} engines: {node: '>=8'} @@ -1950,6 +2271,10 @@ packages: resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==} engines: {node: '>= 0.4'} + get-nonce@1.0.1: + resolution: {integrity: sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==} + engines: {node: '>=6'} + get-proto@1.0.1: resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==} engines: {node: '>= 0.4'} @@ -2236,6 +2561,10 @@ packages: long@5.3.2: resolution: {integrity: sha512-mNAgZ1GmyNhD7AuqnTG3/VQ26o760+ZYBPKjPvugO8+nLbYfX6TVpJPseBvopbdY+qpZ/lKUnmEc1LeZYS3QAA==} + loose-envify@1.4.0: + resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} + hasBin: true + loupe@3.2.1: resolution: {integrity: sha512-CdzqowRJCeLU72bHvWqwRBBlLcMEtIvGrlvef74kMnV2AolS9Y8xUv1I0U/MNAWMhBlKIoyuEgoJ0t/bbwHbLQ==} @@ -2340,6 +2669,10 @@ packages: resolution: {integrity: sha512-9qny7Z9DsQU8Ou39ERsPU4OZQlSTP47ShQzuKZ6PRXpYLtIFgl/DEBYEXKlvcEa+9tHVcK8CF81Y2V72qaZhWA==} engines: {node: '>=18'} + 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'} @@ -2409,6 +2742,9 @@ packages: resolution: {integrity: sha512-4yf0QO/sllf/1zbZWYnvWw3NxCQwLXKzIj0G849LSufP15BXKM0rbD2Z3wVnkMfjdn/CB0Dpp444gYAACdsplg==} engines: {node: '>=18'} + prop-types@15.8.1: + resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} + proto3-json-serializer@2.0.2: resolution: {integrity: sha512-SAzp/O4Yh02jGdRc+uIrGoe87dkN/XtwxfZ4ZyafJHymd79ozp5VG5nyZ7ygqPM5+cpLDjjGnYFUkngonyDPOQ==} engines: {node: '>=14.0.0'} @@ -2445,6 +2781,12 @@ packages: peerDependencies: react: ^19.1.1 + react-dropzone@14.3.8: + resolution: {integrity: sha512-sBgODnq+lcA4P296DY4wacOZz3JFpD99fp+hb//iBO2HHnyeZU3FwWyXJ6salNpqQdsZrgMrotuko/BdJMV8Ug==} + engines: {node: '>= 10.13'} + peerDependencies: + react: '>= 16.8 || 18.0.0' + react-error-boundary@6.0.0: resolution: {integrity: sha512-gdlJjD7NWr0IfkPlaREN2d9uUZUlksrfOx7SX62VRerwXbMY6ftGCIZua1VG1aXFNOimhISsTq+Owp725b9SiA==} peerDependencies: @@ -2459,6 +2801,9 @@ packages: peerDependencies: react: ^16.8.0 || ^17 || ^18 || ^19 + react-is@16.13.1: + resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} + react-range-slider-input@3.2.1: resolution: {integrity: sha512-MApTX4a/Uzm9ZrJFoWu2kM87TKHJpnHHBV2JR9N9WmOSWk832DDBT3suNN6vCQmFRRtfJO9stw+bsiGpto0Hig==} @@ -2471,12 +2816,42 @@ packages: peerDependenciesMeta: '@types/react': optional: true - redux: - optional: true + redux: + optional: true + + react-refresh@0.17.0: + resolution: {integrity: sha512-z6F7K9bV85EfseRCp2bzrpyQ0Gkw1uLoCel9XBVWPg/TjRj94SkJzUTGfOa4bs7iJvBWtQG0Wq7wnI0syw3EBQ==} + engines: {node: '>=0.10.0'} + + react-remove-scroll-bar@2.3.8: + resolution: {integrity: sha512-9r+yi9+mgU33AKcj6IbT9oRCO78WriSj6t/cF8DWBZJ9aOGPOTEDvdUDz1FwKim7QXWwmHqtdHnRJfhAxEG46Q==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': '*' + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + + react-remove-scroll@2.7.1: + resolution: {integrity: sha512-HpMh8+oahmIdOuS5aFKKY6Pyog+FNaZV/XyJOq7b4YFwsFHe5yYfdbIalI4k3vU2nSDql7YskmUseHsRrJqIPA==} + 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 - react-refresh@0.17.0: - resolution: {integrity: sha512-z6F7K9bV85EfseRCp2bzrpyQ0Gkw1uLoCel9XBVWPg/TjRj94SkJzUTGfOa4bs7iJvBWtQG0Wq7wnI0syw3EBQ==} - engines: {node: '>=0.10.0'} + react-style-singleton@2.2.3: + resolution: {integrity: sha512-b6jSvxvVnyptAiLjbkWLE/lOnR4lfTtDAl+eUC7RZy+QQWc6wRzIV2CE6xBuMmDxc2qIihtDCZD5NPOFl7fRBQ==} + 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 react@19.1.1: resolution: {integrity: sha512-w8nqGImo45dmMIfljjMwOGtbmC/mk4CMYhWIicdSflH91J9TyCyczcPFXJzrZ/ZXcgGRFeP6BU0BEJTw6tZdfQ==} @@ -2786,6 +3161,26 @@ packages: peerDependencies: browserslist: '>= 4.21.0' + use-callback-ref@1.3.3: + resolution: {integrity: sha512-jQL3lRnocaFtu3V00JToYz/4QkNWswxijDaCVNZRiRTO3HQDLsdu1ZtmIUvV4yPp+rvWm5j0y0TG/S61cuijTg==} + 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 + + use-sidecar@1.1.3: + resolution: {integrity: sha512-Fedw0aZvkhynoPYlA5WXrMCAMm+nSWdZt6lzJQ7Ok8S6Q+VsHmHpRWndVRJ8Be0ZbkfPc5LRYH+5XrzXcEeLRQ==} + 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 + use-sync-external-store@1.5.0: resolution: {integrity: sha512-Rb46I4cGGVBmjamjphe8L/UnvJD+uPPtTkNvX5mZgqdbavhI4EbgIWJiIHXJ8bc/i9EQGPRh4DwEURJ552Do0A==} peerDependencies: @@ -3557,12 +3952,130 @@ snapshots: '@protobufjs/utf8@1.1.0': {} + '@radix-ui/number@1.1.1': {} + + '@radix-ui/primitive@1.1.3': {} + + '@radix-ui/react-arrow@1.1.7(@types/react-dom@19.1.9(@types/react@19.1.12))(@types/react@19.1.12)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': + dependencies: + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.9(@types/react@19.1.12))(@types/react@19.1.12)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + react: 19.1.1 + react-dom: 19.1.1(react@19.1.1) + optionalDependencies: + '@types/react': 19.1.12 + '@types/react-dom': 19.1.9(@types/react@19.1.12) + + '@radix-ui/react-aspect-ratio@1.1.7(@types/react-dom@19.1.9(@types/react@19.1.12))(@types/react@19.1.12)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': + dependencies: + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.9(@types/react@19.1.12))(@types/react@19.1.12)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + react: 19.1.1 + react-dom: 19.1.1(react@19.1.1) + optionalDependencies: + '@types/react': 19.1.12 + '@types/react-dom': 19.1.9(@types/react@19.1.12) + + '@radix-ui/react-avatar@1.1.10(@types/react-dom@19.1.9(@types/react@19.1.12))(@types/react@19.1.12)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': + dependencies: + '@radix-ui/react-context': 1.1.2(@types/react@19.1.12)(react@19.1.1) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.9(@types/react@19.1.12))(@types/react@19.1.12)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.1.12)(react@19.1.1) + '@radix-ui/react-use-is-hydrated': 0.1.0(@types/react@19.1.12)(react@19.1.1) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.12)(react@19.1.1) + react: 19.1.1 + react-dom: 19.1.1(react@19.1.1) + optionalDependencies: + '@types/react': 19.1.12 + '@types/react-dom': 19.1.9(@types/react@19.1.12) + + '@radix-ui/react-collection@1.1.7(@types/react-dom@19.1.9(@types/react@19.1.12))(@types/react@19.1.12)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': + dependencies: + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.12)(react@19.1.1) + '@radix-ui/react-context': 1.1.2(@types/react@19.1.12)(react@19.1.1) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.9(@types/react@19.1.12))(@types/react@19.1.12)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-slot': 1.2.3(@types/react@19.1.12)(react@19.1.1) + react: 19.1.1 + react-dom: 19.1.1(react@19.1.1) + optionalDependencies: + '@types/react': 19.1.12 + '@types/react-dom': 19.1.9(@types/react@19.1.12) + '@radix-ui/react-compose-refs@1.1.2(@types/react@19.1.12)(react@19.1.1)': dependencies: react: 19.1.1 optionalDependencies: '@types/react': 19.1.12 + '@radix-ui/react-context@1.1.2(@types/react@19.1.12)(react@19.1.1)': + dependencies: + react: 19.1.1 + optionalDependencies: + '@types/react': 19.1.12 + + '@radix-ui/react-dialog@1.1.15(@types/react-dom@19.1.9(@types/react@19.1.12))(@types/react@19.1.12)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': + dependencies: + '@radix-ui/primitive': 1.1.3 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.12)(react@19.1.1) + '@radix-ui/react-context': 1.1.2(@types/react@19.1.12)(react@19.1.1) + '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.1.9(@types/react@19.1.12))(@types/react@19.1.12)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-focus-guards': 1.1.3(@types/react@19.1.12)(react@19.1.1) + '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@19.1.9(@types/react@19.1.12))(@types/react@19.1.12)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-id': 1.1.1(@types/react@19.1.12)(react@19.1.1) + '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.1.9(@types/react@19.1.12))(@types/react@19.1.12)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.1.9(@types/react@19.1.12))(@types/react@19.1.12)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.9(@types/react@19.1.12))(@types/react@19.1.12)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-slot': 1.2.3(@types/react@19.1.12)(react@19.1.1) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.1.12)(react@19.1.1) + aria-hidden: 1.2.6 + react: 19.1.1 + react-dom: 19.1.1(react@19.1.1) + react-remove-scroll: 2.7.1(@types/react@19.1.12)(react@19.1.1) + optionalDependencies: + '@types/react': 19.1.12 + '@types/react-dom': 19.1.9(@types/react@19.1.12) + + '@radix-ui/react-direction@1.1.1(@types/react@19.1.12)(react@19.1.1)': + dependencies: + react: 19.1.1 + optionalDependencies: + '@types/react': 19.1.12 + + '@radix-ui/react-dismissable-layer@1.1.11(@types/react-dom@19.1.9(@types/react@19.1.12))(@types/react@19.1.12)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': + dependencies: + '@radix-ui/primitive': 1.1.3 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.12)(react@19.1.1) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.9(@types/react@19.1.12))(@types/react@19.1.12)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.1.12)(react@19.1.1) + '@radix-ui/react-use-escape-keydown': 1.1.1(@types/react@19.1.12)(react@19.1.1) + react: 19.1.1 + react-dom: 19.1.1(react@19.1.1) + optionalDependencies: + '@types/react': 19.1.12 + '@types/react-dom': 19.1.9(@types/react@19.1.12) + + '@radix-ui/react-focus-guards@1.1.3(@types/react@19.1.12)(react@19.1.1)': + dependencies: + react: 19.1.1 + optionalDependencies: + '@types/react': 19.1.12 + + '@radix-ui/react-focus-scope@1.1.7(@types/react-dom@19.1.9(@types/react@19.1.12))(@types/react@19.1.12)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': + dependencies: + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.12)(react@19.1.1) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.9(@types/react@19.1.12))(@types/react@19.1.12)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.1.12)(react@19.1.1) + react: 19.1.1 + react-dom: 19.1.1(react@19.1.1) + optionalDependencies: + '@types/react': 19.1.12 + '@types/react-dom': 19.1.9(@types/react@19.1.12) + + '@radix-ui/react-id@1.1.1(@types/react@19.1.12)(react@19.1.1)': + dependencies: + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.12)(react@19.1.1) + react: 19.1.1 + optionalDependencies: + '@types/react': 19.1.12 + '@radix-ui/react-label@2.1.7(@types/react-dom@19.1.9(@types/react@19.1.12))(@types/react@19.1.12)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': dependencies: '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.9(@types/react@19.1.12))(@types/react@19.1.12)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) @@ -3572,6 +4085,44 @@ snapshots: '@types/react': 19.1.12 '@types/react-dom': 19.1.9(@types/react@19.1.12) + '@radix-ui/react-popper@1.2.8(@types/react-dom@19.1.9(@types/react@19.1.12))(@types/react@19.1.12)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': + dependencies: + '@floating-ui/react-dom': 2.1.6(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-arrow': 1.1.7(@types/react-dom@19.1.9(@types/react@19.1.12))(@types/react@19.1.12)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.12)(react@19.1.1) + '@radix-ui/react-context': 1.1.2(@types/react@19.1.12)(react@19.1.1) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.9(@types/react@19.1.12))(@types/react@19.1.12)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.1.12)(react@19.1.1) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.12)(react@19.1.1) + '@radix-ui/react-use-rect': 1.1.1(@types/react@19.1.12)(react@19.1.1) + '@radix-ui/react-use-size': 1.1.1(@types/react@19.1.12)(react@19.1.1) + '@radix-ui/rect': 1.1.1 + react: 19.1.1 + react-dom: 19.1.1(react@19.1.1) + optionalDependencies: + '@types/react': 19.1.12 + '@types/react-dom': 19.1.9(@types/react@19.1.12) + + '@radix-ui/react-portal@1.1.9(@types/react-dom@19.1.9(@types/react@19.1.12))(@types/react@19.1.12)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': + dependencies: + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.9(@types/react@19.1.12))(@types/react@19.1.12)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.12)(react@19.1.1) + react: 19.1.1 + react-dom: 19.1.1(react@19.1.1) + optionalDependencies: + '@types/react': 19.1.12 + '@types/react-dom': 19.1.9(@types/react@19.1.12) + + '@radix-ui/react-presence@1.1.5(@types/react-dom@19.1.9(@types/react@19.1.12))(@types/react@19.1.12)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': + dependencies: + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.12)(react@19.1.1) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.12)(react@19.1.1) + react: 19.1.1 + react-dom: 19.1.1(react@19.1.1) + optionalDependencies: + '@types/react': 19.1.12 + '@types/react-dom': 19.1.9(@types/react@19.1.12) + '@radix-ui/react-primitive@2.1.3(@types/react-dom@19.1.9(@types/react@19.1.12))(@types/react@19.1.12)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': dependencies: '@radix-ui/react-slot': 1.2.3(@types/react@19.1.12)(react@19.1.1) @@ -3581,6 +4132,35 @@ snapshots: '@types/react': 19.1.12 '@types/react-dom': 19.1.9(@types/react@19.1.12) + '@radix-ui/react-select@2.2.6(@types/react-dom@19.1.9(@types/react@19.1.12))(@types/react@19.1.12)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': + dependencies: + '@radix-ui/number': 1.1.1 + '@radix-ui/primitive': 1.1.3 + '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.1.9(@types/react@19.1.12))(@types/react@19.1.12)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.12)(react@19.1.1) + '@radix-ui/react-context': 1.1.2(@types/react@19.1.12)(react@19.1.1) + '@radix-ui/react-direction': 1.1.1(@types/react@19.1.12)(react@19.1.1) + '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.1.9(@types/react@19.1.12))(@types/react@19.1.12)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-focus-guards': 1.1.3(@types/react@19.1.12)(react@19.1.1) + '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@19.1.9(@types/react@19.1.12))(@types/react@19.1.12)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-id': 1.1.1(@types/react@19.1.12)(react@19.1.1) + '@radix-ui/react-popper': 1.2.8(@types/react-dom@19.1.9(@types/react@19.1.12))(@types/react@19.1.12)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.1.9(@types/react@19.1.12))(@types/react@19.1.12)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.9(@types/react@19.1.12))(@types/react@19.1.12)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-slot': 1.2.3(@types/react@19.1.12)(react@19.1.1) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.1.12)(react@19.1.1) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.1.12)(react@19.1.1) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.12)(react@19.1.1) + '@radix-ui/react-use-previous': 1.1.1(@types/react@19.1.12)(react@19.1.1) + '@radix-ui/react-visually-hidden': 1.2.3(@types/react-dom@19.1.9(@types/react@19.1.12))(@types/react@19.1.12)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + aria-hidden: 1.2.6 + react: 19.1.1 + react-dom: 19.1.1(react@19.1.1) + react-remove-scroll: 2.7.1(@types/react@19.1.12)(react@19.1.1) + optionalDependencies: + '@types/react': 19.1.12 + '@types/react-dom': 19.1.9(@types/react@19.1.12) + '@radix-ui/react-slot@1.2.3(@types/react@19.1.12)(react@19.1.1)': dependencies: '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.12)(react@19.1.1) @@ -3588,6 +4168,78 @@ snapshots: optionalDependencies: '@types/react': 19.1.12 + '@radix-ui/react-use-callback-ref@1.1.1(@types/react@19.1.12)(react@19.1.1)': + dependencies: + react: 19.1.1 + optionalDependencies: + '@types/react': 19.1.12 + + '@radix-ui/react-use-controllable-state@1.2.2(@types/react@19.1.12)(react@19.1.1)': + dependencies: + '@radix-ui/react-use-effect-event': 0.0.2(@types/react@19.1.12)(react@19.1.1) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.12)(react@19.1.1) + react: 19.1.1 + optionalDependencies: + '@types/react': 19.1.12 + + '@radix-ui/react-use-effect-event@0.0.2(@types/react@19.1.12)(react@19.1.1)': + dependencies: + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.12)(react@19.1.1) + react: 19.1.1 + optionalDependencies: + '@types/react': 19.1.12 + + '@radix-ui/react-use-escape-keydown@1.1.1(@types/react@19.1.12)(react@19.1.1)': + dependencies: + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.1.12)(react@19.1.1) + react: 19.1.1 + optionalDependencies: + '@types/react': 19.1.12 + + '@radix-ui/react-use-is-hydrated@0.1.0(@types/react@19.1.12)(react@19.1.1)': + dependencies: + react: 19.1.1 + use-sync-external-store: 1.5.0(react@19.1.1) + optionalDependencies: + '@types/react': 19.1.12 + + '@radix-ui/react-use-layout-effect@1.1.1(@types/react@19.1.12)(react@19.1.1)': + dependencies: + react: 19.1.1 + optionalDependencies: + '@types/react': 19.1.12 + + '@radix-ui/react-use-previous@1.1.1(@types/react@19.1.12)(react@19.1.1)': + dependencies: + react: 19.1.1 + optionalDependencies: + '@types/react': 19.1.12 + + '@radix-ui/react-use-rect@1.1.1(@types/react@19.1.12)(react@19.1.1)': + dependencies: + '@radix-ui/rect': 1.1.1 + react: 19.1.1 + optionalDependencies: + '@types/react': 19.1.12 + + '@radix-ui/react-use-size@1.1.1(@types/react@19.1.12)(react@19.1.1)': + dependencies: + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.12)(react@19.1.1) + react: 19.1.1 + optionalDependencies: + '@types/react': 19.1.12 + + '@radix-ui/react-visually-hidden@1.2.3(@types/react-dom@19.1.9(@types/react@19.1.12))(@types/react@19.1.12)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': + dependencies: + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.9(@types/react@19.1.12))(@types/react@19.1.12)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + react: 19.1.1 + react-dom: 19.1.1(react@19.1.1) + optionalDependencies: + '@types/react': 19.1.12 + '@types/react-dom': 19.1.9(@types/react@19.1.12) + + '@radix-ui/rect@1.1.1': {} + '@react-aria/focus@3.21.1(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': dependencies: '@react-aria/interactions': 3.25.5(react-dom@19.1.1(react@19.1.1))(react@19.1.1) @@ -4165,6 +4817,10 @@ snapshots: normalize-path: 3.0.0 picomatch: 2.3.1 + aria-hidden@1.2.6: + dependencies: + tslib: 2.8.1 + asn1js@3.0.6: dependencies: pvtsutils: 1.3.6 @@ -4179,6 +4835,8 @@ snapshots: asynckit@0.4.0: {} + attr-accept@2.2.5: {} + autoprefixer@10.4.21(postcss@8.5.6): dependencies: browserslist: 4.25.4 @@ -4309,6 +4967,18 @@ snapshots: clsx@2.1.1: {} + cmdk@1.1.1(@types/react-dom@19.1.9(@types/react@19.1.12))(@types/react@19.1.12)(react-dom@19.1.1(react@19.1.1))(react@19.1.1): + dependencies: + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.12)(react@19.1.1) + '@radix-ui/react-dialog': 1.1.15(@types/react-dom@19.1.9(@types/react@19.1.12))(@types/react@19.1.12)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-id': 1.1.1(@types/react@19.1.12)(react@19.1.1) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.9(@types/react@19.1.12))(@types/react@19.1.12)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + react: 19.1.1 + react-dom: 19.1.1(react@19.1.1) + transitivePeerDependencies: + - '@types/react' + - '@types/react-dom' + codepage@1.15.0: {} color-convert@2.0.1: @@ -4349,6 +5019,8 @@ snapshots: detect-libc@2.0.4: {} + detect-node-es@1.1.0: {} + diff@8.0.2: {} dotenv-expand@12.0.3: @@ -4550,6 +5222,10 @@ snapshots: dependencies: is-unicode-supported: 2.1.0 + file-selector@2.1.2: + dependencies: + tslib: 2.8.1 + fill-range@7.1.1: dependencies: to-regex-range: 5.0.1 @@ -4621,6 +5297,8 @@ snapshots: hasown: 2.0.2 math-intrinsics: 1.1.0 + get-nonce@1.0.1: {} + get-proto@1.0.1: dependencies: dunder-proto: 1.0.1 @@ -4877,6 +5555,10 @@ snapshots: long@5.3.2: {} + loose-envify@1.4.0: + dependencies: + js-tokens: 4.0.0 + loupe@3.2.1: {} lru-cache@10.4.3: {} @@ -4955,6 +5637,8 @@ snapshots: path-key: 4.0.0 unicorn-magic: 0.3.0 + object-assign@4.1.1: {} + object-hash@3.0.0: {} object-inspect@1.13.4: {} @@ -5005,6 +5689,12 @@ snapshots: dependencies: parse-ms: 4.0.0 + prop-types@15.8.1: + dependencies: + loose-envify: 1.4.0 + object-assign: 4.1.1 + react-is: 16.13.1 + proto3-json-serializer@2.0.2: dependencies: protobufjs: 7.5.4 @@ -5048,6 +5738,13 @@ snapshots: react: 19.1.1 scheduler: 0.26.0 + react-dropzone@14.3.8(react@19.1.1): + dependencies: + attr-accept: 2.2.5 + file-selector: 2.1.2 + prop-types: 15.8.1 + react: 19.1.1 + react-error-boundary@6.0.0(react@19.1.1): dependencies: '@babel/runtime': 7.28.4 @@ -5059,6 +5756,8 @@ snapshots: dependencies: react: 19.1.1 + react-is@16.13.1: {} + react-range-slider-input@3.2.1: dependencies: clsx: 1.2.1 @@ -5075,6 +5774,33 @@ snapshots: react-refresh@0.17.0: {} + react-remove-scroll-bar@2.3.8(@types/react@19.1.12)(react@19.1.1): + dependencies: + react: 19.1.1 + react-style-singleton: 2.2.3(@types/react@19.1.12)(react@19.1.1) + tslib: 2.8.1 + optionalDependencies: + '@types/react': 19.1.12 + + react-remove-scroll@2.7.1(@types/react@19.1.12)(react@19.1.1): + dependencies: + react: 19.1.1 + react-remove-scroll-bar: 2.3.8(@types/react@19.1.12)(react@19.1.1) + react-style-singleton: 2.2.3(@types/react@19.1.12)(react@19.1.1) + tslib: 2.8.1 + use-callback-ref: 1.3.3(@types/react@19.1.12)(react@19.1.1) + use-sidecar: 1.1.3(@types/react@19.1.12)(react@19.1.1) + optionalDependencies: + '@types/react': 19.1.12 + + react-style-singleton@2.2.3(@types/react@19.1.12)(react@19.1.1): + dependencies: + get-nonce: 1.0.1 + react: 19.1.1 + tslib: 2.8.1 + optionalDependencies: + '@types/react': 19.1.12 + react@19.1.1: {} read-pkg-up@11.0.0: @@ -5383,6 +6109,21 @@ snapshots: escalade: 3.2.0 picocolors: 1.1.1 + use-callback-ref@1.3.3(@types/react@19.1.12)(react@19.1.1): + dependencies: + react: 19.1.1 + tslib: 2.8.1 + optionalDependencies: + '@types/react': 19.1.12 + + use-sidecar@1.1.3(@types/react@19.1.12)(react@19.1.1): + dependencies: + detect-node-es: 1.1.0 + react: 19.1.1 + tslib: 2.8.1 + optionalDependencies: + '@types/react': 19.1.12 + use-sync-external-store@1.5.0(react@19.1.1): dependencies: react: 19.1.1 diff --git a/client2/src/components/ui/aspect-ratio.tsx b/client2/src/components/ui/aspect-ratio.tsx new file mode 100644 index 00000000..9b491fb8 --- /dev/null +++ b/client2/src/components/ui/aspect-ratio.tsx @@ -0,0 +1,9 @@ +import * as AspectRatioPrimitive from "@radix-ui/react-aspect-ratio" + +function AspectRatio({ + ...props +}: React.ComponentProps) { + return +} + +export { AspectRatio } diff --git a/client2/src/components/ui/avatar.tsx b/client2/src/components/ui/avatar.tsx new file mode 100644 index 00000000..b7224f00 --- /dev/null +++ b/client2/src/components/ui/avatar.tsx @@ -0,0 +1,51 @@ +import * as React from "react" +import * as AvatarPrimitive from "@radix-ui/react-avatar" + +import { cn } from "@/lib/utils" + +function Avatar({ + className, + ...props +}: React.ComponentProps) { + return ( + + ) +} + +function AvatarImage({ + className, + ...props +}: React.ComponentProps) { + return ( + + ) +} + +function AvatarFallback({ + className, + ...props +}: React.ComponentProps) { + return ( + + ) +} + +export { Avatar, AvatarImage, AvatarFallback } diff --git a/client2/src/components/ui/badge.tsx b/client2/src/components/ui/badge.tsx new file mode 100644 index 00000000..02054139 --- /dev/null +++ b/client2/src/components/ui/badge.tsx @@ -0,0 +1,46 @@ +import * as React from "react" +import { Slot } from "@radix-ui/react-slot" +import { cva, type VariantProps } from "class-variance-authority" + +import { cn } from "@/lib/utils" + +const badgeVariants = cva( + "inline-flex items-center justify-center rounded-md border px-2 py-0.5 text-xs font-medium w-fit whitespace-nowrap shrink-0 [&>svg]:size-3 gap-1 [&>svg]:pointer-events-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive transition-[color,box-shadow] overflow-hidden", + { + variants: { + variant: { + default: + "border-transparent bg-primary text-primary-foreground [a&]:hover:bg-primary/90", + secondary: + "border-transparent bg-secondary text-secondary-foreground [a&]:hover:bg-secondary/90", + destructive: + "border-transparent bg-destructive text-white [a&]:hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60", + outline: + "text-foreground [a&]:hover:bg-accent [a&]:hover:text-accent-foreground", + }, + }, + defaultVariants: { + variant: "default", + }, + } +) + +function Badge({ + className, + variant, + asChild = false, + ...props +}: React.ComponentProps<"span"> & + VariantProps & { asChild?: boolean }) { + const Comp = asChild ? Slot : "span" + + return ( + + ) +} + +export { Badge, badgeVariants } diff --git a/client2/src/components/ui/card.tsx b/client2/src/components/ui/card.tsx new file mode 100644 index 00000000..d05bbc6c --- /dev/null +++ b/client2/src/components/ui/card.tsx @@ -0,0 +1,92 @@ +import * as React from "react" + +import { cn } from "@/lib/utils" + +function Card({ className, ...props }: React.ComponentProps<"div">) { + return ( +
    + ) +} + +function CardHeader({ className, ...props }: React.ComponentProps<"div">) { + return ( +
    + ) +} + +function CardTitle({ className, ...props }: React.ComponentProps<"div">) { + return ( +
    + ) +} + +function CardDescription({ className, ...props }: React.ComponentProps<"div">) { + return ( +
    + ) +} + +function CardAction({ className, ...props }: React.ComponentProps<"div">) { + return ( +
    + ) +} + +function CardContent({ className, ...props }: React.ComponentProps<"div">) { + return ( +
    + ) +} + +function CardFooter({ className, ...props }: React.ComponentProps<"div">) { + return ( +
    + ) +} + +export { + Card, + CardHeader, + CardFooter, + CardTitle, + CardAction, + CardDescription, + CardContent, +} diff --git a/client2/src/components/ui/command.tsx b/client2/src/components/ui/command.tsx new file mode 100644 index 00000000..8cb4ca7a --- /dev/null +++ b/client2/src/components/ui/command.tsx @@ -0,0 +1,184 @@ +"use client" + +import * as React from "react" +import { Command as CommandPrimitive } from "cmdk" +import { SearchIcon } from "lucide-react" + +import { cn } from "@/lib/utils" +import { + Dialog, + DialogContent, + DialogDescription, + DialogHeader, + DialogTitle, +} from "@/components/ui/dialog" + +function Command({ + className, + ...props +}: React.ComponentProps) { + return ( + + ) +} + +function CommandDialog({ + title = "Command Palette", + description = "Search for a command to run...", + children, + className, + showCloseButton = true, + ...props +}: React.ComponentProps & { + title?: string + description?: string + className?: string + showCloseButton?: boolean +}) { + return ( + + + {title} + {description} + + + + {children} + + + + ) +} + +function CommandInput({ + className, + ...props +}: React.ComponentProps) { + return ( +
    + + +
    + ) +} + +function CommandList({ + className, + ...props +}: React.ComponentProps) { + return ( + + ) +} + +function CommandEmpty({ + ...props +}: React.ComponentProps) { + return ( + + ) +} + +function CommandGroup({ + className, + ...props +}: React.ComponentProps) { + return ( + + ) +} + +function CommandSeparator({ + className, + ...props +}: React.ComponentProps) { + return ( + + ) +} + +function CommandItem({ + className, + ...props +}: React.ComponentProps) { + return ( + + ) +} + +function CommandShortcut({ + className, + ...props +}: React.ComponentProps<"span">) { + return ( + + ) +} + +export { + Command, + CommandDialog, + CommandInput, + CommandList, + CommandEmpty, + CommandGroup, + CommandItem, + CommandShortcut, + CommandSeparator, +} diff --git a/client2/src/components/ui/dialog.tsx b/client2/src/components/ui/dialog.tsx new file mode 100644 index 00000000..6cb123b3 --- /dev/null +++ b/client2/src/components/ui/dialog.tsx @@ -0,0 +1,141 @@ +import * as React from "react" +import * as DialogPrimitive from "@radix-ui/react-dialog" +import { XIcon } from "lucide-react" + +import { cn } from "@/lib/utils" + +function Dialog({ + ...props +}: React.ComponentProps) { + return +} + +function DialogTrigger({ + ...props +}: React.ComponentProps) { + return +} + +function DialogPortal({ + ...props +}: React.ComponentProps) { + return +} + +function DialogClose({ + ...props +}: React.ComponentProps) { + return +} + +function DialogOverlay({ + className, + ...props +}: React.ComponentProps) { + return ( + + ) +} + +function DialogContent({ + className, + children, + showCloseButton = true, + ...props +}: React.ComponentProps & { + showCloseButton?: boolean +}) { + return ( + + + + {children} + {showCloseButton && ( + + + Close + + )} + + + ) +} + +function DialogHeader({ className, ...props }: React.ComponentProps<"div">) { + return ( +
    + ) +} + +function DialogFooter({ className, ...props }: React.ComponentProps<"div">) { + return ( +
    + ) +} + +function DialogTitle({ + className, + ...props +}: React.ComponentProps) { + return ( + + ) +} + +function DialogDescription({ + className, + ...props +}: React.ComponentProps) { + return ( + + ) +} + +export { + Dialog, + DialogClose, + DialogContent, + DialogDescription, + DialogFooter, + DialogHeader, + DialogOverlay, + DialogPortal, + DialogTitle, + DialogTrigger, +} diff --git a/client2/src/components/ui/multi-select.tsx b/client2/src/components/ui/multi-select.tsx new file mode 100644 index 00000000..a54268c5 --- /dev/null +++ b/client2/src/components/ui/multi-select.tsx @@ -0,0 +1,398 @@ +"use client"; + +import { Badge } from "@/components/ui/badge"; +import { + Command, + CommandItem, + CommandEmpty, + CommandList, +} from "@/components/ui/command"; +import { cn } from "@/lib/utils"; +import { Command as CommandPrimitive } from "cmdk"; +import { X as RemoveIcon, Check } from "lucide-react"; +import React, { + type KeyboardEvent, + createContext, + forwardRef, + useCallback, + useContext, + useState, +} from "react"; + +export type MultiSelectValue = { + value: string; + label: string; +}; + +interface MultiSelectorProps + extends React.ComponentPropsWithoutRef { + values: MultiSelectValue[]; + onValuesChange: (value: MultiSelectValue[]) => void; + loop?: boolean; +} + +interface MultiSelectContextProps { + value: MultiSelectValue[]; + onValueChange: (value: any) => void; + open: boolean; + setOpen: (value: boolean) => void; + inputValue: string; + setInputValue: React.Dispatch>; + activeIndex: number; + setActiveIndex: React.Dispatch>; + ref: React.RefObject; +} + +const MultiSelectContext = createContext(null); + +const useMultiSelect = () => { + const context = useContext(MultiSelectContext); + if (!context) { + throw new Error("useMultiSelect must be used within MultiSelectProvider"); + } + return context; +}; + +/** + * MultiSelect Docs: {@link: https://shadcn-extension.vercel.app/docs/multi-select} + */ + +// TODO : expose the visibility of the popup + +function searchForValue(source: MultiSelectValue[], value: MultiSelectValue) { + for (let i = 0; i < source.length; i++) { + if (source[i].value === value.value) { + return i; + } + } + return -1; +} + +const MultiSelector = ({ + values: value, + onValuesChange: onValueChange, + loop = false, + className, + children, + dir, + ...props +}: MultiSelectorProps) => { + const [inputValue, setInputValue] = useState(""); + const [open, setOpen] = useState(false); + const [activeIndex, setActiveIndex] = useState(-1); + const inputRef = React.useRef(null); + + const onValueChangeHandler = useCallback( + (val: MultiSelectValue) => { + const element = searchForValue(value, val); + if (element !== -1) { + onValueChange(value.filter((_, index) => index !== element)); + } else { + onValueChange([...value, val]); + } + }, + // eslint-disable-next-line react-hooks/exhaustive-deps + [value] + ); + + const handleKeyDown = useCallback( + (e: KeyboardEvent) => { + e.stopPropagation(); + const target = inputRef.current; + + if (!target) return; + + const selectionStart = target.selectionStart ?? 0; + const selectionEnd = target.selectionEnd ?? 0; + + // If there's a selection, do nothing and let the default behavior take over + if (selectionStart !== selectionEnd) { + return; + } + + const moveNext = () => { + const nextIndex = activeIndex + 1; + setActiveIndex( + nextIndex > value.length - 1 ? (loop ? 0 : -1) : nextIndex + ); + }; + + const movePrev = () => { + const prevIndex = activeIndex - 1; + setActiveIndex(prevIndex < 0 ? value.length - 1 : prevIndex); + }; + + const moveCurrent = () => { + const newIndex = + activeIndex - 1 <= 0 + ? value.length - 1 === 0 + ? -1 + : 0 + : activeIndex - 1; + setActiveIndex(newIndex); + }; + + switch (e.key) { + case "ArrowLeft": + if (dir === "rtl") { + if (value.length > 0 && (activeIndex !== -1 || loop)) { + moveNext(); + } + } else { + if (value.length > 0 && target.selectionStart === 0) { + movePrev(); + } + } + break; + + case "ArrowRight": + if (dir === "rtl") { + if (value.length > 0 && target.selectionStart === 0) { + movePrev(); + } + } else { + if (value.length > 0 && (activeIndex !== -1 || loop)) { + moveNext(); + } + } + break; + + case "Backspace": + case "Delete": + if (value.length > 0) { + if (activeIndex !== -1 && activeIndex < value.length) { + onValueChangeHandler(value[activeIndex]); + moveCurrent(); + } else { + if (target.selectionStart === 0) { + onValueChangeHandler(value[value.length - 1]); + } + } + } + break; + + case "Enter": + setOpen(true); + break; + + case "Escape": + if (activeIndex !== -1) { + setActiveIndex(-1); + } else if (open) { + setInputValue(""); + setOpen(false); + } + break; + } + }, + [value, activeIndex, loop] + ); + + return ( + + + {children} + + + ); +}; + +const MultiSelectorTrigger = forwardRef< + HTMLDivElement, + React.HTMLAttributes +>(({ className, children, ...props }, ref) => { + const { value, onValueChange, activeIndex } = useMultiSelect(); + + const mousePreventDefault = useCallback((e: React.MouseEvent) => { + e.preventDefault(); + e.stopPropagation(); + }, []); + + return ( +
    + {value.map((item, index) => ( + + {item.label} + + + ))} + {children} +
    + ); +}); + +MultiSelectorTrigger.displayName = "MultiSelectorTrigger"; + +const MultiSelectorInput = forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => { + const { + setOpen, + inputValue, + setInputValue, + activeIndex, + setActiveIndex, + ref: inputRef, + } = useMultiSelect(); + + return ( + { + setInputValue(""); + setOpen(false); + }} + onFocus={() => setOpen(true)} + onClick={() => setActiveIndex(-1)} + className={cn( + "ml-1 bg-transparent outline-none placeholder:text-muted-foreground flex-1", + className, + activeIndex !== -1 && "caret-transparent" + )} + /> + ); +}); + +MultiSelectorInput.displayName = "MultiSelectorInput"; + +const MultiSelectorContent = forwardRef< + HTMLDivElement, + React.HTMLAttributes +>(({ children }, ref) => { + const { open } = useMultiSelect(); + return ( +
    + {open ? children : null} +
    + ); +}); + +MultiSelectorContent.displayName = "MultiSelectorContent"; + +const MultiSelectorList = forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, children }, ref) => { + return ( + + {children} + + No results found + + + ); +}); + +MultiSelectorList.displayName = "MultiSelectorList"; + +const MultiSelectorItem = forwardRef< + React.ElementRef, + { value: string; label: string } & React.ComponentPropsWithoutRef< + typeof CommandPrimitive.Item + > +>(({ className, value, label, children, ...props }, ref) => { + const { value: Options, onValueChange, setInputValue } = useMultiSelect(); + + const mousePreventDefault = useCallback((e: React.MouseEvent) => { + e.preventDefault(); + e.stopPropagation(); + }, []); + + const isIncluded = + searchForValue(Options, { + value: value, + label: label, + }) !== -1; + + return ( + { + onValueChange({ + value: value, + label: label, + }); + setInputValue(""); + }} + className={cn( + "rounded-md cursor-pointer px-2 py-1 transition-colors flex justify-between ", + className, + isIncluded && "opacity-50 cursor-default", + props.disabled && "opacity-50 cursor-not-allowed" + )} + onMouseDown={mousePreventDefault} + > + {children} + {isIncluded && } + + ); +}); + +MultiSelectorItem.displayName = "MultiSelectorItem"; + +export { + MultiSelector, + MultiSelectorTrigger, + MultiSelectorInput, + MultiSelectorContent, + MultiSelectorList, + MultiSelectorItem, +}; diff --git a/client2/src/components/ui/select.tsx b/client2/src/components/ui/select.tsx new file mode 100644 index 00000000..51f466ec --- /dev/null +++ b/client2/src/components/ui/select.tsx @@ -0,0 +1,183 @@ +import * as React from "react" +import * as SelectPrimitive from "@radix-ui/react-select" +import { CheckIcon, ChevronDownIcon, ChevronUpIcon } from "lucide-react" + +import { cn } from "@/lib/utils" + +function Select({ + ...props +}: React.ComponentProps) { + return +} + +function SelectGroup({ + ...props +}: React.ComponentProps) { + return +} + +function SelectValue({ + ...props +}: React.ComponentProps) { + return +} + +function SelectTrigger({ + className, + size = "default", + children, + ...props +}: React.ComponentProps & { + size?: "sm" | "default" +}) { + return ( + + {children} + + + + + ) +} + +function SelectContent({ + className, + children, + position = "popper", + ...props +}: React.ComponentProps) { + return ( + + + + + {children} + + + + + ) +} + +function SelectLabel({ + className, + ...props +}: React.ComponentProps) { + return ( + + ) +} + +function SelectItem({ + className, + children, + ...props +}: React.ComponentProps) { + return ( + + + + + + + {children} + + ) +} + +function SelectSeparator({ + className, + ...props +}: React.ComponentProps) { + return ( + + ) +} + +function SelectScrollUpButton({ + className, + ...props +}: React.ComponentProps) { + return ( + + + + ) +} + +function SelectScrollDownButton({ + className, + ...props +}: React.ComponentProps) { + return ( + + + + ) +} + +export { + Select, + SelectContent, + SelectGroup, + SelectItem, + SelectLabel, + SelectScrollDownButton, + SelectScrollUpButton, + SelectSeparator, + SelectTrigger, + SelectValue, +} diff --git a/client2/src/components/ui/textarea.tsx b/client2/src/components/ui/textarea.tsx new file mode 100644 index 00000000..7f21b5e7 --- /dev/null +++ b/client2/src/components/ui/textarea.tsx @@ -0,0 +1,18 @@ +import * as React from "react" + +import { cn } from "@/lib/utils" + +function Textarea({ className, ...props }: React.ComponentProps<"textarea">) { + return ( + -
    -

    - Numărul maxim de caractere: 1000 -

    -
    + + + + )} + />
    -
    -
    +
    -

    - Comunicare și social media -

    + form.setValue("avatar", file)} + disabled={isPending} + />
    -
    Link-uri către social media
    - -
    Persoana de contact a organizației
    -
    -
    - -
    - -
    -
    - -
    - -
    - -
    -
    -
    - -
    - -
    -
    - -
    - -
    - -
    -
    + + ( + + Descrierea activității organizației + + -
    -

    - Numărul maxim de caractere: 1000 -

    -
    -
    -
    -
    -
    -

    - Comunicare și social media -

    + + + + )} + />
    -
    Link-uri către social media
    - -
    Persoana de contact a organizației
    -
    -
    - -
    - -
    -
    - -
    - -
    - -
    -
    -
    - -
    - -
    -
    - -
    - -
    - -
    -
    -
    -
    -
    + + + + {/* Social Media Links */} + + + + + Link-uri către social media + + + Link-urile oficiale pentru comunicare + + + + ( + + Facebook + + + + + + )} + /> + + ( + + Instagram + + + + + + )} + /> -
    -
    - - -
    + ( + + Twitter/X + + + + + + )} + /> + + ( + + LinkedIn + + + + + + )} + /> + + ( + + TikTok + + + + + + )} + /> + + + {/* Form Actions */} +
    + +
    - +
    ); diff --git a/client2/src/pages/admin/Program/components/NgosTable.tsx b/client2/src/pages/admin/Program/components/NgosTable.tsx index 93e33404..82c8210c 100644 --- a/client2/src/pages/admin/Program/components/NgosTable.tsx +++ b/client2/src/pages/admin/Program/components/NgosTable.tsx @@ -27,7 +27,7 @@ export const columns: ColumnDef[] = [ ), cell: ({ row }) => { @@ -47,7 +47,7 @@ export const columns: ColumnDef[] = [ ), cell: ({ row }) => { @@ -75,7 +75,7 @@ export const columns: ColumnDef[] = [ ), cell: ({ row }) => -, @@ -87,7 +87,7 @@ export const columns: ColumnDef[] = [ ), cell: ({ row }) => { @@ -120,6 +120,7 @@ export const columns: ColumnDef[] = [ ), }, ]; + function NgosTable({ ngos }: { ngos: UserModel[] }) { const [openAddNgoInProgramDialog, setOpenAddNgoInProgramDialog] = useState(false); diff --git a/client2/src/pages/admin/ProgramsList/components/table.tsx b/client2/src/pages/admin/ProgramsList/components/table.tsx index 2baed1f3..2cbdec4b 100644 --- a/client2/src/pages/admin/ProgramsList/components/table.tsx +++ b/client2/src/pages/admin/ProgramsList/components/table.tsx @@ -41,7 +41,7 @@ const mapper = ( export function ProgramsTable() { const search = Route.useSearch(); - const { data } = useSuspenseListPrograms(search, mapper); + const { data } = useSuspenseListPrograms(mapper); // Synced with URL states (updated to match route search schema defaults) const { sorting, pagination, ensurePageInRange } = useTableUrlState({ @@ -51,7 +51,7 @@ export function ProgramsTable() { }); const table = useReactTable({ - data: data.data, + data, columns, state: { sorting, diff --git a/client2/src/pages/public/Login/index.tsx b/client2/src/pages/public/Login/index.tsx index f0265aac..1c7b41dd 100644 --- a/client2/src/pages/public/Login/index.tsx +++ b/client2/src/pages/public/Login/index.tsx @@ -73,7 +73,9 @@ const Login = memo(() => { const onSubmitHandler: SubmitHandler = (values) => { login(values, { - onSuccess: () => navigate({ to: "/" }), + onSuccess: async () => { + await navigate({ to: "/" }); + }, onError: (error) => { const message = (error as any)?.response?.data?.error?.message; if (message) { diff --git a/client2/src/pages/public/Register/index.tsx b/client2/src/pages/public/Register/index.tsx index 989f81e2..8236c697 100644 --- a/client2/src/pages/public/Register/index.tsx +++ b/client2/src/pages/public/Register/index.tsx @@ -456,11 +456,11 @@ const Register = () => { {domains.map((domain) => ( - {domain.name} + {domain.attributes.name} ))} @@ -512,12 +512,22 @@ const Register = () => { />
    -
    - form.setValue("avatar", file)} - disabled={isPending} - /> -
    + ( + + Logo ONG + + field.onChange(file)} + disabled={isPending} + /> + + + + )} + /> ({ - query(body) { - return { - method: "POST", - url: "users", - body, - }; - }, - invalidatesTags: ["Mentor"], - }), - createUser: builder.mutation({ - query(body) { - return { - method: "POST", - url: "users", - body, - }; - }, - invalidatesTags: ["User"], - }), + // createMentor: builder.mutation({ + // query(body) { + // return { + // method: "POST", + // url: "users", + // body, + // }; + // }, + // invalidatesTags: ["Mentor"], + // }), + // createUser: builder.mutation({ + // query(body) { + // return { + // method: "POST", + // url: "users", + // body, + // }; + // }, + // invalidatesTags: ["User"], + // }), createProgram: builder.mutation({ query(body) { return { @@ -479,8 +479,8 @@ export const { // useFindProgramQuery, // useUpdateProgramMutation, useGetDimensionsQuery, - useCreateMentorMutation, - useCreateUserMutation, + // useCreateMentorMutation, + // useCreateUserMutation, useGetMatrixQuery, useGetActivityTypesQuery, useCreateActivityMutation, diff --git a/client2/src/routes/(app)/users/index.tsx b/client2/src/routes/(app)/users/index.tsx index ec4b70cd..e4d43f4d 100644 --- a/client2/src/routes/(app)/users/index.tsx +++ b/client2/src/routes/(app)/users/index.tsx @@ -1,10 +1,24 @@ +import FullScreenLoader from "@/components/FullScreenLoader"; import getUserType from "@/lib/userType"; import UsersList from "@/pages/UsersList"; import { useAppSelector } from "@/redux/store"; import { createFileRoute, Navigate } from "@tanstack/react-router"; +import { zodValidator } from "@tanstack/zod-adapter"; +import z from "zod"; +const filtersSchema = z.object({ + search: z.string().optional(), + createdAtDateFrom: z.iso.date().optional().catch(""), + createdAtDateUntil: z.iso.date().optional(), + latestEvaluationDateFrom: z.iso.date().optional(), + latestEvaluationDateUntil: z.iso.date().optional(), + county: z.number().optional(), + localityId: z.number().optional(), +}); export const Route = createFileRoute("/(app)/users/")({ + validateSearch: zodValidator(filtersSchema), component: RouteComponent, + pendingComponent: FullScreenLoader, }); function RouteComponent() { diff --git a/client2/src/services/api/list-dimensions.api.ts b/client2/src/services/api/list-dimensions.api.ts index 656a35da..7251fe4b 100644 --- a/client2/src/services/api/list-dimensions.api.ts +++ b/client2/src/services/api/list-dimensions.api.ts @@ -1,25 +1,6 @@ -import qs from "qs"; import { API } from "../api"; -import type { DimensionModel as ApiDimensionModel, MetaModel } from "./types"; +import type { DimensionModel as ApiDimensionModel } from "./types"; -export interface ListDimensionsResponse { - data: ApiDimensionModel[]; - meta: MetaModel; -} - -export const listDimensions = (): Promise => { - const params = { - pagination: { - start: 0, - limit: 100, - }, - }; - return API.get(`api/domains`, { - params, - paramsSerializer: { - serialize: (params) => { - return qs.stringify(params, { encodeValuesOnly: true }); - }, - }, - }).then((res) => res.data); +export const listDimensions = (): Promise => { + return API.get(`api/domains`).then((res) => res.data); }; diff --git a/client2/src/services/api/list-domains.api.ts b/client2/src/services/api/list-domains.api.ts index be825f91..c6c57a8d 100644 --- a/client2/src/services/api/list-domains.api.ts +++ b/client2/src/services/api/list-domains.api.ts @@ -7,11 +7,11 @@ export interface ListDomainsResponse { meta: MetaModel; } -export const listDomains = (): Promise => { +export const listDomains = (): Promise => { const params = { pagination: { start: 0, - limit: 100, + limit: 1000, }, }; return API.get(`api/domains`, { @@ -21,5 +21,5 @@ export const listDomains = (): Promise => { return qs.stringify(params, { encodeValuesOnly: true }); }, }, - }).then((res) => res.data); + }).then((res) => res.data.data); }; diff --git a/client2/src/services/api/list-ngos.api.ts b/client2/src/services/api/list-ngos.api.ts index 03e57922..c889d4d6 100644 --- a/client2/src/services/api/list-ngos.api.ts +++ b/client2/src/services/api/list-ngos.api.ts @@ -1,6 +1,5 @@ import qs from "qs"; import { API } from "../api"; -import type { PaginationRequest } from "./types"; export interface NgoModel { id: number; @@ -35,9 +34,7 @@ export interface NgoModel { available: boolean; } -export const listNgos = ( - pagination?: PaginationRequest -): Promise => { +export const listNgos = (): Promise => { const params = { filters: { role: { @@ -46,9 +43,7 @@ export const listNgos = ( }, }, }, - populate: ["role"], sort: "createdAt:desc", - pagination, }; return API.get(`api/users`, { @@ -60,3 +55,58 @@ export const listNgos = ( }, }).then((res) => res.data); }; + +export interface DetailedNgoModel extends NgoModel { + domains: DomainModel[]; + reports: ReportModel[]; + program?: ProgramModel; +} + +export interface DomainModel { + id: number; + name: string; + createdAt: string; + updatedAt: string; +} + +export interface ReportModel { + id: number; + deadline: string; + finished: boolean; + createdAt: string; + updatedAt: string; +} + +export interface ProgramModel { + id: number; + name: string; + startDate: string; + endDate: string; + sponsorName: string; + createdAt: string; + updatedAt: string; + publishedAt: string; +} + +export const listNgosWithDetails = (): Promise => { + const params = { + filters: { + role: { + type: { + $eq: "authenticated", + }, + }, + }, + populate: ["domains", "reports", "program"], + sort: "createdAt:desc", + }; + + return API.get(`api/users`, { + params, + paramsSerializer: { + serialize: (params) => { + return qs.stringify(params, { encodeValuesOnly: true }); + }, + }, + }).then((res) => res.data); +}; diff --git a/client2/src/services/api/list-programs.api.ts b/client2/src/services/api/list-programs.api.ts index 59a239b3..0360286b 100644 --- a/client2/src/services/api/list-programs.api.ts +++ b/client2/src/services/api/list-programs.api.ts @@ -1,35 +1,9 @@ import qs from "qs"; import { API } from "../api"; -import type { - MetaModel, - ProgramModel as ApiProgramModel, - PaginationRequest, -} from "./types"; +import type { ProgramModel as ApiProgramModel } from "./types"; -export interface ListProgramsResponse { - data: ApiProgramModel[]; - meta: MetaModel; -} - -export const listPrograms = ( - filters?: { - search?: string; - startDate?: string; - endDate?: string; - } & PaginationRequest -): Promise => { +export const listPrograms = (): Promise => { const params = { - filters: { - name: { - $contains: filters?.search, - }, - startDate: { - $ge: filters?.startDate, - }, - endDate: { - $le: filters?.endDate, - }, - }, populate: { mentors: { fields: ["id"], @@ -38,13 +12,9 @@ export const listPrograms = ( fields: ["id"], }, }, - pagination: { - page: filters?.page ?? 1, - pageSize: filters?.pageSize ?? 25, - }, }; - return API.get(`api/programs`, { + return API.get(`api/programs`, { params, paramsSerializer: { serialize: (params) => { @@ -53,16 +23,13 @@ export const listPrograms = ( }, }).then((res) => { const result = res.data; - return { - meta: result.meta, - data: result.data.map((p) => ({ - ...p, - attributes: { - ...p.attributes, - usersCount: p.attributes.users?.data?.length, - mentorsCount: p.attributes.mentors?.data?.length, - }, - })), - }; + return result.map((p) => ({ + ...p, + attributes: { + ...p.attributes, + usersCount: p.attributes.users?.data?.length, + mentorsCount: p.attributes.mentors?.data?.length, + }, + })); }); }; diff --git a/client2/src/services/api/register-ngo.api.ts b/client2/src/services/api/register-ngo.api.ts new file mode 100644 index 00000000..b94e0ed6 --- /dev/null +++ b/client2/src/services/api/register-ngo.api.ts @@ -0,0 +1,39 @@ +import { publicAPI } from "../api"; +export interface RegisterNgoRequest { + ongName: string; + ongIdentificationNumber: string; + county: string; + city: string; + email: string; + username: string; + phone: string; + password: string; + confirmPassword: string; + domains: number[]; + website: string | undefined; + keywords: string; + description: string; + contactFirstName: string; + contactLastName: string; + contactPhone: string; + contactEmail?: string | undefined; + accountFacebook?: string | undefined; + accountTwitter?: string | undefined; + accountTiktok?: string | undefined; + accountInstagram?: string | undefined; + accountLinkedin?: string | undefined; +} +export interface RegisterUserResponse { + jwt: string; + user: { + id: number; + }; +} + +export const registerNgo = ( + request: RegisterNgoRequest +): Promise => { + return publicAPI + .post(`api/auth/local/register`, request) + .then((res) => res.data); +}; diff --git a/client2/src/services/dimensions.queries.ts b/client2/src/services/dimensions.queries.ts index f3f6cea3..311d2777 100644 --- a/client2/src/services/dimensions.queries.ts +++ b/client2/src/services/dimensions.queries.ts @@ -3,25 +3,22 @@ import { useQuery, useSuspenseQuery, } from "@tanstack/react-query"; -import { - listDimensions, - type ListDimensionsResponse, -} from "./api/list-dimensions.api"; +import { listDimensions } from "./api/list-dimensions.api"; +import type { DimensionModel as ApiDimensionModel } from "./api/types"; -export const listDimensionsQueryOptions = ( - select?: (data: ListDimensionsResponse) => TResult +export const listDimensionsQueryOptions = ( + select?: (data: ApiDimensionModel[]) => TResult ) => queryOptions({ queryKey: ["dimensions"], queryFn: listDimensions, - staleTime: 0, select, }); -export const useSuspenseListDimensions = ( - select?: (data: ListDimensionsResponse) => TResult +export const useSuspenseListDimensions = ( + select?: (data: ApiDimensionModel[]) => TResult ) => useSuspenseQuery(listDimensionsQueryOptions(select)); -export const useListDimensions = ( - select?: (data: ListDimensionsResponse) => TResult +export const useListDimensions = ( + select?: (data: ApiDimensionModel[]) => TResult ) => useQuery(listDimensionsQueryOptions(select)); diff --git a/client2/src/services/domains.queries.ts b/client2/src/services/domains.queries.ts index ef4e85af..5f1a35b3 100644 --- a/client2/src/services/domains.queries.ts +++ b/client2/src/services/domains.queries.ts @@ -3,22 +3,22 @@ import { useQuery, useSuspenseQuery, } from "@tanstack/react-query"; -import { listDomains, type ListDomainsResponse } from "./api/list-domains.api"; +import type { DomainModel } from "./api/types"; +import { listDomains } from "./api/list-domains.api"; -export const listDomainsQueryOptions = ( - select?: (data: ListDomainsResponse) => TResult +export const listDomainsQueryOptions = ( + select?: (data: DomainModel[]) => TResult ) => queryOptions({ queryKey: ["domains"], queryFn: listDomains, - staleTime: 0, select, }); -export const useSuspenseListDomains = ( - select?: (data: ListDomainsResponse) => TResult +export const useSuspenseListDomains = ( + select?: (data: DomainModel[]) => TResult ) => useSuspenseQuery(listDomainsQueryOptions(select)); -export const useListDomains = ( - select?: (data: ListDomainsResponse) => TResult +export const useListDomains = ( + select?: (data: DomainModel[]) => TResult ) => useQuery(listDomainsQueryOptions(select)); diff --git a/client2/src/services/matrix.queries.ts b/client2/src/services/matrix.queries.ts index 9ead3218..ff4cf8b0 100644 --- a/client2/src/services/matrix.queries.ts +++ b/client2/src/services/matrix.queries.ts @@ -11,7 +11,6 @@ export const getMatrixQueryOptions = ( queryOptions({ queryKey: ["matrix"], queryFn: () => getMatrix(), - staleTime: 0, select, }); diff --git a/client2/src/services/mentors.queries.ts b/client2/src/services/mentors.queries.ts index 133f828a..5b734d7b 100644 --- a/client2/src/services/mentors.queries.ts +++ b/client2/src/services/mentors.queries.ts @@ -4,13 +4,11 @@ import { useSuspenseQuery, } from "@tanstack/react-query"; import { listMentors } from "./api/list-mentors.api"; -import type { PaginationRequest } from "./api/types"; export const listMentorsQueryOptions = () => queryOptions({ queryKey: ["mentors"], queryFn: () => listMentors(), - staleTime: 0, placeholderData: [], }); diff --git a/client2/src/services/ngo.mutations.ts b/client2/src/services/ngo.mutations.ts new file mode 100644 index 00000000..3af9848a --- /dev/null +++ b/client2/src/services/ngo.mutations.ts @@ -0,0 +1,14 @@ +import { useMutation, useQueryClient } from "@tanstack/react-query"; +import { registerNgo } from "./api/register-ngo.api"; + +export function useCreateNgoMutation() { + const queryClient = useQueryClient(); + + return useMutation({ + mutationFn: registerNgo, + onSuccess: async () => { + await queryClient.invalidateQueries({ queryKey: ["ngos-detailed"] }); + await queryClient.invalidateQueries({ queryKey: ["ngos"] }); + }, + }); +} diff --git a/client2/src/services/ngos.queries.ts b/client2/src/services/ngos.queries.ts index 451ccccb..5e4b92f8 100644 --- a/client2/src/services/ngos.queries.ts +++ b/client2/src/services/ngos.queries.ts @@ -3,59 +3,43 @@ import { useQuery, useSuspenseQuery, } from "@tanstack/react-query"; -import { listNgos, type NgoModel } from "./api/list-ngos.api"; -import type { PaginationRequest } from "./api/types"; +import { + listNgos, + listNgosWithDetails, + type DetailedNgoModel, + type NgoModel, +} from "./api/list-ngos.api"; export const listNgosQueryOptions = ( - filters?: { - search?: string; - startDate?: string; - endDate?: string; - } & PaginationRequest, select?: (data: NgoModel[]) => TResult ) => queryOptions({ - queryKey: ["ngos", filters], - queryFn: () => listNgos(filters), - staleTime: 0, + queryKey: ["ngos"], + queryFn: () => listNgos(), select, }); export const useSuspenseListNgos = ( - filters?: { - search?: string; - startDate?: string; - endDate?: string; - } & PaginationRequest, select?: (data: NgoModel[]) => TResult -) => useSuspenseQuery(listNgosQueryOptions(filters, select)); +) => useSuspenseQuery(listNgosQueryOptions(select)); export const useListNgos = ( - filters?: { - search?: string; - startDate?: string; - endDate?: string; - } & PaginationRequest, select?: (data: NgoModel[]) => TResult -) => useQuery(listNgosQueryOptions(filters, select)); +) => useQuery(listNgosQueryOptions(select)); -// export const getProgramQueryOptions = ( -// ngoId: string, -// select?: (data: ProgramModel) => TResult -// ) => -// queryOptions({ -// queryKey: ["ngos", ngoId], -// queryFn: () => getProgram(ngoId), -// staleTime: 0, -// select, -// }); +export const listNgosWithDetailsQueryOptions = ( + select?: (data: DetailedNgoModel[]) => TResult +) => + queryOptions({ + queryKey: ["ngos-detailed"], + queryFn: () => listNgosWithDetails(), + select, + }); -// export const useGetProgram = ( -// ngoId: string, -// select?: (data: ProgramModel) => TResult -// ) => useQuery(getProgramQueryOptions(ngoId, select)); +export const useSuspenseListNgosWithDetails = ( + select?: (data: DetailedNgoModel[]) => TResult +) => useSuspenseQuery(listNgosWithDetailsQueryOptions(select)); -// export const useSuspenseGetProgram = ( -// ngoId: string, -// select?: (data: ProgramModel) => TResult -// ) => useSuspenseQuery(getProgramQueryOptions(ngoId, select)); +export const useListNgosWithDetails = ( + select?: (data: DetailedNgoModel[]) => TResult +) => useQuery(listNgosWithDetailsQueryOptions(select)); diff --git a/client2/src/services/programs.queries.ts b/client2/src/services/programs.queries.ts index 64e8dc2c..291dd4ca 100644 --- a/client2/src/services/programs.queries.ts +++ b/client2/src/services/programs.queries.ts @@ -3,45 +3,26 @@ import { useQuery, useSuspenseQuery, } from "@tanstack/react-query"; -import { - listPrograms, - type ListProgramsResponse, -} from "./api/list-programs.api"; -import type { PaginationRequest } from "./api/types"; import { getProgram, type ProgramModel } from "./api/get-program.api"; +import { listPrograms } from "./api/list-programs.api"; +import type { ProgramModel as ApiProgramModel } from "./api/types"; -export const listProgramsQueryOptions = ( - filters?: { - search?: string; - startDate?: string; - endDate?: string; - } & PaginationRequest, - select?: (data: ListProgramsResponse) => TResult +export const listProgramsQueryOptions = ( + select?: (data: ApiProgramModel[]) => TResult ) => queryOptions({ - queryKey: ["programs", filters], - queryFn: () => listPrograms(filters), - staleTime: 0, + queryKey: ["programs"], + queryFn: listPrograms, select, }); -export const useSuspenseListPrograms = ( - filters?: { - search?: string; - startDate?: string; - endDate?: string; - } & PaginationRequest, - select?: (data: ListProgramsResponse) => TResult -) => useSuspenseQuery(listProgramsQueryOptions(filters, select)); +export const useSuspenseListPrograms = ( + select?: (data: ApiProgramModel[]) => TResult +) => useSuspenseQuery(listProgramsQueryOptions(select)); -export const useListPrograms = ( - filters?: { - search?: string; - startDate?: string; - endDate?: string; - } & PaginationRequest, - select?: (data: ListProgramsResponse) => TResult -) => useQuery(listProgramsQueryOptions(filters, select)); +export const useListPrograms = ( + select?: (data: ApiProgramModel[]) => TResult +) => useQuery(listProgramsQueryOptions(select)); export const getProgramQueryOptions = ( programId: string, @@ -50,7 +31,6 @@ export const getProgramQueryOptions = ( queryOptions({ queryKey: ["programs", programId], queryFn: () => getProgram(programId), - staleTime: 0, select, }); From c940b2fd5e45be030efb5a45e2827bdd820dc036 Mon Sep 17 00:00:00 2001 From: Ion Dormenco Date: Thu, 18 Sep 2025 14:46:21 +0300 Subject: [PATCH 40/61] cleanup --- client2/src/pages/public/Register/index.tsx | 3 --- client2/src/services/api/register-ngo.api.ts | 5 ++++- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/client2/src/pages/public/Register/index.tsx b/client2/src/pages/public/Register/index.tsx index 8236c697..ddc7c6c0 100644 --- a/client2/src/pages/public/Register/index.tsx +++ b/client2/src/pages/public/Register/index.tsx @@ -542,9 +542,6 @@ const Register = () => { {...field} /> -

    - Numărul maxim de caractere: 1000 -

    )} diff --git a/client2/src/services/api/register-ngo.api.ts b/client2/src/services/api/register-ngo.api.ts index b94e0ed6..9ee3519b 100644 --- a/client2/src/services/api/register-ngo.api.ts +++ b/client2/src/services/api/register-ngo.api.ts @@ -34,6 +34,9 @@ export const registerNgo = ( request: RegisterNgoRequest ): Promise => { return publicAPI - .post(`api/auth/local/register`, request) + .post(`api/auth/local/register`, { + ...request, + role: 1, + }) .then((res) => res.data); }; From f6d07d57ffcf700fb7ab6e0467a0cbec10d43f75 Mon Sep 17 00:00:00 2001 From: Ion Dormenco Date: Thu, 18 Sep 2025 17:08:12 +0300 Subject: [PATCH 41/61] fix create program --- client2/package.json | 2 + client2/pnpm-lock.yaml | 34 + client2/src/components/ui/calendar.tsx | 212 ++++ .../src/components/ui/date-time-picker.tsx | 912 ++++++++++++++++++ .../src/pages/admin/CreateProgram/index.tsx | 342 ++++--- .../src/services/api/create-program.api.ts | 18 + client2/src/services/program.mutations.ts | 12 + 7 files changed, 1390 insertions(+), 142 deletions(-) create mode 100644 client2/src/components/ui/calendar.tsx create mode 100644 client2/src/components/ui/date-time-picker.tsx create mode 100644 client2/src/services/api/create-program.api.ts diff --git a/client2/package.json b/client2/package.json index 90e22fb7..5b409d33 100644 --- a/client2/package.json +++ b/client2/package.json @@ -40,6 +40,7 @@ "class-variance-authority": "^0.7.1", "clsx": "^2.1.1", "cmdk": "^1.1.1", + "date-fns": "^4.1.0", "jotai": "^2.14.0", "jotai-effect": "^2.1.1", "js-cookie": "^3.0.5", @@ -49,6 +50,7 @@ "qs": "^6.14.0", "react": "^19.1.1", "react-circle-chart": "^1.0.4", + "react-day-picker": "^9.10.0", "react-dom": "^19.1.1", "react-dropzone": "^14.3.8", "react-error-boundary": "^6.0.0", diff --git a/client2/pnpm-lock.yaml b/client2/pnpm-lock.yaml index 5c0ce28a..2593c77f 100644 --- a/client2/pnpm-lock.yaml +++ b/client2/pnpm-lock.yaml @@ -92,6 +92,9 @@ importers: cmdk: specifier: ^1.1.1 version: 1.1.1(@types/react-dom@19.1.9(@types/react@19.1.12))(@types/react@19.1.12)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + date-fns: + specifier: ^4.1.0 + version: 4.1.0 jotai: specifier: ^2.14.0 version: 2.14.0(@babel/core@7.28.4)(@babel/template@7.27.2)(@types/react@19.1.12)(react@19.1.1) @@ -119,6 +122,9 @@ importers: react-circle-chart: specifier: ^1.0.4 version: 1.0.4(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + react-day-picker: + specifier: ^9.10.0 + version: 9.10.0(react@19.1.1) react-dom: specifier: ^19.1.1 version: 19.1.1(react@19.1.1) @@ -380,6 +386,9 @@ packages: '@better-fetch/fetch@1.1.18': resolution: {integrity: sha512-rEFOE1MYIsBmoMJtQbl32PGHHXuG2hDxvEd7rUHE0vCBoFQVSDqaVs9hkZEtHCxRoY+CljXKFCOuJ8uxqw1LcA==} + '@date-fns/tz@1.4.1': + resolution: {integrity: sha512-P5LUNhtbj6YfI3iJjw5EL9eUAG6OitD0W3fWQcpQjDRc/QIsL0tRNuO1PcDvPccWL1fSTXXdE1ds+l95DV/OFA==} + '@esbuild/aix-ppc64@0.23.1': resolution: {integrity: sha512-6VhYk1diRqrhBAqpJEdjASR/+WVRtfjpqKuNw11cLiaWpAT/Uu+nokB+UJnevzy/P9C/ty6AOe0dwueMrGh/iQ==} engines: {node: '>=18'} @@ -2201,6 +2210,12 @@ packages: csstype@3.1.3: resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} + date-fns-jalali@4.1.0-0: + resolution: {integrity: sha512-hTIP/z+t+qKwBDcmmsnmjWTduxCg+5KfdqWQvb2X/8C9+knYY6epN/pfxdDuyVlSVeFz0sM5eEfwIUQ70U4ckg==} + + date-fns@4.1.0: + resolution: {integrity: sha512-Ukq0owbQXxa/U3EGtsdVBkR1w7KOQ5gIBqdH2hkvknzZPYvBxb/aa6E8L7tmjFtkwZBu3UXBbjIgPo/Ez4xaNg==} + debug@4.4.1: resolution: {integrity: sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==} engines: {node: '>=6.0'} @@ -2916,6 +2931,12 @@ packages: react: ^17.0.2 react-dom: ^17.0.2 + react-day-picker@9.10.0: + resolution: {integrity: sha512-tedecLSd+fpSN+J08601MaMsf122nxtqZXxB6lwX37qFoLtuPNuRJN8ylxFjLhyJS1kaLfAqL1GUkSLd2BMrpQ==} + engines: {node: '>=18'} + peerDependencies: + react: '>=16.8.0' + react-dom@19.1.1: resolution: {integrity: sha512-Dlq/5LAZgF0Gaz6yiqZCf6VCcZs1ghAJyrsu84Q/GT0gV+mCxbfmKNoGRKBYMJ8IEdGPqu49YWXD02GCknEDkw==} peerDependencies: @@ -3697,6 +3718,8 @@ snapshots: '@better-fetch/fetch@1.1.18': {} + '@date-fns/tz@1.4.1': {} + '@esbuild/aix-ppc64@0.23.1': optional: true @@ -5291,6 +5314,10 @@ snapshots: csstype@3.1.3: {} + date-fns-jalali@4.1.0-0: {} + + date-fns@4.1.0: {} + debug@4.4.1: dependencies: ms: 2.1.3 @@ -6017,6 +6044,13 @@ snapshots: react: 19.1.1 react-dom: 19.1.1(react@19.1.1) + react-day-picker@9.10.0(react@19.1.1): + dependencies: + '@date-fns/tz': 1.4.1 + date-fns: 4.1.0 + date-fns-jalali: 4.1.0-0 + react: 19.1.1 + react-dom@19.1.1(react@19.1.1): dependencies: react: 19.1.1 diff --git a/client2/src/components/ui/calendar.tsx b/client2/src/components/ui/calendar.tsx new file mode 100644 index 00000000..7841aebe --- /dev/null +++ b/client2/src/components/ui/calendar.tsx @@ -0,0 +1,212 @@ +import * as React from "react"; +import { + ChevronDownIcon, + ChevronLeftIcon, + ChevronRightIcon, +} from "lucide-react"; +import { DayButton, DayPicker, getDefaultClassNames } from "react-day-picker"; + +import { cn } from "@/lib/utils"; +import { Button, buttonVariants } from "@/components/ui/button"; +import { ro } from "date-fns/locale"; +function Calendar({ + className, + classNames, + showOutsideDays = true, + captionLayout = "label", + buttonVariant = "ghost", + formatters, + components, + ...props +}: React.ComponentProps & { + buttonVariant?: React.ComponentProps["variant"]; +}) { + const defaultClassNames = getDefaultClassNames(); + + return ( + svg]:rotate-180`, + String.raw`rtl:**:[.rdp-button\_previous>svg]:rotate-180`, + className + )} + captionLayout={captionLayout} + formatters={{ + formatMonthDropdown: (date) => + date.toLocaleString("default", { month: "short" }), + ...formatters, + }} + classNames={{ + root: cn("w-fit", defaultClassNames.root), + months: cn( + "flex gap-4 flex-col md:flex-row relative", + defaultClassNames.months + ), + month: cn("flex flex-col w-full gap-4", defaultClassNames.month), + nav: cn( + "flex items-center gap-1 w-full absolute top-0 inset-x-0 justify-between", + defaultClassNames.nav + ), + button_previous: cn( + buttonVariants({ variant: buttonVariant }), + "size-(--cell-size) aria-disabled:opacity-50 p-0 select-none", + defaultClassNames.button_previous + ), + button_next: cn( + buttonVariants({ variant: buttonVariant }), + "size-(--cell-size) aria-disabled:opacity-50 p-0 select-none", + defaultClassNames.button_next + ), + month_caption: cn( + "flex items-center justify-center h-(--cell-size) w-full px-(--cell-size)", + defaultClassNames.month_caption + ), + dropdowns: cn( + "w-full flex items-center text-sm font-medium justify-center h-(--cell-size) gap-1.5", + defaultClassNames.dropdowns + ), + dropdown_root: cn( + "relative has-focus:border-ring border border-input shadow-xs has-focus:ring-ring/50 has-focus:ring-[3px] rounded-md", + defaultClassNames.dropdown_root + ), + dropdown: cn( + "absolute bg-popover inset-0 opacity-0", + defaultClassNames.dropdown + ), + caption_label: cn( + "select-none font-medium", + captionLayout === "label" + ? "text-sm" + : "rounded-md pl-2 pr-1 flex items-center gap-1 text-sm h-8 [&>svg]:text-muted-foreground [&>svg]:size-3.5", + defaultClassNames.caption_label + ), + table: "w-full border-collapse", + weekdays: cn("flex", defaultClassNames.weekdays), + weekday: cn( + "text-muted-foreground rounded-md flex-1 font-normal text-[0.8rem] select-none", + defaultClassNames.weekday + ), + week: cn("flex w-full mt-2", defaultClassNames.week), + week_number_header: cn( + "select-none w-(--cell-size)", + defaultClassNames.week_number_header + ), + week_number: cn( + "text-[0.8rem] select-none text-muted-foreground", + defaultClassNames.week_number + ), + day: cn( + "relative w-full h-full p-0 text-center [&:first-child[data-selected=true]_button]:rounded-l-md [&:last-child[data-selected=true]_button]:rounded-r-md group/day aspect-square select-none", + defaultClassNames.day + ), + range_start: cn( + "rounded-l-md bg-accent", + defaultClassNames.range_start + ), + range_middle: cn("rounded-none", defaultClassNames.range_middle), + range_end: cn("rounded-r-md bg-accent", defaultClassNames.range_end), + today: cn( + "bg-accent text-accent-foreground rounded-md data-[selected=true]:rounded-none", + defaultClassNames.today + ), + outside: cn( + "text-muted-foreground aria-selected:text-muted-foreground", + defaultClassNames.outside + ), + disabled: cn( + "text-muted-foreground opacity-50", + defaultClassNames.disabled + ), + hidden: cn("invisible", defaultClassNames.hidden), + ...classNames, + }} + locale={ro} + components={{ + Root: ({ className, rootRef, ...props }) => { + return ( +
    + ); + }, + Chevron: ({ className, orientation, ...props }) => { + if (orientation === "left") { + return ( + + ); + } + + if (orientation === "right") { + return ( + + ); + } + + return ( + + ); + }, + DayButton: CalendarDayButton, + WeekNumber: ({ children, ...props }) => { + return ( + +
    + {children} +
    + + ); + }, + ...components, + }} + {...props} + /> + ); +} + +function CalendarDayButton({ + className, + day, + modifiers, + ...props +}: React.ComponentProps) { + const defaultClassNames = getDefaultClassNames(); + + const ref = React.useRef(null); + React.useEffect(() => { + if (modifiers.focused) ref.current?.focus(); + }, [modifiers.focused]); + + return ( + + + + + { + if (newDate) { + newDate.setHours( + month?.getHours() ?? 0, + month?.getMinutes() ?? 0, + month?.getSeconds() ?? 0 + ); + onSelect(newDate); + } + }} + onMonthChange={handleMonthChange} + yearRange={yearRange} + locale={locale} + {...props} + /> + {granularity !== "day" && ( +
    + { + onChange?.(value); + setDisplayDate(value); + if (value) { + setMonth(value); + } + }} + date={month} + hourCycle={hourCycle} + granularity={granularity} + /> +
    + )} +
    + + ); + } +); + +DateTimePicker.displayName = "DateTimePicker"; + +export { DateTimePicker, TimePickerInput, TimePicker }; +export type { TimePickerType, DateTimePickerProps, DateTimePickerRef }; diff --git a/client2/src/pages/admin/CreateProgram/index.tsx b/client2/src/pages/admin/CreateProgram/index.tsx index 5de5d966..46c316f1 100644 --- a/client2/src/pages/admin/CreateProgram/index.tsx +++ b/client2/src/pages/admin/CreateProgram/index.tsx @@ -1,176 +1,234 @@ -import React, { useEffect } from "react"; -import { useForm, FormProvider } from "react-hook-form"; -import Section from "@/components/Section"; -import Heading from "@/components/Heading"; -import Button from "@/components/Button"; +import { Button } from "@/components/ui/button"; +import { + Card, + CardContent, + CardDescription, + CardHeader, + CardTitle, +} from "@/components/ui/card"; +import { DateTimePicker } from "@/components/ui/date-time-picker"; +import { + Form, + FormControl, + FormField, + FormItem, + FormLabel, + FormMessage, +} from "@/components/ui/form"; +import { Input } from "@/components/ui/input"; +import { Textarea } from "@/components/ui/textarea"; +import { useCreateProgramMutation } from "@/services/program.mutations"; import { zodResolver } from "@hookform/resolvers/zod"; -import { z } from "zod"; -import { ErrorMessage } from "@hookform/error-message"; -import { useCreateProgramMutation } from "@/redux/api/userApi"; import { useNavigate } from "@tanstack/react-router"; - +import { PlusIcon } from "lucide-react"; +import { useForm } from "react-hook-form"; +import { toast } from "sonner"; +import { z } from "zod"; +import { ro } from "date-fns/locale"; +import { zhTW } from "date-fns/locale"; +const today = new Date(); const programSchema = z .object({ name: z.string().min(1, "Denumirea programului este obligatorie"), - startDate: z.preprocess( - (arg) => - typeof arg === "string" || arg instanceof Date - ? new Date(arg) - : undefined, - z.date({ error: "Alegeți o dată validă" }) - ), - endDate: z.preprocess( - (arg) => - typeof arg === "string" || arg instanceof Date - ? new Date(arg) - : undefined, - z.date({ error: "Alegeți o dată validă" }) - ), + startDate: z + .date({ error: "Alegeți o dată validă" }) + .optional() + .refine((data) => !!data, { + message: "Alegeți o dată validă", + }) + .refine((data) => data! > today, { + message: "Data de început trebuie să fie în viitor", + }), + endDate: z + .date({ error: "Alegeți o dată validă" }) + .optional() + .refine((data) => !!data, { + message: "Alegeți o dată validă", + }), description: z.string().min(1, "Descrierea este obligatorie"), - sponsorName: z.string().optional(), - }) - .refine((data) => data.startDate >= new Date(), { - message: "Data de început trebuie să fie în viitor", - path: ["startDate"], - }) - .refine((data) => data.endDate >= new Date(), { - message: "Data de sfârșit trebuie să fie în viitor", - path: ["endDate"], + sponsorName: z.string(), }) - .refine((data) => data.endDate >= data.startDate, { + .refine((data) => data.endDate! > data.startDate!, { message: "Data de sfârșit trebuie să fie după data de început", path: ["endDate"], }); export type ProgramInput = z.infer; -const Input = ({ register, name, label, errors, ...rest }) => ( -
    - -
    - - {errors && ( -
    - -
    - )} -
    -
    -); - const CreateProgram = () => { - const methods = useForm({ + const form = useForm({ resolver: zodResolver(programSchema), + defaultValues: { + description: "", + name: "", + sponsorName: "", + }, }); - const { - register, - formState: { errors }, - handleSubmit, - } = methods; + const navigate = useNavigate(); - const [createProgram, { isSuccess, isError }] = useCreateProgramMutation(); + const { mutate: createProgram, isPending } = useCreateProgramMutation(); - const onSubmitHandler = (data: ProgramInput) => { - createProgram(data); + const onSubmit = (data: ProgramInput) => { + createProgram( + { + ...data, + startDate: data.startDate!.toISOString(), + endDate: data.endDate!.toISOString(), + }, + { + onSuccess: async (program) => { + toast.success("Program creat cu success"); + await navigate({ + to: "/programs/$programId", + params: { programId: program.data.id.toString() }, + }); + }, + } + ); }; - useEffect(() => { - if (isSuccess) { - navigate("/programs"); - } - }, [isSuccess]); - return ( - -
    -
    - Adaugă program -
    -
    -
    - Informații despre program -
    -
    -
    -
    -
    Denumire program
    -
    - +
    +

    Adaugă program

    +

    + Completează informațiile pentru a crea un program nou +

    +
    + + + + + + + + Informații despre program + + + Completează detaliile de bază ale programului + + + + ( + + + Denumire program * + + + + + + + )} /> -
    -
    -
    -
    Perioadă de desfășurare
    -
    -
    - -
    -
    - + {/* Date Range */} +
    + + Perioadă de desfășurare{" "} + * + +
    + ( + + + + + )} + /> + ( + + + + + )} + /> +
    -
    -
    -
    -
    -
    Nume finanțator
    -
    -
    - ( + + Nume finanțator + + + + + + )} /> -
    -
    -
    -
    Descriere
    -
    - - -
    - -
    -
    + + + Descriere * + + + -
    -

    - Numărul maxim de caractere: 1000 -

    -
    + + + + )} + />
    -
    -
    -
    -

    - Comunicare și social media -

    -
    -
    Link-uri către social media
    - -
    Persoana de contact a organizației
    -
    -
    - -
    - -
    -
    - -
    - -
    - -
    -
    -
    - -
    - -
    -
    - -
    - -
    - -
    -
    -
    -
    -
    + + + + {/* Social Media Links */} + + + + + Link-uri către social media + + + Link-urile oficiale pentru comunicare + + + + ( + + Facebook + + + + + + )} + /> + + ( + + Instagram + + + + + + )} + /> -
    -
    - - -
    + ( + + Twitter/X + + + + + + )} + /> + + ( + + LinkedIn + + + + + + )} + /> + + ( + + TikTok + + + + + + )} + /> + + + {/* Form Actions */} +
    + +
    - +
    ); diff --git a/client2/src/pages/authenticated/MentorsList/MentorCard.tsx b/client2/src/pages/authenticated/MentorsList/MentorCard.tsx index a352c072..ce441ffd 100644 --- a/client2/src/pages/authenticated/MentorsList/MentorCard.tsx +++ b/client2/src/pages/authenticated/MentorsList/MentorCard.tsx @@ -1,5 +1,5 @@ import Avatar from "@/components/Avatar"; -import Button from "@/components/Button"; +import { Button } from "@/components/ui/button"; import Confirm from "@/components/Confirm"; import type { Dimension } from "@/redux/api/types"; import { useCreateMentorshipRequestMutation } from "@/redux/api/userApi"; diff --git a/client2/src/pages/authenticated/Report/ReportInProgress.tsx b/client2/src/pages/authenticated/Report/ReportInProgress.tsx index c4b5dd82..75dc29a6 100644 --- a/client2/src/pages/authenticated/Report/ReportInProgress.tsx +++ b/client2/src/pages/authenticated/Report/ReportInProgress.tsx @@ -1,5 +1,5 @@ import React, { useCallback, useEffect, useMemo, useState } from "react"; -import Button from "@/components/Button"; +import { Button } from "@/components/ui/button"; import { DonutChart } from "react-circle-chart"; import CreateEvaluation from "@/components/CreateEvaluation"; import TableEvaluations from "@/components/TableEvaluations"; diff --git a/client2/src/pages/mentor/Activities/index.tsx b/client2/src/pages/mentor/Activities/index.tsx index 432460c0..3cd7d4c9 100644 --- a/client2/src/pages/mentor/Activities/index.tsx +++ b/client2/src/pages/mentor/Activities/index.tsx @@ -5,7 +5,7 @@ import Heading from "@/components/Heading"; import Section from "@/components/Section"; import Feed from "@/components/Feed"; import EmptyScreen from "@/components/EmptyScreen"; -import Button from "@/components/Button"; +import { Button } from "@/components/ui/button"; const Activities = () => { const { data: user } = useGetMe(); diff --git a/client2/src/pages/mentor/EditProfile/index.tsx b/client2/src/pages/mentor/EditProfile/index.tsx index 99b80b7e..a3ac3fd0 100644 --- a/client2/src/pages/mentor/EditProfile/index.tsx +++ b/client2/src/pages/mentor/EditProfile/index.tsx @@ -4,11 +4,10 @@ import { type SubmitHandler, useForm, FormProvider } from "react-hook-form"; import { zodResolver } from "@hookform/resolvers/zod"; import Heading from "@/components/Heading"; import Section from "@/components/Section"; -import Button from "@/components/Button"; +import { Button } from "@/components/ui/button"; import { toast } from "sonner"; import { useGetDimensionsQuery, - useGetProgramsQuery, useUpdateUserMutation, useUploadMutation, } from "@/redux/api/userApi"; @@ -36,307 +35,309 @@ const mentorProfileSchema = z.object({ export type MentorProfileInput = z.infer; -const EditProfile = () => { - const { data: user } = useGetMe(); - const [updateMentorProfile, { isSuccess, isError, error, data }] = - useUpdateUserMutation(); - const { data: programs, isLoading: isLoadingPrograms } = - useGetProgramsQuery(null); - const { data: dimensions, isLoading: isLoadingDimensions } = - useGetDimensionsQuery(null); +const EditMentorProfile = () => { + // const { data: user } = useGetMe(); + // const [updateMentorProfile, { isSuccess, isError, error, data }] = + // useUpdateUserMutation(); + // const { data: programs, isLoading: isLoadingPrograms } = + // useGetProgramsQuery(null); + // const { data: dimensions, isLoading: isLoadingDimensions } = + // useGetDimensionsQuery(null); - const [ - uploadAvatar, - { isError: isUploadAvatarError, error: uploadAvatarError }, - ] = useUploadMutation(); + // const [ + // uploadAvatar, + // { isError: isUploadAvatarError, error: uploadAvatarError }, + // ] = useUploadMutation(); - const methods = useForm({ - resolver: zodResolver(mentorProfileSchema), - defaultValues: { - ...user, - available: user.available || false, - program: user.program.id.toz.String(), - dimensions: user.dimensions.map(({ id }) => id), - bio: user?.bio || "", - }, - }); + // const methods = useForm({ + // resolver: zodResolver(mentorProfileSchema), + // defaultValues: { + // ...user, + // available: user.available || false, + // program: user.program.id.toz.String(), + // dimensions: user.dimensions.map(({ id }) => id), + // bio: user?.bio || "", + // }, + // }); - const avatar = methods.watch("avatar"); - const hasAvatar = !!avatar; + // const avatar = methods.watch("avatar"); + // const hasAvatar = !!avatar; - const navigate = useNavigate(); + // const navigate = useNavigate(); - useEffect(() => { - if (error?.data?.error?.message) { - toast.error(error.data.error.message); - } - }, [error?.data?.error?.message]); + // useEffect(() => { + // if (error?.data?.error?.message) { + // toast.error(error.data.error.message); + // } + // }, [error?.data?.error?.message]); - useEffect(() => { - if (isSuccess) { - navigate("/profile"); - } - }, [isSuccess]); + // useEffect(() => { + // if (isSuccess) { + // navigate("/profile"); + // } + // }, [isSuccess]); - useEffect(() => { - const message = uploadAvatarError?.data?.error?.message; - if (isUploadAvatarError && message) { - toast.error(message); - } - }, [isUploadAvatarError, uploadAvatarError?.data?.error?.message]); + // useEffect(() => { + // const message = uploadAvatarError?.data?.error?.message; + // if (isUploadAvatarError && message) { + // toast.error(message); + // } + // }, [isUploadAvatarError, uploadAvatarError?.data?.error?.message]); - const onSubmitHandler: SubmitHandler = async (data) => { - updateMentorProfile({ - id: user?.id, - ...data, - }); + // const onSubmitHandler: SubmitHandler = async (data) => { + // updateMentorProfile({ + // id: user?.id, + // ...data, + // }); - if (data.avatar?.length && data.avatar[0]?.name) { - const formData = new FormData(); + // if (data.avatar?.length && data.avatar[0]?.name) { + // const formData = new FormData(); - formData.append(`files`, data.avatar[0], data.avatar[0].name); - formData.append(`ref`, "plugin::users-permissions.user"); - formData.append(`refId`, user?.id?.toz.String() || ""); - formData.append(`field`, "avatar"); - uploadAvatar(formData); - } - }; + // formData.append(`files`, data.avatar[0], data.avatar[0].name); + // formData.append(`ref`, "plugin::users-permissions.user"); + // formData.append(`refId`, user?.id?.toz.String() || ""); + // formData.append(`field`, "avatar"); + // uploadAvatar(formData); + // } + // }; - return ( -
    -
    -
    - Editeaza profilul -
    -
    -
    - -
    -
    -
    -
    -

    - Informații generale -

    -
    -
    -
    - -
    - -
    - -
    -
    -
    + // return ( + //
    + //
    + //
    + // Editeaza profilul + //
    + //
    + //
    + // + // + //
    + //
    + //
    + //

    + // Informații generale + //

    + //
    + //
    + //
    + // + //
    + // + //
    + // + //
    + //
    + //
    -
    - -
    - -
    - -
    -
    -
    + //
    + // + //
    + // + //
    + // + //
    + //
    + //
    -
    - -
    - -
    - -
    -
    -
    + //
    + // + //
    + // + //
    + // + //
    + //
    + //
    -
    - ({ - id: id, - name: name, - }))} - options={ - dimensions - ? dimensions?.map((dimension) => ({ - id: dimension.id, - name: dimension.name, - })) - : [] - } - label={"Specializare pe dimensiuni"} - isMandatory={true} - {...methods.register("dimensions")} - /> -
    - -
    -
    -
    + //
    + // ({ + // id: id, + // name: name, + // }))} + // options={ + // dimensions + // ? dimensions?.map((dimension) => ({ + // id: dimension.id, + // name: dimension.name, + // })) + // : [] + // } + // label={"Specializare pe dimensiuni"} + // isMandatory={true} + // {...methods.register("dimensions")} + // /> + //
    + // + //
    + //
    + //
    -
    -
    - ({ + // label: program.name, + // name: program.id, + // })) || [] + // } + // register={methods.register} + // /> + //
    + //
    + // + //
    + //
    + // + //
    + // + //
    + //
    + // + //
    + //
    + //
    -
    -
    - -
    -
    + +