diff --git a/.env.example b/.env.example index c12f6d89..b25b2d4a 100644 --- a/.env.example +++ b/.env.example @@ -1,8 +1,15 @@ +# OpenTelemetry Configuration +OTEL_RECEIVER_HTTP_PORT=4318 +OTEL_HOST='localhost' +OTEL_URL='http://${OTEL_HOST}:${OTEL_RECEIVER_HTTP_PORT}/v1/metrics' + +# Midaz Console MIDAZ_CONSOLE_PORT=8081 MIDAZ_CONSOLE_SERVICE_HOST='localhost' MIDAZ_CONSOLE_SERVICE_PORT=8081 MIDAZ_CONSOLE_BASE_PATH='http://${MIDAZ_CONSOLE_SERVICE_HOST}:${MIDAZ_CONSOLE_PORT}' +# NextAuth Configuration NEXTAUTH_URL='http://localhost:${MIDAZ_CONSOLE_PORT}' NEXTAUTH_SECRET=testSecret NEXTAUTH_CASDOOR_CLIENT_ID='9670e0ca55a29a466d31' @@ -13,6 +20,7 @@ NEXTAUTH_CASDOOR_AUTH_URL='http://${NEXTAUTH_CASDOOR_AUTH_HOST}:${NEXTAUTH_CASDO NEXTAUTH_CASDOOR_ORGANIZATION_NAME=lerian NEXTAUTH_CASDOOR_APPLICATION_NAME=app-midaz +# Midaz API Configuration MIDAZ_API_HOST='ledger' MIDAZ_API_PORT=3000 MIDAZ_BASE_PATH='http://${MIDAZ_API_HOST}:${MIDAZ_API_PORT}/v1' diff --git a/.env.local.example b/.env.local.example index 1f646a30..2b2ec574 100644 --- a/.env.local.example +++ b/.env.local.example @@ -1,8 +1,15 @@ +# OpenTelemetry Configuration +OTEL_RECEIVER_HTTP_PORT=4318 +OTEL_HOST='localhost' +OTEL_URL='http://${OTEL_HOST}:${OTEL_RECEIVER_HTTP_PORT}/v1/metrics' + +# Midaz Console MIDAZ_CONSOLE_PORT=8081 MIDAZ_CONSOLE_SERVICE_HOST='localhost' MIDAZ_CONSOLE_SERVICE_PORT=8081 MIDAZ_CONSOLE_BASE_PATH='http://${MIDAZ_CONSOLE_SERVICE_HOST}:${MIDAZ_CONSOLE_PORT}' +# NextAuth Configuration NEXTAUTH_URL='http://localhost:${MIDAZ_CONSOLE_PORT}' NEXTAUTH_SECRET=testSecret NEXTAUTH_CASDOOR_CLIENT_ID='9670e0ca55a29a466d31' @@ -13,6 +20,7 @@ NEXTAUTH_CASDOOR_AUTH_URL='http://${NEXTAUTH_CASDOOR_AUTH_HOST}:${NEXTAUTH_CASDO NEXTAUTH_CASDOOR_ORGANIZATION_NAME=lerian NEXTAUTH_CASDOOR_APPLICATION_NAME=app-midaz +# Midaz API Configuration MIDAZ_API_HOST='localhost' MIDAZ_API_PORT=3000 MIDAZ_BASE_PATH='http://${MIDAZ_API_HOST}:${MIDAZ_API_PORT}/v1' diff --git a/locales/extracted/en.json b/locales/extracted/en.json index 3a8209de..7fb3fa5f 100644 --- a/locales/extracted/en.json +++ b/locales/extracted/en.json @@ -39,10 +39,8 @@ "common.logoAlt": "Your organization logo", "common.metadata": "Metadata", "common.name": "Name", - "common.nextPage": "Next page", "common.noOptions": "No options found.", "common.portfolio": "Portfolio", - "common.previousPage": "Previous page", "common.records": "records", "common.remove": "Remove", "common.requiredFields": "(*) required fields.", @@ -159,6 +157,7 @@ "ledgers.account.sheet.edit.title": "Edit {accountName}", "ledgers.account.sheet.tabs.details": "Account Details", "ledgers.accounts.createFirst": "Create first account", + "ledgers.accounts.showing": "Showing {count} {number, plural, =0 {accounts} one {account} other {accounts}}.", "ledgers.accounts.subtitle": "{count} {count, plural, =0 {accounts found} one {account found} other {accounts found}}", "ledgers.accounts.title": "Accounts", "ledgers.assets.createButton": "Create your first Asset", @@ -170,6 +169,7 @@ "ledgers.assets.sheet.edit.title": "Edit {assetName}", "ledgers.assets.sheet.tabs.details": "Assets Details", "ledgers.assets.sheet.title": "New Asset", + "ledgers.assets.showing": "Showing {count} {number, plural, =0 {assets} one {asset} other {assets}}.", "ledgers.assets.subtitle": "Currency or assets of any nature traded on this Ledger.", "ledgers.assets.title": "Assets", "ledgers.columnsTable.tooltipCopyText": "Click to copy", @@ -192,17 +192,20 @@ "ledgers.portfolio.sheet.title": "New Portfolio", "ledgers.portfolio.subtitle": "{count} {count, plural, =0 {portfolios found} one {portfolio found} other {portfolios found}}", "ledgers.portfolio.title": "Portfolios", + "ledgers.portfolios.showing": "Showing {count} {number, plural, =0 {portfolios} one {portifolio} other {portfolios}}.", "ledgers.products.emptyResource": "You haven't created any Products yet", "ledgers.products.sheet.description": "Fill in the details of the Product you want to create.", "ledgers.products.sheet.edit.description": "View and edit product fields.", "ledgers.products.sheet.edit.title": "Edit {productName}", "ledgers.products.sheet.tabs.details": "Product Details", "ledgers.products.sheet.title": "New Product", + "ledgers.products.showing": "Showing {count} {number, plural, =0 {products} one {product} other {products}}.", "ledgers.products.subtitle": "Clustering or allocation of customers at different levels.", "ledgers.products.title": "Products", "ledgers.sheet.tabs.details": "Ledger Details", "ledgers.sheetCreate.description": "Fill in the data of the Ledger you wish to create.", "ledgers.sheetCreate.title": "New Ledger", + "ledgers.showing": "Showing {count} {number, plural, =0 {ledgers} one {ledger} other {ledgers}}.", "ledgers.subtitle": "Visualize and edit the Ledgers of your Organization.", "ledgers.tab.accounts": "Accounts", "ledgers.tab.assets": "Assets", @@ -244,6 +247,7 @@ "organizations.organizationView.breadcrumbs.settings": "Settings", "organizations.organizationView.newOrganization.title": "New Organization", "organizations.organizationView.notFound": "Organization not found.", + "organizations.showing": "Showing {count} {number, plural, =0 {organizations} one {organization} other {organizations}}.", "organizations.subtitle": "View and manage Organizations.", "organizations.title": "Settings", "organizations.toast.create.success": "Organization created!", diff --git a/locales/extracted/pt.json b/locales/extracted/pt.json index 07b01f0d..b510a1de 100644 --- a/locales/extracted/pt.json +++ b/locales/extracted/pt.json @@ -41,8 +41,6 @@ "common.copyMessage": "Copiado para a área de transferência!", "common.expand": "Ampliar", "common.inactive": "Inativo", - "common.nextPage": "Próxima Página", - "common.previousPage": "Página Anterior", "common.tooltipCopyText": "Toque para copiar", "entity.metadata.key": "Chave", "entity.metadata.value": "Valor", @@ -278,10 +276,16 @@ "ledgers.assets.sheet.tabs.details": "Detalhes do Ativo", "ledgers.portfolio.sheet.tabs.details": "Detalhes do Portfólio", "ledgers.products.sheet.tabs.details": "Detalhes do Produto", - "notFound.backToHome": "Voltar para Home", "ledgers.sheet.tabs.details": "Detalhes do Ledger", "common.records": "registros", "ledgers.tab.accounts": "Contas", "ledgers.tab.portfolios": "Portfólios", - "settings.tab.portfolios": "Portfólios" + "settings.tab.portfolios": "Portfólios", + "notFound.backToHome": "Voltar para Home", + "ledgers.assets.showing": "Mostrando {count} {number, plural, =0 {ativos} one {ativo} other {ativos}}.", + "ledgers.products.showing": "Mostrando {count} {number, plural, =0 {produtos} one {produto} other {produtos}}.", + "ledgers.showing": "Mostrando {count} {number, plural, =0 {ledgers} one {ledger} other {ledgers}}.", + "ledgers.accounts.showing": "Mostrando {count} {number, plural, =0 {contas} one {conta} other {contas}}.", + "ledgers.portfolios.showing": "Mostrando {count} {number, plural, =0 {portfólios} one {portfólio} other {portfólios}}.", + "organizations.showing": "Mostrando {count} {number, plural, =0 {organizações} one {organização} other {organizações}}." } diff --git a/next.config.mjs b/next.config.mjs index 1e08402a..c4d6944d 100644 --- a/next.config.mjs +++ b/next.config.mjs @@ -56,7 +56,12 @@ const nextConfig = { return config }, experimental: { - serverComponentsExternalPackages: ['pino', 'pino-pretty'] + serverComponentsExternalPackages: [ + 'pino', + 'pino-pretty', + '@opentelemetry/instrumentation' + ], + instrumentationHook: true } } diff --git a/package-lock.json b/package-lock.json index a60971a6..8d286357 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,6 +10,13 @@ "dependencies": { "@formatjs/intl-localematcher": "^0.5.6", "@hookform/resolvers": "^3.9.0", + "@opentelemetry/api": "^1.9.0", + "@opentelemetry/exporter-metrics-otlp-http": "^0.56.0", + "@opentelemetry/instrumentation": "^0.56.0", + "@opentelemetry/instrumentation-http": "^0.56.0", + "@opentelemetry/instrumentation-runtime-node": "^0.11.0", + "@opentelemetry/resources": "^1.29.0", + "@opentelemetry/sdk-metrics": "^1.29.0", "@radix-ui/react-avatar": "^1.1.1", "@radix-ui/react-checkbox": "^1.1.2", "@radix-ui/react-collapsible": "^1.1.1", @@ -77,6 +84,7 @@ "@testing-library/react": "^16.0.1", "@types/jest": "^29.5.14", "@types/jsonwebtoken": "^9.0.7", + "@types/lodash": "^4.17.13", "@types/node": "^22", "@types/node-fetch": "^2.6.11", "@types/pino": "^7.0.5", @@ -2125,97 +2133,6 @@ "@jridgewell/sourcemap-codec": "^1.4.10" } }, - "node_modules/@emnapi/runtime": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.3.1.tgz", - "integrity": "sha512-kEBmG8KyqtxJZv+ygbEim+KCGtIq1fC22Ms3S4ziXmYKm8uyoLX0MHONVKwp+9opg390VaKRNt4a7A9NwmpNhw==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "tslib": "^2.4.0" - } - }, - "node_modules/@esbuild/aix-ppc64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.20.2.tgz", - "integrity": "sha512-D+EBOJHXdNZcLJRBkhENNG8Wji2kgc9AZ9KiPr1JuZjsNtyHzrsfLRrY0tk2H2aoFu6RANO1y1iPPUCDYWkb5g==", - "cpu": [ - "ppc64" - ], - "dev": true, - "optional": true, - "os": [ - "aix" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/android-arm": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.20.2.tgz", - "integrity": "sha512-t98Ra6pw2VaDhqNWO2Oph2LXbz/EJcnLmKLGBJwEwXX/JAN83Fym1rU8l0JUWK6HkIbWONCSSatf4sf2NBRx/w==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/android-arm64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.20.2.tgz", - "integrity": "sha512-mRzjLacRtl/tWU0SvD8lUEwb61yP9cqQo6noDZP/O8VkwafSYwZ4yWy24kan8jE/IMERpYncRt2dw438LP3Xmg==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/android-x64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.20.2.tgz", - "integrity": "sha512-btzExgV+/lMGDDa194CcUQm53ncxzeBrWJcncOBxuC6ndBkKxnHdFJn86mCIgTELsooUmwUm9FkhSp5HYu00Rg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/darwin-arm64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.20.2.tgz", - "integrity": "sha512-4J6IRT+10J3aJH3l1yzEg9y3wkTDgDk7TSDFX+wKFiWjqWp/iCfLIYzGyasx9l0SAFPT1HwSCR+0w/h1ES/MjA==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, "node_modules/@esbuild/darwin-x64": { "version": "0.20.2", "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.20.2.tgz", @@ -2232,455 +2149,167 @@ "node": ">=12" } }, - "node_modules/@esbuild/freebsd-arm64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.20.2.tgz", - "integrity": "sha512-d3qI41G4SuLiCGCFGUrKsSeTXyWG6yem1KcGZVS+3FYlYhtNoNgYrWcvkOoaqMhwXSMrZRl69ArHsGJ9mYdbbw==", - "cpu": [ - "arm64" - ], + "node_modules/@eslint-community/eslint-utils": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", "dev": true, - "optional": true, - "os": [ - "freebsd" - ], + "dependencies": { + "eslint-visitor-keys": "^3.3.0" + }, "engines": { - "node": ">=12" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" } }, - "node_modules/@esbuild/freebsd-x64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.20.2.tgz", - "integrity": "sha512-d+DipyvHRuqEeM5zDivKV1KuXn9WeRX6vqSqIDgwIfPQtwMP4jaDsQsDncjTDDsExT4lR/91OLjRo8bmC1e+Cw==", - "cpu": [ - "x64" - ], + "node_modules/@eslint-community/regexpp": { + "version": "4.11.1", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.11.1.tgz", + "integrity": "sha512-m4DVN9ZqskZoLU5GlWZadwDnYo3vAEydiUayB9widCl9ffWx2IvPnp6n3on5rJmziJSw9Bv+Z3ChDVdMwXCY8Q==", "dev": true, - "optional": true, - "os": [ - "freebsd" - ], "engines": { - "node": ">=12" + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" } }, - "node_modules/@esbuild/linux-arm": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.20.2.tgz", - "integrity": "sha512-VhLPeR8HTMPccbuWWcEUD1Az68TqaTYyj6nfE4QByZIQEQVWBB8vup8PpR7y1QHL3CpcF6xd5WVBU/+SBEvGTg==", - "cpu": [ - "arm" - ], + "node_modules/@eslint/eslintrc": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", + "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", "dev": true, - "optional": true, - "os": [ - "linux" - ], + "license": "MIT", + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.6.0", + "globals": "^13.19.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, "engines": { - "node": ">=12" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/@esbuild/linux-arm64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.20.2.tgz", - "integrity": "sha512-9pb6rBjGvTFNira2FLIWqDk/uaf42sSyLE8j1rnUpuzsODBq7FvpwHYZxQ/It/8b+QOS1RYfqgGFNLRI+qlq2A==", - "cpu": [ - "arm64" - ], + "node_modules/@eslint/js": { + "version": "8.57.1", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.1.tgz", + "integrity": "sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==", "dev": true, - "optional": true, - "os": [ - "linux" - ], + "license": "MIT", "engines": { - "node": ">=12" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, - "node_modules/@esbuild/linux-ia32": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.20.2.tgz", - "integrity": "sha512-o10utieEkNPFDZFQm9CoP7Tvb33UutoJqg3qKf1PWVeeJhJw0Q347PxMvBgVVFgouYLGIhFYG0UGdBumROyiig==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" + "node_modules/@floating-ui/core": { + "version": "1.6.8", + "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.6.8.tgz", + "integrity": "sha512-7XJ9cPU+yI2QeLS+FCSlqNFZJq8arvswefkZrYI1yQBbftw6FyrZOxYSh+9S7z7TpeWlRt9zJ5IhM1WIL334jA==", + "dependencies": { + "@floating-ui/utils": "^0.2.8" } }, - "node_modules/@esbuild/linux-loong64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.20.2.tgz", - "integrity": "sha512-PR7sp6R/UC4CFVomVINKJ80pMFlfDfMQMYynX7t1tNTeivQ6XdX5r2XovMmha/VjR1YN/HgHWsVcTRIMkymrgQ==", - "cpu": [ - "loong64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" + "node_modules/@floating-ui/dom": { + "version": "1.6.11", + "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.6.11.tgz", + "integrity": "sha512-qkMCxSR24v2vGkhYDo/UzxfJN3D4syqSjyuTFz6C7XcpU1pASPRieNI0Kj5VP3/503mOfYiGY891ugBX1GlABQ==", + "dependencies": { + "@floating-ui/core": "^1.6.0", + "@floating-ui/utils": "^0.2.8" } }, - "node_modules/@esbuild/linux-mips64el": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.20.2.tgz", - "integrity": "sha512-4BlTqeutE/KnOiTG5Y6Sb/Hw6hsBOZapOVF6njAESHInhlQAghVVZL1ZpIctBOoTFbQyGW+LsVYZ8lSSB3wkjA==", - "cpu": [ - "mips64el" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" + "node_modules/@floating-ui/react-dom": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.1.2.tgz", + "integrity": "sha512-06okr5cgPzMNBy+Ycse2A6udMi4bqwW/zgBF/rwjcNqWkyr82Mcg8b0vjX8OJpZFy/FKjJmw6wV7t44kK6kW7A==", + "dependencies": { + "@floating-ui/dom": "^1.0.0" + }, + "peerDependencies": { + "react": ">=16.8.0", + "react-dom": ">=16.8.0" } }, - "node_modules/@esbuild/linux-ppc64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.20.2.tgz", - "integrity": "sha512-rD3KsaDprDcfajSKdn25ooz5J5/fWBylaaXkuotBDGnMnDP1Uv5DLAN/45qfnf3JDYyJv/ytGHQaziHUdyzaAg==", - "cpu": [ - "ppc64" - ], + "node_modules/@floating-ui/utils": { + "version": "0.2.8", + "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.8.tgz", + "integrity": "sha512-kym7SodPp8/wloecOpcmSnWJsK7M0E5Wg8UcFA+uO4B9s5d0ywXOEro/8HM9x0rW+TljRzul/14UYz3TleT3ig==" + }, + "node_modules/@formatjs/cli": { + "version": "6.3.5", + "resolved": "https://registry.npmjs.org/@formatjs/cli/-/cli-6.3.5.tgz", + "integrity": "sha512-SkMSNl9ULAHYWrPujKjC+mHK4S1WsHgQPk/8Nl0cXzk/PUpKKfQ7+t4YdZICC3etvA6Eyvgj3+1Biogmzmo7Sw==", "dev": true, - "optional": true, - "os": [ - "linux" - ], + "bin": { + "formatjs": "bin/formatjs" + }, "engines": { - "node": ">=12" + "node": ">= 16" + }, + "peerDependencies": { + "@glimmer/env": "^0.1.7", + "@glimmer/reference": "^0.91.1 || ^0.92.0", + "@glimmer/syntax": "^0.92.0", + "@glimmer/validator": "^0.92.0", + "@vue/compiler-core": "^3.4.0", + "content-tag": "^2.0.1", + "ember-template-recast": "^6.1.4", + "vue": "^3.4.0" + }, + "peerDependenciesMeta": { + "@glimmer/env": { + "optional": true + }, + "@glimmer/reference": { + "optional": true + }, + "@glimmer/syntax": { + "optional": true + }, + "@glimmer/validator": { + "optional": true + }, + "@vue/compiler-core": { + "optional": true + }, + "content-tag": { + "optional": true + }, + "ember-template-recast": { + "optional": true + }, + "vue": { + "optional": true + } } }, - "node_modules/@esbuild/linux-riscv64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.20.2.tgz", - "integrity": "sha512-snwmBKacKmwTMmhLlz/3aH1Q9T8v45bKYGE3j26TsaOVtjIag4wLfWSiZykXzXuE1kbCE+zJRmwp+ZbIHinnVg==", - "cpu": [ - "riscv64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-s390x": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.20.2.tgz", - "integrity": "sha512-wcWISOobRWNm3cezm5HOZcYz1sKoHLd8VL1dl309DiixxVFoFe/o8HnwuIwn6sXre88Nwj+VwZUvJf4AFxkyrQ==", - "cpu": [ - "s390x" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-x64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.20.2.tgz", - "integrity": "sha512-1MdwI6OOTsfQfek8sLwgyjOXAu+wKhLEoaOLTjbijk6E2WONYpH9ZU2mNtR+lZ2B4uwr+usqGuVfFT9tMtGvGw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/netbsd-x64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.20.2.tgz", - "integrity": "sha512-K8/DhBxcVQkzYc43yJXDSyjlFeHQJBiowJ0uVL6Tor3jGQfSGHNNJcWxNbOI8v5k82prYqzPuwkzHt3J1T1iZQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/openbsd-arm64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.23.1.tgz", - "integrity": "sha512-3x37szhLexNA4bXhLrCC/LImN/YtWis6WXr1VESlfVtVeoFJBRINPJ3f0a/6LV8zpikqoUg4hyXw0sFBt5Cr+Q==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/openbsd-x64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.20.2.tgz", - "integrity": "sha512-eMpKlV0SThJmmJgiVyN9jTPJ2VBPquf6Kt/nAoo6DgHAoN57K15ZghiHaMvqjCye/uU4X5u3YSMgVBI1h3vKrQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/sunos-x64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.20.2.tgz", - "integrity": "sha512-2UyFtRC6cXLyejf/YEld4Hajo7UHILetzE1vsRcGL3earZEW77JxrFjH4Ez2qaTiEfMgAXxfAZCm1fvM/G/o8w==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "sunos" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/win32-arm64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.20.2.tgz", - "integrity": "sha512-GRibxoawM9ZCnDxnP3usoUDO9vUkpAxIIZ6GQI+IlVmr5kP3zUq+l17xELTHMWTWzjxa2guPNyrpq1GWmPvcGQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/win32-ia32": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.20.2.tgz", - "integrity": "sha512-HfLOfn9YWmkSKRQqovpnITazdtquEW8/SoHW7pWpuEeguaZI4QnCRW6b+oZTztdBnZOS2hqJ6im/D5cPzBTTlQ==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/win32-x64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.20.2.tgz", - "integrity": "sha512-N49X4lJX27+l9jbLKSqZ6bKNjzQvHaT8IIFUy+YIqmXQdjYCToGWwOItDrfby14c78aDd5NHQl29xingXfCdLQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@eslint-community/eslint-utils": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", - "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", - "dev": true, - "dependencies": { - "eslint-visitor-keys": "^3.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" - } - }, - "node_modules/@eslint-community/regexpp": { - "version": "4.11.1", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.11.1.tgz", - "integrity": "sha512-m4DVN9ZqskZoLU5GlWZadwDnYo3vAEydiUayB9widCl9ffWx2IvPnp6n3on5rJmziJSw9Bv+Z3ChDVdMwXCY8Q==", - "dev": true, - "engines": { - "node": "^12.0.0 || ^14.0.0 || >=16.0.0" - } - }, - "node_modules/@eslint/eslintrc": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", - "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^9.6.0", - "globals": "^13.19.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.1.2", - "strip-json-comments": "^3.1.1" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/@eslint/js": { - "version": "8.57.1", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.1.tgz", - "integrity": "sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==", + "node_modules/@formatjs/cli-lib": { + "version": "6.6.1", + "resolved": "https://registry.npmjs.org/@formatjs/cli-lib/-/cli-lib-6.6.1.tgz", + "integrity": "sha512-CTz2bT+S8b8DkQm4mdfYFH/LerBX7PKbh+Y0LhANCFKozabaaqvgA9+56mkaiDChOJNitxhQwvDTHxkJN/msFg==", "dev": true, - "license": "MIT", - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/@floating-ui/core": { - "version": "1.6.8", - "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.6.8.tgz", - "integrity": "sha512-7XJ9cPU+yI2QeLS+FCSlqNFZJq8arvswefkZrYI1yQBbftw6FyrZOxYSh+9S7z7TpeWlRt9zJ5IhM1WIL334jA==", - "dependencies": { - "@floating-ui/utils": "^0.2.8" - } - }, - "node_modules/@floating-ui/dom": { - "version": "1.6.11", - "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.6.11.tgz", - "integrity": "sha512-qkMCxSR24v2vGkhYDo/UzxfJN3D4syqSjyuTFz6C7XcpU1pASPRieNI0Kj5VP3/503mOfYiGY891ugBX1GlABQ==", - "dependencies": { - "@floating-ui/core": "^1.6.0", - "@floating-ui/utils": "^0.2.8" - } - }, - "node_modules/@floating-ui/react-dom": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.1.2.tgz", - "integrity": "sha512-06okr5cgPzMNBy+Ycse2A6udMi4bqwW/zgBF/rwjcNqWkyr82Mcg8b0vjX8OJpZFy/FKjJmw6wV7t44kK6kW7A==", "dependencies": { - "@floating-ui/dom": "^1.0.0" - }, - "peerDependencies": { - "react": ">=16.8.0", - "react-dom": ">=16.8.0" - } - }, - "node_modules/@floating-ui/utils": { - "version": "0.2.8", - "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.8.tgz", - "integrity": "sha512-kym7SodPp8/wloecOpcmSnWJsK7M0E5Wg8UcFA+uO4B9s5d0ywXOEro/8HM9x0rW+TljRzul/14UYz3TleT3ig==" - }, - "node_modules/@formatjs/cli": { - "version": "6.3.5", - "resolved": "https://registry.npmjs.org/@formatjs/cli/-/cli-6.3.5.tgz", - "integrity": "sha512-SkMSNl9ULAHYWrPujKjC+mHK4S1WsHgQPk/8Nl0cXzk/PUpKKfQ7+t4YdZICC3etvA6Eyvgj3+1Biogmzmo7Sw==", - "dev": true, - "bin": { - "formatjs": "bin/formatjs" - }, - "engines": { - "node": ">= 16" - }, - "peerDependencies": { - "@glimmer/env": "^0.1.7", - "@glimmer/reference": "^0.91.1 || ^0.92.0", - "@glimmer/syntax": "^0.92.0", - "@glimmer/validator": "^0.92.0", - "@vue/compiler-core": "^3.4.0", - "content-tag": "^2.0.1", - "ember-template-recast": "^6.1.4", - "vue": "^3.4.0" - }, - "peerDependenciesMeta": { - "@glimmer/env": { - "optional": true - }, - "@glimmer/reference": { - "optional": true - }, - "@glimmer/syntax": { - "optional": true - }, - "@glimmer/validator": { - "optional": true - }, - "@vue/compiler-core": { - "optional": true - }, - "content-tag": { - "optional": true - }, - "ember-template-recast": { - "optional": true - }, - "vue": { - "optional": true - } - } - }, - "node_modules/@formatjs/cli-lib": { - "version": "6.6.1", - "resolved": "https://registry.npmjs.org/@formatjs/cli-lib/-/cli-lib-6.6.1.tgz", - "integrity": "sha512-CTz2bT+S8b8DkQm4mdfYFH/LerBX7PKbh+Y0LhANCFKozabaaqvgA9+56mkaiDChOJNitxhQwvDTHxkJN/msFg==", - "dev": true, - "dependencies": { - "@formatjs/icu-messageformat-parser": "2.9.1", - "@formatjs/icu-skeleton-parser": "1.8.5", - "@formatjs/ts-transformer": "3.13.20", - "@types/estree": "^1.0.0", - "@types/fs-extra": "9 || 10 || 11", - "@types/json-stable-stringify": "1", - "@types/node": "14 || 16 || 17 || 18 || 20", - "chalk": "4", - "commander": "12", - "fast-glob": "3", - "fs-extra": "9 || 10 || 11", - "json-stable-stringify": "1", - "loud-rejection": "2", - "tslib": "2", - "typescript": "5" + "@formatjs/icu-messageformat-parser": "2.9.1", + "@formatjs/icu-skeleton-parser": "1.8.5", + "@formatjs/ts-transformer": "3.13.20", + "@types/estree": "^1.0.0", + "@types/fs-extra": "9 || 10 || 11", + "@types/json-stable-stringify": "1", + "@types/node": "14 || 16 || 17 || 18 || 20", + "chalk": "4", + "commander": "12", + "fast-glob": "3", + "fs-extra": "9 || 10 || 11", + "json-stable-stringify": "1", + "loud-rejection": "2", + "tslib": "2", + "typescript": "5" }, "engines": { "node": ">= 16" @@ -2921,28 +2550,6 @@ "react": "*" } }, - "node_modules/@img/sharp-darwin-arm64": { - "version": "0.33.5", - "resolved": "https://registry.npmjs.org/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.33.5.tgz", - "integrity": "sha512-UT4p+iz/2H4twwAoLCqfA9UH5pI6DggwKEGuaPy7nCVQ8ZsiY5PIcrRvD1DzuY3qYL07NtIQcWnBSY/heikIFQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-darwin-arm64": "1.0.4" - } - }, "node_modules/@img/sharp-darwin-x64": { "version": "0.33.5", "resolved": "https://registry.npmjs.org/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.33.5.tgz", @@ -2965,22 +2572,6 @@ "@img/sharp-libvips-darwin-x64": "1.0.4" } }, - "node_modules/@img/sharp-libvips-darwin-arm64": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.0.4.tgz", - "integrity": "sha512-XblONe153h0O2zuFfTAbQYAX2JhYmDHeWikp1LM9Hul9gVPjFY427k6dFEcOL72O01QxQsWi761svJ/ev9xEDg==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "funding": { - "url": "https://opencollective.com/libvips" - } - }, "node_modules/@img/sharp-libvips-darwin-x64": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.0.4.tgz", @@ -2997,405 +2588,120 @@ "url": "https://opencollective.com/libvips" } }, - "node_modules/@img/sharp-libvips-linux-arm": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.0.5.tgz", - "integrity": "sha512-gvcC4ACAOPRNATg/ov8/MnbxFDJqf/pDePbBnuBDcjsI8PssmjoKMAz4LtLaVi+OnSb5FK/yIOamqDwGmXW32g==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "funding": { - "url": "https://opencollective.com/libvips" + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "dependencies": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "engines": { + "node": ">=12" } }, - "node_modules/@img/sharp-libvips-linux-arm64": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.0.4.tgz", - "integrity": "sha512-9B+taZ8DlyyqzZQnoeIvDVR/2F4EbMepXMc/NdVbkzsJbzkUjhXv/70GQJ7tdLA4YJgNP25zukcxpX2/SueNrA==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], + "node_modules/@isaacs/cliui/node_modules/ansi-regex": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", + "engines": { + "node": ">=12" + }, "funding": { - "url": "https://opencollective.com/libvips" + "url": "https://github.com/chalk/ansi-regex?sponsor=1" } }, - "node_modules/@img/sharp-libvips-linux-s390x": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-s390x/-/sharp-libvips-linux-s390x-1.0.4.tgz", - "integrity": "sha512-u7Wz6ntiSSgGSGcjZ55im6uvTrOxSIS8/dgoVMoiGE9I6JAfU50yH5BoDlYA1tcuGS7g/QNtetJnxA6QEsCVTA==", - "cpu": [ - "s390x" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], + "node_modules/@isaacs/cliui/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, "funding": { - "url": "https://opencollective.com/libvips" + "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, - "node_modules/@img/sharp-libvips-linux-x64": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.0.4.tgz", - "integrity": "sha512-MmWmQ3iPFZr0Iev+BAgVMb3ZyC4KeFc3jFxnNbEPas60e1cIfevbtuyf9nDGIzOaW9PdnDciJm+wFFaTlj5xYw==", - "cpu": [ - "x64" - ], + "node_modules/@istanbuljs/load-nyc-config": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", + "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", "dev": true, - "optional": true, - "os": [ - "linux" - ], - "funding": { - "url": "https://opencollective.com/libvips" + "dependencies": { + "camelcase": "^5.3.1", + "find-up": "^4.1.0", + "get-package-type": "^0.1.0", + "js-yaml": "^3.13.1", + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" } }, - "node_modules/@img/sharp-libvips-linuxmusl-arm64": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.0.4.tgz", - "integrity": "sha512-9Ti+BbTYDcsbp4wfYib8Ctm1ilkugkA/uscUn6UXK1ldpC1JjiXbLfFZtRlBhjPZ5o1NCLiDbg8fhUPKStHoTA==", - "cpu": [ - "arm64" - ], + "node_modules/@istanbuljs/load-nyc-config/node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", "dev": true, - "optional": true, - "os": [ - "linux" - ], - "funding": { - "url": "https://opencollective.com/libvips" + "dependencies": { + "sprintf-js": "~1.0.2" } }, - "node_modules/@img/sharp-libvips-linuxmusl-x64": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-x64/-/sharp-libvips-linuxmusl-x64-1.0.4.tgz", - "integrity": "sha512-viYN1KX9m+/hGkJtvYYp+CCLgnJXwiQB39damAO7WMdKWlIhmYTfHjwSbQeUK/20vY154mwezd9HflVFM1wVSw==", - "cpu": [ - "x64" - ], + "node_modules/@istanbuljs/load-nyc-config/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "dev": true, - "optional": true, - "os": [ - "linux" - ], - "funding": { - "url": "https://opencollective.com/libvips" + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, - "node_modules/@img/sharp-linux-arm": { - "version": "0.33.5", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm/-/sharp-linux-arm-0.33.5.tgz", - "integrity": "sha512-JTS1eldqZbJxjvKaAkxhZmBqPRGmxgu+qFKSInv8moZ2AmT5Yib3EQ1c6gp493HvrvV8QgdOXdyaIBrhvFhBMQ==", - "cpu": [ - "arm" - ], + "node_modules/@istanbuljs/load-nyc-config/node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" }, - "optionalDependencies": { - "@img/sharp-libvips-linux-arm": "1.0.5" + "bin": { + "js-yaml": "bin/js-yaml.js" } }, - "node_modules/@img/sharp-linux-arm64": { - "version": "0.33.5", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.33.5.tgz", - "integrity": "sha512-JMVv+AMRyGOHtO1RFBiJy/MBsgz0x4AWrT6QoEVVTyh1E39TrCUpTRI7mx9VksGX4awWASxqCYLCV4wBZHAYxA==", - "cpu": [ - "arm64" - ], + "node_modules/@istanbuljs/load-nyc-config/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" + "dependencies": { + "p-locate": "^4.1.0" }, - "optionalDependencies": { - "@img/sharp-libvips-linux-arm64": "1.0.4" + "engines": { + "node": ">=8" } }, - "node_modules/@img/sharp-linux-s390x": { - "version": "0.33.5", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-s390x/-/sharp-linux-s390x-0.33.5.tgz", - "integrity": "sha512-y/5PCd+mP4CA/sPDKl2961b+C9d+vPAveS33s6Z3zfASk2j5upL6fXVPZi7ztePZ5CuH+1kW8JtvxgbuXHRa4Q==", - "cpu": [ - "s390x" - ], + "node_modules/@istanbuljs/load-nyc-config/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "dev": true, - "optional": true, - "os": [ - "linux" - ], + "dependencies": { + "p-try": "^2.0.0" + }, "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-linux-s390x": "1.0.4" - } - }, - "node_modules/@img/sharp-linux-x64": { - "version": "0.33.5", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-x64/-/sharp-linux-x64-0.33.5.tgz", - "integrity": "sha512-opC+Ok5pRNAzuvq1AG0ar+1owsu842/Ab+4qvU879ippJBHvyY5n2mxF1izXqkPYlGuP/M556uh53jRLJmzTWA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-linux-x64": "1.0.4" - } - }, - "node_modules/@img/sharp-linuxmusl-arm64": { - "version": "0.33.5", - "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.33.5.tgz", - "integrity": "sha512-XrHMZwGQGvJg2V/oRSUfSAfjfPxO+4DkiRh6p2AFjLQztWUuY/o8Mq0eMQVIY7HJ1CDQUJlxGGZRw1a5bqmd1g==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-linuxmusl-arm64": "1.0.4" - } - }, - "node_modules/@img/sharp-linuxmusl-x64": { - "version": "0.33.5", - "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.33.5.tgz", - "integrity": "sha512-WT+d/cgqKkkKySYmqoZ8y3pxx7lx9vVejxW/W4DOFMYVSkErR+w7mf2u8m/y4+xHe7yY9DAXQMWQhpnMuFfScw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-linuxmusl-x64": "1.0.4" - } - }, - "node_modules/@img/sharp-wasm32": { - "version": "0.33.5", - "resolved": "https://registry.npmjs.org/@img/sharp-wasm32/-/sharp-wasm32-0.33.5.tgz", - "integrity": "sha512-ykUW4LVGaMcU9lu9thv85CbRMAwfeadCJHRsg2GmeRa/cJxsVY9Rbd57JcMxBkKHag5U/x7TSBpScF4U8ElVzg==", - "cpu": [ - "wasm32" - ], - "dev": true, - "optional": true, - "dependencies": { - "@emnapi/runtime": "^1.2.0" - }, - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@img/sharp-win32-ia32": { - "version": "0.33.5", - "resolved": "https://registry.npmjs.org/@img/sharp-win32-ia32/-/sharp-win32-ia32-0.33.5.tgz", - "integrity": "sha512-T36PblLaTwuVJ/zw/LaH0PdZkRz5rd3SmMHX8GSmR7vtNSP5Z6bQkExdSK7xGWyxLw4sUknBuugTelgw2faBbQ==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@img/sharp-win32-x64": { - "version": "0.33.5", - "resolved": "https://registry.npmjs.org/@img/sharp-win32-x64/-/sharp-win32-x64-0.33.5.tgz", - "integrity": "sha512-MpY/o8/8kj+EcnxwvrP4aTJSWw/aZ7JIGR4aBeZkZw5B7/Jn+tY9/VNwtcoGmdT7GfggGIU4kygOMSbYnOrAbg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@isaacs/cliui": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", - "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", - "dependencies": { - "string-width": "^5.1.2", - "string-width-cjs": "npm:string-width@^4.2.0", - "strip-ansi": "^7.0.1", - "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", - "wrap-ansi": "^8.1.0", - "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/@isaacs/cliui/node_modules/ansi-regex": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", - "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, - "node_modules/@isaacs/cliui/node_modules/strip-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", - "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, - "node_modules/@istanbuljs/load-nyc-config": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", - "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", - "dev": true, - "dependencies": { - "camelcase": "^5.3.1", - "find-up": "^4.1.0", - "get-package-type": "^0.1.0", - "js-yaml": "^3.13.1", - "resolve-from": "^5.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "dependencies": { - "sprintf-js": "~1.0.2" - } - }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "dev": true, - "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" + "node": ">=6" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -3929,21 +3235,6 @@ "node": ">= 6" } }, - "node_modules/@next/swc-darwin-arm64": { - "version": "14.2.13", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-14.2.13.tgz", - "integrity": "sha512-IkAmQEa2Htq+wHACBxOsslt+jMoV3msvxCn0WFSfJSkv/scy+i/EukBKNad36grRxywaXUYJc9mxEGkeIs8Bzg==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 10" - } - }, "node_modules/@next/swc-darwin-x64": { "version": "14.2.13", "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-14.2.13.tgz", @@ -3959,151 +3250,253 @@ "node": ">= 10" } }, - "node_modules/@next/swc-linux-arm64-gnu": { - "version": "14.2.13", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-14.2.13.tgz", - "integrity": "sha512-yB1tYEFFqo4ZNWkwrJultbsw7NPAAxlPXURXioRl9SdW6aIefOLS+0TEsKrWBtbJ9moTDgU3HRILL6QBQnMevg==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "linux" - ], + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, "engines": { - "node": ">= 10" + "node": ">= 8" } }, - "node_modules/@next/swc-linux-arm64-musl": { - "version": "14.2.13", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-14.2.13.tgz", - "integrity": "sha512-v5jZ/FV/eHGoWhMKYrsAweQ7CWb8xsWGM/8m1mwwZQ/sutJjoFaXchwK4pX8NqwImILEvQmZWyb8pPTcP7htWg==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "linux" - ], + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", "engines": { - "node": ">= 10" + "node": ">= 8" } }, - "node_modules/@next/swc-linux-x64-gnu": { - "version": "14.2.13", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-14.2.13.tgz", - "integrity": "sha512-aVc7m4YL7ViiRv7SOXK3RplXzOEe/qQzRA5R2vpXboHABs3w8vtFslGTz+5tKiQzWUmTmBNVW0UQdhkKRORmGA==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "linux" - ], + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, "engines": { - "node": ">= 10" + "node": ">= 8" } }, - "node_modules/@next/swc-linux-x64-musl": { - "version": "14.2.13", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-14.2.13.tgz", - "integrity": "sha512-4wWY7/OsSaJOOKvMsu1Teylku7vKyTuocvDLTZQq0TYv9OjiYYWt63PiE1nTuZnqQ4RPvME7Xai+9enoiN0Wrg==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "linux" - ], + "node_modules/@nolyfill/is-core-module": { + "version": "1.0.39", + "resolved": "https://registry.npmjs.org/@nolyfill/is-core-module/-/is-core-module-1.0.39.tgz", + "integrity": "sha512-nn5ozdjYQpUCZlWGuxcJY/KpxkWQs4DcbMCmKojjyrYDEAGy4Ce19NN4v5MduafTwJlbKc99UA8YhSVqq9yPZA==", + "dev": true, + "license": "MIT", "engines": { - "node": ">= 10" + "node": ">=12.4.0" } }, - "node_modules/@next/swc-win32-arm64-msvc": { - "version": "14.2.13", - "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-14.2.13.tgz", - "integrity": "sha512-uP1XkqCqV2NVH9+g2sC7qIw+w2tRbcMiXFEbMihkQ8B1+V6m28sshBwAB0SDmOe0u44ne1vFU66+gx/28RsBVQ==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "win32" - ], + "node_modules/@opentelemetry/api": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-1.9.0.tgz", + "integrity": "sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==", "engines": { - "node": ">= 10" + "node": ">=8.0.0" } }, - "node_modules/@next/swc-win32-ia32-msvc": { - "version": "14.2.13", - "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-14.2.13.tgz", - "integrity": "sha512-V26ezyjPqQpDBV4lcWIh8B/QICQ4v+M5Bo9ykLN+sqeKKBxJVDpEc6biDVyluTXTC40f5IqCU0ttth7Es2ZuMw==", - "cpu": [ - "ia32" - ], - "optional": true, - "os": [ - "win32" - ], + "node_modules/@opentelemetry/api-logs": { + "version": "0.56.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.56.0.tgz", + "integrity": "sha512-Wr39+94UNNG3Ei9nv3pHd4AJ63gq5nSemMRpCd8fPwDL9rN3vK26lzxfH27mw16XzOSO+TpyQwBAMaLxaPWG0g==", + "dependencies": { + "@opentelemetry/api": "^1.3.0" + }, "engines": { - "node": ">= 10" + "node": ">=14" } }, - "node_modules/@next/swc-win32-x64-msvc": { - "version": "14.2.13", - "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-14.2.13.tgz", - "integrity": "sha512-WwzOEAFBGhlDHE5Z73mNU8CO8mqMNLqaG+AO9ETmzdCQlJhVtWZnOl2+rqgVQS+YHunjOWptdFmNfbpwcUuEsw==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "win32" - ], + "node_modules/@opentelemetry/core": { + "version": "1.29.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.29.0.tgz", + "integrity": "sha512-gmT7vAreXl0DTHD2rVZcw3+l2g84+5XiHIqdBUxXbExymPCvSsGOpiwMmn8nkiJur28STV31wnhIDrzWDPzjfA==", + "dependencies": { + "@opentelemetry/semantic-conventions": "1.28.0" + }, "engines": { - "node": ">= 10" + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.10.0" } }, - "node_modules/@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "node_modules/@opentelemetry/exporter-metrics-otlp-http": { + "version": "0.56.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-metrics-otlp-http/-/exporter-metrics-otlp-http-0.56.0.tgz", + "integrity": "sha512-GD5QuCT6js+mDpb5OBO6OSyCH+k2Gy3xPHJV9BnjV8W6kpSuY8y2Samzs5vl23UcGMq6sHLAbs+Eq/VYsLMiVw==", "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" + "@opentelemetry/core": "1.29.0", + "@opentelemetry/otlp-exporter-base": "0.56.0", + "@opentelemetry/otlp-transformer": "0.56.0", + "@opentelemetry/resources": "1.29.0", + "@opentelemetry/sdk-metrics": "1.29.0" }, "engines": { - "node": ">= 8" + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" } }, - "node_modules/@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "node_modules/@opentelemetry/instrumentation": { + "version": "0.56.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.56.0.tgz", + "integrity": "sha512-2KkGBKE+FPXU1F0zKww+stnlUxUTlBvLCiWdP63Z9sqXYeNI/ziNzsxAp4LAdUcTQmXjw1IWgvm5CAb/BHy99w==", + "dependencies": { + "@opentelemetry/api-logs": "0.56.0", + "@types/shimmer": "^1.2.0", + "import-in-the-middle": "^1.8.1", + "require-in-the-middle": "^7.1.1", + "semver": "^7.5.2", + "shimmer": "^1.2.1" + }, "engines": { - "node": ">= 8" + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" } }, - "node_modules/@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "node_modules/@opentelemetry/instrumentation-http": { + "version": "0.56.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-http/-/instrumentation-http-0.56.0.tgz", + "integrity": "sha512-/bWHBUAq8VoATnH9iLk5w8CE9+gj+RgYSUphe7hry472n6fYl7+4PvuScoQMdmSUTprKq/gyr2kOWL6zrC7FkQ==", "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" + "@opentelemetry/core": "1.29.0", + "@opentelemetry/instrumentation": "0.56.0", + "@opentelemetry/semantic-conventions": "1.28.0", + "forwarded-parse": "2.1.2", + "semver": "^7.5.2" }, "engines": { - "node": ">= 8" + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" } }, - "node_modules/@nolyfill/is-core-module": { - "version": "1.0.39", - "resolved": "https://registry.npmjs.org/@nolyfill/is-core-module/-/is-core-module-1.0.39.tgz", - "integrity": "sha512-nn5ozdjYQpUCZlWGuxcJY/KpxkWQs4DcbMCmKojjyrYDEAGy4Ce19NN4v5MduafTwJlbKc99UA8YhSVqq9yPZA==", - "dev": true, - "license": "MIT", + "node_modules/@opentelemetry/instrumentation-runtime-node": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-runtime-node/-/instrumentation-runtime-node-0.11.0.tgz", + "integrity": "sha512-d7ZdzwnCpqaqvHkjowh8WA7/ZYr1jbGIo8QIpNPO+fqaxcm5NkzwP4kGpxI4PTnmeUTKcd6Bl/cPcKkR89u0ng==", + "dependencies": { + "@opentelemetry/instrumentation": "^0.56.0" + }, "engines": { - "node": ">=12.4.0" + "node": ">=17.4.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/otlp-exporter-base": { + "version": "0.56.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-exporter-base/-/otlp-exporter-base-0.56.0.tgz", + "integrity": "sha512-eURvv0fcmBE+KE1McUeRo+u0n18ZnUeSc7lDlW/dzlqFYasEbsztTK4v0Qf8C4vEY+aMTjPKUxBG0NX2Te3Pmw==", + "dependencies": { + "@opentelemetry/core": "1.29.0", + "@opentelemetry/otlp-transformer": "0.56.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/otlp-transformer": { + "version": "0.56.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-transformer/-/otlp-transformer-0.56.0.tgz", + "integrity": "sha512-kVkH/W2W7EpgWWpyU5VnnjIdSD7Y7FljQYObAQSKdRcejiwMj2glypZtUdfq1LTJcv4ht0jyTrw1D3CCxssNtQ==", + "dependencies": { + "@opentelemetry/api-logs": "0.56.0", + "@opentelemetry/core": "1.29.0", + "@opentelemetry/resources": "1.29.0", + "@opentelemetry/sdk-logs": "0.56.0", + "@opentelemetry/sdk-metrics": "1.29.0", + "@opentelemetry/sdk-trace-base": "1.29.0", + "protobufjs": "^7.3.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/resources": { + "version": "1.29.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.29.0.tgz", + "integrity": "sha512-s7mLXuHZE7RQr1wwweGcaRp3Q4UJJ0wazeGlc/N5/XSe6UyXfsh1UQGMADYeg7YwD+cEdMtU1yJAUXdnFzYzyQ==", + "dependencies": { + "@opentelemetry/core": "1.29.0", + "@opentelemetry/semantic-conventions": "1.28.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.10.0" + } + }, + "node_modules/@opentelemetry/sdk-logs": { + "version": "0.56.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-logs/-/sdk-logs-0.56.0.tgz", + "integrity": "sha512-OS0WPBJF++R/cSl+terUjQH5PebloidB1Jbbecgg2rnCmQbTST9xsRes23bLfDQVRvmegmHqDh884h0aRdJyLw==", + "dependencies": { + "@opentelemetry/api-logs": "0.56.0", + "@opentelemetry/core": "1.29.0", + "@opentelemetry/resources": "1.29.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.4.0 <1.10.0" + } + }, + "node_modules/@opentelemetry/sdk-metrics": { + "version": "1.29.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-metrics/-/sdk-metrics-1.29.0.tgz", + "integrity": "sha512-MkVtuzDjXZaUJSuJlHn6BSXjcQlMvHcsDV7LjY4P6AJeffMa4+kIGDjzsCf6DkAh6Vqlwag5EWEam3KZOX5Drw==", + "dependencies": { + "@opentelemetry/core": "1.29.0", + "@opentelemetry/resources": "1.29.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.3.0 <1.10.0" + } + }, + "node_modules/@opentelemetry/sdk-trace-base": { + "version": "1.29.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-base/-/sdk-trace-base-1.29.0.tgz", + "integrity": "sha512-hEOpAYLKXF3wGJpXOtWsxEtqBgde0SCv+w+jvr3/UusR4ll3QrENEGnSl1WDCyRrpqOQ5NCNOvZch9UFVa7MnQ==", + "dependencies": { + "@opentelemetry/core": "1.29.0", + "@opentelemetry/resources": "1.29.0", + "@opentelemetry/semantic-conventions": "1.28.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.10.0" + } + }, + "node_modules/@opentelemetry/semantic-conventions": { + "version": "1.28.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.28.0.tgz", + "integrity": "sha512-lp4qAiMTD4sNWW4DbKLBkfiMZ4jbAboJIGOQr5DvciMRI494OapieI9qiODpOt0XBr1LjIDy1xAGAnVs5supTA==", + "engines": { + "node": ">=14" } }, "node_modules/@panva/hkdf": { @@ -4227,6 +3620,60 @@ "node": ">=8.9.0" } }, + "node_modules/@protobufjs/aspromise": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", + "integrity": "sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==" + }, + "node_modules/@protobufjs/base64": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz", + "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==" + }, + "node_modules/@protobufjs/codegen": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz", + "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==" + }, + "node_modules/@protobufjs/eventemitter": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz", + "integrity": "sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==" + }, + "node_modules/@protobufjs/fetch": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz", + "integrity": "sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==", + "dependencies": { + "@protobufjs/aspromise": "^1.1.1", + "@protobufjs/inquire": "^1.1.0" + } + }, + "node_modules/@protobufjs/float": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz", + "integrity": "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==" + }, + "node_modules/@protobufjs/inquire": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz", + "integrity": "sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==" + }, + "node_modules/@protobufjs/path": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz", + "integrity": "sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==" + }, + "node_modules/@protobufjs/pool": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz", + "integrity": "sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==" + }, + "node_modules/@protobufjs/utf8": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz", + "integrity": "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==" + }, "node_modules/@radix-ui/number": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@radix-ui/number/-/number-1.1.0.tgz", @@ -7163,9 +6610,9 @@ } }, "node_modules/@types/lodash": { - "version": "4.17.0", - "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.0.tgz", - "integrity": "sha512-t7dhREVv6dbNj0q17X12j7yDG4bD/DHYX7o5/DbDxobP0HnGPgpRz2Ej77aL7TZT3DSw13fqUTj8J4mMnqa7WA==", + "version": "4.17.13", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.13.tgz", + "integrity": "sha512-lfx+dftrEZcdBPczf9d0Qv0x+j/rfNCMuC6OcfXmO8gkfeNAY88PgKUbvG56whcN23gc27yenwF6oJZXGFpYxg==", "dev": true }, "node_modules/@types/mdx": { @@ -7184,7 +6631,6 @@ "version": "22.8.0", "resolved": "https://registry.npmjs.org/@types/node/-/node-22.8.0.tgz", "integrity": "sha512-84rafSBHC/z1i1E3p0cJwKA+CfYDNSXX9WSZBRopjIzLET8oNt6ht2tei4C7izwDeEiLLfdeSVBv1egOH916hg==", - "devOptional": true, "dependencies": { "undici-types": "~6.19.8" } @@ -7203,8 +6649,7 @@ "node_modules/@types/node/node_modules/undici-types": { "version": "6.19.8", "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz", - "integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==", - "devOptional": true + "integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==" }, "node_modules/@types/parse-json": { "version": "4.0.2", @@ -7309,6 +6754,11 @@ "@types/node": "*" } }, + "node_modules/@types/shimmer": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@types/shimmer/-/shimmer-1.2.0.tgz", + "integrity": "sha512-UE7oxhQLLd9gub6JKIAhDq06T0F6FnztwMNRvYgjeQSBeMc1ZG/tA47EwfduvkuQS8apbkM/lpLpWsaCeYsXVg==" + }, "node_modules/@types/stack-utils": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz", @@ -7834,7 +7284,6 @@ "version": "8.13.0", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.13.0.tgz", "integrity": "sha512-8zSiw54Oxrdym50NlZ9sUusyO1Z1ZchgRLWRaK6c86XJFClyCgFKetdowBg5bKxyp/u+CDBJG4Mpp0m3HLZl9w==", - "devOptional": true, "license": "MIT", "bin": { "acorn": "bin/acorn" @@ -7869,7 +7318,6 @@ "version": "1.9.5", "resolved": "https://registry.npmjs.org/acorn-import-attributes/-/acorn-import-attributes-1.9.5.tgz", "integrity": "sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==", - "dev": true, "peerDependencies": { "acorn": "^8" } @@ -9396,8 +8844,7 @@ "node_modules/cjs-module-lexer": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.3.tgz", - "integrity": "sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ==", - "dev": true + "integrity": "sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ==" }, "node_modules/class-variance-authority": { "version": "0.7.0", @@ -10434,12 +9881,11 @@ "integrity": "sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==" }, "node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", + "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", "dependencies": { - "ms": "2.1.2" + "ms": "^2.1.3" }, "engines": { "node": ">=6.0" @@ -11399,29 +10845,6 @@ } } }, - "node_modules/eslint-import-resolver-typescript/node_modules/debug": { - "version": "4.3.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", - "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", - "dev": true, - "dependencies": { - "ms": "^2.1.3" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/eslint-import-resolver-typescript/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true - }, "node_modules/eslint-module-utils": { "version": "2.12.0", "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.12.0.tgz", @@ -12333,6 +11756,11 @@ "node": ">= 0.6" } }, + "node_modules/forwarded-parse": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/forwarded-parse/-/forwarded-parse-2.1.2.tgz", + "integrity": "sha512-alTFZZQDKMporBH77856pXgzhEzaUVmLCDk+egLgIgHst3Tpndzz8MnKe+GzRJRfvVdn69HhpW7cmXzvtLvJAw==" + }, "node_modules/fraction.js": { "version": "4.3.7", "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz", @@ -13142,6 +12570,17 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/import-in-the-middle": { + "version": "1.11.3", + "resolved": "https://registry.npmjs.org/import-in-the-middle/-/import-in-the-middle-1.11.3.tgz", + "integrity": "sha512-tNpKEb4AjZrCyrxi+Eyu43h5ig0O8ZRFSXPHh/00/o+4P4pKzVEW/m5lsVtsAT7fCIgmQOAPjdqecGDsBXRxsw==", + "dependencies": { + "acorn": "^8.8.2", + "acorn-import-attributes": "^1.9.5", + "cjs-module-lexer": "^1.2.2", + "module-details-from-path": "^1.0.3" + } + }, "node_modules/import-local": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.2.0.tgz", @@ -15441,6 +14880,11 @@ "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==", "license": "MIT" }, + "node_modules/long": { + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/long/-/long-5.2.3.tgz", + "integrity": "sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q==" + }, "node_modules/loose-envify": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", @@ -15798,10 +15242,15 @@ "node": ">=16 || 14 >=14.17" } }, + "node_modules/module-details-from-path": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/module-details-from-path/-/module-details-from-path-1.0.3.tgz", + "integrity": "sha512-ySViT69/76t8VhE1xXHK6Ch4NcDd26gx0MzKXLO+F7NOtnqH68d9zF94nT8ZWSxXh8ELOERsnJO/sWt1xZYw5A==" + }, "node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" }, "node_modules/mz": { "version": "2.7.0", @@ -17287,6 +16736,29 @@ "react-is": "^16.13.1" } }, + "node_modules/protobufjs": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.4.0.tgz", + "integrity": "sha512-mRUWCc3KUU4w1jU8sGxICXH/gNS94DvI1gxqDvBzhj1JpcsimQkYiOJfwsPUykUI5ZaspFbSgmBLER8IrQ3tqw==", + "hasInstallScript": true, + "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": ">=13.7.0", + "long": "^5.0.0" + }, + "engines": { + "node": ">=12.0.0" + } + }, "node_modules/proxy-addr": { "version": "2.0.7", "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", @@ -18058,6 +17530,19 @@ "node": ">=0.10.0" } }, + "node_modules/require-in-the-middle": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/require-in-the-middle/-/require-in-the-middle-7.4.0.tgz", + "integrity": "sha512-X34iHADNbNDfr6OTStIAHWSAvvKQRYgLO6duASaVf7J2VA3lvmNYboAHOuLC2huav1IwgZJtyEcJCKVzFxOSMQ==", + "dependencies": { + "debug": "^4.3.5", + "module-details-from-path": "^1.0.3", + "resolve": "^1.22.8" + }, + "engines": { + "node": ">=8.6.0" + } + }, "node_modules/requires-port": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", @@ -18468,12 +17953,6 @@ "node": ">= 0.8" } }, - "node_modules/send/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true - }, "node_modules/serialize-javascript": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", @@ -18654,6 +18133,11 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/shimmer": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/shimmer/-/shimmer-1.2.1.tgz", + "integrity": "sha512-sQTKC1Re/rM6XyFM6fIAGHRPVGvyXfgzIDvzoq608vM+jeyVD0Tu1E6Np0Kc2zAIFWIj963V2800iF/9LPieQw==" + }, "node_modules/shx": { "version": "0.3.4", "resolved": "https://registry.npmjs.org/shx/-/shx-0.3.4.tgz", @@ -19696,473 +19180,121 @@ "version": "8.3.4", "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.4.tgz", "integrity": "sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==", - "devOptional": true, - "dependencies": { - "acorn": "^8.11.0" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/ts-node/node_modules/arg": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", - "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", - "devOptional": true - }, - "node_modules/ts-pnp": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/ts-pnp/-/ts-pnp-1.2.0.tgz", - "integrity": "sha512-csd+vJOb/gkzvcCHgTGSChYpy5f1/XKNsmvBGO4JXS+z1v2HobugDz4s1IeFXM3wZB44uczs+eazB5Q/ccdhQw==", - "dev": true, - "engines": { - "node": ">=6" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/tsconfig-paths": { - "version": "3.15.0", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", - "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==", - "dev": true, - "dependencies": { - "@types/json5": "^0.0.29", - "json5": "^1.0.2", - "minimist": "^1.2.6", - "strip-bom": "^3.0.0" - } - }, - "node_modules/tsconfig-paths-webpack-plugin": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/tsconfig-paths-webpack-plugin/-/tsconfig-paths-webpack-plugin-4.1.0.tgz", - "integrity": "sha512-xWFISjviPydmtmgeUAuXp4N1fky+VCtfhOkDUFIv5ea7p4wuTomI4QTrXvFBX2S4jZsmyTSrStQl+E+4w+RzxA==", - "dev": true, - "dependencies": { - "chalk": "^4.1.0", - "enhanced-resolve": "^5.7.0", - "tsconfig-paths": "^4.1.2" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/tsconfig-paths-webpack-plugin/node_modules/json5": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", - "dev": true, - "bin": { - "json5": "lib/cli.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/tsconfig-paths-webpack-plugin/node_modules/tsconfig-paths": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-4.2.0.tgz", - "integrity": "sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==", - "dev": true, - "dependencies": { - "json5": "^2.2.2", - "minimist": "^1.2.6", - "strip-bom": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" - }, - "node_modules/tsx": { - "version": "4.19.1", - "resolved": "https://registry.npmjs.org/tsx/-/tsx-4.19.1.tgz", - "integrity": "sha512-0flMz1lh74BR4wOvBjuh9olbnwqCPc35OOlfyzHba0Dc+QNUeWX/Gq2YTbnwcWPO3BMd8fkzRVrHcsR+a7z7rA==", - "dev": true, - "dependencies": { - "esbuild": "~0.23.0", - "get-tsconfig": "^4.7.5" - }, - "bin": { - "tsx": "dist/cli.mjs" - }, - "engines": { - "node": ">=18.0.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.3" - } - }, - "node_modules/tsx/node_modules/@esbuild/aix-ppc64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.23.1.tgz", - "integrity": "sha512-6VhYk1diRqrhBAqpJEdjASR/+WVRtfjpqKuNw11cLiaWpAT/Uu+nokB+UJnevzy/P9C/ty6AOe0dwueMrGh/iQ==", - "cpu": [ - "ppc64" - ], - "dev": true, - "optional": true, - "os": [ - "aix" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/tsx/node_modules/@esbuild/android-arm": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.23.1.tgz", - "integrity": "sha512-uz6/tEy2IFm9RYOyvKl88zdzZfwEfKZmnX9Cj1BHjeSGNuGLuMD1kR8y5bteYmwqKm1tj8m4cb/aKEorr6fHWQ==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/tsx/node_modules/@esbuild/android-arm64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.23.1.tgz", - "integrity": "sha512-xw50ipykXcLstLeWH7WRdQuysJqejuAGPd30vd1i5zSyKK3WE+ijzHmLKxdiCMtH1pHz78rOg0BKSYOSB/2Khw==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/tsx/node_modules/@esbuild/android-x64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.23.1.tgz", - "integrity": "sha512-nlN9B69St9BwUoB+jkyU090bru8L0NA3yFvAd7k8dNsVH8bi9a8cUAUSEcEEgTp2z3dbEDGJGfP6VUnkQnlReg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/tsx/node_modules/@esbuild/darwin-arm64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.23.1.tgz", - "integrity": "sha512-YsS2e3Wtgnw7Wq53XXBLcV6JhRsEq8hkfg91ESVadIrzr9wO6jJDMZnCQbHm1Guc5t/CdDiFSSfWP58FNuvT3Q==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/tsx/node_modules/@esbuild/darwin-x64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.23.1.tgz", - "integrity": "sha512-aClqdgTDVPSEGgoCS8QDG37Gu8yc9lTHNAQlsztQ6ENetKEO//b8y31MMu2ZaPbn4kVsIABzVLXYLhCGekGDqw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/tsx/node_modules/@esbuild/freebsd-arm64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.23.1.tgz", - "integrity": "sha512-h1k6yS8/pN/NHlMl5+v4XPfikhJulk4G+tKGFIOwURBSFzE8bixw1ebjluLOjfwtLqY0kewfjLSrO6tN2MgIhA==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/tsx/node_modules/@esbuild/freebsd-x64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.23.1.tgz", - "integrity": "sha512-lK1eJeyk1ZX8UklqFd/3A60UuZ/6UVfGT2LuGo3Wp4/z7eRTRYY+0xOu2kpClP+vMTi9wKOfXi2vjUpO1Ro76g==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/tsx/node_modules/@esbuild/linux-arm": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.23.1.tgz", - "integrity": "sha512-CXXkzgn+dXAPs3WBwE+Kvnrf4WECwBdfjfeYHpMeVxWE0EceB6vhWGShs6wi0IYEqMSIzdOF1XjQ/Mkm5d7ZdQ==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/tsx/node_modules/@esbuild/linux-arm64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.23.1.tgz", - "integrity": "sha512-/93bf2yxencYDnItMYV/v116zff6UyTjo4EtEQjUBeGiVpMmffDNUyD9UN2zV+V3LRV3/on4xdZ26NKzn6754g==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/tsx/node_modules/@esbuild/linux-ia32": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.23.1.tgz", - "integrity": "sha512-VTN4EuOHwXEkXzX5nTvVY4s7E/Krz7COC8xkftbbKRYAl96vPiUssGkeMELQMOnLOJ8k3BY1+ZY52tttZnHcXQ==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/tsx/node_modules/@esbuild/linux-loong64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.23.1.tgz", - "integrity": "sha512-Vx09LzEoBa5zDnieH8LSMRToj7ir/Jeq0Gu6qJ/1GcBq9GkfoEAoXvLiW1U9J1qE/Y/Oyaq33w5p2ZWrNNHNEw==", - "cpu": [ - "loong64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/tsx/node_modules/@esbuild/linux-mips64el": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.23.1.tgz", - "integrity": "sha512-nrFzzMQ7W4WRLNUOU5dlWAqa6yVeI0P78WKGUo7lg2HShq/yx+UYkeNSE0SSfSure0SqgnsxPvmAUu/vu0E+3Q==", - "cpu": [ - "mips64el" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/tsx/node_modules/@esbuild/linux-ppc64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.23.1.tgz", - "integrity": "sha512-dKN8fgVqd0vUIjxuJI6P/9SSSe/mB9rvA98CSH2sJnlZ/OCZWO1DJvxj8jvKTfYUdGfcq2dDxoKaC6bHuTlgcw==", - "cpu": [ - "ppc64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/tsx/node_modules/@esbuild/linux-riscv64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.23.1.tgz", - "integrity": "sha512-5AV4Pzp80fhHL83JM6LoA6pTQVWgB1HovMBsLQ9OZWLDqVY8MVobBXNSmAJi//Csh6tcY7e7Lny2Hg1tElMjIA==", - "cpu": [ - "riscv64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/tsx/node_modules/@esbuild/linux-s390x": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.23.1.tgz", - "integrity": "sha512-9ygs73tuFCe6f6m/Tb+9LtYxWR4c9yg7zjt2cYkjDbDpV/xVn+68cQxMXCjUpYwEkze2RcU/rMnfIXNRFmSoDw==", - "cpu": [ - "s390x" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], + "devOptional": true, + "dependencies": { + "acorn": "^8.11.0" + }, "engines": { - "node": ">=18" + "node": ">=0.4.0" } }, - "node_modules/tsx/node_modules/@esbuild/linux-x64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.23.1.tgz", - "integrity": "sha512-EV6+ovTsEXCPAp58g2dD68LxoP/wK5pRvgy0J/HxPGB009omFPv3Yet0HiaqvrIrgPTBuC6wCH1LTOY91EO5hQ==", - "cpu": [ - "x64" - ], + "node_modules/ts-node/node_modules/arg": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", + "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", + "devOptional": true + }, + "node_modules/ts-pnp": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/ts-pnp/-/ts-pnp-1.2.0.tgz", + "integrity": "sha512-csd+vJOb/gkzvcCHgTGSChYpy5f1/XKNsmvBGO4JXS+z1v2HobugDz4s1IeFXM3wZB44uczs+eazB5Q/ccdhQw==", "dev": true, - "optional": true, - "os": [ - "linux" - ], "engines": { - "node": ">=18" + "node": ">=6" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/tsx/node_modules/@esbuild/netbsd-x64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.23.1.tgz", - "integrity": "sha512-aevEkCNu7KlPRpYLjwmdcuNz6bDFiE7Z8XC4CPqExjTvrHugh28QzUXVOZtiYghciKUacNktqxdpymplil1beA==", - "cpu": [ - "x64" - ], + "node_modules/tsconfig-paths": { + "version": "3.15.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", + "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==", "dev": true, - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=18" + "dependencies": { + "@types/json5": "^0.0.29", + "json5": "^1.0.2", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" } }, - "node_modules/tsx/node_modules/@esbuild/openbsd-x64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.23.1.tgz", - "integrity": "sha512-aY2gMmKmPhxfU+0EdnN+XNtGbjfQgwZj43k8G3fyrDM/UdZww6xrWxmDkuz2eCZchqVeABjV5BpildOrUbBTqA==", - "cpu": [ - "x64" - ], + "node_modules/tsconfig-paths-webpack-plugin": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths-webpack-plugin/-/tsconfig-paths-webpack-plugin-4.1.0.tgz", + "integrity": "sha512-xWFISjviPydmtmgeUAuXp4N1fky+VCtfhOkDUFIv5ea7p4wuTomI4QTrXvFBX2S4jZsmyTSrStQl+E+4w+RzxA==", "dev": true, - "optional": true, - "os": [ - "openbsd" - ], + "dependencies": { + "chalk": "^4.1.0", + "enhanced-resolve": "^5.7.0", + "tsconfig-paths": "^4.1.2" + }, "engines": { - "node": ">=18" + "node": ">=10.13.0" } }, - "node_modules/tsx/node_modules/@esbuild/sunos-x64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.23.1.tgz", - "integrity": "sha512-RBRT2gqEl0IKQABT4XTj78tpk9v7ehp+mazn2HbUeZl1YMdaGAQqhapjGTCe7uw7y0frDi4gS0uHzhvpFuI1sA==", - "cpu": [ - "x64" - ], + "node_modules/tsconfig-paths-webpack-plugin/node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", "dev": true, - "optional": true, - "os": [ - "sunos" - ], + "bin": { + "json5": "lib/cli.js" + }, "engines": { - "node": ">=18" + "node": ">=6" } }, - "node_modules/tsx/node_modules/@esbuild/win32-arm64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.23.1.tgz", - "integrity": "sha512-4O+gPR5rEBe2FpKOVyiJ7wNDPA8nGzDuJ6gN4okSA1gEOYZ67N8JPk58tkWtdtPeLz7lBnY6I5L3jdsr3S+A6A==", - "cpu": [ - "arm64" - ], + "node_modules/tsconfig-paths-webpack-plugin/node_modules/tsconfig-paths": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-4.2.0.tgz", + "integrity": "sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==", "dev": true, - "optional": true, - "os": [ - "win32" - ], + "dependencies": { + "json5": "^2.2.2", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + }, "engines": { - "node": ">=18" + "node": ">=6" } }, - "node_modules/tsx/node_modules/@esbuild/win32-ia32": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.23.1.tgz", - "integrity": "sha512-BcaL0Vn6QwCwre3Y717nVHZbAa4UBEigzFm6VdsVdT/MbZ38xoj1X9HPkZhbmaBGUD1W8vxAfffbDe8bA6AKnQ==", - "cpu": [ - "ia32" - ], + "node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + }, + "node_modules/tsx": { + "version": "4.19.1", + "resolved": "https://registry.npmjs.org/tsx/-/tsx-4.19.1.tgz", + "integrity": "sha512-0flMz1lh74BR4wOvBjuh9olbnwqCPc35OOlfyzHba0Dc+QNUeWX/Gq2YTbnwcWPO3BMd8fkzRVrHcsR+a7z7rA==", "dev": true, - "optional": true, - "os": [ - "win32" - ], + "dependencies": { + "esbuild": "~0.23.0", + "get-tsconfig": "^4.7.5" + }, + "bin": { + "tsx": "dist/cli.mjs" + }, "engines": { - "node": ">=18" + "node": ">=18.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" } }, - "node_modules/tsx/node_modules/@esbuild/win32-x64": { + "node_modules/tsx/node_modules/@esbuild/darwin-x64": { "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.23.1.tgz", - "integrity": "sha512-BHpFFeslkWrXWyUPnbKm+xYYVYruCinGcftSBaa8zoF9hZO4BcSCFUvHVTtzpIY6YzUnYtuEhZ+C9iEXjxnasg==", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.23.1.tgz", + "integrity": "sha512-aClqdgTDVPSEGgoCS8QDG37Gu8yc9lTHNAQlsztQ6ENetKEO//b8y31MMu2ZaPbn4kVsIABzVLXYLhCGekGDqw==", "cpu": [ "x64" ], "dev": true, "optional": true, "os": [ - "win32" + "darwin" ], "engines": { "node": ">=18" @@ -21277,6 +20409,126 @@ "funding": { "url": "https://github.com/sponsors/colinhacks" } + }, + "node_modules/@next/swc-darwin-arm64": { + "version": "14.2.13", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-14.2.13.tgz", + "integrity": "sha512-IkAmQEa2Htq+wHACBxOsslt+jMoV3msvxCn0WFSfJSkv/scy+i/EukBKNad36grRxywaXUYJc9mxEGkeIs8Bzg==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-arm64-gnu": { + "version": "14.2.13", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-14.2.13.tgz", + "integrity": "sha512-yB1tYEFFqo4ZNWkwrJultbsw7NPAAxlPXURXioRl9SdW6aIefOLS+0TEsKrWBtbJ9moTDgU3HRILL6QBQnMevg==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-arm64-musl": { + "version": "14.2.13", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-14.2.13.tgz", + "integrity": "sha512-v5jZ/FV/eHGoWhMKYrsAweQ7CWb8xsWGM/8m1mwwZQ/sutJjoFaXchwK4pX8NqwImILEvQmZWyb8pPTcP7htWg==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-x64-gnu": { + "version": "14.2.13", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-14.2.13.tgz", + "integrity": "sha512-aVc7m4YL7ViiRv7SOXK3RplXzOEe/qQzRA5R2vpXboHABs3w8vtFslGTz+5tKiQzWUmTmBNVW0UQdhkKRORmGA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-x64-musl": { + "version": "14.2.13", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-14.2.13.tgz", + "integrity": "sha512-4wWY7/OsSaJOOKvMsu1Teylku7vKyTuocvDLTZQq0TYv9OjiYYWt63PiE1nTuZnqQ4RPvME7Xai+9enoiN0Wrg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-win32-arm64-msvc": { + "version": "14.2.13", + "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-14.2.13.tgz", + "integrity": "sha512-uP1XkqCqV2NVH9+g2sC7qIw+w2tRbcMiXFEbMihkQ8B1+V6m28sshBwAB0SDmOe0u44ne1vFU66+gx/28RsBVQ==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-win32-ia32-msvc": { + "version": "14.2.13", + "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-14.2.13.tgz", + "integrity": "sha512-V26ezyjPqQpDBV4lcWIh8B/QICQ4v+M5Bo9ykLN+sqeKKBxJVDpEc6biDVyluTXTC40f5IqCU0ttth7Es2ZuMw==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-win32-x64-msvc": { + "version": "14.2.13", + "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-14.2.13.tgz", + "integrity": "sha512-WwzOEAFBGhlDHE5Z73mNU8CO8mqMNLqaG+AO9ETmzdCQlJhVtWZnOl2+rqgVQS+YHunjOWptdFmNfbpwcUuEsw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } } } } diff --git a/package.json b/package.json index bc172b82..95e35bc6 100644 --- a/package.json +++ b/package.json @@ -21,6 +21,13 @@ "dependencies": { "@formatjs/intl-localematcher": "^0.5.6", "@hookform/resolvers": "^3.9.0", + "@opentelemetry/api": "^1.9.0", + "@opentelemetry/exporter-metrics-otlp-http": "^0.56.0", + "@opentelemetry/instrumentation": "^0.56.0", + "@opentelemetry/instrumentation-http": "^0.56.0", + "@opentelemetry/instrumentation-runtime-node": "^0.11.0", + "@opentelemetry/resources": "^1.29.0", + "@opentelemetry/sdk-metrics": "^1.29.0", "@radix-ui/react-avatar": "^1.1.1", "@radix-ui/react-checkbox": "^1.1.2", "@radix-ui/react-collapsible": "^1.1.1", @@ -88,6 +95,7 @@ "@testing-library/react": "^16.0.1", "@types/jest": "^29.5.14", "@types/jsonwebtoken": "^9.0.7", + "@types/lodash": "^4.17.13", "@types/node": "^22", "@types/node-fetch": "^2.6.11", "@types/pino": "^7.0.5", diff --git a/public/images/floater-icon.svg b/public/images/floater-icon.svg deleted file mode 100644 index 2bfafcff..00000000 --- a/public/images/floater-icon.svg +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/public/images/geometric-shape.svg b/public/images/geometric-shape.svg deleted file mode 100644 index 75b9c16f..00000000 --- a/public/images/geometric-shape.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/public/images/github-icon.svg b/public/images/github-icon.svg deleted file mode 100644 index a13a3e21..00000000 --- a/public/images/github-icon.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/public/images/hamburguer-left.svg b/public/images/hamburguer-left.svg deleted file mode 100644 index 3829efdd..00000000 --- a/public/images/hamburguer-left.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/public/images/hamburguer-right.svg b/public/images/hamburguer-right.svg deleted file mode 100644 index 491f3715..00000000 --- a/public/images/hamburguer-right.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/public/images/loading-wallpaper.jpg b/public/images/loading-wallpaper.jpg deleted file mode 100644 index 783b49ff..00000000 Binary files a/public/images/loading-wallpaper.jpg and /dev/null differ diff --git a/public/images/loading-wallpaper.webp b/public/images/loading-wallpaper.webp new file mode 100644 index 00000000..2f904bc6 Binary files /dev/null and b/public/images/loading-wallpaper.webp differ diff --git a/public/images/login-wallpaper.jpg b/public/images/login-wallpaper.jpg deleted file mode 100644 index 33e82b88..00000000 Binary files a/public/images/login-wallpaper.jpg and /dev/null differ diff --git a/public/images/login-wallpaper.webp b/public/images/login-wallpaper.webp new file mode 100644 index 00000000..4360dc05 Binary files /dev/null and b/public/images/login-wallpaper.webp differ diff --git a/public/images/midaz-login-screen.png b/public/images/midaz-login-screen.png deleted file mode 100644 index 4903d11a..00000000 Binary files a/public/images/midaz-login-screen.png and /dev/null differ diff --git a/public/images/midaz-login-screen.webp b/public/images/midaz-login-screen.webp new file mode 100644 index 00000000..9cf90ae3 Binary files /dev/null and b/public/images/midaz-login-screen.webp differ diff --git a/src/app/(auth-routes)/signin/page.tsx b/src/app/(auth-routes)/signin/page.tsx index 044c458e..b5be0f70 100644 --- a/src/app/(auth-routes)/signin/page.tsx +++ b/src/app/(auth-routes)/signin/page.tsx @@ -15,8 +15,8 @@ import { LoadingButton } from '@/components/ui/loading-button' import { ArrowRight } from 'lucide-react' import React from 'react' import LoadingScreen from '@/components/loading-screen' -import MidazLogo from '@/images/midaz-login-screen.png' -import BackgroundImage from '@/images/login-wallpaper.jpg' +import MidazLogo from '@/images/midaz-login-screen.webp' +import BackgroundImage from '@/images/login-wallpaper.webp' import { Tooltip, TooltipContent, @@ -137,17 +137,13 @@ const SignInPage = () => { })} - -

+ +

{intl.formatMessage({ id: 'tooltip.passwordInfo', defaultMessage: 'Contact the system administrator' })}

-
@@ -160,7 +156,7 @@ const SignInPage = () => { loading={form.formState.isSubmitting} size="xl" icon={} - iconPlacement="end" + iconPlacement="far-end" > {intl.formatMessage({ id: 'signIn.buttonSignIn', @@ -179,6 +175,7 @@ const SignInPage = () => { src={BackgroundImage} fill sizes="50vw, 100vh" + className="object-cover" />
diff --git a/src/app/(routes)/ledgers/[id]/accounts/accounts-tab-content.tsx b/src/app/(routes)/ledgers/[id]/accounts/accounts-tab-content.tsx index e74e63ca..f3ac0054 100644 --- a/src/app/(routes)/ledgers/[id]/accounts/accounts-tab-content.tsx +++ b/src/app/(routes)/ledgers/[id]/accounts/accounts-tab-content.tsx @@ -19,6 +19,7 @@ import useCustomToast from '@/hooks/use-custom-toast' import { AccountType } from '@/types/accounts-type' import { AccountSheet } from './accounts-sheet' import { AccountsDataTable } from './accounts-data-table' +import { EntityDataTable } from '@/components/entity-data-table' export const AccountsTabContent = () => { const intl = useIntl() @@ -223,16 +224,33 @@ export const AccountsTabContent = () => { - {accountsList && ( - - )} + + {accountsList && ( + + )} + + + {intl.formatMessage( + { + id: 'ledgers.accounts.showing', + defaultMessage: + 'Showing {count} {number, plural, =0 {accounts} one {account} other {accounts}}.' + }, + { + number: accountsList?.length, + count: {accountsList?.length} + } + )} + + + ) } diff --git a/src/app/(routes)/ledgers/[id]/assets/assets-tab-content.tsx b/src/app/(routes)/ledgers/[id]/assets/assets-tab-content.tsx index 513f787a..b6013332 100644 --- a/src/app/(routes)/ledgers/[id]/assets/assets-tab-content.tsx +++ b/src/app/(routes)/ledgers/[id]/assets/assets-tab-content.tsx @@ -20,6 +20,7 @@ import { useParams } from 'next/navigation' import { useConfirmDialog } from '@/components/confirmation-dialog/use-confirm-dialog' import ConfirmationDialog from '@/components/confirmation-dialog' import useCustomToast from '@/hooks/use-custom-toast' +import { EntityDataTable } from '@/components/entity-data-table' type AssetsTabContentProps = { data: ILedgerType @@ -142,18 +143,38 @@ export const AssetsTabContent = ({ data }: AssetsTabContentProps) => { - {isLoading && } + + {isLoading && } - {assets && ( - - )} + {assets && ( + + )} + + + + {intl.formatMessage( + { + id: 'ledgers.assets.showing', + defaultMessage: + 'Showing {count} {number, plural, =0 {assets} one {asset} other {assets}}.' + }, + { + number: assets?.items?.length, + count: ( + {assets?.items?.length} + ) + } + )} + + + { const intl = useIntl() - const { currentOrganization } = useOrganization() + const { activeTab, handleTabChange } = useTabs({ initialValue: DEFAULT_TAB_VALUE }) - const { formData, isDirty, resetForm } = useFormState() - const { showSuccess, showError } = useCustomToast() - const [isDrawerOpen, setIsDrawerOpen] = useState(false) - - const { mutate: updateLedger, isPending: updatePending } = useUpdateLedger({ - organizationId: currentOrganization!.id!, - ledgerId: data?.id!, - onSuccess: () => { - setIsDrawerOpen(false) - resetForm() - showSuccess( - intl.formatMessage({ - id: 'ledgers.toast.update.success', - defaultMessage: 'Ledger changes saved successfully' - }) - ) - }, - onError: () => { - showError( - intl.formatMessage({ - id: 'ledgers.toast.update.error', - defaultMessage: 'Error updating Ledger' - }) - ) - } - }) - - useEffect(() => { - setIsDrawerOpen(isDirty) - }, [isDirty]) const breadcrumbPaths = getBreadcrumbPaths([ { @@ -117,25 +82,12 @@ const LedgerDetailsView = ({ data }: LedgerDetailsViewProps) => { } ]) - const handleGlobalSubmit = async () => { - const dataToSend = { - ...formData - } - - updateLedger(dataToSend) - } - - const handleCancel = () => { - setIsDrawerOpen(false) - resetForm() - } - if (!data) { return } return ( -
+
@@ -211,13 +163,6 @@ const LedgerDetailsView = ({ data }: LedgerDetailsViewProps) => { - -
) } diff --git a/src/app/(routes)/ledgers/[id]/overview/overview-tab-content.tsx b/src/app/(routes)/ledgers/[id]/overview/overview-tab-content.tsx index 54731e22..a09c4d72 100644 --- a/src/app/(routes)/ledgers/[id]/overview/overview-tab-content.tsx +++ b/src/app/(routes)/ledgers/[id]/overview/overview-tab-content.tsx @@ -1,6 +1,30 @@ -import { Card } from '@/components/card' +import { InputField, MetadataField } from '@/components/form' +import { Button } from '@/components/ui/button' +import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card' import { ILedgerType } from '@/types/ledgers-type' +import { ExternalLink, Github, LifeBuoy } from 'lucide-react' +import { useForm } from 'react-hook-form' import { useIntl } from 'react-intl' +import { SaveSheet } from './save-sheet' +import { useUpdateLedger } from '@/client/ledgers' +import { useOrganization } from '@/context/organization-provider/organization-provider-client' +import useCustomToast from '@/hooks/use-custom-toast' +import { z } from 'zod' +import { ledger } from '@/schema/ledger' +import { zodResolver } from '@hookform/resolvers/zod' +import { Form } from '@/components/ui/form' + +const initialValues = { + name: '', + metadata: {} +} + +const formSchema = z.object({ + name: ledger.name, + metadata: ledger.metadata +}) + +type FormSchema = z.infer type OverviewTabContentProps = { data: ILedgerType @@ -8,38 +32,151 @@ type OverviewTabContentProps = { export const OverviewTabContent = ({ data }: OverviewTabContentProps) => { const intl = useIntl() + const { currentOrganization } = useOrganization() - return ( -
-
- - + const { showSuccess, showError } = useCustomToast() - - + const form = useForm({ + resolver: zodResolver(formSchema), + defaultValues: { + ...initialValues, + ...data + } + }) - - - - + const { mutate: updateLedger, isPending: updatePending } = useUpdateLedger({ + organizationId: currentOrganization!.id!, + ledgerId: data?.id!, + onSuccess: () => { + showSuccess( + intl.formatMessage({ + id: 'ledgers.toast.update.success', + defaultMessage: 'Ledger changes saved successfully' + }) + ) + }, + onError: () => { + showError( + intl.formatMessage({ + id: 'ledgers.toast.update.error', + defaultMessage: 'Error updating Ledger' + }) + ) + } + }) - - + const handleSubmit = async (values: FormSchema) => { + updateLedger(values) + form.reset(values) + } + + const handleCancel = () => { + form.reset() + } - - + return ( +
+
+
+ + +

+ {intl.formatMessage({ + id: 'common.identification', + defaultMessage: 'Identification' + })} +

+
+ + + +
+ + +

+ {intl.formatMessage({ + id: 'common.metadata', + defaultMessage: 'Metadata' + })} +

+
+ + + +
+ + + + {intl.formatMessage({ + id: 'common.resources', + defaultMessage: 'Resources' + })} + + + +
+ + + + +
+
+
+ + +
+
+
-
+ ) } diff --git a/src/components/bottom-drawer.tsx b/src/app/(routes)/ledgers/[id]/overview/save-sheet.tsx similarity index 56% rename from src/components/bottom-drawer.tsx rename to src/app/(routes)/ledgers/[id]/overview/save-sheet.tsx index dc64f8b4..ffa1aebf 100644 --- a/src/components/bottom-drawer.tsx +++ b/src/app/(routes)/ledgers/[id]/overview/save-sheet.tsx @@ -1,49 +1,47 @@ +import { Button } from '@/components/ui/button' +import { LoadingButton } from '@/components/ui/loading-button' import { cn } from '@/lib/utils' -import { Button } from './ui/button' -import { useSidebar } from './sidebar/primitive' import { useIntl } from 'react-intl' -import { LoadingButton } from './ui/loading-button' -interface BottomDrawerProps { - isOpen: boolean - isPending: boolean - handleSubmit: () => void - handleCancel: () => void +export type SaveSheetProps = { + open?: boolean + loading?: boolean + onSubmit?: () => void + onCancel?: () => void } -export const BottomDrawer = ({ - isOpen, - handleCancel, - handleSubmit, - isPending -}: BottomDrawerProps) => { +export const SaveSheet = ({ + open = true, + loading, + onSubmit, + onCancel +}: SaveSheetProps) => { const intl = useIntl() - const { isCollapsed } = useSidebar() return (
{intl.formatMessage({ id: 'common.saveChanges', defaultMessage: 'Save changes' })} - + + ))} - {!isNil(data?.items) && data?.items.length > 0 && ( - - - - - - {intl.formatMessage({ - id: 'common.id', - defaultMessage: 'ID' - })} - - - {intl.formatMessage({ - id: 'common.name', - defaultMessage: 'Name' - })} - - - {intl.formatMessage({ - id: 'common.metadata', - defaultMessage: 'Metadata' - })} - - - {intl.formatMessage({ - id: 'common.actions', - defaultMessage: 'Actions' - })} - - - - - {table.getRowModel().rows.map((product) => ( - - {product.original.id} - {product.original.name} - - {intl.formatMessage( - { - id: 'common.table.metadata', - defaultMessage: - '{number, plural, =0 {-} one {# record} other {# records}}' - }, - { - number: Object.entries(product.original.metadata || []) - .length - } - )} - - - - - - - - handleEdit(product.original)} - > - {intl.formatMessage({ - id: `common.edit`, - defaultMessage: 'Edit' - })} - - - handleDialogOpen(product.original.id)} - > - {intl.formatMessage({ - id: `common.delete`, - defaultMessage: 'Delete' - })} - - - - + {!isNil(data?.items) && data?.items.length > 0 && ( + +
+ + + + {intl.formatMessage({ + id: 'common.id', + defaultMessage: 'ID' + })} + + + {intl.formatMessage({ + id: 'common.name', + defaultMessage: 'Name' + })} + + + {intl.formatMessage({ + id: 'common.metadata', + defaultMessage: 'Metadata' + })} + + + {intl.formatMessage({ + id: 'common.actions', + defaultMessage: 'Actions' + })} + - ))} - -
-
- )} + + + {table.getRowModel().rows.map((product) => ( + + {product.original.id} + {product.original.name} + + {intl.formatMessage( + { + id: 'common.table.metadata', + defaultMessage: + '{number, plural, =0 {-} one {# record} other {# records}}' + }, + { + number: Object.entries( + product.original.metadata || [] + ).length + } + )} + + + + + + + + handleEdit(product.original)} + > + {intl.formatMessage({ + id: `common.edit`, + defaultMessage: 'Edit' + })} + + + + handleDialogOpen(product.original.id) + } + > + {intl.formatMessage({ + id: `common.delete`, + defaultMessage: 'Delete' + })} + + + + + + ))} + + + + )} + + + + {intl.formatMessage( + { + id: 'ledgers.products.showing', + defaultMessage: + 'Showing {count} {number, plural, =0 {products} one {product} other {products}}.' + }, + { + number: data?.items?.length, + count: {data?.items?.length} + } + )} + + + ) } diff --git a/src/app/(routes)/ledgers/[id]/total-amount-card.tsx b/src/app/(routes)/ledgers/[id]/total-amount-card.tsx deleted file mode 100644 index 776ebb4e..00000000 --- a/src/app/(routes)/ledgers/[id]/total-amount-card.tsx +++ /dev/null @@ -1,38 +0,0 @@ -import { Card } from '@/components/card' -import { Skeleton } from '@/components/ui/skeleton' -import { Coins } from 'lucide-react' - -type ChartData = { - instrumentCode: string - totalAmount: string -} - -export const TotalAmountCard = ({ - isLoading, - data -}: { - isLoading: boolean - data: any -}) => - isLoading ? ( -
- - - -
- ) : ( - data.map((instrument: ChartData, index: number) => ( - - - - - - )) - ) diff --git a/src/app/(routes)/ledgers/[id]/transaction-card.tsx b/src/app/(routes)/ledgers/[id]/transaction-card.tsx deleted file mode 100644 index 389de9d0..00000000 --- a/src/app/(routes)/ledgers/[id]/transaction-card.tsx +++ /dev/null @@ -1,24 +0,0 @@ -import { Card } from '@/components/card' -import { Skeleton } from '@/components/ui/skeleton' -import { ArrowUpRight } from 'lucide-react' - -export const TransactionCard = ({ - isLoading, - count -}: { - isLoading: boolean - count: number -}) => - isLoading ? ( - - ) : ( - - - - - ) diff --git a/src/app/(routes)/ledgers/[id]/transaction-status-card.tsx b/src/app/(routes)/ledgers/[id]/transaction-status-card.tsx deleted file mode 100644 index 95ca13cd..00000000 --- a/src/app/(routes)/ledgers/[id]/transaction-status-card.tsx +++ /dev/null @@ -1,23 +0,0 @@ -import { Card } from '@/components/card' -import { Skeleton } from '@/components/ui/skeleton' -import { BarChart } from 'lucide-react' - -export const TransactionStatusCard = ({ - isLoading, - chartData -}: { - isLoading: boolean - chartData: any -}) => - isLoading ? ( - - ) : ( - - - - - ) diff --git a/src/app/(routes)/ledgers/ledgers-data-table.tsx b/src/app/(routes)/ledgers/ledgers-data-table.tsx index 5a5581cc..4ab27b3a 100644 --- a/src/app/(routes)/ledgers/ledgers-data-table.tsx +++ b/src/app/(routes)/ledgers/ledgers-data-table.tsx @@ -1,5 +1,5 @@ import React from 'react' -import { IntlShape, useIntl } from 'react-intl' +import { useIntl } from 'react-intl' import { Table, TableBody, @@ -35,6 +35,7 @@ import Link from 'next/link' import { LedgerEntity } from '@/core/domain/entities/ledger-entity' import { LedgersSheet } from './ledgers-sheet' import { AssetsSheet } from './[id]/assets/assets-sheet' +import { EntityDataTable } from '@/components/entity-data-table' type LedgersTableProps = { ledgers: { items: LedgerEntity[] } @@ -218,7 +219,7 @@ export const LedgersDataTable: React.FC = ({ } return ( -
+ {isNil(ledgers?.items) || ledgers.items.length === 0 ? ( = ({ )} + + + {intl.formatMessage( + { + id: 'ledgers.showing', + defaultMessage: + 'Showing {count} {number, plural, =0 {ledgers} one {ledger} other {ledgers}}.' + }, + { + number: ledgers?.items?.length, + count: {ledgers?.items?.length} + } + )} + + + -
+ ) } diff --git a/src/app/(routes)/settings/organizations-tab-content.tsx b/src/app/(routes)/settings/organizations-tab-content.tsx index b772575b..a2d94ab9 100644 --- a/src/app/(routes)/settings/organizations-tab-content.tsx +++ b/src/app/(routes)/settings/organizations-tab-content.tsx @@ -31,6 +31,7 @@ import { useConfirmDialog } from '@/components/confirmation-dialog/use-confirm-d import ConfirmationDialog from '@/components/confirmation-dialog' import { Badge } from '@/components/ui/badge' import { OrganizationEntity } from '@/core/domain/entities/organization-entity' +import { EntityDataTable } from '@/components/entity-data-table' export const OrganizationsTabContent = () => { const intl = useIntl() @@ -115,110 +116,127 @@ export const OrganizationsTabContent = () => { )} - - {data?.items && data.items.length > 0 && ( - - - - - - {intl.formatMessage({ - id: 'common.id', - defaultMessage: 'ID' - })} - - - {intl.formatMessage({ - id: `entity.organization.legalName`, - defaultMessage: 'Legal Name' - })} - - - {intl.formatMessage({ - id: `entity.organization.doingBusinessAs`, - defaultMessage: 'Trade Name' - })} - - - {intl.formatMessage({ - id: `entity.organization.legalDocument`, - defaultMessage: 'Document' - })} - - - {intl.formatMessage({ - id: `entity.organization.status`, - defaultMessage: 'Status' - })} - - - {intl.formatMessage({ - id: 'common.actions', - defaultMessage: 'Actions' - })} - - - - - {data.items.map((organization) => ( - - {organization.id} - {organization.legalName} - {organization.doingBusinessAs} - {organization.legalDocument} - - - {organization.status.code === 'ACTIVE' - ? intl.formatMessage({ - id: 'common.active', - defaultMessage: 'Active' - }) - : intl.formatMessage({ - id: 'common.inactive', - defaultMessage: 'Inactive' - })} - - - - - - - - - handleEdit(organization)} - > - {intl.formatMessage({ - id: `common.edit`, - defaultMessage: 'Edit' - })} - - - handleDialogOpen(organization.id!)} - > - {intl.formatMessage({ - id: `common.delete`, - defaultMessage: 'Delete' - })} - - - - + + {data?.items && data.items.length > 0 && ( + +
+ + + + {intl.formatMessage({ + id: 'common.id', + defaultMessage: 'ID' + })} + + + {intl.formatMessage({ + id: `entity.organization.legalName`, + defaultMessage: 'Legal Name' + })} + + + {intl.formatMessage({ + id: `entity.organization.doingBusinessAs`, + defaultMessage: 'Trade Name' + })} + + + {intl.formatMessage({ + id: `entity.organization.legalDocument`, + defaultMessage: 'Document' + })} + + + {intl.formatMessage({ + id: `entity.organization.status`, + defaultMessage: 'Status' + })} + + + {intl.formatMessage({ + id: 'common.actions', + defaultMessage: 'Actions' + })} + - ))} - -
-
- )} + + + {data.items.map((organization) => ( + + {organization.id} + {organization.legalName} + {organization.doingBusinessAs} + {organization.legalDocument} + + + {organization.status.code === 'ACTIVE' + ? intl.formatMessage({ + id: 'common.active', + defaultMessage: 'Active' + }) + : intl.formatMessage({ + id: 'common.inactive', + defaultMessage: 'Inactive' + })} + + + + + + + + + handleEdit(organization)} + > + {intl.formatMessage({ + id: `common.edit`, + defaultMessage: 'Edit' + })} + + + handleDialogOpen(organization.id!)} + > + {intl.formatMessage({ + id: `common.delete`, + defaultMessage: 'Delete' + })} + + + + + + ))} + + + + )} + + + + {intl.formatMessage( + { + id: 'organizations.showing', + defaultMessage: + 'Showing {count} {number, plural, =0 {organizations} one {organization} other {organizations}}.' + }, + { + number: data?.items?.length, + count: {data?.items?.length} + } + )} + + +
) } diff --git a/src/client/ledgers.ts b/src/client/ledgers.ts index fe3b44b5..d26e4674 100644 --- a/src/client/ledgers.ts +++ b/src/client/ledgers.ts @@ -9,7 +9,8 @@ import { import { useMutation, UseMutationOptions, - useQuery + useQuery, + useQueryClient } from '@tanstack/react-query' type UseCreateLedgerProps = UseMutationOptions & { @@ -75,13 +76,22 @@ const useLedgerById = ({ const useUpdateLedger = ({ organizationId, ledgerId, + onSuccess, ...options }: UseUpdateLedgerProps) => { + const queryClient = useQueryClient() + return useMutation({ mutationKey: [organizationId, ledgerId], mutationFn: patchFetcher( `/api/organizations/${organizationId}/ledgers/${ledgerId}` ), + onSuccess: (...args) => { + queryClient.invalidateQueries({ + queryKey: ['ledger', organizationId, ledgerId] + }) + onSuccess?.(...args) + }, ...options }) } diff --git a/src/components/card/card-content.tsx b/src/components/card/card-content.tsx deleted file mode 100644 index 7674354a..00000000 --- a/src/components/card/card-content.tsx +++ /dev/null @@ -1,52 +0,0 @@ -'use client' - -import { cn } from '@/lib/utils' -import { CardContent } from '@/components/ui/card' -import { Input } from '@/components/ui/input' -import { zodResolver } from '@hookform/resolvers/zod' -import { useForm } from 'react-hook-form' -import { z } from 'zod' -import { useFormState } from '@/context/form-details-context' -import { Label } from '@/components/ui/label' -import { useIntl } from 'react-intl' - -const formSchema = z.object({ - name: z.string() -}) - -export const CustomCardContent = ({ data, text, className }: any) => { - const { updateFormData } = useFormState() - const intl = useIntl() - - const { register } = useForm>({ - resolver: zodResolver(formSchema), - defaultValues: data ? { name: data.name } : {} - }) - - const handleNameChange = (e: React.ChangeEvent) => { - const newName = e.target.value - updateFormData({ name: newName }) - } - - return ( - - {text && ( -

- {text} -

- )} - - {data && ( -
- - -
- )} -
- ) -} diff --git a/src/components/card/card-metadata.tsx b/src/components/card/card-metadata.tsx deleted file mode 100644 index 092f5330..00000000 --- a/src/components/card/card-metadata.tsx +++ /dev/null @@ -1,167 +0,0 @@ -import React, { useState } from 'react' -import { useForm, useFieldArray } from 'react-hook-form' -import { zodResolver } from '@hookform/resolvers/zod' -import { CardContent } from '@/components/ui/card' -import { Label } from '@/components/ui/label' -import { Input } from '@/components/ui/input' -import { Button } from '@/components/ui/button' -import { Plus, Trash } from 'lucide-react' -import { cn } from '@/lib/utils' -import { useFormState } from '@/context/form-details-context' -import { ILedgerType } from '@/types/ledgers-type' -import { metadata } from '@/schema/metadata' -import { MetadataValues } from '@/types/metadata-type' - -type Metadata = Record - -type CardMetadataProps = { - data: ILedgerType - resetFormTrigger?: boolean -} - -const convertToArray = (metadata: Metadata) => { - return Array.isArray(metadata) - ? metadata - : Object.entries(metadata || {}).map(([key, value]) => ({ - key, - value: value?.toString() || '' - })) -} - -const convertArrayToObject = (array: { key: string; value: string }[]) => { - if (array.length === 0) { - return null - } - - return array.reduce((acc: Record, item) => { - if (item.key && item.value) { - acc[item.key] = item.value - } - return acc - }, {}) -} - -export const CardMetadata = ({ data, resetFormTrigger }: CardMetadataProps) => { - const { updateFormData } = useFormState() - const { control, register, reset } = useForm({ - resolver: zodResolver(metadata), - defaultValues: { - metadata: convertToArray(data.metadata) - } - }) - - const { fields, append, remove } = useFieldArray({ - control, - name: 'metadata' - }) - - const [newMetadata, setNewMetadata] = useState({ key: '', value: '' }) - - const syncMetadataWithContext = (fieldsArray: MetadataValues) => { - const metadataObject = convertArrayToObject(fieldsArray) - updateFormData({ metadata: metadataObject }) - } - - const handleFieldChange = - (index: number, field: string) => - (e: React.ChangeEvent) => { - fields[index][field] = e.target.value - syncMetadataWithContext(fields) - } - - const handleNewMetadataChange = - (field: string) => (e: React.ChangeEvent) => { - setNewMetadata((prev) => ({ ...prev, [field]: e.target.value })) - } - - const handleAddMetadata = () => { - if (newMetadata.key && newMetadata.value) { - append(newMetadata) - syncMetadataWithContext([...fields, newMetadata]) - setNewMetadata({ key: '', value: '' }) - } - } - - const handleRemoveMetadata = (index: number) => { - const updatedFields = fields.filter((_, i) => i !== index) - remove(index) - syncMetadataWithContext(updatedFields) - } - - if (resetFormTrigger) { - reset({ - metadata: convertToArray(data.metadata) - }) - } - - return ( - -
-
-
- - -
- -
- - -
-
- - -
- - {fields.map((item, index) => ( -
-
- - - - -
-
- ))} -
- ) -} diff --git a/src/components/card/card-resources.tsx b/src/components/card/card-resources.tsx deleted file mode 100644 index fdb2297b..00000000 --- a/src/components/card/card-resources.tsx +++ /dev/null @@ -1,38 +0,0 @@ -'use client' - -import { ExternalLink, Github, LifeBuoy } from 'lucide-react' -import { Button } from '../ui/button' - -export const CardResources = () => { - return ( -
-
- - -
- -
- - -
- -
- - -
- -
- - -
-
- ) -} diff --git a/src/components/card/chart-card.tsx b/src/components/card/chart-card.tsx deleted file mode 100644 index b3674d3b..00000000 --- a/src/components/card/chart-card.tsx +++ /dev/null @@ -1,88 +0,0 @@ -'use client' - -import React from 'react' -import { Chart as ChartJS, ArcElement, Tooltip, Legend } from 'chart.js' -import { Doughnut } from 'react-chartjs-2' - -type ChartCardProps = { - data: { - labels: string[] - datasets: number[] - colors: string[] - } -} - -type LegendItemsProps = { - label: string - color: string -} - -const LegendItem = ({ label, color }: LegendItemsProps) => ( -
-
- {label} -
-) - -const CustomLegend = ({ labels, colors, datasets }: ChartCardProps['data']) => { - const total = datasets?.reduce((acc, dataset) => acc + dataset, 0) || 0 - - return ( -
-
- {labels.map((label, index) => ( - - ))} -
-
- {datasets.map((dataset, index) => { - const percentage = ((dataset / total) * 100).toFixed(0) - - return ( -
-

- {dataset} /{' '} - {percentage}% -

-
- ) - })} -
-
- ) -} - -ChartJS.register(ArcElement, Tooltip, Legend) - -export const ChartCard = ({ data }: ChartCardProps) => { - if (!data.datasets) { - return null - } - - return ( -
-
-
- -
-
- - -
- ) -} diff --git a/src/components/card/index.tsx b/src/components/card/index.tsx index d7a7d23d..736f72d3 100644 --- a/src/components/card/index.tsx +++ b/src/components/card/index.tsx @@ -1,15 +1,7 @@ -import { CustomCardContent } from './card-content' -import { CardMetadata } from './card-metadata' import { CustomCardHeader } from './card-header' import { CardRoot } from './card-root' -import { CardResources } from './card-resources' -import { ChartCard } from './chart-card' export const Card = { Root: CardRoot, - Header: CustomCardHeader, - Content: CustomCardContent, - Metadata: CardMetadata, - Resources: CardResources, - Chart: ChartCard + Header: CustomCardHeader } diff --git a/src/components/combobox.tsx b/src/components/combobox.tsx deleted file mode 100644 index 41bd747f..00000000 --- a/src/components/combobox.tsx +++ /dev/null @@ -1,75 +0,0 @@ -'use client' - -import * as React from 'react' -import { Check, ChevronsUpDown } from 'lucide-react' - -import { cn } from '@/lib/utils' -import { Button } from '@/components/ui/button' -import { - Command, - CommandEmpty, - CommandGroup, - CommandInput, - CommandItem -} from '@/components/ui/command' -import { - Popover, - PopoverContent, - PopoverTrigger -} from '@/components/ui/popover' - -const cloud = [ - { - value: 'aws', - label: 'AWS' - } -] - -export function Combobox() { - const [open, setOpen] = React.useState(false) - const [value, setValue] = React.useState('') - - return ( - - - - - - - - Nothing was found. - - {cloud.map((cloud) => ( - { - setValue(currentValue === value ? '' : currentValue) - setOpen(false) - }} - > - - {cloud.label} - - ))} - - - - - ) -} diff --git a/src/components/data-table.tsx b/src/components/data-table.tsx deleted file mode 100644 index cab1360d..00000000 --- a/src/components/data-table.tsx +++ /dev/null @@ -1,244 +0,0 @@ -'use client' - -import React, { useEffect } from 'react' -import { - ColumnDef, - flexRender, - getCoreRowModel, - getFilteredRowModel, - getPaginationRowModel, - useReactTable -} from '@tanstack/react-table' - -import { - Table, - TableBody, - TableCell, - TableHead, - TableHeader, - TableRow -} from '@/components/ui/table' -import { Button } from '@/components/ui/button' -import { ChevronLeft, ChevronRight, Search } from 'lucide-react' -import { cn } from '@/lib/utils' -import { - Select, - SelectContent, - SelectItem, - SelectTrigger, - SelectValue -} from './ui/select' -import { Checkbox } from '@/components/ui/checkbox' -import { InputWithIcon } from './ui/input-with-icon' -import { useIntl } from 'react-intl' - -interface DataTableProps { - columns: ColumnDef[] - pageSizeOptions?: number[] - data: TData[] - onSelectedRowsChange?: (selectedRows: TData[]) => void - enableRowSelection?: boolean -} - -export function DataTable({ - columns, - pageSizeOptions = [10, 50, 100], - data, - onSelectedRowsChange, - enableRowSelection = false -}: DataTableProps) { - const intl = useIntl() - const [columnFilters, setColumnFilters] = React.useState([]) - const [rowSelection, setRowSelection] = React.useState({}) - - const table = useReactTable({ - data, - columns, - getCoreRowModel: getCoreRowModel(), - getPaginationRowModel: getPaginationRowModel(), - getFilteredRowModel: getFilteredRowModel(), - onColumnFiltersChange: setColumnFilters, - onRowSelectionChange: setRowSelection, - state: { - columnFilters, - rowSelection - }, - enableRowSelection - }) - - useEffect(() => { - if (onSelectedRowsChange) { - const selectedRows = table - .getSelectedRowModel() - .rows.map((row) => row.original) - onSelectedRowsChange(selectedRows) - } - }, [rowSelection, onSelectedRowsChange, table]) - - return ( -
-
- - table.getColumn('name')?.setFilterValue(event.target.value) - } - className="w-full min-w-[300px]" - icon={} - iconPosition={'left'} - /> - - {data.length > 10 ? ( -
-

- Itens por página -

- -
- ) : null} -
- -
- - - {table.getHeaderGroups().map((headerGroup) => ( - - {enableRowSelection && ( - - - table.toggleAllRowsSelected(!!value) - } - aria-label="Select all" - /> - - )} - {headerGroup.headers.map((header) => ( - - {header.isPlaceholder - ? null - : flexRender( - header.column.columnDef.header, - header.getContext() - )} - - ))} - - ))} - - - {table.getRowModel().rows?.length ? ( - table.getRowModel().rows.map((row) => ( - - {enableRowSelection && ( - - row.toggleSelected(!!value)} - aria-label="Select row" - /> - - )} - {row.getVisibleCells().map((cell) => ( - - {flexRender( - cell.column.columnDef.cell, - cell.getContext() - )} - - ))} - - )) - ) : ( - - - No results. - - - )} - -
- -
-
-

- Mostrando{' '} - - {table.getFilteredRowModel().rows.length} - {' '} - de um total de {data.length}{' '} - Ledgers. -

-
- -
- - - -
-
-
-
- ) -} diff --git a/src/components/entity-data-table/entity-data-table.mdx b/src/components/entity-data-table/entity-data-table.mdx new file mode 100644 index 00000000..125d9f0f --- /dev/null +++ b/src/components/entity-data-table/entity-data-table.mdx @@ -0,0 +1,13 @@ +import { Meta, Controls, Primary, Canvas } from '@storybook/blocks' +import * as Story from './entity-data-table.stories' + + + +# EntityDataTable + +Component used to wrap Table and show auxiliary information. + + + + + diff --git a/src/components/entity-data-table/entity-data-table.stories.tsx b/src/components/entity-data-table/entity-data-table.stories.tsx new file mode 100644 index 00000000..653bca71 --- /dev/null +++ b/src/components/entity-data-table/entity-data-table.stories.tsx @@ -0,0 +1,61 @@ +import { Meta, StoryObj } from '@storybook/react' +import React from 'react' +import { EntityDataTable } from '.' +import { + TableHeader, + TableRow, + TableHead, + TableBody, + TableCell, + Table +} from '../ui/table' + +const meta: Meta> = { + title: 'Components/EntityDataTable', + component: EntityDataTable.Root, + argTypes: {} +} + +export default meta + +export const Primary: StoryObj> = { + render: (args) => ( + + + + + Name + Type + Code + Metadata + + + + + American Dolar + Coin + USD + 2 registers + + + Bitcoin + Cripto + BTC + - + + + Tether + Cripto + USDT + 4 registers + + +
+ + + Showing 3 items. + + +
+ ) +} diff --git a/src/components/entity-data-table/index.tsx b/src/components/entity-data-table/index.tsx new file mode 100644 index 00000000..b989f2b5 --- /dev/null +++ b/src/components/entity-data-table/index.tsx @@ -0,0 +1,34 @@ +import { cn } from '@/lib/utils' +import React from 'react' +import { Paper, PaperProps } from '../ui/paper' + +const EntityDataTableRoot = React.forwardRef( + (props) => +) +EntityDataTableRoot.displayName = 'EntityDataTable' + +const EntityDataTableFooter = React.forwardRef< + HTMLDivElement, + React.HTMLAttributes +>(({ className, ...props }, ref) => ( +
+)) +EntityDataTableFooter.displayName = 'EntityDataTableFooter' + +const EntityDataTableFooterText = React.forwardRef< + HTMLDivElement, + React.HTMLAttributes +>(({ className, ...props }, ref) => ( +

+)) +EntityDataTableFooterText.displayName = 'EntityDataTableFooterText' + +export const EntityDataTable = { + Root: EntityDataTableRoot, + Footer: EntityDataTableFooter, + FooterText: EntityDataTableFooterText +} diff --git a/src/components/loading-screen.tsx b/src/components/loading-screen.tsx index 35dbc4cb..c40bd657 100644 --- a/src/components/loading-screen.tsx +++ b/src/components/loading-screen.tsx @@ -2,7 +2,7 @@ import React from 'react' import Image from 'next/image' -import LoadingImage from '@/images/loading-wallpaper.jpg' +import LoadingImage from '@/images/loading-wallpaper.webp' import midazLoading from '@/animations/midaz-loading.json' import { Lottie } from '@/lib/lottie' diff --git a/src/components/ui/button/button.mdx b/src/components/ui/button/button.mdx index 9707f609..88f9ca82 100644 --- a/src/components/ui/button/button.mdx +++ b/src/components/ui/button/button.mdx @@ -31,13 +31,9 @@ This is a button component. -### With leading icon +### With Icons -### With leading icon at end - - - diff --git a/src/components/ui/button/button.stories.tsx b/src/components/ui/button/button.stories.tsx index 02744bb0..49f54d6e 100644 --- a/src/components/ui/button/button.stories.tsx +++ b/src/components/ui/button/button.stories.tsx @@ -70,14 +70,16 @@ export const WithIcon: StoryObj = { args: { children: 'Button' }, - render: (args) =>

+
+
+
+ ) } diff --git a/src/components/ui/button/index.tsx b/src/components/ui/button/index.tsx index 7f6cb442..bc4499b9 100644 --- a/src/components/ui/button/index.tsx +++ b/src/components/ui/button/index.tsx @@ -43,12 +43,21 @@ const buttonVariants = cva( const iconVariants = cva('', { variants: { position: { - default: 'ml-2', - end: 'absolute right-4' + start: 'mr-2', + end: 'ml-2', + 'far-end': 'absolute right-4' + }, + size: { + default: 'h-10', + sm: 'h-8', + lg: 'h-12', + icon: 'h-10', + link: 'h-6', + xl: 'h-14' } }, defaultVariants: { - position: 'default' + position: 'start' } }) @@ -56,8 +65,8 @@ export interface ButtonProps extends React.ButtonHTMLAttributes, VariantProps { asChild?: boolean - icon?: JSX.Element - iconPlacement?: 'end' + icon?: React.ReactNode + iconPlacement?: 'start' | 'end' | 'far-end' fullWidth?: boolean } @@ -69,13 +78,14 @@ const Button = React.forwardRef( size, asChild = false, icon, - iconPlacement, + iconPlacement = 'start', fullWidth, ...props }, ref ) => { const Comp = asChild ? Slot : 'button' + return ( ( ref={ref} {...props} > + {icon && iconPlacement === 'start' && ( + + {icon} + + )} {props.children} - {icon && ( + {icon && iconPlacement !== 'start' && ( {icon} diff --git a/src/components/ui/card/index.tsx b/src/components/ui/card/index.tsx index 5a473e36..b5470b7a 100644 --- a/src/components/ui/card/index.tsx +++ b/src/components/ui/card/index.tsx @@ -13,7 +13,7 @@ const Card = React.forwardRef<
(({ className, ...props }: CardProps, ref) => (
)) @@ -40,7 +40,7 @@ const CardTitle = React.forwardRef<

>(({ className, ...props }: CardProps, ref) => ( -
+
)) CardContent.displayName = 'CardContent' diff --git a/src/components/ui/collapsible/collapsible.mdx b/src/components/ui/collapsible/collapsible.mdx new file mode 100644 index 00000000..85c42d9c --- /dev/null +++ b/src/components/ui/collapsible/collapsible.mdx @@ -0,0 +1,16 @@ +import { Meta, Controls, Primary, Canvas } from '@storybook/blocks' +import * as Story from './collapsible.stories' + + + +# Collapsible + +An interactive component which expands/collapses a panel. \ +[Docs](https://www.radix-ui.com/primitives/docs/components/collapsible) + +### Primary + + + + + diff --git a/src/components/ui/collapsible/collapsible.stories.tsx b/src/components/ui/collapsible/collapsible.stories.tsx new file mode 100644 index 00000000..757ab736 --- /dev/null +++ b/src/components/ui/collapsible/collapsible.stories.tsx @@ -0,0 +1,50 @@ +import { Meta, StoryObj } from '@storybook/react' +import { Collapsible, CollapsibleContent, CollapsibleTrigger } from '.' +import React from 'react' +import { Button } from '../button' +import { ChevronsUpDown } from 'lucide-react' + +const meta: Meta> = { + title: 'Primitives/Collapsible', + component: Collapsible, + argTypes: {} +} + +export default meta + +export const Primary: StoryObj = { + render: () => { + const [isOpen, setIsOpen] = React.useState(false) + + return ( + +
+

+ @peduarte starred 3 repositories +

+ + + +
+
+ @radix-ui/primitives +
+ +
+ @radix-ui/colors +
+
+ @stitches/react +
+
+
+ ) + } +} diff --git a/src/components/ui/collapsible.tsx b/src/components/ui/collapsible/index.tsx similarity index 100% rename from src/components/ui/collapsible.tsx rename to src/components/ui/collapsible/index.tsx diff --git a/src/components/ui/combobox/combobox.mdx b/src/components/ui/combobox/combobox.mdx new file mode 100644 index 00000000..1835ca26 --- /dev/null +++ b/src/components/ui/combobox/combobox.mdx @@ -0,0 +1,16 @@ +import { Meta, Controls, Primary, Canvas } from '@storybook/blocks' +import * as Story from './combobox.stories' + + + +# Combobox + +Autocomplete input and command palette with a list of suggestions. \ +The Combobox is built using a composition of the [Popover](/docs/primitives-popover--docs) and the [Command](/docs/primitives-command--docs) components. + +### Primary + + + + + diff --git a/src/components/ui/combobox/combobox.stories.tsx b/src/components/ui/combobox/combobox.stories.tsx new file mode 100644 index 00000000..929b6f4f --- /dev/null +++ b/src/components/ui/combobox/combobox.stories.tsx @@ -0,0 +1,98 @@ +import { Meta, StoryObj } from '@storybook/react' +import { Popover, PopoverContent, PopoverTrigger } from '../popover' +import React from 'react' +import { Button } from '../button' +import { Check, ChevronsUpDown } from 'lucide-react' +import { + Command, + CommandEmpty, + CommandGroup, + CommandInput, + CommandItem, + CommandList +} from '../command' +import { cn } from '@/lib/utils' + +const meta: Meta = { + title: 'Primitives/Combobox', + component: Popover, + argTypes: {} +} + +export default meta + +const frameworks = [ + { + value: 'next.js', + label: 'Next.js' + }, + { + value: 'sveltekit', + label: 'SvelteKit' + }, + { + value: 'nuxt.js', + label: 'Nuxt.js' + }, + { + value: 'remix', + label: 'Remix' + }, + { + value: 'astro', + label: 'Astro' + } +] + +export const Primary: StoryObj = { + render: () => { + const [open, setOpen] = React.useState(false) + const [value, setValue] = React.useState('') + + return ( + + + + + + + + + No framework found. + + {frameworks.map((framework) => ( + { + setValue(currentValue === value ? '' : currentValue) + setOpen(false) + }} + > + {framework.label} + + + ))} + + + + + + ) + } +} diff --git a/src/components/ui/command/command.mdx b/src/components/ui/command/command.mdx new file mode 100644 index 00000000..f9b86ee8 --- /dev/null +++ b/src/components/ui/command/command.mdx @@ -0,0 +1,16 @@ +import { Meta, Controls, Primary, Canvas } from '@storybook/blocks' +import * as Story from './command.stories' + + + +# Command + +Fast, composable, unstyled command menu for React. \ +[Docs](https://cmdk.paco.me/) + +### Primary + + + + + diff --git a/src/components/ui/command/command.stories.tsx b/src/components/ui/command/command.stories.tsx new file mode 100644 index 00000000..1cf5f9ad --- /dev/null +++ b/src/components/ui/command/command.stories.tsx @@ -0,0 +1,70 @@ +import { Meta, StoryObj } from '@storybook/react' +import { + Command, + CommandEmpty, + CommandGroup, + CommandInput, + CommandItem, + CommandList, + CommandSeparator, + CommandShortcut +} from '.' +import { + Calendar, + Smile, + Calculator, + User, + CreditCard, + Settings +} from 'lucide-react' + +const meta: Meta = { + title: 'Primitives/Command', + component: Command, + argTypes: {} +} + +export default meta + +export const Primary: StoryObj = { + render: (args) => ( + + + + No results found. + + + + Calendar + + + + Search Emoji + + + + Calculator + + + + + + + Profile + ⌘P + + + + Billing + ⌘B + + + + Settings + ⌘S + + + + + ) +} diff --git a/src/components/ui/command.tsx b/src/components/ui/command/index.tsx similarity index 100% rename from src/components/ui/command.tsx rename to src/components/ui/command/index.tsx diff --git a/src/components/ui/paper/index.tsx b/src/components/ui/paper/index.tsx new file mode 100644 index 00000000..f75d1e47 --- /dev/null +++ b/src/components/ui/paper/index.tsx @@ -0,0 +1,14 @@ +import { cn } from '@/lib/utils' +import React from 'react' + +export type PaperProps = React.HTMLAttributes + +export const Paper = React.forwardRef( + ({ className, ...others }) => ( +
+ ) +) +Paper.displayName = 'Paper' diff --git a/src/components/ui/paper/paper.mdx b/src/components/ui/paper/paper.mdx new file mode 100644 index 00000000..75af5235 --- /dev/null +++ b/src/components/ui/paper/paper.mdx @@ -0,0 +1,15 @@ +import { Meta, Controls, Primary, Canvas } from '@storybook/blocks' +import * as Story from './paper.stories' + + + +# Paper + +Shows a piece of content with a little emphasis and shadow. + +### Primary + + + + + diff --git a/src/components/ui/paper/paper.stories.tsx b/src/components/ui/paper/paper.stories.tsx new file mode 100644 index 00000000..a8930ff9 --- /dev/null +++ b/src/components/ui/paper/paper.stories.tsx @@ -0,0 +1,26 @@ +import { Meta, StoryObj } from '@storybook/react' +import { Paper, PaperProps } from '.' + +const meta: Meta = { + title: 'Primitives/Paper', + component: Paper, + argTypes: {} +} + +export default meta + +export const Primary: StoryObj = { + args: { + className: 'p-4' + }, + render: (args) => ( + +

This is a Paper component!

+

+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi neque + dolor, tempus ac scelerisque sed, accumsan eget orci. Donec ac mauris + congue, mollis massa vel, sagittis libero. +

+
+ ) +} diff --git a/src/components/ui/popover/popover.mdx b/src/components/ui/popover/popover.mdx index cf9574be..3299eccc 100644 --- a/src/components/ui/popover/popover.mdx +++ b/src/components/ui/popover/popover.mdx @@ -5,7 +5,8 @@ import * as Story from './popover.stories' # Popover -Displays rich content in a portal, triggered by a button. +Displays rich content in a portal, triggered by a button. \ +[Docs](https://www.radix-ui.com/primitives/docs/components/popover) ### Primary diff --git a/src/components/ui/separator.tsx b/src/components/ui/separator/index.tsx similarity index 100% rename from src/components/ui/separator.tsx rename to src/components/ui/separator/index.tsx diff --git a/src/components/ui/separator/separator.mdx b/src/components/ui/separator/separator.mdx new file mode 100644 index 00000000..85363e8c --- /dev/null +++ b/src/components/ui/separator/separator.mdx @@ -0,0 +1,16 @@ +import { Meta, Controls, Primary, Canvas } from '@storybook/blocks' +import * as Story from './separator.stories' + + + +# Separator + +Visually or semantically separates content. \ +[Docs](https://www.radix-ui.com/primitives/docs/components/separator) + +### Primary + + + + + diff --git a/src/components/ui/separator/separator.stories.tsx b/src/components/ui/separator/separator.stories.tsx new file mode 100644 index 00000000..c5c9f8d9 --- /dev/null +++ b/src/components/ui/separator/separator.stories.tsx @@ -0,0 +1,31 @@ +import { Meta, StoryObj } from '@storybook/react' +import { Separator } from '.' + +const meta: Meta> = { + title: 'Primitives/Separator', + component: Separator, + argTypes: {} +} + +export default meta + +export const Primary: StoryObj = { + render: () => ( +
+
+

Radix Primitives

+

+ An open-source UI component library. +

+
+ +
+
Blog
+ +
Docs
+ +
Source
+
+
+ ) +} diff --git a/src/components/ui/skeleton.tsx b/src/components/ui/skeleton/index.tsx similarity index 100% rename from src/components/ui/skeleton.tsx rename to src/components/ui/skeleton/index.tsx diff --git a/src/components/ui/skeleton/skeleton.mdx b/src/components/ui/skeleton/skeleton.mdx new file mode 100644 index 00000000..bfefac92 --- /dev/null +++ b/src/components/ui/skeleton/skeleton.mdx @@ -0,0 +1,19 @@ +import { Meta, Controls, Primary, Canvas } from '@storybook/blocks' +import * as Story from './skeleton.stories' + + + +# Skeleton + +Use to show a placeholder while content is loading. + +### Primary + + + +### Example + + + + + diff --git a/src/components/ui/skeleton/skeleton.stories.tsx b/src/components/ui/skeleton/skeleton.stories.tsx new file mode 100644 index 00000000..6d93dd06 --- /dev/null +++ b/src/components/ui/skeleton/skeleton.stories.tsx @@ -0,0 +1,27 @@ +import { Meta, StoryObj } from '@storybook/react' +import { Skeleton } from '.' + +const meta: Meta> = { + title: 'Primitives/Skeleton', + component: Skeleton, + argTypes: {} +} + +export default meta + +export const Primary: StoryObj> = { + render: (args) => +} + +export const Example: StoryObj> = { + render: (args) => ( +
+ +
+ + + +
+
+ ) +} diff --git a/src/components/ui/table/index.tsx b/src/components/ui/table/index.tsx index 4b1996a4..ec3a8721 100644 --- a/src/components/ui/table/index.tsx +++ b/src/components/ui/table/index.tsx @@ -6,10 +6,7 @@ const TableContainer = React.forwardRef< HTMLDivElement, React.HTMLAttributes >(({ className, ...props }, ref) => ( -
+
)) TableContainer.displayName = 'TableContainer' diff --git a/src/components/ui/tooltip/index.tsx b/src/components/ui/tooltip/index.tsx index af1b6f3e..5704b7a0 100644 --- a/src/components/ui/tooltip/index.tsx +++ b/src/components/ui/tooltip/index.tsx @@ -14,16 +14,19 @@ const TooltipTrigger = TooltipPrimitive.Trigger const TooltipContent = React.forwardRef< React.ElementRef, React.ComponentPropsWithoutRef ->(({ className, sideOffset = 4, ...props }, ref) => ( +>(({ className, sideOffset = 4, children, ...props }, ref) => ( + > + {children} + + )) TooltipContent.displayName = TooltipPrimitive.Content.displayName diff --git a/src/components/ui/tooltip/tooltip.stories.tsx b/src/components/ui/tooltip/tooltip.stories.tsx index be57da36..2e3b0da4 100644 --- a/src/components/ui/tooltip/tooltip.stories.tsx +++ b/src/components/ui/tooltip/tooltip.stories.tsx @@ -16,11 +16,11 @@ export const Primary: StoryObj = { - + - -

Add to library

-
+ Add to library
) @@ -34,7 +34,9 @@ export const WithoutDelay: StoryObj = { - +

Add to library

@@ -46,7 +48,7 @@ export const WithoutDelay: StoryObj = { export const WithSides: StoryObj = { render: (args) => ( -
+
diff --git a/src/core/infrastructure/observability/instrumentation-config.ts b/src/core/infrastructure/observability/instrumentation-config.ts new file mode 100644 index 00000000..27b8980d --- /dev/null +++ b/src/core/infrastructure/observability/instrumentation-config.ts @@ -0,0 +1,35 @@ +import { Resource } from '@opentelemetry/resources' +import { + MeterProvider, + PeriodicExportingMetricReader +} from '@opentelemetry/sdk-metrics' +import { OTLPMetricExporter } from '@opentelemetry/exporter-metrics-otlp-http' +import { registerInstrumentations } from '@opentelemetry/instrumentation' +import { HttpInstrumentation } from '@opentelemetry/instrumentation-http' +import { RuntimeNodeInstrumentation } from '@opentelemetry/instrumentation-runtime-node' +import { metrics } from '@opentelemetry/api' + +const metricExporter = new OTLPMetricExporter({ + url: process.env.OTEL_URL +}) + +const metricReader = new PeriodicExportingMetricReader({ + exporter: metricExporter, + exportIntervalMillis: 5000 +}) + +const meterProvider = new MeterProvider({ + resource: new Resource({ + 'service.name': 'midaz-console' + }), + readers: [metricReader] +}) + +metrics.setGlobalMeterProvider(meterProvider) + +registerInstrumentations({ + instrumentations: [ + new HttpInstrumentation(), + new RuntimeNodeInstrumentation() + ] +}) diff --git a/src/instrumentation.ts b/src/instrumentation.ts new file mode 100644 index 00000000..cad9de5e --- /dev/null +++ b/src/instrumentation.ts @@ -0,0 +1,5 @@ +export async function register() { + if (process.env.NEXT_RUNTIME === 'nodejs') { + await import('./core/infrastructure/observability/instrumentation-config') + } +} diff --git a/src/schema/ledger.ts b/src/schema/ledger.ts index b4b753d2..97b2a990 100644 --- a/src/schema/ledger.ts +++ b/src/schema/ledger.ts @@ -1,6 +1,6 @@ import { z } from 'zod' import { metadata } from './metadata' -const name = z.string().min(1) +const name = z.string().min(1).max(255) export const ledger = { name, metadata }