From e0ed177f72e355b1a301a1c0c3c14a6a9221e76c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Rodriguez?= Date: Sat, 7 Sep 2024 00:20:10 +0200 Subject: [PATCH 1/6] chore: update iot-platform packages --- apps/api/lib/IoTApplication.ts | 13 +- apps/api/lib/modules/devices/DevicesModule.ts | 2 +- .../lib/modules/measures/MeasuresModule.ts | 3 +- .../lib/modules/workflows/WorkflowsModule.ts | 4 +- apps/api/package.json | 6 +- apps/web/package.json | 4 +- apps/web/src/components/shared/Loader.vue | 19 - apps/web/tailwind.config.js | 2 +- package-lock.json | 4373 ++++++++--------- package.json | 2 +- 10 files changed, 2114 insertions(+), 2314 deletions(-) delete mode 100644 apps/web/src/components/shared/Loader.vue diff --git a/apps/api/lib/IoTApplication.ts b/apps/api/lib/IoTApplication.ts index abd48f7..48976e1 100644 --- a/apps/api/lib/IoTApplication.ts +++ b/apps/api/lib/IoTApplication.ts @@ -1,12 +1,7 @@ -import { - registerKIoTP, - EventIoTPlatformErrorSave, - Module as KIoTPModule, -} from '@kuzzleio/iot-platform-backend'; +import { registerKIoTP, EventIoTPlatformErrorSave, Module } from '@kuzzleio/iot-platform-backend'; import { Backend } from 'kuzzle'; import { registerExempleTenant } from './modules/tenant_exemple'; -import { Module } from './modules/shared'; import { DevicesModule } from './modules/devices'; import { MeasuresModule } from './modules/measures/MeasuresModule'; import { WorkflowsModule } from './modules/workflows'; @@ -16,8 +11,6 @@ export type IoTApplicationConfig = { }; export class IoTApplication extends Backend { - private readonly kiotpModules: KIoTPModule[] = []; - private modules: Module[] = []; get appConfig() { @@ -33,7 +26,7 @@ export class IoTApplication extends Backend { // this.config.content.plugins['kuzzle-plugin-logger'].services.stdout.level = 'debug'; - this.kiotpModules = registerKIoTP(this); + this.modules = registerKIoTP(this, false); // Register custom modules here this.modules.push(new MeasuresModule(this)); // Register the measures models for your application @@ -56,7 +49,7 @@ export class IoTApplication extends Backend { async start() { await super.start(); - for (const module of this.kiotpModules) { + for (const module of this.modules) { await module.init(); } diff --git a/apps/api/lib/modules/devices/DevicesModule.ts b/apps/api/lib/modules/devices/DevicesModule.ts index 45f4fea..99ea060 100644 --- a/apps/api/lib/modules/devices/DevicesModule.ts +++ b/apps/api/lib/modules/devices/DevicesModule.ts @@ -1,6 +1,6 @@ +import { Module } from '@kuzzleio/iot-platform-backend'; import { DeviceManagerPlugin } from 'kuzzle-device-manager'; -import { Module } from '../shared'; import { SampleDeviceDefinition } from './SampleDevice'; export class DevicesModule extends Module { register(): void { diff --git a/apps/api/lib/modules/measures/MeasuresModule.ts b/apps/api/lib/modules/measures/MeasuresModule.ts index 510ed14..9997309 100644 --- a/apps/api/lib/modules/measures/MeasuresModule.ts +++ b/apps/api/lib/modules/measures/MeasuresModule.ts @@ -1,5 +1,6 @@ -import { Module } from '../shared'; +import { Module } from '@kuzzleio/iot-platform-backend'; import { DeviceManagerPlugin } from 'kuzzle-device-manager'; + import { sampleMeasureDefinition } from './SampleMeasurement'; export class MeasuresModule extends Module { diff --git a/apps/api/lib/modules/workflows/WorkflowsModule.ts b/apps/api/lib/modules/workflows/WorkflowsModule.ts index e28aef7..ebf0d7c 100644 --- a/apps/api/lib/modules/workflows/WorkflowsModule.ts +++ b/apps/api/lib/modules/workflows/WorkflowsModule.ts @@ -1,11 +1,11 @@ +import { Module } from '@kuzzleio/iot-platform-backend'; import { WorkflowsPlugin } from '@kuzzleio/plugin-workflows'; + import { SampleLogTask } from './SampleLogTask'; import { sampleEventWorkflow } from './SampleEventWorkflow'; import { sampleNotificationWorkflow } from './SampleNotificationWorkflow'; import { sampleScheduledWorkflow } from './SampleScheduledWorkflow'; -import { Module } from '../shared'; - export class WorkflowsModule extends Module { register(): void { const workflowManager = this.app.plugin.get('workflows'); diff --git a/apps/api/package.json b/apps/api/package.json index b8ed054..0fc33cf 100644 --- a/apps/api/package.json +++ b/apps/api/package.json @@ -19,11 +19,12 @@ "main": "app.ts", "license": "Apache-2.0", "dependencies": { - "@kuzzleio/iot-platform-backend": "3.1.0-beta.52", + "@kuzzleio/iot-platform-backend": "3.1.0-beta.61", "kuzzle": "^2", "lodash": "^4.17.21" }, "devDependencies": { + "@kuzzleio/plugin-multi-tenancy": "*", "@types/jest": "^29.4.0", "@types/lodash": "^4.14.191", "@types/node": "^18.18.13", @@ -33,8 +34,7 @@ "kuzzle-sdk": "^7.11.*", "ts-jest": "^29.1.2", "ts-node": "^10.9.1", - "typescript": "5.4.*", - "@kuzzleio/plugin-multi-tenancy": "*" + "typescript": "5.4.*" }, "files": [ "dist/**/" diff --git a/apps/web/package.json b/apps/web/package.json index a46c153..42d129a 100644 --- a/apps/web/package.json +++ b/apps/web/package.json @@ -15,7 +15,7 @@ }, "dependencies": { "@fortawesome/fontawesome-free": "6.2.*", - "@kuzzleio/iot-platform-frontend": "3.1.0-beta.52", + "@kuzzleio/iot-platform-frontend": "3.1.0-beta.61", "@vuelidate/core": "2.0.*", "kuzzle-device-manager-types": "2.4.0-beta.16", "lodash": "^4.17.21", @@ -29,7 +29,7 @@ "eslint-plugin-vue-kuzzle": "^0.0.12", "sass": "1.63.*", "tailwindcss": "^3.4.1", - "typescript": "5.1.*", + "typescript": "5.4.*", "vite": "^4.4.6", "vue-tsc": "^1.8.10" } diff --git a/apps/web/src/components/shared/Loader.vue b/apps/web/src/components/shared/Loader.vue deleted file mode 100644 index d57ee3e..0000000 --- a/apps/web/src/components/shared/Loader.vue +++ /dev/null @@ -1,19 +0,0 @@ - - - diff --git a/apps/web/tailwind.config.js b/apps/web/tailwind.config.js index 230c043..7750cac 100644 --- a/apps/web/tailwind.config.js +++ b/apps/web/tailwind.config.js @@ -4,7 +4,7 @@ import config from '@kuzzleio/iot-platform-frontend/tailwind.config.js'; export default { ...config, content: [ - require.resolve('@kuzzleio/iot-platform-frontend/dist/iot-platform-frontend.es.js'), + require.resolve('@kuzzleio/iot-platform-frontend/dist/iot-platform-frontend.es.js'), './src/**/*.{vue,js,ts,jsx,tsx}', ], }; diff --git a/package-lock.json b/package-lock.json index a231e11..ecebc56 100644 --- a/package-lock.json +++ b/package-lock.json @@ -16,7 +16,7 @@ "eslint-plugin-prettier": "^5.0.0", "prettier": "^3.2.5", "turbo": "latest", - "typescript": "5.1.*" + "typescript": "5.4.*" }, "engines": { "node": ">=18.17.1" @@ -27,7 +27,7 @@ "version": "0.0.0", "license": "Apache-2.0", "dependencies": { - "@kuzzleio/iot-platform-backend": "3.1.0-beta.52", + "@kuzzleio/iot-platform-backend": "3.1.0-beta.61", "kuzzle": "^2", "lodash": "^4.17.21" }, @@ -45,89 +45,12 @@ "typescript": "5.4.*" } }, - "apps/api/node_modules/@kuzzleio/iot-platform-backend": { - "version": "3.1.0-beta.52", - "resolved": "https://packages.paas.kuzzle.io/@kuzzleio%2fiot-platform-backend/-/iot-platform-backend-3.1.0-beta.52.tgz", - "integrity": "sha512-6FA2Vo1mquPJRjzGzNXrME326u6h8O056avF4fS2BisQUTMb6pF52oHs42/Z3G4fXr2645J/qyF8iorXSE9j4g==", - "dependencies": { - "@kuzzleio/kuzzle-plugin-keycloak": "^1.2.1", - "@kuzzleio/plugin-license-manager": "1.0.0-beta.7", - "@kuzzleio/plugin-multi-tenancy": "1.4.3", - "@kuzzleio/plugin-workflows": "^1.1.0", - "axios": "^0.26.1", - "kuzzle-device-manager": "2.4.0-beta.16", - "kuzzle-plugin-commons": "^1.2.0", - "kuzzle-plugin-hermes-messenger": "^1.0.0", - "lodash": "^4.17.21", - "node-fetch": "^2.7.0" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "kuzzle": ">=2.30.0", - "kuzzle-sdk": "^7.11.3", - "typescript": ">= 5.1" - } - }, - "apps/api/node_modules/@kuzzleio/iot-platform-backend/node_modules/@kuzzleio/plugin-license-manager": { - "version": "1.0.0-beta.7", - "resolved": "https://packages.paas.kuzzle.io/@kuzzleio%2fplugin-license-manager/-/90daf123503fa859d2c0bba8bb351e0d73c0dd00", - "integrity": "sha512-KAMgpQYu4GJmZ6rKTV/2SFNV9uXVzvYDl1neJGrVgQtWWKkMf+s7H7FqC9mbF44cafEeXJDZUpCjU2WX/SFnkw==", - "dependencies": { - "kuzzle-plugin-commons": "^1.2.0" - }, - "peerDependencies": { - "kuzzle": ">= 2.30.0", - "kuzzle-sdk": ">= 7.11", - "typescript": ">= 5.4" - } - }, - "apps/api/node_modules/@kuzzleio/plugin-multi-tenancy": { - "version": "1.4.3", - "resolved": "https://packages.paas.kuzzle.io/@kuzzleio%2fplugin-multi-tenancy/-/0f14f7e2124589760c23b5cd35f5c1f4c06a50e4", - "integrity": "sha512-z2Je4bHN943YatgsL1dukS9hHqWiyszwc/iisppFLNb/xZHzheLkiPaehttvv4bJUhuAPjFZo9/VeWqeyEtrzg==", - "dependencies": { - "bluebird": "^3.7.2", - "kuzzle-plugin-commons": "^1.2.0", - "lodash": "^4.17.21" - }, - "peerDependencies": { - "kuzzle": ">= 2.30.0", - "kuzzle-sdk": ">= 7.11.3", - "typescript": ">= 5.4" - } - }, - "apps/api/node_modules/kuzzle-sdk": { - "version": "7.11.3", - "resolved": "https://registry.npmjs.org/kuzzle-sdk/-/kuzzle-sdk-7.11.3.tgz", - "integrity": "sha512-YHPSE99GRg1GT9UD5hOuJnt5vc/Gqmp705id4sCjyRJNRaq9uf3j3OzM6bvD+4YPZB7LTim53z66CFQP7IV7Qg==", - "dependencies": { - "min-req-promise": "^1.0.1", - "ws": "^8.13.0" - }, - "engines": { - "node": ">= 10.13.0" - } - }, - "apps/api/node_modules/typescript": { - "version": "5.4.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.5.tgz", - "integrity": "sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==", - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=14.17" - } - }, "apps/web": { "name": "template-iot-web", "version": "0.0.0", "dependencies": { "@fortawesome/fontawesome-free": "6.2.*", - "@kuzzleio/iot-platform-frontend": "3.1.0-beta.52", + "@kuzzleio/iot-platform-frontend": "3.1.0-beta.61", "@vuelidate/core": "2.0.*", "kuzzle-device-manager-types": "2.4.0-beta.16", "lodash": "^4.17.21", @@ -141,112 +64,11 @@ "eslint-plugin-vue-kuzzle": "^0.0.12", "sass": "1.63.*", "tailwindcss": "^3.4.1", - "typescript": "5.1.*", + "typescript": "5.4.*", "vite": "^4.4.6", "vue-tsc": "^1.8.10" } }, - "apps/web/node_modules/@fortawesome/fontawesome-common-types": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-6.5.2.tgz", - "integrity": "sha512-gBxPg3aVO6J0kpfHNILc+NMhXnqHumFxOmjYCFfOiLZfwhnnfhtsdA2hfJlDnj+8PjAs6kKQPenOTKj3Rf7zHw==", - "hasInstallScript": true, - "peer": true, - "engines": { - "node": ">=6" - } - }, - "apps/web/node_modules/@fortawesome/fontawesome-svg-core": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-svg-core/-/fontawesome-svg-core-6.5.2.tgz", - "integrity": "sha512-5CdaCBGl8Rh9ohNdxeeTMxIj8oc3KNBgIeLMvJosBMdslK/UnEB8rzyDRrbKdL1kDweqBPo4GT9wvnakHWucZw==", - "hasInstallScript": true, - "peer": true, - "dependencies": { - "@fortawesome/fontawesome-common-types": "6.5.2" - }, - "engines": { - "node": ">=6" - } - }, - "apps/web/node_modules/@fortawesome/free-solid-svg-icons": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/@fortawesome/free-solid-svg-icons/-/free-solid-svg-icons-6.5.2.tgz", - "integrity": "sha512-QWFZYXFE7O1Gr1dTIp+D6UcFUF0qElOnZptpi7PBUMylJh+vFmIedVe1Ir6RM1t2tEQLLSV1k7bR4o92M+uqlw==", - "hasInstallScript": true, - "peer": true, - "dependencies": { - "@fortawesome/fontawesome-common-types": "6.5.2" - }, - "engines": { - "node": ">=6" - } - }, - "apps/web/node_modules/@kuzzleio/iot-platform-frontend": { - "version": "3.1.0-beta.52", - "resolved": "https://packages.paas.kuzzle.io/@kuzzleio%2fiot-platform-frontend/-/iot-platform-frontend-3.1.0-beta.52.tgz", - "integrity": "sha512-RRimT5z/JxpyhPfWBueymxL0G+bdCPz8/4SS9ICMF6XXpgiXb+0g1c5viPg6ZREQZxanakP/JvFVWIEPtaSwyA==", - "dependencies": { - "@floating-ui/dom": "^1.5.1", - "@vuelidate/core": "^2.0.3", - "@vuelidate/validators": "^2.0.3", - "ace-builds": "^1.23.4", - "chart.js": "^4.3.0", - "chartjs-plugin-annotation": "^3.0.1", - "chartjs-plugin-datalabels": "^2.2.0", - "chartjs-plugin-zoom": "^2.0.1", - "dayjs": "^1.10.8", - "dompurify": "^3.1.0", - "lodash": "^4.17.21", - "marked": "^12.0.0", - "marked-admonition-extension": "^0.0.4", - "marked-emoji": "^1.4.0", - "oidc-client-ts": "^2.3.0", - "vue-chartjs": "^5.2.0", - "vue-color": "^2.8.1", - "vue-datepicker-ui": "^2.3.0", - "vue-form-generator": "^2.3.4", - "vue-grid-layout": "^2.4.0", - "vue-multiselect": "^2.1.7", - "vue2-daterange-picker": "^0.6.8", - "vue2-leaflet": "^2.7.1", - "vue2-leaflet-markercluster": "^3.1.0" - }, - "peerDependencies": { - "@fortawesome/fontawesome-svg-core": "6.5.*", - "@fortawesome/free-regular-svg-icons": "6.5.*", - "@fortawesome/free-solid-svg-icons": "6.5.*", - "@fortawesome/vue-fontawesome": "2.0.*", - "bootstrap-vue": "2.23.*", - "leaflet": "^1.3.4", - "typescript": ">= 5.1", - "vue": "2.7.*", - "vue-i18n": "8.28.*", - "vue-plugin-kuzzle": ">= 4.5.2", - "vue-router": "3.6.*", - "vuex": "3.6.*" - } - }, - "apps/web/node_modules/marked": { - "version": "12.0.2", - "resolved": "https://registry.npmjs.org/marked/-/marked-12.0.2.tgz", - "integrity": "sha512-qXUm7e/YKFoqFPYPa3Ukg9xlI5cyAtGmyEIzMfW//m6kXwCy2Ps9DYf5ioijFKQ8qyuscrHoY04iJGctu2Kg0Q==", - "bin": { - "marked": "bin/marked.js" - }, - "engines": { - "node": ">= 18" - } - }, - "node_modules/@aashutoshrathi/word-wrap": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", - "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/@alloc/quick-lru": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz", @@ -260,25 +82,25 @@ } }, "node_modules/@ampproject/remapping": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz", - "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", + "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", "dev": true, "dependencies": { - "@jridgewell/gen-mapping": "^0.3.0", - "@jridgewell/trace-mapping": "^0.3.9" + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" }, "engines": { "node": ">=6.0.0" } }, "node_modules/@babel/code-frame": { - "version": "7.24.2", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.2.tgz", - "integrity": "sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.7.tgz", + "integrity": "sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==", "dev": true, "dependencies": { - "@babel/highlight": "^7.24.2", + "@babel/highlight": "^7.24.7", "picocolors": "^1.0.0" }, "engines": { @@ -286,30 +108,30 @@ } }, "node_modules/@babel/compat-data": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.22.20.tgz", - "integrity": "sha512-BQYjKbpXjoXwFW5jGqiizJQQT/aC7pFm9Ok1OWssonuguICi264lbgMzRp2ZMmRSlfkX6DsWDDcsrctK8Rwfiw==", + "version": "7.25.4", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.25.4.tgz", + "integrity": "sha512-+LGRog6RAsCJrrrg/IO6LGmpphNe5DiK30dGjCoxxeGv49B10/3XYGxPsAwrDlMFcFEvdAUavDT8r9k/hSyQqQ==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/core": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.0.tgz", - "integrity": "sha512-97z/ju/Jy1rZmDxybphrBuI+jtJjFVoz7Mr9yUQVVVi+DNZE333uFQeMOqcCIy1x3WYBIbWftUSLmbNXNT7qFQ==", + "version": "7.25.2", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.25.2.tgz", + "integrity": "sha512-BBt3opiCOxUr9euZ5/ro/Xv8/V7yJ5bjYMqG/C1YAo8MIKAnumZalCN+msbci3Pigy4lIQfPUpfMM27HMGaYEA==", "dev": true, "dependencies": { "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.22.13", - "@babel/generator": "^7.23.0", - "@babel/helper-compilation-targets": "^7.22.15", - "@babel/helper-module-transforms": "^7.23.0", - "@babel/helpers": "^7.23.0", - "@babel/parser": "^7.23.0", - "@babel/template": "^7.22.15", - "@babel/traverse": "^7.23.0", - "@babel/types": "^7.23.0", + "@babel/code-frame": "^7.24.7", + "@babel/generator": "^7.25.0", + "@babel/helper-compilation-targets": "^7.25.2", + "@babel/helper-module-transforms": "^7.25.2", + "@babel/helpers": "^7.25.0", + "@babel/parser": "^7.25.0", + "@babel/template": "^7.25.0", + "@babel/traverse": "^7.25.2", + "@babel/types": "^7.25.2", "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -334,12 +156,12 @@ } }, "node_modules/@babel/generator": { - "version": "7.24.5", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.24.5.tgz", - "integrity": "sha512-x32i4hEXvr+iI0NEoEfDKzlemF8AmtOP8CcrRaEcpzysWuoEb1KknpcvMsHKPONoKZiDuItklgWhB18xEhr9PA==", + "version": "7.25.6", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.25.6.tgz", + "integrity": "sha512-VPC82gr1seXOpkjAAKoLhP50vx4vGNlF4msF64dSFq1P8RfB+QAuJWGHPXXPc8QyfVWwwB/TNNU4+ayZmHNbZw==", "dev": true, "dependencies": { - "@babel/types": "^7.24.5", + "@babel/types": "^7.25.6", "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.25", "jsesc": "^2.5.1" @@ -349,14 +171,14 @@ } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.15.tgz", - "integrity": "sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw==", + "version": "7.25.2", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.2.tgz", + "integrity": "sha512-U2U5LsSaZ7TAt3cfaymQ8WHh0pxvdHoEk6HVpaexxixjyEquMh0L0YNJNM6CTGKMXV1iksi0iZkGw4AcFkPaaw==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.22.9", - "@babel/helper-validator-option": "^7.22.15", - "browserslist": "^4.21.9", + "@babel/compat-data": "^7.25.2", + "@babel/helper-validator-option": "^7.24.8", + "browserslist": "^4.23.1", "lru-cache": "^5.1.1", "semver": "^6.3.1" }, @@ -364,15 +186,6 @@ "node": ">=6.9.0" } }, - "node_modules/@babel/helper-compilation-targets/node_modules/lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "dev": true, - "dependencies": { - "yallist": "^3.0.2" - } - }, "node_modules/@babel/helper-compilation-targets/node_modules/semver": { "version": "6.3.1", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", @@ -382,69 +195,29 @@ "semver": "bin/semver.js" } }, - "node_modules/@babel/helper-compilation-targets/node_modules/yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true - }, - "node_modules/@babel/helper-environment-visitor": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", - "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-function-name": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", - "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", - "dev": true, - "dependencies": { - "@babel/template": "^7.22.15", - "@babel/types": "^7.23.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-hoist-variables": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", - "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", - "dev": true, - "dependencies": { - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/helper-module-imports": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz", - "integrity": "sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.24.7.tgz", + "integrity": "sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==", "dev": true, "dependencies": { - "@babel/types": "^7.22.15" + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.0.tgz", - "integrity": "sha512-WhDWw1tdrlT0gMgUJSlX0IQvoO1eN279zrAUbVB+KpV2c3Tylz8+GnKOLllCS6Z/iZQEyVYxhZVUdPTqs2YYPw==", + "version": "7.25.2", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.25.2.tgz", + "integrity": "sha512-BjyRAbix6j/wv83ftcVJmBt72QtHI56C7JXZoG2xATiLpmoC7dpd8WnkikExHDVPpi/3qCmO6WY1EaXOluiecQ==", "dev": true, "dependencies": { - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-module-imports": "^7.22.15", - "@babel/helper-simple-access": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/helper-validator-identifier": "^7.22.20" + "@babel/helper-module-imports": "^7.24.7", + "@babel/helper-simple-access": "^7.24.7", + "@babel/helper-validator-identifier": "^7.24.7", + "@babel/traverse": "^7.25.2" }, "engines": { "node": ">=6.9.0" @@ -454,86 +227,72 @@ } }, "node_modules/@babel/helper-plugin-utils": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz", - "integrity": "sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==", + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.8.tgz", + "integrity": "sha512-FFWx5142D8h2Mgr/iPVGH5G7w6jDn4jUSpZTyDnQO0Yn7Ks2Kuz6Pci8H6MPCoUJegd/UZQ3tAvfLCxQSnWWwg==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-simple-access": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz", - "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==", - "dev": true, - "dependencies": { - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-split-export-declaration": { - "version": "7.24.5", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.5.tgz", - "integrity": "sha512-5CHncttXohrHk8GWOFCcCl4oRD9fKosWlIRgWm4ql9VYioKm52Mk2xsmoohvm7f3JoiLSM5ZgJuRaf5QZZYd3Q==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.24.7.tgz", + "integrity": "sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg==", "dev": true, "dependencies": { - "@babel/types": "^7.24.5" + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-string-parser": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.1.tgz", - "integrity": "sha512-2ofRCjnnA9y+wk8b9IAREroeUP02KHp431N2mhKniy2yKIDKpbrHv9eXwm8cBeWQYcJmzv5qKCu65P47eCF7CQ==", - "dev": true, + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.8.tgz", + "integrity": "sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ==", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.24.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.5.tgz", - "integrity": "sha512-3q93SSKX2TWCG30M2G2kwaKeTYgEUp5Snjuj8qm729SObL6nbtUldAi37qbxkD5gg3xnBio+f9nqpSepGZMvxA==", - "dev": true, + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz", + "integrity": "sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-option": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.22.15.tgz", - "integrity": "sha512-bMn7RmyFjY/mdECUbgn9eoSY4vqvacUnS9i9vGAGttgFWesO6B4CYWA7XlpbWgBt71iv/hfbPlynohStqnu5hA==", + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.24.8.tgz", + "integrity": "sha512-xb8t9tD1MHLungh/AIoWYN+gVHaB9kwlu8gffXGSt3FFEIT7RjS+xWbc2vUD1UTZdIpKj/ab3rdqJ7ufngyi2Q==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helpers": { - "version": "7.23.1", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.1.tgz", - "integrity": "sha512-chNpneuK18yW5Oxsr+t553UZzzAs3aZnFm4bxhebsNTeshrC95yA7l5yl7GBAG+JG1rF0F7zzD2EixK9mWSDoA==", + "version": "7.25.6", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.25.6.tgz", + "integrity": "sha512-Xg0tn4HcfTijTwfDwYlvVCl43V6h4KyVVX2aEm4qdO/PC6L2YvzLHFdmxhoeSA3eslcE6+ZVXHgWwopXYLNq4Q==", "dev": true, "dependencies": { - "@babel/template": "^7.22.15", - "@babel/traverse": "^7.23.0", - "@babel/types": "^7.23.0" + "@babel/template": "^7.25.0", + "@babel/types": "^7.25.6" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/highlight": { - "version": "7.24.5", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.5.tgz", - "integrity": "sha512-8lLmua6AVh/8SLJRRVD6V8p73Hir9w5mJrhE+IPpILG31KKlI9iz5zmBYKcWPS59qSfgP9RaSBQSHHE81WKuEw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.7.tgz", + "integrity": "sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==", "dev": true, "dependencies": { - "@babel/helper-validator-identifier": "^7.24.5", + "@babel/helper-validator-identifier": "^7.24.7", "chalk": "^2.4.2", "js-tokens": "^4.0.0", "picocolors": "^1.0.0" @@ -614,9 +373,12 @@ } }, "node_modules/@babel/parser": { - "version": "7.24.5", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.5.tgz", - "integrity": "sha512-EOv5IK8arwh3LI47dz1b0tKUb/1uhHAnHJOrjgtQMIpu1uXd9mlFrJg9IUgGUgZ41Ch0K8REPTYpO7B76b4vJg==", + "version": "7.25.6", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.25.6.tgz", + "integrity": "sha512-trGdfBdbD0l1ZPmcJ83eNxB9rbEax4ALFTF7fN386TMYbeCQbyme5cOEXQhbGXKebwGaB/J52w1mrklMcbgy6Q==", + "dependencies": { + "@babel/types": "^7.25.6" + }, "bin": { "parser": "bin/babel-parser.js" }, @@ -660,6 +422,36 @@ "@babel/core": "^7.0.0-0" } }, + "node_modules/@babel/plugin-syntax-class-static-block": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", + "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-attributes": { + "version": "7.25.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.25.6.tgz", + "integrity": "sha512-sXaDXaJN9SNLymBdlWFA+bjzBhFD617ZaFiY13dGt7TVslVvVgA6fkZOP7Ki3IGElC45lwHdOTrCtKZGVAWeLQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.8" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, "node_modules/@babel/plugin-syntax-import-meta": { "version": "7.10.4", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", @@ -685,12 +477,12 @@ } }, "node_modules/@babel/plugin-syntax-jsx": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.22.5.tgz", - "integrity": "sha512-gvyP4hZrgrs/wWMaocvxZ44Hw0b3W8Pe+cMxc8V1ULQ07oh8VNbIRaoD1LRZVTvD+0nieDKjfgKg89sD7rrKrg==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.24.7.tgz", + "integrity": "sha512-6ddciUPe/mpMnOKv/U+RSd2vvVy+Yw/JfBB0ZHYjEZt9NLHmCUylNYlsbqCCS1Bffjlb0fCwC9Vqz+sBz6PsiQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -771,6 +563,21 @@ "@babel/core": "^7.0.0-0" } }, + "node_modules/@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, "node_modules/@babel/plugin-syntax-top-level-await": { "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", @@ -787,12 +594,12 @@ } }, "node_modules/@babel/plugin-syntax-typescript": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.22.5.tgz", - "integrity": "sha512-1mS2o03i7t1c6VzH6fdQ3OA8tcEIxwG18zIPRp+UY1Ihv6W+XZzBCVxExF9upussPXJ0xE9XRHwMoNs1ep/nRQ==", + "version": "7.25.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.25.4.tgz", + "integrity": "sha512-uMOCoHVU52BsSWxPOMVv5qKRdeSlPuImUCB2dlPuBSU+W2/ROE7/Zg8F2Kepbk+8yBa68LlRKxO+xgEVWorsDg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.8" }, "engines": { "node": ">=6.9.0" @@ -802,33 +609,30 @@ } }, "node_modules/@babel/template": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz", - "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==", + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.25.0.tgz", + "integrity": "sha512-aOOgh1/5XzKvg1jvVz7AVrx2piJ2XBi227DHmbY6y+bM9H2FlN+IfecYu4Xl0cNiiVejlsCri89LUsbj8vJD9Q==", "dev": true, "dependencies": { - "@babel/code-frame": "^7.22.13", - "@babel/parser": "^7.22.15", - "@babel/types": "^7.22.15" + "@babel/code-frame": "^7.24.7", + "@babel/parser": "^7.25.0", + "@babel/types": "^7.25.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.24.5", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.5.tgz", - "integrity": "sha512-7aaBLeDQ4zYcUFDUD41lJc1fG8+5IU9DaNSJAgal866FGvmD5EbWQgnEC6kO1gGLsX0esNkfnJSndbTXA3r7UA==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.24.2", - "@babel/generator": "^7.24.5", - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-function-name": "^7.23.0", - "@babel/helper-hoist-variables": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.24.5", - "@babel/parser": "^7.24.5", - "@babel/types": "^7.24.5", + "version": "7.25.6", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.25.6.tgz", + "integrity": "sha512-9Vrcx5ZW6UwK5tvqsj0nGpp/XzqthkT0dqIc9g1AdtygFToNtTF67XzYS//dm+SAK9cp3B9R4ZO/46p63SCjlQ==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.24.7", + "@babel/generator": "^7.25.6", + "@babel/parser": "^7.25.6", + "@babel/template": "^7.25.0", + "@babel/types": "^7.25.6", "debug": "^4.3.1", "globals": "^11.1.0" }, @@ -846,13 +650,12 @@ } }, "node_modules/@babel/types": { - "version": "7.24.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.5.tgz", - "integrity": "sha512-6mQNsaLeXTw0nxYUYu+NSa4Hx4BlF1x1x8/PMFbiR+GBSr+2DkECc69b8hgy2frEodNcvPffeH8YfWd3LI6jhQ==", - "dev": true, + "version": "7.25.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.25.6.tgz", + "integrity": "sha512-/l42B1qxpG6RdfYf343Uw1vmDjeNhneUXtzhojE7pDgfpEypmRhI6j1kr17XCVv4Cgl9HdAiQY2x0GwKm7rWCw==", "dependencies": { - "@babel/helper-string-parser": "^7.24.1", - "@babel/helper-validator-identifier": "^7.24.5", + "@babel/helper-string-parser": "^7.24.8", + "@babel/helper-validator-identifier": "^7.24.7", "to-fast-properties": "^2.0.0" }, "engines": { @@ -866,9 +669,9 @@ "dev": true }, "node_modules/@colors/colors": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", - "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.6.0.tgz", + "integrity": "sha512-Ir+AOibqzrIsL6ajt3Rz3LskB7OiMVHqltZmspbW/TJuTVuyOMirVqAkjfY6JISiLHgyNqicAC8AyHHGzNd/dA==", "engines": { "node": ">=0.1.90" } @@ -906,24 +709,21 @@ } }, "node_modules/@elastic/ecs-helpers": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@elastic/ecs-helpers/-/ecs-helpers-1.1.0.tgz", - "integrity": "sha512-MDLb2aFeGjg46O5mLpdCzT5yOUDnXToJSrco2ShqGIXxNJaM8uJjX+4nd+hRYV4Vex8YJyDtOFEVBldQct6ndg==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@elastic/ecs-helpers/-/ecs-helpers-2.1.1.tgz", + "integrity": "sha512-ItoNazMnYdlUCmkBYTXc3SG6PF7UlVTbvMdHPvXkfTMPdwGv2G1Xtp5CjDHaGHGOZSwaDrW4RSCXvA/lMSU+rg==", "optional": true, - "dependencies": { - "fast-json-stringify": "^2.4.1" - }, "engines": { "node": ">=10" } }, "node_modules/@elastic/ecs-pino-format": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@elastic/ecs-pino-format/-/ecs-pino-format-1.3.0.tgz", - "integrity": "sha512-U8D57gPECYoRCcwREsrXKBtqeyFFF/KAwHi4rG1u/oQhAg91Kzw8ZtUQJXD/DMDieLOqtbItFr2FRBWI3t3wog==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@elastic/ecs-pino-format/-/ecs-pino-format-1.5.0.tgz", + "integrity": "sha512-7MMVmT50ucEl7no8mUgCIl+pffBVNRl36uZi0vmalWa2xPWISBxM9k9WSP/WTgOkmGj9G35e5g3UfCS1zxshBg==", "optional": true, "dependencies": { - "@elastic/ecs-helpers": "^1.1.0" + "@elastic/ecs-helpers": "^2.1.1" }, "engines": { "node": ">=10" @@ -933,7 +733,6 @@ "version": "7.13.0", "resolved": "https://github.com/elastic/elasticsearch-js/archive/refs/tags/v7.13.0.tar.gz", "integrity": "sha512-yXK4IlNYWdVkwIEBi+3m8/OoZKlIYS8F5AauYD0E4EBNAXDoQcWmuVaXdfBlT3nXSMY+m8dEptNg7BTbA9vRlg==", - "license": "Apache-2.0", "dependencies": { "debug": "^4.3.1", "hpagent": "^0.1.1", @@ -944,25 +743,21 @@ "node": ">=12" } }, - "node_modules/@elastic/elasticsearch/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==" - }, "node_modules/@elastic/transport": { - "version": "8.3.4", - "resolved": "https://registry.npmjs.org/@elastic/transport/-/transport-8.3.4.tgz", - "integrity": "sha512-+0o8o74sbzu3BO7oOZiP9ycjzzdOt4QwmMEjFc1zfO7M0Fh7QX1xrpKqZbSd8vBwihXNlSq/EnMPfgD2uFEmFg==", + "version": "8.7.1", + "resolved": "https://registry.npmjs.org/@elastic/transport/-/transport-8.7.1.tgz", + "integrity": "sha512-2eeMVkz57Ayxv+UAZkIKzzrUu7nm96jr3+N3kLfbBqALYe2jwDpLr9pR0jc/x9HyJKAM909YGaNlHFDZeb0+Mw==", "dependencies": { + "@opentelemetry/api": "1.x", "debug": "^4.3.4", "hpagent": "^1.0.0", "ms": "^2.1.3", "secure-json-parse": "^2.4.0", "tslib": "^2.4.0", - "undici": "^5.22.1" + "undici": "^6.12.0" }, "engines": { - "node": ">=14" + "node": ">=18" } }, "node_modules/@elastic/transport/node_modules/hpagent": { @@ -973,16 +768,6 @@ "node": ">=14" } }, - "node_modules/@elastic/transport/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==" - }, - "node_modules/@elastic/transport/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/@esbuild/android-arm": { "version": "0.18.20", "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.18.20.tgz", @@ -1351,18 +1136,18 @@ } }, "node_modules/@eslint-community/regexpp": { - "version": "4.9.1", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.9.1.tgz", - "integrity": "sha512-Y27x+MBLjXa+0JWDhykM3+JE+il3kHKAEqabfEWq3SDhZjLYb6/BHL/JKFnH3fe207JaXkyDo685Oc2Glt6ifA==", + "version": "4.11.0", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.11.0.tgz", + "integrity": "sha512-G/M/tIiMrTAxEWRfLfQJMmGNX28IxBg4PBz8XqQhqUHLFI6TL2htpIB1iQCj144V5ee/JaKyT9/WZ0MGZWfA7A==", "dev": true, "engines": { "node": "^12.0.0 || ^14.0.0 || >=16.0.0" } }, "node_modules/@eslint/eslintrc": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.2.tgz", - "integrity": "sha512-+wvgpDsrB1YqAMdEUCcnTlpfVBH7Vqn6A/NT3D8WVXFIaKMlErPIZT3oCIAVCOtarRpMtelZLqJeU3t7WY6X6g==", + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", + "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", "dev": true, "dependencies": { "ajv": "^6.12.4", @@ -1391,45 +1176,37 @@ "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, - "node_modules/@fastify/busboy": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@fastify/busboy/-/busboy-2.0.0.tgz", - "integrity": "sha512-JUFJad5lv7jxj926GPgymrWQxxjPYuJNiNjNMzqT+HiuP6Vl3dk5xzG+8sTX96np0ZAluvaMzPsjhHZ5rNuNQQ==", - "engines": { - "node": ">=14" - } - }, "node_modules/@flatten-js/interval-tree": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@flatten-js/interval-tree/-/interval-tree-1.1.0.tgz", "integrity": "sha512-D0AC+3g66Mh/QUuAMcfLORgy8u3dO9T2UTpXCx/yH5ShMb+lr99orxExoCtN+lLK/HmrTJNnkhAjYvfnIry46g==" }, "node_modules/@floating-ui/core": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.5.0.tgz", - "integrity": "sha512-kK1h4m36DQ0UHGj5Ah4db7R0rHemTqqO0QLvUqi1/mUUp3LuAWbWxdxSIf/XsnH9VS6rRVPLJCncjRzUvyCLXg==", + "version": "1.6.7", + "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.6.7.tgz", + "integrity": "sha512-yDzVT/Lm101nQ5TCVeK65LtdN7Tj4Qpr9RTXJ2vPFLqtLxwOrpoxAHAJI8J3yYWUc40J0BDBheaitK5SJmno2g==", "dependencies": { - "@floating-ui/utils": "^0.1.3" + "@floating-ui/utils": "^0.2.7" } }, "node_modules/@floating-ui/dom": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.5.3.tgz", - "integrity": "sha512-ClAbQnEqJAKCJOEbbLo5IUlZHkNszqhuxS4fHAVxRPXPya6Ysf2G8KypnYcOTpx6I8xcgF9bbHb6g/2KpbV8qA==", + "version": "1.6.10", + "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.6.10.tgz", + "integrity": "sha512-fskgCFv8J8OamCmyun8MfjB1Olfn+uZKjOKZ0vhYF3gRmEUXcGOjxWL8bBr7i4kIuPZ2KD2S3EUIOxnjC8kl2A==", "dependencies": { - "@floating-ui/core": "^1.4.2", - "@floating-ui/utils": "^0.1.3" + "@floating-ui/core": "^1.6.0", + "@floating-ui/utils": "^0.2.7" } }, "node_modules/@floating-ui/utils": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.1.6.tgz", - "integrity": "sha512-OfX7E2oUDYxtBvsuS4e/jSn4Q9Qb6DzgeYtsAdkPZ47znpoNsMgZw0+tVijiv3uGNR6dgNlty6r9rzIzHjtd/A==" + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.7.tgz", + "integrity": "sha512-X8R8Oj771YRl/w+c1HqAC1szL8zWQRwFvgDwT129k9ACdBoud/+/rX9V0qiMl6LWUdP9voC2nDVZYPMQQsb6eA==" }, "node_modules/@fortawesome/fontawesome-common-types": { - "version": "6.1.2", - "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-6.1.2.tgz", - "integrity": "sha512-wBaAPGz1Awxg05e0PBRkDRuTsy4B3dpBm+zreTTyd9TH4uUM27cAL4xWyWR0rLJCrRwzVsQ4hF3FvM6rqydKPA==", + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-6.5.2.tgz", + "integrity": "sha512-gBxPg3aVO6J0kpfHNILc+NMhXnqHumFxOmjYCFfOiLZfwhnnfhtsdA2hfJlDnj+8PjAs6kKQPenOTKj3Rf7zHw==", "hasInstallScript": true, "peer": true, "engines": { @@ -1446,13 +1223,13 @@ } }, "node_modules/@fortawesome/fontawesome-svg-core": { - "version": "6.1.2", - "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-svg-core/-/fontawesome-svg-core-6.1.2.tgz", - "integrity": "sha512-853G/Htp0BOdXnPoeCPTjFrVwyrJHpe8MhjB/DYE9XjwhnNDfuBCd3aKc2YUYbEfHEcBws4UAA0kA9dymZKGjA==", + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-svg-core/-/fontawesome-svg-core-6.5.2.tgz", + "integrity": "sha512-5CdaCBGl8Rh9ohNdxeeTMxIj8oc3KNBgIeLMvJosBMdslK/UnEB8rzyDRrbKdL1kDweqBPo4GT9wvnakHWucZw==", "hasInstallScript": true, "peer": true, "dependencies": { - "@fortawesome/fontawesome-common-types": "6.1.2" + "@fortawesome/fontawesome-common-types": "6.5.2" }, "engines": { "node": ">=6" @@ -1471,12 +1248,15 @@ "node": ">=6" } }, - "node_modules/@fortawesome/free-regular-svg-icons/node_modules/@fortawesome/fontawesome-common-types": { + "node_modules/@fortawesome/free-solid-svg-icons": { "version": "6.5.2", - "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-6.5.2.tgz", - "integrity": "sha512-gBxPg3aVO6J0kpfHNILc+NMhXnqHumFxOmjYCFfOiLZfwhnnfhtsdA2hfJlDnj+8PjAs6kKQPenOTKj3Rf7zHw==", + "resolved": "https://registry.npmjs.org/@fortawesome/free-solid-svg-icons/-/free-solid-svg-icons-6.5.2.tgz", + "integrity": "sha512-QWFZYXFE7O1Gr1dTIp+D6UcFUF0qElOnZptpi7PBUMylJh+vFmIedVe1Ir6RM1t2tEQLLSV1k7bR4o92M+uqlw==", "hasInstallScript": true, "peer": true, + "dependencies": { + "@fortawesome/fontawesome-common-types": "6.5.2" + }, "engines": { "node": ">=6" } @@ -1491,14 +1271,20 @@ "vue": "~2" } }, + "node_modules/@gar/promisify": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz", + "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==" + }, "node_modules/@humanwhocodes/config-array": { - "version": "0.11.11", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.11.tgz", - "integrity": "sha512-N2brEuAadi0CcdeMXUkhbZB84eskAc8MEX1By6qEchoVywSgXPIjou4rYsl0V3Hj0ZnuGycGCjdNgockbzeWNA==", + "version": "0.11.14", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", + "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==", + "deprecated": "Use @eslint/config-array instead", "dev": true, "dependencies": { - "@humanwhocodes/object-schema": "^1.2.1", - "debug": "^4.1.1", + "@humanwhocodes/object-schema": "^2.0.2", + "debug": "^4.3.1", "minimatch": "^3.0.5" }, "engines": { @@ -1519,9 +1305,10 @@ } }, "node_modules/@humanwhocodes/object-schema": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", - "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", + "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", + "deprecated": "Use @eslint/object-schema instead", "dev": true }, "node_modules/@interactjs/actions": { @@ -1737,6 +1524,7 @@ "version": "8.0.2", "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "dev": true, "dependencies": { "string-width": "^5.1.2", "string-width-cjs": "npm:string-width@^4.2.0", @@ -1753,6 +1541,7 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true, "engines": { "node": ">=12" }, @@ -1764,6 +1553,7 @@ "version": "6.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "dev": true, "engines": { "node": ">=12" }, @@ -1774,12 +1564,14 @@ "node_modules/@isaacs/cliui/node_modules/emoji-regex": { "version": "9.2.2", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==" + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true }, "node_modules/@isaacs/cliui/node_modules/string-width": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dev": true, "dependencies": { "eastasianwidth": "^0.2.0", "emoji-regex": "^9.2.2", @@ -1796,6 +1588,7 @@ "version": "7.1.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, "dependencies": { "ansi-regex": "^6.0.1" }, @@ -1810,6 +1603,7 @@ "version": "8.1.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dev": true, "dependencies": { "ansi-styles": "^6.1.0", "string-width": "^5.0.1", @@ -1921,6 +1715,12 @@ "node": ">=8" } }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true + }, "node_modules/@istanbuljs/schema": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", @@ -2223,9 +2023,9 @@ } }, "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", - "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", "dev": true, "engines": { "node": ">=6.0.0" @@ -2241,9 +2041,9 @@ } }, "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.15", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", - "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", + "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", "dev": true }, "node_modules/@jridgewell/trace-mapping": { @@ -2261,11 +2061,82 @@ "resolved": "https://registry.npmjs.org/@kurkle/color/-/color-0.3.2.tgz", "integrity": "sha512-fuscdXJ9G1qb7W8VdHi+IwRqij3lBkosAm4ydQtEmbY58OzHXqQhvlxqEkoz0yssNVn38bcpRWgA9PP+OGoisw==" }, + "node_modules/@kuzzleio/iot-platform-backend": { + "version": "3.1.0-beta.61", + "resolved": "https://packages.paas.kuzzle.io/@kuzzleio%2fiot-platform-backend/-/iot-platform-backend-3.1.0-beta.61.tgz", + "integrity": "sha512-Rag3Tqh/vS2nchua93lcjo3Uvmg5g+GxucLSPxoyyoRW8b9zXJ6jJ5TmiAJ1cIgbQqRq81dq1kAaa5qb3C8uPw==", + "dependencies": { + "@kuzzleio/kuzzle-plugin-keycloak": "^1.2.1", + "@kuzzleio/plugin-license-manager": "1.0.0-beta.8", + "@kuzzleio/plugin-multi-tenancy": "1.5.0", + "@kuzzleio/plugin-workflows": "^1.1.0", + "axios": "^0.26.1", + "kuzzle-device-manager": "2.4.0-beta.19", + "kuzzle-plugin-commons": "^1.2.0", + "kuzzle-plugin-hermes-messenger": "^1.0.0", + "lodash": "^4.17.21", + "node-fetch": "^2.7.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "kuzzle": ">=2.30.0", + "kuzzle-sdk": "^7.11.3", + "typescript": ">= 5.1" + } + }, + "node_modules/@kuzzleio/iot-platform-frontend": { + "version": "3.1.0-beta.61", + "resolved": "https://packages.paas.kuzzle.io/@kuzzleio%2fiot-platform-frontend/-/iot-platform-frontend-3.1.0-beta.61.tgz", + "integrity": "sha512-LzzjKH8ZYgfT6u3Uax1vIz+k8UwUcsO+IbOgUUgh0bU9lj8BCR2jIjm9qa/eUE0B9sQWqgk/90DT+OLEBs/68Q==", + "dependencies": { + "@floating-ui/dom": "^1.5.1", + "@vuelidate/core": "^2.0.3", + "@vuelidate/validators": "^2.0.3", + "ace-builds": "^1.23.4", + "chart.js": "^4.3.0", + "chartjs-plugin-annotation": "^3.0.1", + "chartjs-plugin-datalabels": "^2.2.0", + "chartjs-plugin-zoom": "^2.0.1", + "d3-scale": "^4.0.2", + "dayjs": "^1.10.8", + "dompurify": "^3.1.0", + "lodash": "^4.17.21", + "marked": "^12.0.0", + "marked-admonition-extension": "^0.0.4", + "marked-emoji": "^1.4.0", + "oidc-client-ts": "^2.3.0", + "tinycolor2": "^1.6.0", + "vue-chartjs": "^5.2.0", + "vue-color": "^2.8.1", + "vue-datepicker-ui": "^2.3.0", + "vue-form-generator": "^2.3.4", + "vue-grid-layout": "^2.4.0", + "vue-multiselect": "^2.1.7", + "vue2-daterange-picker": "^0.6.8", + "vue2-leaflet": "^2.7.1", + "vue2-leaflet-markercluster": "^3.1.0" + }, + "peerDependencies": { + "@fortawesome/fontawesome-svg-core": "6.5.*", + "@fortawesome/free-regular-svg-icons": "6.5.*", + "@fortawesome/free-solid-svg-icons": "6.5.*", + "@fortawesome/vue-fontawesome": "2.0.*", + "bootstrap-vue": "2.23.*", + "leaflet": "^1.3.4", + "typescript": ">= 5.1", + "vue": "2.7.*", + "vue-i18n": "8.28.*", + "vue-plugin-kuzzle": ">= 4.5.2", + "vue-router": "3.6.*", + "vuex": "3.6.*" + } + }, "node_modules/@kuzzleio/kuzzle-plugin-auth-openid": { "version": "1.2.0", "resolved": "https://packages.paas.kuzzle.io/@kuzzleio%2fkuzzle-plugin-auth-openid/-/e9d491769a62f3c33618a0fc29f5e04dd83cfe6c", "integrity": "sha512-UCsZKgA+TBGCww6PkzIq3u5K1EWu4jST3VhmWhGQqI5+sgkhgUXOEtJbHVb+LzIcplL3/m0FNyWFz6BQHeCdpQ==", - "license": "Apache-2.0", "dependencies": { "cookie": "0.4.2", "jose": "4.8.3", @@ -2275,32 +2146,43 @@ "uuid": "8.3.2" } }, - "node_modules/@kuzzleio/kuzzle-plugin-auth-openid/node_modules/cookie": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", - "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/@kuzzleio/kuzzle-plugin-auth-openid/node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "bin": { - "uuid": "dist/bin/uuid" - } - }, "node_modules/@kuzzleio/kuzzle-plugin-keycloak": { "version": "1.2.1", "resolved": "https://packages.paas.kuzzle.io/@kuzzleio%2fkuzzle-plugin-keycloak/-/kuzzle-plugin-keycloak-1.2.1.tgz", "integrity": "sha512-ADDf5/Lz4P2cwn5ROA/SFnNHUMqsNmD3WfBJmdDPvFmgWccLgjk7v89dLaAX3xIdmbyeFY21g+STYTe28jWaQA==", - "license": "Apache-2.0", "dependencies": { "@kuzzleio/kuzzle-plugin-auth-openid": "1.2.0", "lodash": "4.17.21" } }, + "node_modules/@kuzzleio/plugin-license-manager": { + "version": "1.0.0-beta.8", + "resolved": "https://packages.paas.kuzzle.io/@kuzzleio%2fplugin-license-manager/-/bb3a0c25fa7f7cebacb2623f6b49fb5147f02232", + "integrity": "sha512-6pkgR3LFiG8xYVRvt6fCv89Zn/zFQKMGaLTz/O8pnQAHRjSfBcl658ZYl5zlYqVDFdxxcpk40RA46UBK3qRQ6A==", + "dependencies": { + "kuzzle-plugin-commons": "^1.2.0" + }, + "peerDependencies": { + "kuzzle": ">= 2.30.0", + "kuzzle-sdk": ">= 7.11", + "typescript": ">= 5.4" + } + }, + "node_modules/@kuzzleio/plugin-multi-tenancy": { + "version": "1.5.0", + "resolved": "https://packages.paas.kuzzle.io/@kuzzleio%2fplugin-multi-tenancy/-/ecbf7a2215f0773aa3d43577ffd7d0a29ab88dcc", + "integrity": "sha512-Xp+RJGSUEsxbm4muzNgnv852l8t5dN5R9WhRRb6tdSVcPLJCHVuyVNOVPPpv9OdwjvidqoUFIMVrx/OhJoMEQQ==", + "dependencies": { + "bluebird": "^3.7.2", + "kuzzle-plugin-commons": "^1.2.0", + "lodash": "^4.17.21" + }, + "peerDependencies": { + "kuzzle": ">= 2.30.0", + "kuzzle-sdk": ">= 7.11.3", + "typescript": ">= 5.4" + } + }, "node_modules/@kuzzleio/plugin-workflows": { "version": "1.1.0", "resolved": "https://packages.paas.kuzzle.io/@kuzzleio%2fplugin-workflows/-/eba69e9bb5520a1a1246e18c5e6698ce04519923", @@ -2363,15 +2245,49 @@ "node": ">= 8" } }, + "node_modules/@nolyfill/is-core-module": { + "version": "1.0.39", + "resolved": "https://registry.npmjs.org/@nolyfill/is-core-module/-/is-core-module-1.0.39.tgz", + "integrity": "sha512-nn5ozdjYQpUCZlWGuxcJY/KpxkWQs4DcbMCmKojjyrYDEAGy4Ce19NN4v5MduafTwJlbKc99UA8YhSVqq9yPZA==", + "dev": true, + "engines": { + "node": ">=12.4.0" + } + }, "node_modules/@npmcli/fs": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-3.1.0.tgz", - "integrity": "sha512-7kZUAaLscfgbwBQRbvdMYaZOWyMEcPTH/tJjnyAWJ/dvvs9Ef+CERx/qJb9GExJpl1qipaDGn7KqHnFGGixd0w==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-2.1.2.tgz", + "integrity": "sha512-yOJKRvohFOaLqipNtwYB9WugyZKhC/DZC4VYPmpaCzDBrA8YpK3qHZ8/HGscMnE4GqbkLNuVcCnxkeQEdGt6LQ==", "dependencies": { + "@gar/promisify": "^1.1.3", "semver": "^7.3.5" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/@npmcli/move-file": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-2.0.1.tgz", + "integrity": "sha512-mJd2Z5TjYWq/ttPLLGqArdtnC74J6bOzg4rMDnN+p1xTacZ2yPRCk2y0oSWQtygLR9YVQXgOcONrwtnk3JupxQ==", + "deprecated": "This functionality has been moved to @npmcli/fs", + "dependencies": { + "mkdirp": "^1.0.4", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/@npmcli/move-file/node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" } }, "node_modules/@nuxt/opencollective": { @@ -2393,66 +2309,64 @@ } }, "node_modules/@opentelemetry/api": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-1.6.0.tgz", - "integrity": "sha512-OWlrQAnWn9577PhVgqjUvMr1pg57Bc4jv0iL4w0PRuOSRvq67rvHW9Ie/dZVMvCzhSCB+UxhcY/PmCmFj33Q+g==", - "optional": true, + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-1.9.0.tgz", + "integrity": "sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==", "engines": { "node": ">=8.0.0" } }, "node_modules/@opentelemetry/core": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.17.0.tgz", - "integrity": "sha512-tfnl3h+UefCgx1aeN2xtrmr6BmdWGKXypk0pflQR0urFS40aE88trnkOMc2HTJZbMrqEEl4HsaBeFhwLVXsrJg==", + "version": "1.26.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.26.0.tgz", + "integrity": "sha512-1iKxXXE8415Cdv0yjG3G6hQnB5eVEsJce3QaawX8SjDn0mAS0ZM8fAbZZJD4ajvhC15cePvosSCut404KrIIvQ==", "optional": true, "dependencies": { - "@opentelemetry/semantic-conventions": "1.17.0" + "@opentelemetry/semantic-conventions": "1.27.0" }, "engines": { "node": ">=14" }, "peerDependencies": { - "@opentelemetry/api": ">=1.0.0 <1.7.0" + "@opentelemetry/api": ">=1.0.0 <1.10.0" } }, "node_modules/@opentelemetry/resources": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.17.0.tgz", - "integrity": "sha512-+u0ciVnj8lhuL/qGRBPeVYvk7fL+H/vOddfvmOeJaA1KC+5/3UED1c9KoZQlRsNT5Kw1FaK8LkY2NVLYfOVZQw==", + "version": "1.26.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.26.0.tgz", + "integrity": "sha512-CPNYchBE7MBecCSVy0HKpUISEeJOniWqcHaAHpmasZ3j9o6V3AyBzhRc90jdmemq0HOxDr6ylhUbDhBqqPpeNw==", "optional": true, "dependencies": { - "@opentelemetry/core": "1.17.0", - "@opentelemetry/semantic-conventions": "1.17.0" + "@opentelemetry/core": "1.26.0", + "@opentelemetry/semantic-conventions": "1.27.0" }, "engines": { "node": ">=14" }, "peerDependencies": { - "@opentelemetry/api": ">=1.0.0 <1.7.0" + "@opentelemetry/api": ">=1.0.0 <1.10.0" } }, "node_modules/@opentelemetry/sdk-metrics": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-metrics/-/sdk-metrics-1.17.0.tgz", - "integrity": "sha512-HlWM27yGmYuwCoVRe3yg2PqKnIsq0kEF0HQgvkeDWz2NYkq9fFaSspR6kvjxUTbghAlZrabiqbgyKoYpYaXS3w==", + "version": "1.26.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-metrics/-/sdk-metrics-1.26.0.tgz", + "integrity": "sha512-0SvDXmou/JjzSDOjUmetAAvcKQW6ZrvosU0rkbDGpXvvZN+pQF6JbK/Kd4hNdK4q/22yeruqvukXEJyySTzyTQ==", "optional": true, "dependencies": { - "@opentelemetry/core": "1.17.0", - "@opentelemetry/resources": "1.17.0", - "lodash.merge": "^4.6.2" + "@opentelemetry/core": "1.26.0", + "@opentelemetry/resources": "1.26.0" }, "engines": { "node": ">=14" }, "peerDependencies": { - "@opentelemetry/api": ">=1.3.0 <1.7.0" + "@opentelemetry/api": ">=1.3.0 <1.10.0" } }, "node_modules/@opentelemetry/semantic-conventions": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.17.0.tgz", - "integrity": "sha512-+fguCd2d8d2qruk0H0DsCEy2CTK3t0Tugg7MhZ/UQMvmewbZLNnJ6heSYyzIZWG5IPfAXzoj4f4F/qpM7l4VBA==", + "version": "1.27.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.27.0.tgz", + "integrity": "sha512-sAay1RrB+ONOem0OZanAR1ZI/k7yDpnOQSQmTMuGImUQb2y8EbSaCJ94FQluM74xoU03vlb2d2U90hZluL6nQg==", "optional": true, "engines": { "node": ">=14" @@ -2462,24 +2376,17 @@ "version": "0.11.0", "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "dev": true, "optional": true, "engines": { "node": ">=14" } }, - "node_modules/@pkgr/utils": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/@pkgr/utils/-/utils-2.4.2.tgz", - "integrity": "sha512-POgTXhjrTfbTV63DiFXav4lBHiICLKKwDeaKn9Nphwj7WH6m0hMMCaJkMyRWjgtPFyRKRVoMXXjczsTQRDEhYw==", + "node_modules/@pkgr/core": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.1.1.tgz", + "integrity": "sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==", "dev": true, - "dependencies": { - "cross-spawn": "^7.0.3", - "fast-glob": "^3.3.0", - "is-glob": "^4.0.3", - "open": "^9.1.0", - "picocolors": "^1.0.0", - "tslib": "^2.6.0" - }, "engines": { "node": "^12.20.0 || ^14.18.0 || >=16.0.0" }, @@ -2487,12 +2394,6 @@ "url": "https://opencollective.com/unts" } }, - "node_modules/@pkgr/utils/node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "dev": true - }, "node_modules/@protobufjs/aspromise": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", @@ -2547,6 +2448,12 @@ "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz", "integrity": "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==" }, + "node_modules/@rtsao/scc": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@rtsao/scc/-/scc-1.1.0.tgz", + "integrity": "sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==", + "dev": true + }, "node_modules/@sendgrid/client": { "version": "7.7.0", "resolved": "https://registry.npmjs.org/@sendgrid/client/-/client-7.7.0.tgz", @@ -2589,9 +2496,9 @@ "dev": true }, "node_modules/@sinonjs/commons": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.0.tgz", - "integrity": "sha512-jXBtWAF4vmdNmZgD5FoKsVLv3rPgDnLgPbU84LIJ3otV44vJlDRokVng5v8NFJdCf/da9legHcKaRuZs4L7faA==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz", + "integrity": "sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==", "dev": true, "dependencies": { "type-detect": "4.0.8" @@ -2615,9 +2522,9 @@ } }, "node_modules/@tsconfig/node10": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", - "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==", + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.11.tgz", + "integrity": "sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==", "dev": true }, "node_modules/@tsconfig/node12": { @@ -2639,9 +2546,9 @@ "dev": true }, "node_modules/@types/babel__core": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.2.tgz", - "integrity": "sha512-pNpr1T1xLUc2l3xJKuPtsEky3ybxN3m4fJkknfIpTCTfIZCDW57oAg+EfCgIIp2rvCe0Wn++/FfodDS4YXxBwA==", + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", + "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", "dev": true, "dependencies": { "@babel/parser": "^7.20.7", @@ -2652,18 +2559,18 @@ } }, "node_modules/@types/babel__generator": { - "version": "7.6.5", - "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.5.tgz", - "integrity": "sha512-h9yIuWbJKdOPLJTbmSpPzkF67e659PbQDba7ifWm5BJ8xTv+sDmS7rFmywkWOvXedGTivCdeGSIIX8WLcRTz8w==", + "version": "7.6.8", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.8.tgz", + "integrity": "sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==", "dev": true, "dependencies": { "@babel/types": "^7.0.0" } }, "node_modules/@types/babel__template": { - "version": "7.4.2", - "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.2.tgz", - "integrity": "sha512-/AVzPICMhMOMYoSx9MoKpGDKdBRsIXMNByh1PXSZoa+v6ZoLa8xxtsT/uLQ/NJm0XVAWl/BvId4MlDeXJaeIZQ==", + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", + "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", "dev": true, "dependencies": { "@babel/parser": "^7.1.0", @@ -2671,57 +2578,57 @@ } }, "node_modules/@types/babel__traverse": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.2.tgz", - "integrity": "sha512-ojlGK1Hsfce93J0+kn3H5R73elidKUaZonirN33GSmgTUMpzI/MIFfSpF3haANe3G1bEBS9/9/QEqwTzwqFsKw==", + "version": "7.20.6", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.6.tgz", + "integrity": "sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==", "dev": true, "dependencies": { "@babel/types": "^7.20.7" } }, "node_modules/@types/geojson": { - "version": "7946.0.11", - "resolved": "https://registry.npmjs.org/@types/geojson/-/geojson-7946.0.11.tgz", - "integrity": "sha512-L7A0AINMXQpVwxHJ4jxD6/XjZ4NDufaRlUJHjNIFKYUFBH1SvOW+neaqb0VTRSLW5suSrSu19ObFEFnfNcr+qg==", + "version": "7946.0.14", + "resolved": "https://registry.npmjs.org/@types/geojson/-/geojson-7946.0.14.tgz", + "integrity": "sha512-WCfD5Ht3ZesJUsONdhvm84dmzWOiOzOAqOncN0++w0lBw1o8OuDNJF2McvvCef/yBqb/HYRahp1BYtODFQ8bRg==", "peer": true }, "node_modules/@types/graceful-fs": { - "version": "4.1.7", - "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.7.tgz", - "integrity": "sha512-MhzcwU8aUygZroVwL2jeYk6JisJrPl/oov/gsgGCue9mkgl9wjGbzReYQClxiUgFDnib9FuHqTndccKeZKxTRw==", + "version": "4.1.9", + "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.9.tgz", + "integrity": "sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==", "dev": true, "dependencies": { "@types/node": "*" } }, "node_modules/@types/istanbul-lib-coverage": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", - "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==", + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", + "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==", "dev": true }, "node_modules/@types/istanbul-lib-report": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", - "integrity": "sha512-gPQuzaPR5h/djlAv2apEG1HVOyj1IUs7GpfMZixU0/0KXT3pm64ylHuMUI1/Akh+sq/iikxg6Z2j+fcMDXaaTQ==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz", + "integrity": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==", "dev": true, "dependencies": { "@types/istanbul-lib-coverage": "*" } }, "node_modules/@types/istanbul-reports": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.2.tgz", - "integrity": "sha512-kv43F9eb3Lhj+lr/Hn6OcLCs/sSM8bt+fIaP11rCYngfV6NVjzWXJ17owQtDQTL9tQ8WSLUrGsSJ6rJz0F1w1A==", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz", + "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==", "dev": true, "dependencies": { "@types/istanbul-lib-report": "*" } }, "node_modules/@types/jest": { - "version": "29.4.0", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.4.0.tgz", - "integrity": "sha512-VaywcGQ9tPorCX/Jkkni7RWGFfI11whqzs8dvxF41P17Z+z872thvEvlIbznjPJ02kl1HMX3LmLOonsj2n7HeQ==", + "version": "29.5.12", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.12.tgz", + "integrity": "sha512-eDC8bTvT/QhYdxJAulQikueigY5AsdBRH2yDKW3yveW7svY3+DzN84/2NUgkw10RTiJbWqZrTtoGVdYlvFJdLw==", "dev": true, "dependencies": { "expect": "^29.0.0", @@ -2729,9 +2636,9 @@ } }, "node_modules/@types/json-schema": { - "version": "7.0.13", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.13.tgz", - "integrity": "sha512-RbSSoHliUbnXj3ny0CNFOoxrIDV6SUGyStHsvDqosw6CkdPV8TtWGlfecuK4ToyMEAql6pzNxgCFKanovUzlgQ==", + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", "dev": true }, "node_modules/@types/json5": { @@ -2741,18 +2648,18 @@ "dev": true }, "node_modules/@types/leaflet": { - "version": "1.9.6", - "resolved": "https://registry.npmjs.org/@types/leaflet/-/leaflet-1.9.6.tgz", - "integrity": "sha512-HakGTK5LBBWegNWsAmTlG55zN1zszYec7aG47/z6SzT90bW2vqjmbqk3YKAbrtveO+G7fSTKTYqVbIwAFnTrbg==", + "version": "1.9.12", + "resolved": "https://registry.npmjs.org/@types/leaflet/-/leaflet-1.9.12.tgz", + "integrity": "sha512-BK7XS+NyRI291HIo0HCfE18Lp8oA30H1gpi1tf0mF3TgiCEzanQjOqNZ4x126SXzzi2oNSZhZ5axJp1k0iM6jg==", "peer": true, "dependencies": { "@types/geojson": "*" } }, "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.7", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.7.tgz", + "integrity": "sha512-8wTvZawATi/lsmNu10/j2hk1KEP0IvjubqPE3cu1Xz7xfXXt5oCq3SNUz4fMIP4XGF9Ky+Ue2tBA3hcS7LSBlA==", "dev": true }, "node_modules/@types/luxon": { @@ -2766,43 +2673,43 @@ "integrity": "sha512-a79Yc3TOk6dGdituy8hmTTJXjOkZ7zsFYV10L337ttq/rec8lRMDBpV7fL3uLx6TgbFCa5DU/h8FmIBQPSbU0w==" }, "node_modules/@types/node": { - "version": "18.19.29", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.29.tgz", - "integrity": "sha512-5pAX7ggTmWZdhUrhRWLPf+5oM7F80bcKVCBbr0zwEkTNzTJL2CWQjznpFgHYy6GrzkYi2Yjy7DHKoynFxqPV8g==", + "version": "18.19.50", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.50.tgz", + "integrity": "sha512-xonK+NRrMBRtkL1hVCc3G+uXtjh1Al4opBLjqVmipe5ZAaBYWW6cNAiBVZ1BvmkBhep698rP3UM3aRAdSALuhg==", "dependencies": { "undici-types": "~5.26.4" } }, "node_modules/@types/semver": { - "version": "7.5.3", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.3.tgz", - "integrity": "sha512-OxepLK9EuNEIPxWNME+C6WwbRAOOI2o2BaQEGzz5Lu2e4Z5eDnEo+/aVEDMIXywoJitJ7xWd641wrGLZdtwRyw==", + "version": "7.5.8", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.8.tgz", + "integrity": "sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==", "dev": true }, "node_modules/@types/stack-utils": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz", - "integrity": "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz", + "integrity": "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==", "dev": true }, "node_modules/@types/triple-beam": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/@types/triple-beam/-/triple-beam-1.3.3.tgz", - "integrity": "sha512-6tOUG+nVHn0cJbVp25JFayS5UE6+xlbcNF9Lo9mU7U0zk3zeUShZied4YEQZjy1JBF043FSkdXw8YkUJuVtB5g==" + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/@types/triple-beam/-/triple-beam-1.3.5.tgz", + "integrity": "sha512-6WaYesThRMCl19iryMYP7/x2OVgCtbIVflDGFpWnb9irXI3UjYE4AzmYuiUKY1AJstGijoY+MgUszMgRxIYTYw==" }, "node_modules/@types/yargs": { - "version": "17.0.28", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.28.tgz", - "integrity": "sha512-N3e3fkS86hNhtk6BEnc0rj3zcehaxx8QWhCROJkqpl5Zaoi7nAic3jH8q94jVD3zu5LGk+PUB6KAiDmimYOEQw==", + "version": "17.0.33", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.33.tgz", + "integrity": "sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==", "dev": true, "dependencies": { "@types/yargs-parser": "*" } }, "node_modules/@types/yargs-parser": { - "version": "21.0.1", - "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.1.tgz", - "integrity": "sha512-axdPBuLuEJt0c4yI5OZssC19K2Mq1uKdrfZBzuxLvaztgqUtFYZUNw7lETExPYJR9jdEoIg4mb7RQKRQzOkeGQ==", + "version": "21.0.3", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", + "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==", "dev": true }, "node_modules/@typescript-eslint/eslint-plugin": { @@ -3016,15 +2923,15 @@ } }, "node_modules/@vitejs/plugin-vue2": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue2/-/plugin-vue2-2.2.0.tgz", - "integrity": "sha512-1km7zEuZ/9QRPvzXSjikbTYGQPG86Mq1baktpC4sXqsXlb02HQKfi+fl8qVS703JM7cgm24Ga9j+RwKmvFn90A==", + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue2/-/plugin-vue2-2.3.1.tgz", + "integrity": "sha512-/ksaaz2SRLN11JQhLdEUhDzOn909WEk99q9t9w+N12GjQCljzv7GyvAbD/p20aBUjHkvpGOoQ+FCOkG+mjDF4A==", "dev": true, "engines": { "node": "^14.18.0 || >= 16.0.0" }, "peerDependencies": { - "vite": "^3.0.0 || ^4.0.0", + "vite": "^3.0.0 || ^4.0.0 || ^5.0.0", "vue": "^2.7.0-0" } }, @@ -3057,36 +2964,68 @@ } }, "node_modules/@vue/compiler-core": { - "version": "3.4.21", - "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.4.21.tgz", - "integrity": "sha512-MjXawxZf2SbZszLPYxaFCjxfibYrzr3eYbKxwpLR9EQN+oaziSu3qKVbwBERj1IFIB8OLUewxB5m/BFzi613og==", + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.5.3.tgz", + "integrity": "sha512-adAfy9boPkP233NTyvLbGEqVuIfK/R0ZsBsIOW4BZNfb4BRpRW41Do1u+ozJpsb+mdoy80O20IzAsHaihRb5qA==", "dev": true, "dependencies": { - "@babel/parser": "^7.23.9", - "@vue/shared": "3.4.21", + "@babel/parser": "^7.25.3", + "@vue/shared": "3.5.3", "entities": "^4.5.0", "estree-walker": "^2.0.2", - "source-map-js": "^1.0.2" + "source-map-js": "^1.2.0" } }, "node_modules/@vue/compiler-dom": { - "version": "3.4.21", - "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.4.21.tgz", - "integrity": "sha512-IZC6FKowtT1sl0CR5DpXSiEB5ayw75oT2bma1BEhV7RRR1+cfwLrxc2Z8Zq/RGFzJ8w5r9QtCOvTjQgdn0IKmA==", + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.5.3.tgz", + "integrity": "sha512-wnzFArg9zpvk/811CDOZOadJRugf1Bgl/TQ3RfV4nKfSPok4hi0w10ziYUQR6LnnBAUlEXYLUfZ71Oj9ds/+QA==", "dev": true, "dependencies": { - "@vue/compiler-core": "3.4.21", - "@vue/shared": "3.4.21" + "@vue/compiler-core": "3.5.3", + "@vue/shared": "3.5.3" } }, "node_modules/@vue/compiler-sfc": { - "version": "2.7.14", - "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-2.7.14.tgz", - "integrity": "sha512-aNmNHyLPsw+sVvlQFQ2/8sjNuLtK54TC6cuKnVzAY93ks4ZBrvwQSnkkIh7bsbNhum5hJBS00wSDipQ937f5DA==", + "version": "2.7.16", + "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-2.7.16.tgz", + "integrity": "sha512-KWhJ9k5nXuNtygPU7+t1rX6baZeqOYLEforUPjgNDBnLicfHCoi48H87Q8XyLZOrNNsmhuwKqtpDQWjEFe6Ekg==", "dependencies": { - "@babel/parser": "^7.18.4", + "@babel/parser": "^7.23.5", "postcss": "^8.4.14", "source-map": "^0.6.1" + }, + "optionalDependencies": { + "prettier": "^1.18.2 || ^2.0.0" + } + }, + "node_modules/@vue/compiler-sfc/node_modules/prettier": { + "version": "2.8.8", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", + "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", + "optional": true, + "bin": { + "prettier": "bin-prettier.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/@vue/eslint-config-prettier": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@vue/eslint-config-prettier/-/eslint-config-prettier-8.0.0.tgz", + "integrity": "sha512-55dPqtC4PM/yBjhAr+yEw6+7KzzdkBuLmnhBrDfp4I48+wy+Giqqj9yUr5T2uD/BkBROjjmqnLZmXRdOx/VtQg==", + "dev": true, + "dependencies": { + "eslint-config-prettier": "^8.8.0", + "eslint-plugin-prettier": "^5.0.0" + }, + "peerDependencies": { + "eslint": ">= 8.0.0", + "prettier": ">= 3.0.0" } }, "node_modules/@vue/eslint-config-standard": { @@ -3130,6 +3069,41 @@ "typescript": "*" } }, + "node_modules/@vue/eslint-config-standard-with-typescript/node_modules/eslint-import-resolver-typescript": { + "version": "3.6.3", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.6.3.tgz", + "integrity": "sha512-ud9aw4szY9cCT1EWWdGv1L1XR6hh2PaRWif0j2QjQ0pgTY/69iw+W0Z4qZv5wHahOl8isEr+k/JnyAqNQkLkIA==", + "dev": true, + "dependencies": { + "@nolyfill/is-core-module": "1.0.39", + "debug": "^4.3.5", + "enhanced-resolve": "^5.15.0", + "eslint-module-utils": "^2.8.1", + "fast-glob": "^3.3.2", + "get-tsconfig": "^4.7.5", + "is-bun-module": "^1.0.2", + "is-glob": "^4.0.3" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/unts/projects/eslint-import-resolver-ts" + }, + "peerDependencies": { + "eslint": "*", + "eslint-plugin-import": "*", + "eslint-plugin-import-x": "*" + }, + "peerDependenciesMeta": { + "eslint-plugin-import": { + "optional": true + }, + "eslint-plugin-import-x": { + "optional": true + } + } + }, "node_modules/@vue/eslint-config-typescript": { "version": "11.0.3", "resolved": "https://registry.npmjs.org/@vue/eslint-config-typescript/-/eslint-config-typescript-11.0.3.tgz", @@ -3189,9 +3163,9 @@ } }, "node_modules/@vue/language-core/node_modules/minimatch": { - "version": "9.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", - "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", "dev": true, "dependencies": { "brace-expansion": "^2.0.1" @@ -3204,9 +3178,9 @@ } }, "node_modules/@vue/shared": { - "version": "3.4.21", - "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.4.21.tgz", - "integrity": "sha512-PuJe7vDIi6VYSinuEbUIQgMIRZGgM8e4R+G+/dQTk0X1NEdvgvvgv7m+rfmDH1gZzyA1OjjoWskvHlfRNfQf3g==", + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.5.3.tgz", + "integrity": "sha512-Jp2v8nylKBT+PlOUjun2Wp/f++TfJVFjshLzNtJDdmFJabJa7noGMncqXRM1vXGX+Yo2V7WykQFNxusSim8SCA==", "dev": true }, "node_modules/@vuelidate/core": { @@ -3299,14 +3273,14 @@ "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" }, "node_modules/ace-builds": { - "version": "1.29.0", - "resolved": "https://registry.npmjs.org/ace-builds/-/ace-builds-1.29.0.tgz", - "integrity": "sha512-TyTe22nW1rUi7bzbGwLwg/6EN88CJuxUO0193nv/6cQ8lMBV6XtfeQIAgU3dkr8wnCn2okycqHjCDlPGNcWqoQ==" + "version": "1.36.2", + "resolved": "https://registry.npmjs.org/ace-builds/-/ace-builds-1.36.2.tgz", + "integrity": "sha512-eqqfbGwx/GKjM/EnFu4QtQ+d2NNBu84MGgxoG8R5iyFpcVeQ4p9YlTL+ZzdEJqhdkASqoqOxCSNNGyB6lvMm+A==" }, "node_modules/acorn": { - "version": "8.10.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", - "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", + "version": "8.12.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz", + "integrity": "sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==", "devOptional": true, "bin": { "acorn": "bin/acorn" @@ -3334,10 +3308,13 @@ } }, "node_modules/acorn-walk": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", - "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", + "version": "8.3.3", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.3.tgz", + "integrity": "sha512-MxXdReSRhGO7VlFe1bRG/oI7/mdLV9B9JJT0N8vZOhF7gFRR5l3M8W9G8JxmKV+JC5mGqJ0QvqfSOLsCPa4nUw==", "dev": true, + "dependencies": { + "acorn": "^8.11.0" + }, "engines": { "node": ">=0.4.0" } @@ -3400,14 +3377,6 @@ "node": ">=10" } }, - "node_modules/aedes/node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "bin": { - "uuid": "dist/bin/uuid" - } - }, "node_modules/after-all-results": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/after-all-results/-/after-all-results-2.0.0.tgz", @@ -3452,7 +3421,7 @@ "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "devOptional": true, + "dev": true, "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -3539,6 +3508,7 @@ "version": "1.1.7", "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.7.tgz", "integrity": "sha512-nxwy40TuMiUGqMyRHgCSWZ9FM4VAoRP4xUYSTv5ImRog+h9yISPbVH7H8fASCIzYn9wlEv4zvFL7uKDMCFQm3g==", + "deprecated": "This package is no longer supported.", "dependencies": { "delegates": "^1.0.0", "readable-stream": "^2.0.6" @@ -3588,28 +3558,32 @@ "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" }, "node_modules/array-buffer-byte-length": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz", - "integrity": "sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==", - "devOptional": true, + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz", + "integrity": "sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==", + "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "is-array-buffer": "^3.0.1" + "call-bind": "^1.0.5", + "is-array-buffer": "^3.0.4" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/array-includes": { - "version": "3.1.7", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.7.tgz", - "integrity": "sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ==", + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.8.tgz", + "integrity": "sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "get-intrinsic": "^1.2.1", + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.4", "is-string": "^1.0.7" }, "engines": { @@ -3629,16 +3603,17 @@ } }, "node_modules/array.prototype.findlastindex": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.3.tgz", - "integrity": "sha512-LzLoiOMAxvy+Gd3BAq3B7VeIgPdo+Q8hthvKtXybMvRV0jrXfJM/t8mw7nNlpEcVlVUnCnM2KSX4XU5HmpodOA==", + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.5.tgz", + "integrity": "sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "es-shim-unscopables": "^1.0.0", - "get-intrinsic": "^1.2.1" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-shim-unscopables": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -3684,17 +3659,18 @@ } }, "node_modules/arraybuffer.prototype.slice": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.2.tgz", - "integrity": "sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw==", - "devOptional": true, + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz", + "integrity": "sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==", + "dev": true, "dependencies": { - "array-buffer-byte-length": "^1.0.0", - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "get-intrinsic": "^1.2.1", - "is-array-buffer": "^3.0.2", + "array-buffer-byte-length": "^1.0.1", + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "es-abstract": "^1.22.3", + "es-errors": "^1.2.1", + "get-intrinsic": "^1.2.3", + "is-array-buffer": "^3.0.4", "is-shared-array-buffer": "^1.0.2" }, "engines": { @@ -3710,9 +3686,9 @@ "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==" }, "node_modules/async": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", - "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==" + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz", + "integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==" }, "node_modules/async-cache": { "version": "1.1.0", @@ -3770,9 +3746,9 @@ } }, "node_modules/autoprefixer": { - "version": "10.4.15", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.15.tgz", - "integrity": "sha512-KCuPB8ZCIqFdA4HwKXsvz7j6gvSDNhDP7WnUjBleRkKjPdvCmHFuQ77ocavI8FT6NdvlBnE2UFr2H4Mycn8Vew==", + "version": "10.4.20", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.20.tgz", + "integrity": "sha512-XY25y5xSv/wEoqzDyXXME4AFfkZI0P23z6Fs3YgymDnKJkCGOnkL0iTxCa85UTqaSgfcqyf3UA6+c7wUvx/16g==", "dev": true, "funding": [ { @@ -3789,11 +3765,11 @@ } ], "dependencies": { - "browserslist": "^4.21.10", - "caniuse-lite": "^1.0.30001520", - "fraction.js": "^4.2.0", + "browserslist": "^4.23.3", + "caniuse-lite": "^1.0.30001646", + "fraction.js": "^4.3.7", "normalize-range": "^0.1.2", - "picocolors": "^1.0.0", + "picocolors": "^1.0.1", "postcss-value-parser": "^4.2.0" }, "bin": { @@ -3807,10 +3783,13 @@ } }, "node_modules/available-typed-arrays": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", - "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", - "devOptional": true, + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "dev": true, + "dependencies": { + "possible-typed-array-names": "^1.0.0" + }, "engines": { "node": ">= 0.4" }, @@ -3904,23 +3883,26 @@ } }, "node_modules/babel-preset-current-node-syntax": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz", - "integrity": "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.1.0.tgz", + "integrity": "sha512-ldYss8SbBlWva1bs28q78Ju5Zq1F+8BrqBZZ0VFhLBvhh6lCpC2o3gDJi/5DRLs9FgYZCnmPYIVFU4lRXCkyUw==", "dev": true, "dependencies": { "@babel/plugin-syntax-async-generators": "^7.8.4", "@babel/plugin-syntax-bigint": "^7.8.3", - "@babel/plugin-syntax-class-properties": "^7.8.3", - "@babel/plugin-syntax-import-meta": "^7.8.3", + "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", + "@babel/plugin-syntax-import-attributes": "^7.24.7", + "@babel/plugin-syntax-import-meta": "^7.10.4", "@babel/plugin-syntax-json-strings": "^7.8.3", - "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", "@babel/plugin-syntax-object-rest-spread": "^7.8.3", "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-syntax-top-level-await": "^7.8.3" + "@babel/plugin-syntax-private-property-in-object": "^7.14.5", + "@babel/plugin-syntax-top-level-await": "^7.14.5" }, "peerDependencies": { "@babel/core": "^7.0.0" @@ -3989,22 +3971,16 @@ "resolved": "https://registry.npmjs.org/batch-processor/-/batch-processor-1.0.0.tgz", "integrity": "sha512-xoLQD8gmmR32MeuBHgH0Tzd5PuSZx71ZsbhVxOCRbgktZEPe4SQy7s9Z50uPp0F/f7iw2XmkHN2xkgbMfckMDA==" }, - "node_modules/big-integer": { - "version": "1.6.51", - "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.51.tgz", - "integrity": "sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==", - "dev": true, - "engines": { - "node": ">=0.6" - } - }, "node_modules/binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", "dev": true, "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/binary-search": { @@ -4091,18 +4067,6 @@ "vue-functional-data-merge": "^3.1.0" } }, - "node_modules/bplist-parser": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.2.0.tgz", - "integrity": "sha512-z0M+byMThzQmD9NILRniCUXYsYpjwnlO8N5uCFaCqIOpqRsJCrQL9NK3JsD67CN5a08nF5oIL2bD6loTdHOuKw==", - "dev": true, - "dependencies": { - "big-integer": "^1.6.44" - }, - "engines": { - "node": ">= 5.10.0" - } - }, "node_modules/brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -4113,12 +4077,12 @@ } }, "node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", "dev": true, "dependencies": { - "fill-range": "^7.0.1" + "fill-range": "^7.1.1" }, "engines": { "node": ">=8" @@ -4134,9 +4098,9 @@ } }, "node_modules/browserslist": { - "version": "4.22.1", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.1.tgz", - "integrity": "sha512-FEVc202+2iuClEhZhrWy6ZiAcRLvNMyYcxZ8raemul1DYVOVdFsbqckWLdsixQZCpJlwe77Z3UTalE7jsjnKfQ==", + "version": "4.23.3", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.3.tgz", + "integrity": "sha512-btwCFJVjI4YWDNfau8RhZ+B1Q/VLoUITrm3RlP6y1tYGWIOa+InuYiRGXUBXo8nA1qKmHMyLB/iVQg5TT4eFoA==", "dev": true, "funding": [ { @@ -4153,10 +4117,10 @@ } ], "dependencies": { - "caniuse-lite": "^1.0.30001541", - "electron-to-chromium": "^1.4.535", - "node-releases": "^2.0.13", - "update-browserslist-db": "^1.0.13" + "caniuse-lite": "^1.0.30001646", + "electron-to-chromium": "^1.5.4", + "node-releases": "^2.0.18", + "update-browserslist-db": "^1.1.0" }, "bin": { "browserslist": "cli.js" @@ -4221,9 +4185,9 @@ "dev": true }, "node_modules/builtins": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/builtins/-/builtins-5.0.1.tgz", - "integrity": "sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/builtins/-/builtins-5.1.0.tgz", + "integrity": "sha512-SW9lzGTLvWTP1AY8xeAMZimqDrIaSdLQUcVr9DMef51niJ022Ri87SwRRKYm4A6iHfkPaiVUu/Duw2Wc4J7kKg==", "dev": true, "dependencies": { "semver": "^7.0.0" @@ -4238,41 +4202,32 @@ "readable-stream": "^3.1.1" } }, - "node_modules/bundle-name": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/bundle-name/-/bundle-name-3.0.0.tgz", - "integrity": "sha512-PKA4BeSvBpQKQ8iPOGCSiell+N8P+Tf1DlwqmYhpe2gAhKPHn8EYOxVT+ShuGmhg8lN8XiSlS80yiExKXrURlw==", - "dev": true, - "dependencies": { - "run-applescript": "^5.0.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/cacache": { - "version": "17.1.4", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-17.1.4.tgz", - "integrity": "sha512-/aJwG2l3ZMJ1xNAnqbMpA40of9dj/pIH3QfiuQSqjfPJF747VR0J/bHn+/KdNnHKc6XQcWt/AfRSBft82W1d2A==", + "version": "16.1.3", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-16.1.3.tgz", + "integrity": "sha512-/+Emcj9DAXxX4cwlLmRI9c166RuL3w30zp4R7Joiv2cQTtTtA+jeuCAjH3ZlGnYS3tKENSrKhAzVVP9GVyzeYQ==", "dependencies": { - "@npmcli/fs": "^3.1.0", - "fs-minipass": "^3.0.0", - "glob": "^10.2.2", + "@npmcli/fs": "^2.1.0", + "@npmcli/move-file": "^2.0.0", + "chownr": "^2.0.0", + "fs-minipass": "^2.1.0", + "glob": "^8.0.1", + "infer-owner": "^1.0.4", "lru-cache": "^7.7.1", - "minipass": "^7.0.3", + "minipass": "^3.1.6", "minipass-collect": "^1.0.2", "minipass-flush": "^1.0.5", "minipass-pipeline": "^1.2.4", + "mkdirp": "^1.0.4", "p-map": "^4.0.0", - "ssri": "^10.0.0", + "promise-inflight": "^1.0.1", + "rimraf": "^3.0.2", + "ssri": "^9.0.0", "tar": "^6.1.11", - "unique-filename": "^3.0.0" + "unique-filename": "^2.0.0" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, "node_modules/cacache/node_modules/brace-expansion": { @@ -4283,30 +4238,20 @@ "balanced-match": "^1.0.0" } }, - "node_modules/cacache/node_modules/chownr": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", - "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", - "engines": { - "node": ">=10" - } - }, "node_modules/cacache/node_modules/glob": { - "version": "10.3.10", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", - "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", + "deprecated": "Glob versions prior to v9 are no longer supported", "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^2.3.5", - "minimatch": "^9.0.1", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", - "path-scurry": "^1.10.1" - }, - "bin": { - "glob": "dist/esm/bin.mjs" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" }, "engines": { - "node": ">=16 || 14 >=14.17" + "node": ">=12" }, "funding": { "url": "https://github.com/sponsors/isaacs" @@ -4321,25 +4266,14 @@ } }, "node_modules/cacache/node_modules/minimatch": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", - "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", "dependencies": { "brace-expansion": "^2.0.1" }, "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/cacache/node_modules/minipass": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", - "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", - "engines": { - "node": ">=16 || 14 >=14.17" + "node": ">=10" } }, "node_modules/cacache/node_modules/mkdirp": { @@ -4369,28 +4303,6 @@ "node": ">=10" } }, - "node_modules/cacache/node_modules/tar/node_modules/fs-minipass": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", - "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", - "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/cacache/node_modules/tar/node_modules/fs-minipass/node_modules/minipass": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", - "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/cacache/node_modules/tar/node_modules/minipass": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", @@ -4399,6 +4311,11 @@ "node": ">=8" } }, + "node_modules/cacache/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, "node_modules/calendar-data-generate": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/calendar-data-generate/-/calendar-data-generate-1.0.3.tgz", @@ -4450,9 +4367,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001546", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001546.tgz", - "integrity": "sha512-zvtSJwuQFpewSyRrI3AsftF6rM0X80mZkChIt1spBGEvRglCrjTniXvinc8JKRoqTwXAgvqTImaN9igfSMtUBw==", + "version": "1.0.30001658", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001658.tgz", + "integrity": "sha512-N2YVqWbJELVdrnsW5p+apoQyYt51aBMSsBZki1XZEfeBCexcM/sf4xiAHcXQBkuOwJBXtWF7aW1sYX6tKebPHw==", "dev": true, "funding": [ { @@ -4499,14 +4416,14 @@ "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==" }, "node_modules/chart.js": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/chart.js/-/chart.js-4.4.0.tgz", - "integrity": "sha512-vQEj6d+z0dcsKLlQvbKIMYFHd3t8W/7L2vfJIbYcfyPcRx92CsHqECpueN8qVGNlKyDcr5wBrYAYKnfu/9Q1hQ==", + "version": "4.4.4", + "resolved": "https://registry.npmjs.org/chart.js/-/chart.js-4.4.4.tgz", + "integrity": "sha512-emICKGBABnxhMjUjlYRR12PmOXhJ2eJjEHL2/dZlWjxRAZT1D8xplLFq5M0tMQK8ja+wBS/tuVEJB5C6r7VxJA==", "dependencies": { "@kurkle/color": "^0.3.0" }, "engines": { - "pnpm": ">=7" + "pnpm": ">=8" } }, "node_modules/chartjs-plugin-annotation": { @@ -4537,16 +4454,10 @@ } }, "node_modules/chokidar": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ], "dependencies": { "anymatch": "~3.1.2", "braces": "~3.0.2", @@ -4559,6 +4470,9 @@ "engines": { "node": ">= 8.10.0" }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, "optionalDependencies": { "fsevents": "~2.3.2" } @@ -4576,9 +4490,12 @@ } }, "node_modules/chownr": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", - "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", + "engines": { + "node": ">=10" + } }, "node_modules/ci-info": { "version": "3.9.0", @@ -4596,9 +4513,9 @@ } }, "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==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.4.0.tgz", + "integrity": "sha512-N1NGmowPlGBLsOZLPvm48StN04V4YvQRL0i6b7ctrVY3epjP/ct7hFLOItz6pDIvRjwpfPxi52a2UWV2ziir8g==", "devOptional": true }, "node_modules/clamp": { @@ -4615,12 +4532,13 @@ } }, "node_modules/cli-color": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/cli-color/-/cli-color-2.0.3.tgz", - "integrity": "sha512-OkoZnxyC4ERN3zLzZaY9Emb7f/MhBOIpePv0Ycok0fJYT+Ouo00UBEIwsVsr0yoow++n5YWlSUgST9GKhNHiRQ==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/cli-color/-/cli-color-2.0.4.tgz", + "integrity": "sha512-zlnpg0jNcibNrO7GG9IeHH7maWFeCz+Ja1wx/7tZNU5ASSSSZ+/qZciM0/LHCYxSdqv5h2sdbQ/PXYdOuetXvA==", + "dev": true, "dependencies": { "d": "^1.0.1", - "es5-ext": "^0.10.61", + "es5-ext": "^0.10.64", "es6-iterator": "^2.0.3", "memoizee": "^0.4.15", "timers-ext": "^0.1.7" @@ -4847,10 +4765,9 @@ "dev": true }, "node_modules/cookie": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", - "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", - "optional": true, + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", + "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==", "engines": { "node": ">= 0.6" } @@ -4896,10 +4813,18 @@ "luxon": "~3.4.0" } }, + "node_modules/cron/node_modules/luxon": { + "version": "3.4.4", + "resolved": "https://registry.npmjs.org/luxon/-/luxon-3.4.4.tgz", + "integrity": "sha512-zobTr7akeGHnv7eBOXcRgMeCP6+uyYsczwmeRCauvpvaAltgNyTbLH/+VaEAPUeWBT+1GuNmz4wC/6jtQzbbVA==", + "engines": { + "node": ">=12" + } + }, "node_modules/cronstrue": { - "version": "2.32.0", - "resolved": "https://registry.npmjs.org/cronstrue/-/cronstrue-2.32.0.tgz", - "integrity": "sha512-dmNflOCNJL6lZEj0dp2YhGIPY83VTjFue6d9feFhnNtrER6mAjBrUvSgK95j3IB/xNGpLjaZDIDG6ACKTZr9Yw==", + "version": "2.50.0", + "resolved": "https://registry.npmjs.org/cronstrue/-/cronstrue-2.50.0.tgz", + "integrity": "sha512-ULYhWIonJzlScCCQrPUG5uMXzXxSixty4djud9SS37DoNxDdkeRocxzHuAo4ImRBUK+mAuU5X9TSwEDccnnuPg==", "bin": { "cronstrue": "bin/cli.js" } @@ -4908,6 +4833,7 @@ "version": "7.0.3", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", @@ -4935,140 +4861,111 @@ } }, "node_modules/csstype": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz", - "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==" + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==" }, "node_modules/csv-stringify": { - "version": "6.4.6", - "resolved": "https://registry.npmjs.org/csv-stringify/-/csv-stringify-6.4.6.tgz", - "integrity": "sha512-h2V2XZ3uOTLilF5dPIptgUfN/o2ia/80Ie0Lly18LAnw5s8Eb7kt8rfxSUy24AztJZas9f6DPZpVlzDUtFt/ag==" + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/csv-stringify/-/csv-stringify-6.5.1.tgz", + "integrity": "sha512-+9lpZfwpLntpTIEpFbwQyWuW/hmI/eHuJZD1XzeZpfZTqkf1fyvBbBLXTJJMsBuuS11uTShMqPwzx4A6ffXgRQ==" }, "node_modules/d": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", - "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", - "dependencies": { - "es5-ext": "^0.10.50", - "type": "^1.0.1" - } - }, - "node_modules/dayjs": { - "version": "1.11.10", - "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.10.tgz", - "integrity": "sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ==" - }, - "node_modules/de-indent": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/de-indent/-/de-indent-1.0.2.tgz", - "integrity": "sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==", - "dev": true - }, - "node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "resolved": "https://registry.npmjs.org/d/-/d-1.0.2.tgz", + "integrity": "sha512-MOqHvMWF9/9MX6nza0KgvFH4HpMU0EF5uUDXqX/BtxtU8NfB0QzRtJ8Oe/6SuS4kbhyzVJwjd97EA4PKrzJ8bw==", "dependencies": { - "ms": "2.1.2" + "es5-ext": "^0.10.64", + "type": "^2.7.2" }, "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } + "node": ">=0.12" } }, - "node_modules/dedent": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.5.1.tgz", - "integrity": "sha512-+LxW+KLWxu3HW3M2w2ympwtqPrqYRzU8fqi6Fhd18fBALe15blJPI/I4+UHveMVG6lJqB4JNd4UG0S5cnVHwIg==", - "dev": true, - "peerDependencies": { - "babel-plugin-macros": "^3.1.0" + "node_modules/d3-array": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.4.tgz", + "integrity": "sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==", + "dependencies": { + "internmap": "1 - 2" }, - "peerDependenciesMeta": { - "babel-plugin-macros": { - "optional": true - } + "engines": { + "node": ">=12" } }, - "node_modules/deep-extend": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", - "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "node_modules/d3-color": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz", + "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==", "engines": { - "node": ">=4.0.0" + "node": ">=12" } }, - "node_modules/deep-is": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "dev": true - }, - "node_modules/deepmerge": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", - "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", + "node_modules/d3-format": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-3.1.0.tgz", + "integrity": "sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==", "engines": { - "node": ">=0.10.0" + "node": ">=12" } }, - "node_modules/default-browser": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/default-browser/-/default-browser-4.0.0.tgz", - "integrity": "sha512-wX5pXO1+BrhMkSbROFsyxUm0i/cJEScyNhA4PPxc41ICuv05ZZB/MX28s8aZx6xjmatvebIapF6hLEKEcpneUA==", - "dev": true, + "node_modules/d3-interpolate": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz", + "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==", "dependencies": { - "bundle-name": "^3.0.0", - "default-browser-id": "^3.0.0", - "execa": "^7.1.1", - "titleize": "^3.0.0" + "d3-color": "1 - 3" }, "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=12" } }, - "node_modules/default-browser-id": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/default-browser-id/-/default-browser-id-3.0.0.tgz", - "integrity": "sha512-OZ1y3y0SqSICtE8DE4S8YOE9UZOJ8wO16fKWVP5J1Qz42kV9jcnMVFrEE/noXb/ss3Q4pZIH79kxofzyNNtUNA==", - "dev": true, + "node_modules/d3-scale": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz", + "integrity": "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==", "dependencies": { - "bplist-parser": "^0.2.0", - "untildify": "^4.0.0" + "d3-array": "2.10.0 - 3", + "d3-format": "1 - 3", + "d3-interpolate": "1.2.0 - 3", + "d3-time": "2.1.1 - 3", + "d3-time-format": "2 - 4" }, "engines": { "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/defaults": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", - "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", + "node_modules/d3-time": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-3.1.0.tgz", + "integrity": "sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==", "dependencies": { - "clone": "^1.0.2" + "d3-array": "2 - 3" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": ">=12" } }, - "node_modules/define-data-property": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", - "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "node_modules/d3-time-format": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-4.1.0.tgz", + "integrity": "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==", "dependencies": { - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "gopd": "^1.0.1" + "d3-time": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/data-view-buffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.1.tgz", + "integrity": "sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" }, "engines": { "node": ">= 0.4" @@ -5077,18 +4974,130 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/define-lazy-prop": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz", - "integrity": "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==", + "node_modules/data-view-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz", + "integrity": "sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==", "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, "engines": { - "node": ">=12" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/data-view-byte-offset": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz", + "integrity": "sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/dayjs": { + "version": "1.11.13", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.13.tgz", + "integrity": "sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==" + }, + "node_modules/de-indent": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/de-indent/-/de-indent-1.0.2.tgz", + "integrity": "sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==", + "dev": true + }, + "node_modules/debug": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/dedent": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.5.3.tgz", + "integrity": "sha512-NHQtfOOW68WD8lgypbLA5oT+Bt0xXJhiYvoR6SmmNXZfpzOGXwdKWmcwG8N7PwVVWV3eF/68nmD9BaJSsTBhyQ==", + "dev": true, + "peerDependencies": { + "babel-plugin-macros": "^3.1.0" + }, + "peerDependenciesMeta": { + "babel-plugin-macros": { + "optional": true + } + } + }, + "node_modules/deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true + }, + "node_modules/deepmerge": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/defaults": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", + "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", + "dependencies": { + "clone": "^1.0.2" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/define-properties": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", @@ -5201,9 +5210,9 @@ } }, "node_modules/dompurify": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.1.2.tgz", - "integrity": "sha512-hLGGBI1tw5N8qTELr3blKjAML/LY4ANxksbS612UiJyDfyf/2D092Pvm+S7pmeTGJRqvlJkFzBoHBQKgQlOQVg==" + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.1.6.tgz", + "integrity": "sha512-cTOAhc36AalkjtBpfG6O8JimdTMWNXjiePT2xQH/ppBGi/4uIpmj8eKyIkMJErXWARyINV/sB38yf8JCLF5pbQ==" }, "node_modules/dumpme": { "version": "1.0.3", @@ -5222,7 +5231,8 @@ "node_modules/eastasianwidth": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", - "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==" + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "dev": true }, "node_modules/ecdsa-sig-formatter": { "version": "1.0.11", @@ -5232,10 +5242,25 @@ "safe-buffer": "^5.0.1" } }, + "node_modules/ejs": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.10.tgz", + "integrity": "sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==", + "dev": true, + "dependencies": { + "jake": "^10.8.5" + }, + "bin": { + "ejs": "bin/cli.js" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/elastic-apm-node": { - "version": "3.50.0", - "resolved": "https://registry.npmjs.org/elastic-apm-node/-/elastic-apm-node-3.50.0.tgz", - "integrity": "sha512-5OT+oQ1idKIlJPXWRc8LfGbGooCfncN3tnb1cze5i2mHpYdFHXu1UouhxxXmv87jQY1bB8aMM87E83IJmUnihQ==", + "version": "3.51.0", + "resolved": "https://registry.npmjs.org/elastic-apm-node/-/elastic-apm-node-3.51.0.tgz", + "integrity": "sha512-GvZyoV4uhHB9qW4QE4pGcYZLbDCay2VzbeE5zN5v9vrQQ7j72GbzE5wGmtryNHwqP4DGCuXUk/jerArfpIquOQ==", "optional": true, "dependencies": { "@elastic/ecs-pino-format": "^1.2.0", @@ -5281,6 +5306,27 @@ "node": ">=8.6.0" } }, + "node_modules/elastic-apm-node/node_modules/cookie": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", + "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", + "optional": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/elastic-apm-node/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "optional": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/elastic-apm-node/node_modules/semver": { "version": "6.3.1", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", @@ -5328,10 +5374,16 @@ "webidl-conversions": "^4.0.2" } }, + "node_modules/elastic-apm-node/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "optional": true + }, "node_modules/electron-to-chromium": { - "version": "1.4.544", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.544.tgz", - "integrity": "sha512-54z7squS1FyFRSUqq/knOFSptjjogLZXbKcYk3B0qkE1KZzvqASwRZnY2KzZQJqIYLVD38XZeoiMRflYSwyO4w==", + "version": "1.5.17", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.17.tgz", + "integrity": "sha512-Q6Q+04tjC2KJ8qsSOSgovvhWcv5t+SmpH6/YfAWmhpE5/r+zw6KQy1/yWVFFNyEBvy68twTTXr2d5eLfCq7QIw==", "dev": true }, "node_modules/element-resize-detector": { @@ -5394,9 +5446,9 @@ } }, "node_modules/enhanced-resolve": { - "version": "5.15.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.15.0.tgz", - "integrity": "sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==", + "version": "5.17.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.17.1.tgz", + "integrity": "sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==", "dev": true, "dependencies": { "graceful-fs": "^4.2.4", @@ -5477,50 +5529,57 @@ } }, "node_modules/es-abstract": { - "version": "1.22.2", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.2.tgz", - "integrity": "sha512-YoxfFcDmhjOgWPWsV13+2RNjq1F6UQnfs+8TftwNqtzlmFzEXvlUwdrNrYeaizfjQzRMxkZ6ElWMOJIFKdVqwA==", - "devOptional": true, - "dependencies": { - "array-buffer-byte-length": "^1.0.0", - "arraybuffer.prototype.slice": "^1.0.2", - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "es-set-tostringtag": "^2.0.1", + "version": "1.23.3", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.3.tgz", + "integrity": "sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==", + "dev": true, + "dependencies": { + "array-buffer-byte-length": "^1.0.1", + "arraybuffer.prototype.slice": "^1.0.3", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "data-view-buffer": "^1.0.1", + "data-view-byte-length": "^1.0.1", + "data-view-byte-offset": "^1.0.0", + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-set-tostringtag": "^2.0.3", "es-to-primitive": "^1.2.1", "function.prototype.name": "^1.1.6", - "get-intrinsic": "^1.2.1", - "get-symbol-description": "^1.0.0", + "get-intrinsic": "^1.2.4", + "get-symbol-description": "^1.0.2", "globalthis": "^1.0.3", "gopd": "^1.0.1", - "has": "^1.0.3", - "has-property-descriptors": "^1.0.0", - "has-proto": "^1.0.1", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.0.3", "has-symbols": "^1.0.3", - "internal-slot": "^1.0.5", - "is-array-buffer": "^3.0.2", + "hasown": "^2.0.2", + "internal-slot": "^1.0.7", + "is-array-buffer": "^3.0.4", "is-callable": "^1.2.7", - "is-negative-zero": "^2.0.2", + "is-data-view": "^1.0.1", + "is-negative-zero": "^2.0.3", "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.2", + "is-shared-array-buffer": "^1.0.3", "is-string": "^1.0.7", - "is-typed-array": "^1.1.12", + "is-typed-array": "^1.1.13", "is-weakref": "^1.0.2", - "object-inspect": "^1.12.3", + "object-inspect": "^1.13.1", "object-keys": "^1.1.1", - "object.assign": "^4.1.4", - "regexp.prototype.flags": "^1.5.1", - "safe-array-concat": "^1.0.1", - "safe-regex-test": "^1.0.0", - "string.prototype.trim": "^1.2.8", - "string.prototype.trimend": "^1.0.7", - "string.prototype.trimstart": "^1.0.7", - "typed-array-buffer": "^1.0.0", - "typed-array-byte-length": "^1.0.0", - "typed-array-byte-offset": "^1.0.0", - "typed-array-length": "^1.0.4", + "object.assign": "^4.1.5", + "regexp.prototype.flags": "^1.5.2", + "safe-array-concat": "^1.1.2", + "safe-regex-test": "^1.0.3", + "string.prototype.trim": "^1.2.9", + "string.prototype.trimend": "^1.0.8", + "string.prototype.trimstart": "^1.0.8", + "typed-array-buffer": "^1.0.2", + "typed-array-byte-length": "^1.0.1", + "typed-array-byte-offset": "^1.0.2", + "typed-array-length": "^1.0.6", "unbox-primitive": "^1.0.2", - "which-typed-array": "^1.1.11" + "which-typed-array": "^1.1.15" }, "engines": { "node": ">= 0.4" @@ -5548,34 +5607,46 @@ "node": ">= 0.4" } }, - "node_modules/es-set-tostringtag": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz", - "integrity": "sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==", + "node_modules/es-object-atoms": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz", + "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==", "devOptional": true, "dependencies": { - "get-intrinsic": "^1.1.3", - "has": "^1.0.3", - "has-tostringtag": "^1.0.0" + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz", + "integrity": "sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.2.4", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.1" }, "engines": { "node": ">= 0.4" } }, "node_modules/es-shim-unscopables": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz", - "integrity": "sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz", + "integrity": "sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==", "dev": true, "dependencies": { - "has": "^1.0.3" + "hasown": "^2.0.0" } }, "node_modules/es-to-primitive": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", - "devOptional": true, + "dev": true, "dependencies": { "is-callable": "^1.1.4", "is-date-object": "^1.0.1", @@ -5614,12 +5685,15 @@ } }, "node_modules/es6-symbol": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", - "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==", + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.4.tgz", + "integrity": "sha512-U9bFFjX8tFiATgtkJ1zg25+KviIXpgRvRHS8sau3GfhVzThRQrOeksPeT0BWW2MNZs1OEWJ1DPXOQMn0KKRkvg==", "dependencies": { - "d": "^1.0.1", - "ext": "^1.1.2" + "d": "^1.0.2", + "ext": "^1.7.0" + }, + "engines": { + "node": ">=0.12" } }, "node_modules/es6-weak-map": { @@ -5671,9 +5745,9 @@ } }, "node_modules/escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", "engines": { "node": ">=6" } @@ -5789,6 +5863,7 @@ "version": "22.0.0", "resolved": "https://registry.npmjs.org/eslint-config-standard-with-typescript/-/eslint-config-standard-with-typescript-22.0.0.tgz", "integrity": "sha512-VA36U7UlFpwULvkdnh6MQj5GAV2Q+tT68ALLAwJP0ZuNXU2m0wX07uxX4qyLRdHgSzH4QJ73CveKBuSOYvh7vQ==", + "deprecated": "Please use eslint-config-love, instead.", "dev": true, "dependencies": { "@typescript-eslint/parser": "^5.0.0", @@ -5883,35 +5958,10 @@ "ms": "^2.1.1" } }, - "node_modules/eslint-import-resolver-typescript": { - "version": "3.6.1", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.6.1.tgz", - "integrity": "sha512-xgdptdoi5W3niYeuQxKmzVDTATvLYqhpwmykwsh7f6HIOStGWEIL9iqZgQDF9u9OEzrRwR8no5q2VT+bjAujTg==", - "dev": true, - "dependencies": { - "debug": "^4.3.4", - "enhanced-resolve": "^5.12.0", - "eslint-module-utils": "^2.7.4", - "fast-glob": "^3.3.1", - "get-tsconfig": "^4.5.0", - "is-core-module": "^2.11.0", - "is-glob": "^4.0.3" - }, - "engines": { - "node": "^14.18.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/unts/projects/eslint-import-resolver-ts" - }, - "peerDependencies": { - "eslint": "*", - "eslint-plugin-import": "*" - } - }, "node_modules/eslint-module-utils": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.8.0.tgz", - "integrity": "sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==", + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.11.0.tgz", + "integrity": "sha512-gbBE5Hitek/oG6MUVj6sFuzEjA/ClzNflVrLovHi/JgLdC7fiN5gLAY1WIPW1a0V5I999MnsrvVrCOGmmVqDBQ==", "dev": true, "dependencies": { "debug": "^3.2.7" @@ -5978,28 +6028,29 @@ } }, "node_modules/eslint-plugin-import": { - "version": "2.28.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.28.1.tgz", - "integrity": "sha512-9I9hFlITvOV55alzoKBI+K9q74kv0iKMeY6av5+umsNwayt59fz692daGyjR+oStBQgx6nwR9rXldDev3Clw+A==", + "version": "2.30.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.30.0.tgz", + "integrity": "sha512-/mHNE9jINJfiD2EKkg1BKyPyUk4zdnT54YgbOgfjSakWT5oyX/qQLVNTkehyfpcMxZXMy1zyonZ2v7hZTX43Yw==", "dev": true, "dependencies": { - "array-includes": "^3.1.6", - "array.prototype.findlastindex": "^1.2.2", - "array.prototype.flat": "^1.3.1", - "array.prototype.flatmap": "^1.3.1", + "@rtsao/scc": "^1.1.0", + "array-includes": "^3.1.8", + "array.prototype.findlastindex": "^1.2.5", + "array.prototype.flat": "^1.3.2", + "array.prototype.flatmap": "^1.3.2", "debug": "^3.2.7", "doctrine": "^2.1.0", - "eslint-import-resolver-node": "^0.3.7", - "eslint-module-utils": "^2.8.0", - "has": "^1.0.3", - "is-core-module": "^2.13.0", + "eslint-import-resolver-node": "^0.3.9", + "eslint-module-utils": "^2.9.0", + "hasown": "^2.0.2", + "is-core-module": "^2.15.1", "is-glob": "^4.0.3", "minimatch": "^3.1.2", - "object.fromentries": "^2.0.6", - "object.groupby": "^1.0.0", - "object.values": "^1.1.6", + "object.fromentries": "^2.0.8", + "object.groupby": "^1.0.3", + "object.values": "^1.2.0", "semver": "^6.3.1", - "tsconfig-paths": "^3.14.2" + "tsconfig-paths": "^3.15.0" }, "engines": { "node": ">=4" @@ -6039,9 +6090,9 @@ } }, "node_modules/eslint-plugin-jest": { - "version": "27.4.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-27.4.2.tgz", - "integrity": "sha512-3Nfvv3wbq2+PZlRTf2oaAWXWwbdBejFRBR2O8tAO67o+P8zno+QGbcDYaAXODlreXVg+9gvWhKKmG2rgfb8GEg==", + "version": "27.9.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-27.9.0.tgz", + "integrity": "sha512-QIT7FH7fNmd9n4se7FFKHbsLKGQiw885Ds6Y/sxKgCZ6natwCsXdgPOADnYVxN2QrRweF0FZWbJ6S7Rsn7llug==", "dev": true, "dependencies": { "@typescript-eslint/utils": "^5.10.0" @@ -6050,7 +6101,7 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" }, "peerDependencies": { - "@typescript-eslint/eslint-plugin": "^5.0.0 || ^6.0.0", + "@typescript-eslint/eslint-plugin": "^5.0.0 || ^6.0.0 || ^7.0.0", "eslint": "^7.0.0 || ^8.0.0", "jest": "*" }, @@ -6106,23 +6157,24 @@ } }, "node_modules/eslint-plugin-prettier": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.0.0.tgz", - "integrity": "sha512-AgaZCVuYDXHUGxj/ZGu1u8H8CYgDY3iG6w5kUFw4AzMVXzB7VvbKgYR4nATIN+OvUrghMbiDLeimVjVY5ilq3w==", + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.2.1.tgz", + "integrity": "sha512-gH3iR3g4JfF+yYPaJYkN7jEl9QbweL/YfkoRlNnuIEHEz1vHVlCmWOS+eGGiRuzHQXdJFCOTxRgvju9b8VUmrw==", "dev": true, "dependencies": { "prettier-linter-helpers": "^1.0.0", - "synckit": "^0.8.5" + "synckit": "^0.9.1" }, "engines": { "node": "^14.18.0 || >=16.0.0" }, "funding": { - "url": "https://opencollective.com/prettier" + "url": "https://opencollective.com/eslint-plugin-prettier" }, "peerDependencies": { "@types/eslint": ">=8.0.0", "eslint": ">=8.0.0", + "eslint-config-prettier": "*", "prettier": ">=3.0.0" }, "peerDependenciesMeta": { @@ -6135,53 +6187,57 @@ } }, "node_modules/eslint-plugin-promise": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-6.1.1.tgz", - "integrity": "sha512-tjqWDwVZQo7UIPMeDReOpUgHCmCiH+ePnVT+5zVapL0uuHnegBUs2smM13CzOs2Xb5+MHMRFTs9v24yjba4Oig==", + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-6.6.0.tgz", + "integrity": "sha512-57Zzfw8G6+Gq7axm2Pdo3gW/Rx3h9Yywgn61uE/3elTCOePEHVrn2i5CdfBwA1BLK0Q0WqctICIUSqXZW/VprQ==", "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, + "funding": { + "url": "https://opencollective.com/eslint" + }, "peerDependencies": { - "eslint": "^7.0.0 || ^8.0.0" + "eslint": "^7.0.0 || ^8.0.0 || ^9.0.0" } }, "node_modules/eslint-plugin-tailwindcss": { - "version": "3.15.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-tailwindcss/-/eslint-plugin-tailwindcss-3.15.1.tgz", - "integrity": "sha512-4RXRMIaMG07C2TBEW1k0VM4+dDazz1kxcZhkK4zirvmHGZTA4jnlSO2kq5mamuSPi+Wo17dh2SlC8IyFBuCd7Q==", + "version": "3.17.4", + "resolved": "https://registry.npmjs.org/eslint-plugin-tailwindcss/-/eslint-plugin-tailwindcss-3.17.4.tgz", + "integrity": "sha512-gJAEHmCq2XFfUP/+vwEfEJ9igrPeZFg+skeMtsxquSQdxba9XRk5bn0Bp9jxG1VV9/wwPKi1g3ZjItu6MIjhNg==", "dev": true, "dependencies": { "fast-glob": "^3.2.5", "postcss": "^8.4.4" }, "engines": { - "node": ">=12.13.0" + "node": ">=18.12.0" }, "peerDependencies": { "tailwindcss": "^3.4.0" } }, "node_modules/eslint-plugin-vue": { - "version": "9.17.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-9.17.0.tgz", - "integrity": "sha512-r7Bp79pxQk9I5XDP0k2dpUC7Ots3OSWgvGZNu3BxmKK6Zg7NgVtcOB6OCna5Kb9oQwJPl5hq183WD0SY5tZtIQ==", + "version": "9.28.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-9.28.0.tgz", + "integrity": "sha512-ShrihdjIhOTxs+MfWun6oJWuk+g/LAhN+CiuOl/jjkG3l0F2AuK5NMTaWqyvBgkFtpYmyks6P4603mLmhNJW8g==", "dev": true, "peer": true, "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", + "globals": "^13.24.0", "natural-compare": "^1.4.0", "nth-check": "^2.1.1", - "postcss-selector-parser": "^6.0.13", - "semver": "^7.5.4", - "vue-eslint-parser": "^9.3.1", + "postcss-selector-parser": "^6.0.15", + "semver": "^7.6.3", + "vue-eslint-parser": "^9.4.3", "xml-name-validator": "^4.0.0" }, "engines": { "node": "^14.17.0 || >=16.0.0" }, "peerDependencies": { - "eslint": "^6.2.0 || ^7.0.0 || ^8.0.0" + "eslint": "^6.2.0 || ^7.0.0 || ^8.0.0 || ^9.0.0" } }, "node_modules/eslint-plugin-vue-kuzzle": { @@ -6200,20 +6256,6 @@ "node": ">=16.0.0" } }, - "node_modules/eslint-plugin-vue-kuzzle/node_modules/@vue/eslint-config-prettier": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/@vue/eslint-config-prettier/-/eslint-config-prettier-8.0.0.tgz", - "integrity": "sha512-55dPqtC4PM/yBjhAr+yEw6+7KzzdkBuLmnhBrDfp4I48+wy+Giqqj9yUr5T2uD/BkBROjjmqnLZmXRdOx/VtQg==", - "dev": true, - "dependencies": { - "eslint-config-prettier": "^8.8.0", - "eslint-plugin-prettier": "^5.0.0" - }, - "peerDependencies": { - "eslint": ">= 8.0.0", - "prettier": ">= 3.0.0" - } - }, "node_modules/eslint-scope": { "version": "7.2.2", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", @@ -6283,11 +6325,6 @@ "node": ">=0.10" } }, - "node_modules/esniff/node_modules/type": { - "version": "2.7.2", - "resolved": "https://registry.npmjs.org/type/-/type-2.7.2.tgz", - "integrity": "sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==" - }, "node_modules/espree": { "version": "9.6.1", "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", @@ -6325,6 +6362,7 @@ "version": "2.7.1", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", "dependencies": { "glob": "^7.1.3" }, @@ -6357,9 +6395,9 @@ } }, "node_modules/esquery": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", - "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", + "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", "dev": true, "dependencies": { "estraverse": "^5.1.0" @@ -6419,23 +6457,23 @@ "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==" }, "node_modules/execa": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-7.2.0.tgz", - "integrity": "sha512-UduyVP7TLB5IcAQl+OzLyLcS/l32W/GLg+AhHJ+ow40FOk2U3SAllPwR44v4vmdFwIWqpdwxxpQbF1n5ta9seA==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", "dev": true, "dependencies": { "cross-spawn": "^7.0.3", - "get-stream": "^6.0.1", - "human-signals": "^4.3.0", - "is-stream": "^3.0.0", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", "merge-stream": "^2.0.0", - "npm-run-path": "^5.1.0", - "onetime": "^6.0.0", - "signal-exit": "^3.0.7", - "strip-final-newline": "^3.0.0" + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" }, "engines": { - "node": "^14.18.0 || ^16.14.0 || >=18.0.0" + "node": ">=10" }, "funding": { "url": "https://github.com/sindresorhus/execa?sponsor=1" @@ -6479,11 +6517,6 @@ "type": "^2.7.2" } }, - "node_modules/ext/node_modules/type": { - "version": "2.7.2", - "resolved": "https://registry.npmjs.org/type/-/type-2.7.2.tgz", - "integrity": "sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==" - }, "node_modules/external-editor": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", @@ -6501,7 +6534,7 @@ "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "devOptional": true + "dev": true }, "node_modules/fast-diff": { "version": "1.3.0", @@ -6510,9 +6543,9 @@ "dev": true }, "node_modules/fast-glob": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz", - "integrity": "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==", + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", "dev": true, "dependencies": { "@nodelib/fs.stat": "^2.0.2", @@ -6541,22 +6574,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "devOptional": true - }, - "node_modules/fast-json-stringify": { - "version": "2.7.13", - "resolved": "https://registry.npmjs.org/fast-json-stringify/-/fast-json-stringify-2.7.13.tgz", - "integrity": "sha512-ar+hQ4+OIurUGjSJD1anvYSDcUflywhKjfxnsW4TBTD7+u0tJufv6DKRWoQk3vI6YBOWMoz0TQtfbe7dxbQmvA==", - "optional": true, - "dependencies": { - "ajv": "^6.11.0", - "deepmerge": "^4.2.2", - "rfdc": "^1.2.0", - "string-similarity": "^4.0.1" - }, - "engines": { - "node": ">= 10.0.0" - } + "dev": true }, "node_modules/fast-levenshtein": { "version": "2.0.6", @@ -6565,9 +6583,9 @@ "dev": true }, "node_modules/fast-redact": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/fast-redact/-/fast-redact-3.3.0.tgz", - "integrity": "sha512-6T5V1QK1u4oF+ATxs1lWUmlEk6P2T9HqJG3e2DnHOdVgZy2rFJBoEnrIedcTXlkAHU/zKC+7KETJ+KGGKwxgMQ==", + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/fast-redact/-/fast-redact-3.5.0.tgz", + "integrity": "sha512-dwsoQlS7h9hMeYUq1W++23NDcBLV4KqONnITDV9DjfS3q1SgDGVrBdvvTLUotWtPSD7asWDV9/CmsZPy8Hf70A==", "optional": true, "engines": { "node": ">=6" @@ -6609,9 +6627,9 @@ } }, "node_modules/fastq": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", - "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", + "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", "dev": true, "dependencies": { "reusify": "^1.0.4" @@ -6679,20 +6697,50 @@ "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==" }, - "node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "node_modules/filelist": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz", + "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==", "dev": true, "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" + "minimatch": "^5.0.1" } }, - "node_modules/find-up": { - "version": "5.0.0", + "node_modules/filelist/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/filelist/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-up": { + "version": "5.0.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", "dev": true, @@ -6708,9 +6756,9 @@ } }, "node_modules/flat-cache": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.1.1.tgz", - "integrity": "sha512-/qM2b3LUIaIgviBQovTLvijfyOQXPtSRnRK26ksj2J7rzPIecePUIpJsZ4T02Qg+xiAEKIs5K8dsHEd+VaKa/Q==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", + "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", "dev": true, "dependencies": { "flatted": "^3.2.9", @@ -6718,7 +6766,7 @@ "rimraf": "^3.0.2" }, "engines": { - "node": ">=12.0.0" + "node": "^10.12.0 || >=12.0.0" } }, "node_modules/flatstr": { @@ -6728,9 +6776,9 @@ "optional": true }, "node_modules/flatted": { - "version": "3.2.9", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.9.tgz", - "integrity": "sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz", + "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==", "dev": true }, "node_modules/fn.name": { @@ -6739,9 +6787,9 @@ "integrity": "sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw==" }, "node_modules/follow-redirects": { - "version": "1.15.6", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", - "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==", + "version": "1.15.9", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz", + "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==", "funding": [ { "type": "individual", @@ -6761,15 +6809,16 @@ "version": "0.3.3", "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", - "devOptional": true, + "dev": true, "dependencies": { "is-callable": "^1.1.3" } }, "node_modules/foreground-child": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", - "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.0.tgz", + "integrity": "sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==", + "dev": true, "dependencies": { "cross-spawn": "^7.0.0", "signal-exit": "^4.0.1" @@ -6785,6 +6834,7 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, "engines": { "node": ">=14" }, @@ -6812,9 +6862,9 @@ "optional": true }, "node_modules/fraction.js": { - "version": "4.3.6", - "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.6.tgz", - "integrity": "sha512-n2aZ9tNfYDwaHhvFTkhFErqOMIb8uyzSQ+vGJBjZyanAKZVbGUQ1sngfk9FdkBw7G26O7AgNjLcecLffD1c7eg==", + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz", + "integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==", "dev": true, "engines": { "node": "*" @@ -6866,22 +6916,14 @@ } }, "node_modules/fs-minipass": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-3.0.3.tgz", - "integrity": "sha512-XUBA9XClHbnJWSfBzjkm6RvPsyg3sryZt06BEQoXcF7EK/xpGaQYJgQKDJSUH5SGZ76Y7pFx1QBnXz09rU5Fbw==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", "dependencies": { - "minipass": "^7.0.3" + "minipass": "^3.0.0" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/fs-minipass/node_modules/minipass": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", - "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", - "engines": { - "node": ">=16 || 14 >=14.17" + "node": ">= 8" } }, "node_modules/fs.realpath": { @@ -6915,7 +6957,7 @@ "version": "1.1.6", "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", - "devOptional": true, + "dev": true, "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.2.0", @@ -6933,7 +6975,7 @@ "version": "1.2.3", "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", - "devOptional": true, + "dev": true, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -6942,6 +6984,7 @@ "version": "2.7.4", "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", "integrity": "sha512-14x4kjc6lkD3ltw589k0NrPD6cCNTD6CWoVUNpB85+DrtONoZn+Rug6xZU5RvSC4+TZPxA5AnBibQYAvZn41Hg==", + "deprecated": "This package is no longer supported.", "dependencies": { "aproba": "^1.0.3", "console-control-strings": "^1.0.0", @@ -7053,13 +7096,14 @@ } }, "node_modules/get-symbol-description": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", - "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", - "devOptional": true, + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.2.tgz", + "integrity": "sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==", + "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.1" + "call-bind": "^1.0.5", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4" }, "engines": { "node": ">= 0.4" @@ -7069,9 +7113,9 @@ } }, "node_modules/get-tsconfig": { - "version": "4.7.2", - "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.7.2.tgz", - "integrity": "sha512-wuMsz4leaj5hbGgg4IvDU0bqJagpftG5l5cXIAvo8uZrqn0NJqwtfupTN00VnkQJPcIRrxYrm1Ue24btpCha2A==", + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.8.0.tgz", + "integrity": "sha512-Pgba6TExTZ0FJAn1qkJAjIeKoDJ3CsI2ChuLohJnZl/tTU8MVrq3b+2t5UOPfRa4RMsorClBjJALkJUMjG1PAw==", "dev": true, "dependencies": { "resolve-pkg-maps": "^1.0.0" @@ -7084,6 +7128,7 @@ "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -7112,9 +7157,9 @@ } }, "node_modules/globals": { - "version": "13.23.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.23.0.tgz", - "integrity": "sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA==", + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", "dev": true, "dependencies": { "type-fest": "^0.20.2" @@ -7127,12 +7172,13 @@ } }, "node_modules/globalthis": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", - "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", - "devOptional": true, + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", + "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", + "dev": true, "dependencies": { - "define-properties": "^1.1.3" + "define-properties": "^1.2.1", + "gopd": "^1.0.1" }, "engines": { "node": ">= 0.4" @@ -7199,20 +7245,11 @@ "node": ">=0.8.0" } }, - "node_modules/has": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.4.tgz", - "integrity": "sha512-qdSAmqLF6209RFj4VVItywPMbm3vWylknmB3nvNiUIs72xAimcM8nVYxYr7ncvZq5qzk9MKIZR8ijqD/1QuYjQ==", - "devOptional": true, - "engines": { - "node": ">= 0.4.0" - } - }, "node_modules/has-bigints": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", - "devOptional": true, + "dev": true, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -7237,9 +7274,9 @@ } }, "node_modules/has-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", - "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", + "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", "engines": { "node": ">= 0.4" }, @@ -7259,12 +7296,12 @@ } }, "node_modules/has-tostringtag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", - "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", - "devOptional": true, + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "dev": true, "dependencies": { - "has-symbols": "^1.0.2" + "has-symbols": "^1.0.3" }, "engines": { "node": ">= 0.4" @@ -7349,12 +7386,12 @@ } }, "node_modules/human-signals": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-4.3.1.tgz", - "integrity": "sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", "dev": true, "engines": { - "node": ">=14.18.0" + "node": ">=10.17.0" } }, "node_modules/humanize-ms": { @@ -7366,22 +7403,15 @@ } }, "node_modules/hyperid": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/hyperid/-/hyperid-3.1.1.tgz", - "integrity": "sha512-RveV33kIksycSf7HLkq1sHB5wW0OwuX8ot8MYnY++gaaPXGFfKpBncHrAWxdpuEeRlazUMGWefwP1w6o6GaumA==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/hyperid/-/hyperid-3.3.0.tgz", + "integrity": "sha512-7qhCVT4MJIoEsNcbhglhdmBKb09QtcmJNiIQGq7js/Khf5FtQQ9bzcAuloeqBeee7XD7JqDeve9KNlQya5tSGQ==", "dependencies": { + "buffer": "^5.2.1", "uuid": "^8.3.2", "uuid-parse": "^1.1.0" } }, - "node_modules/hyperid/node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "bin": { - "uuid": "dist/bin/uuid" - } - }, "node_modules/iconv-lite": { "version": "0.4.24", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", @@ -7413,9 +7443,9 @@ ] }, "node_modules/ignore": { - "version": "5.2.4", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", - "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", "dev": true, "engines": { "node": ">= 4" @@ -7430,9 +7460,9 @@ } }, "node_modules/immutable": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.4.tgz", - "integrity": "sha512-fsXeu4J4i6WNWSikpI88v/PcVflZz+6kMhUfIwc5SY+poQRPnaf5V7qds6SUyUN3cVxEzuCab7QIoLOQ+DQ1wA==", + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.7.tgz", + "integrity": "sha512-1hqclzwYwjRDFLjcFxOM5AYkkG0rpFPpr1RLPMEuGczoS7YA8gLhy8SWXYRAA/XwfEHpfo3cw5JGioS32fnMRw==", "dev": true }, "node_modules/import-fresh": { @@ -7464,9 +7494,9 @@ } }, "node_modules/import-local": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", - "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.2.0.tgz", + "integrity": "sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==", "dev": true, "dependencies": { "pkg-dir": "^4.2.0", @@ -7498,10 +7528,16 @@ "node": ">=8" } }, + "node_modules/infer-owner": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", + "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==" + }, "node_modules/inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", "dependencies": { "once": "^1.3.0", "wrappy": "1" @@ -7554,28 +7590,36 @@ } }, "node_modules/install-artifact-from-github": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/install-artifact-from-github/-/install-artifact-from-github-1.3.3.tgz", - "integrity": "sha512-x79SL0d8WOi1ZjXSTUqqs0GPQZ92YArJAN9O46wgU9wdH2U9ecyyhB9YGDbPe2OLV4ptmt6AZYRQZ2GydQZosQ==", + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/install-artifact-from-github/-/install-artifact-from-github-1.3.5.tgz", + "integrity": "sha512-gZHC7f/cJgXz7MXlHFBxPVMsvIbev1OQN1uKQYKVJDydGNm9oYf9JstbU4Atnh/eSvk41WtEovoRm+8IF686xg==", "bin": { "install-from-cache": "bin/install-from-cache.js", "save-to-github-cache": "bin/save-to-github-cache.js" } }, "node_modules/internal-slot": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz", - "integrity": "sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==", - "devOptional": true, + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz", + "integrity": "sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==", + "dev": true, "dependencies": { - "get-intrinsic": "^1.2.0", - "has": "^1.0.3", + "es-errors": "^1.3.0", + "hasown": "^2.0.0", "side-channel": "^1.0.4" }, "engines": { "node": ">= 0.4" } }, + "node_modules/internmap": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/internmap/-/internmap-2.0.3.tgz", + "integrity": "sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==", + "engines": { + "node": ">=12" + } + }, "node_modules/ioredis": { "version": "5.3.2", "resolved": "https://registry.npmjs.org/ioredis/-/ioredis-5.3.2.tgz", @@ -7599,20 +7643,29 @@ "url": "https://opencollective.com/ioredis" } }, - "node_modules/ip": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.1.tgz", - "integrity": "sha512-lJUL9imLTNi1ZfXT+DU6rBBdbiKGBuay9B6xGSPVjUeQwaH1RIGqef8RZkUtHioLmSNpPR5M4HVKJGm1j8FWVQ==" + "node_modules/ip-address": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-9.0.5.tgz", + "integrity": "sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==", + "dependencies": { + "jsbn": "1.1.0", + "sprintf-js": "^1.1.3" + }, + "engines": { + "node": ">= 12" + } }, "node_modules/is-array-buffer": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz", - "integrity": "sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==", - "devOptional": true, + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz", + "integrity": "sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==", + "dev": true, "dependencies": { "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.0", - "is-typed-array": "^1.1.10" + "get-intrinsic": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -7628,7 +7681,7 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", - "devOptional": true, + "dev": true, "dependencies": { "has-bigints": "^1.0.1" }, @@ -7652,7 +7705,7 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", - "devOptional": true, + "dev": true, "dependencies": { "call-bind": "^1.0.2", "has-tostringtag": "^1.0.0" @@ -7664,11 +7717,20 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-bun-module": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-bun-module/-/is-bun-module-1.1.0.tgz", + "integrity": "sha512-4mTAVPlrXpaN3jtF0lsnPCMGnq4+qZjVIKq0HCpfcqf8OC1SM5oATCIAPM5V5FN05qp2NNnFndphmdZS9CV3hA==", + "dev": true, + "dependencies": { + "semver": "^7.6.3" + } + }, "node_modules/is-callable": { "version": "1.2.7", "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", - "devOptional": true, + "dev": true, "engines": { "node": ">= 0.4" }, @@ -7677,24 +7739,27 @@ } }, "node_modules/is-core-module": { - "version": "2.13.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.0.tgz", - "integrity": "sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==", + "version": "2.15.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.15.1.tgz", + "integrity": "sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==", "devOptional": true, "dependencies": { - "has": "^1.0.3" + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-date-object": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", - "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", - "devOptional": true, + "node_modules/is-data-view": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.1.tgz", + "integrity": "sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==", + "dev": true, "dependencies": { - "has-tostringtag": "^1.0.0" + "is-typed-array": "^1.1.13" }, "engines": { "node": ">= 0.4" @@ -7703,19 +7768,19 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-docker": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz", - "integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==", + "node_modules/is-date-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", "dev": true, - "bin": { - "is-docker": "cli.js" + "dependencies": { + "has-tostringtag": "^1.0.0" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/is-extglob": { @@ -7768,24 +7833,6 @@ "node": ">=0.10.0" } }, - "node_modules/is-inside-container": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz", - "integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==", - "dev": true, - "dependencies": { - "is-docker": "^3.0.0" - }, - "bin": { - "is-inside-container": "cli.js" - }, - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/is-integer": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/is-integer/-/is-integer-1.0.7.tgz", @@ -7819,10 +7866,10 @@ } }, "node_modules/is-negative-zero": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", - "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", - "devOptional": true, + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", + "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", + "dev": true, "engines": { "node": ">= 0.4" }, @@ -7849,7 +7896,7 @@ "version": "1.0.7", "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", - "devOptional": true, + "dev": true, "dependencies": { "has-tostringtag": "^1.0.0" }, @@ -7878,7 +7925,7 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", - "devOptional": true, + "dev": true, "dependencies": { "call-bind": "^1.0.2", "has-tostringtag": "^1.0.0" @@ -7891,24 +7938,26 @@ } }, "node_modules/is-shared-array-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", - "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", - "devOptional": true, + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz", + "integrity": "sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==", + "dev": true, "dependencies": { - "call-bind": "^1.0.2" + "call-bind": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/is-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", - "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", - "dev": true, + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": ">=8" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -7918,7 +7967,7 @@ "version": "1.0.7", "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", - "devOptional": true, + "dev": true, "dependencies": { "has-tostringtag": "^1.0.0" }, @@ -7933,7 +7982,7 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", - "devOptional": true, + "dev": true, "dependencies": { "has-symbols": "^1.0.2" }, @@ -7945,12 +7994,12 @@ } }, "node_modules/is-typed-array": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.12.tgz", - "integrity": "sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==", - "devOptional": true, + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz", + "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==", + "dev": true, "dependencies": { - "which-typed-array": "^1.1.11" + "which-typed-array": "^1.1.14" }, "engines": { "node": ">= 0.4" @@ -7974,7 +8023,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", - "devOptional": true, + "dev": true, "dependencies": { "call-bind": "^1.0.2" }, @@ -7982,33 +8031,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-wsl": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", - "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", - "dev": true, - "dependencies": { - "is-docker": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-wsl/node_modules/is-docker": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", - "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", - "dev": true, - "bin": { - "is-docker": "cli.js" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/isarray": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", @@ -8020,23 +8042,23 @@ "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" }, "node_modules/istanbul-lib-coverage": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", - "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", + "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", "dev": true, "engines": { "node": ">=8" } }, "node_modules/istanbul-lib-instrument": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.1.tgz", - "integrity": "sha512-EAMEJBsYuyyztxMxW3g7ugGPkrZsV57v0Hmv3mm1uQsmB+QnZuepg731CRaIgeUVSdmsTngOkSnauNF8p7FIhA==", + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.3.tgz", + "integrity": "sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q==", "dev": true, "dependencies": { - "@babel/core": "^7.12.3", - "@babel/parser": "^7.14.7", - "@istanbuljs/schema": "^0.1.2", + "@babel/core": "^7.23.9", + "@babel/parser": "^7.23.9", + "@istanbuljs/schema": "^0.1.3", "istanbul-lib-coverage": "^3.2.0", "semver": "^7.5.4" }, @@ -8073,9 +8095,9 @@ } }, "node_modules/istanbul-reports": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.6.tgz", - "integrity": "sha512-TLgnMkKg3iTDsQ9PbPTdpfAK2DzjF9mqUG7RMgcQl8oFjad8ob4laGxv5XV5U9MAfx8D6tSJiUyuAwzLicaxlg==", + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.7.tgz", + "integrity": "sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==", "dev": true, "dependencies": { "html-escaper": "^2.0.0", @@ -8086,15 +8108,13 @@ } }, "node_modules/jackspeak": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz", - "integrity": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==", + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", + "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", + "dev": true, "dependencies": { "@isaacs/cliui": "^8.0.2" }, - "engines": { - "node": ">=14" - }, "funding": { "url": "https://github.com/sponsors/isaacs" }, @@ -8102,16 +8122,34 @@ "@pkgjs/parseargs": "^0.11.0" } }, + "node_modules/jake": { + "version": "10.9.2", + "resolved": "https://registry.npmjs.org/jake/-/jake-10.9.2.tgz", + "integrity": "sha512-2P4SQ0HrLQ+fw6llpLnOaGAvN2Zu6778SJMrCUwns4fOoG9ayrTiZk3VV8sCPkVZF8ab0zksVpS8FDY5pRCNBA==", + "dev": true, + "dependencies": { + "async": "^3.2.3", + "chalk": "^4.0.2", + "filelist": "^1.0.4", + "minimatch": "^3.1.2" + }, + "bin": { + "jake": "bin/cli.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/jest": { - "version": "29.4.3", - "resolved": "https://registry.npmjs.org/jest/-/jest-29.4.3.tgz", - "integrity": "sha512-XvK65feuEFGZT8OO0fB/QAQS+LGHvQpaadkH5p47/j3Ocqq3xf2pK9R+G0GzgfuhXVxEv76qCOOcMb5efLk6PA==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest/-/jest-29.7.0.tgz", + "integrity": "sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==", "dev": true, "dependencies": { - "@jest/core": "^29.4.3", - "@jest/types": "^29.4.3", + "@jest/core": "^29.7.0", + "@jest/types": "^29.6.3", "import-local": "^3.0.2", - "jest-cli": "^29.4.3" + "jest-cli": "^29.7.0" }, "bin": { "jest": "bin/jest.js" @@ -8142,95 +8180,6 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-changed-files/node_modules/execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", - "dev": true, - "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" - } - }, - "node_modules/jest-changed-files/node_modules/human-signals": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", - "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", - "dev": true, - "engines": { - "node": ">=10.17.0" - } - }, - "node_modules/jest-changed-files/node_modules/is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/jest-changed-files/node_modules/mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/jest-changed-files/node_modules/npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", - "dev": true, - "dependencies": { - "path-key": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-changed-files/node_modules/onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dev": true, - "dependencies": { - "mimic-fn": "^2.1.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/jest-changed-files/node_modules/strip-final-newline": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", - "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, "node_modules/jest-circus": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.7.0.tgz", @@ -8747,9 +8696,9 @@ } }, "node_modules/jiti": { - "version": "1.21.0", - "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.0.tgz", - "integrity": "sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==", + "version": "1.21.6", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.6.tgz", + "integrity": "sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==", "dev": true, "bin": { "jiti": "bin/jiti.js" @@ -8786,6 +8735,11 @@ "js-yaml": "bin/js-yaml.js" } }, + "node_modules/jsbn": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz", + "integrity": "sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==" + }, "node_modules/jsesc": { "version": "2.5.2", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", @@ -8814,14 +8768,20 @@ "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "devOptional": true + "dev": true }, "node_modules/json-stable-stringify": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.2.tgz", - "integrity": "sha512-eunSSaEnxV12z+Z73y/j5N37/In40GK4GmsSy+tEHJMxknvqnA7/djeYtAgW0GsWHUfg+847WJjKaEylk2y09g==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.1.0.tgz", + "integrity": "sha512-zfA+5SuwYN2VWqN1/5HZaDzQKLJHaBVMZIIM+wuYjdptkaQsqzDdqjqf+lZZJUuJq1aanHiY8LhH8LmH+qBYJA==", "dependencies": { - "jsonify": "^0.0.1" + "call-bind": "^1.0.5", + "isarray": "^2.0.5", + "jsonify": "^0.0.1", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -8964,15 +8924,26 @@ "node": ">= 12.13.0" } }, + "node_modules/koncorde/node_modules/json-stable-stringify": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.2.tgz", + "integrity": "sha512-eunSSaEnxV12z+Z73y/j5N37/In40GK4GmsSy+tEHJMxknvqnA7/djeYtAgW0GsWHUfg+847WJjKaEylk2y09g==", + "dependencies": { + "jsonify": "^0.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/kuler": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/kuler/-/kuler-2.0.0.tgz", "integrity": "sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A==" }, "node_modules/kuzzle": { - "version": "2.30.0", - "resolved": "https://registry.npmjs.org/kuzzle/-/kuzzle-2.30.0.tgz", - "integrity": "sha512-6LKJAyzLVq4evRizOvx16LjvZNlcJLYh5qayxzrL/COTUAFndQBCnM7uFErswPEpZ5e1gcshgi+y8hwQC/aXHg==", + "version": "2.31.0", + "resolved": "https://registry.npmjs.org/kuzzle/-/kuzzle-2.31.0.tgz", + "integrity": "sha512-W1pliMvANhtVHgt6F+Z4qiOPLLJyKJvXbXYMVb6da7yVHLgkJF9SG+8UAkkOJHH6Y0QAXW8/jgAUR01KLuVq9w==", "dependencies": { "@elastic/elasticsearch": "https://github.com/elastic/elasticsearch-js/archive/refs/tags/v7.13.0.tar.gz", "aedes": "0.46.3", @@ -8993,7 +8964,7 @@ "koncorde": "4.3.0", "kuzzle-plugin-auth-passport-local": "6.4.0", "kuzzle-plugin-logger": "3.0.3", - "kuzzle-sdk": "7.11.1", + "kuzzle-sdk": "^7.11.3", "kuzzle-vault": "2.0.4", "lodash": "4.17.21", "long": "5.2.3", @@ -9025,9 +8996,9 @@ } }, "node_modules/kuzzle-device-manager": { - "version": "2.4.0-beta.16", - "resolved": "https://registry.npmjs.org/kuzzle-device-manager/-/kuzzle-device-manager-2.4.0-beta.16.tgz", - "integrity": "sha512-Oj9KVTFtnSX39kaxCkIhegRSsF3u2epj7hTXnJoop7rRFqnt9we94PS7Ic6WeSU/MLR7ufvIrbhlacfrT2kc2w==", + "version": "2.4.0-beta.19", + "resolved": "https://registry.npmjs.org/kuzzle-device-manager/-/kuzzle-device-manager-2.4.0-beta.19.tgz", + "integrity": "sha512-+SdO5X0iF+uESS8xLCwayAmA04FGwBI03dwC10oTRiPER4ehkcjSU/K0nZI1Gtj7Ov+ibbwOp280Y6dkXOm6iQ==", "dependencies": { "csv-stringify": "^6.4.5", "kuzzle-plugin-commons": "^1.2.0", @@ -9043,6 +9014,18 @@ "resolved": "https://registry.npmjs.org/kuzzle-device-manager-types/-/kuzzle-device-manager-types-2.4.0-beta.16.tgz", "integrity": "sha512-n9eJE8kKTP8PEFhPeCpubNKighY/sQZAYS2noS9IFBSt2d8xrL3c0fCaNooeVd4QvGNffr8/Ki3pHgSgli1Z9Q==" }, + "node_modules/kuzzle-device-manager/node_modules/uuid": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", + "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "bin": { + "uuid": "dist/bin/uuid" + } + }, "node_modules/kuzzle-plugin-auth-passport-local": { "version": "6.4.0", "resolved": "https://registry.npmjs.org/kuzzle-plugin-auth-passport-local/-/kuzzle-plugin-auth-passport-local-6.4.0.tgz", @@ -9056,11 +9039,6 @@ "semver": "^7.3.5" } }, - "node_modules/kuzzle-plugin-auth-passport-local/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==" - }, "node_modules/kuzzle-plugin-auth-passport-local/node_modules/passport": { "version": "0.5.2", "resolved": "https://registry.npmjs.org/passport/-/passport-0.5.2.tgz", @@ -9147,9 +9125,9 @@ } }, "node_modules/kuzzle-sdk": { - "version": "7.11.1", - "resolved": "https://registry.npmjs.org/kuzzle-sdk/-/kuzzle-sdk-7.11.1.tgz", - "integrity": "sha512-1nPZmekFE2Q1gNhPisn9kg1/LsDRzDnl4GIYGdjIHISK5BhiAICMEsmMMyTiYqja42/mdMqm+M5bFx4p3wMJdQ==", + "version": "7.11.3", + "resolved": "https://registry.npmjs.org/kuzzle-sdk/-/kuzzle-sdk-7.11.3.tgz", + "integrity": "sha512-YHPSE99GRg1GT9UD5hOuJnt5vc/Gqmp705id4sCjyRJNRaq9uf3j3OzM6bvD+4YPZB7LTim53z66CFQP7IV7Qg==", "dependencies": { "min-req-promise": "^1.0.1", "ws": "^8.13.0" @@ -9166,6 +9144,21 @@ "yaml": "^1.10.0" } }, + "node_modules/kuzzle/node_modules/cli-color": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/cli-color/-/cli-color-2.0.3.tgz", + "integrity": "sha512-OkoZnxyC4ERN3zLzZaY9Emb7f/MhBOIpePv0Ycok0fJYT+Ouo00UBEIwsVsr0yoow++n5YWlSUgST9GKhNHiRQ==", + "dependencies": { + "d": "^1.0.1", + "es5-ext": "^0.10.61", + "es6-iterator": "^2.0.3", + "memoizee": "^0.4.15", + "timers-ext": "^0.1.7" + }, + "engines": { + "node": ">=0.10" + } + }, "node_modules/kuzzle/node_modules/cookie": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz", @@ -9174,23 +9167,27 @@ "node": ">= 0.6" } }, - "node_modules/kuzzle/node_modules/json-stable-stringify": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.1.0.tgz", - "integrity": "sha512-zfA+5SuwYN2VWqN1/5HZaDzQKLJHaBVMZIIM+wuYjdptkaQsqzDdqjqf+lZZJUuJq1aanHiY8LhH8LmH+qBYJA==", + "node_modules/kuzzle/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "dependencies": { - "call-bind": "^1.0.5", - "isarray": "^2.0.5", - "jsonify": "^0.0.1", - "object-keys": "^1.1.1" + "ms": "2.1.2" }, "engines": { - "node": ">= 0.4" + "node": ">=6.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, + "node_modules/kuzzle/node_modules/debug/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==" + }, "node_modules/kuzzle/node_modules/jsonwebtoken": { "version": "9.0.2", "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.2.tgz", @@ -9212,10 +9209,47 @@ "npm": ">=6" } }, - "node_modules/kuzzle/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==" + "node_modules/kuzzle/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/kuzzle/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/kuzzle/node_modules/uuid": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", + "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/kuzzle/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" }, "node_modules/leaflet": { "version": "1.9.4", @@ -9338,7 +9372,7 @@ "version": "4.6.2", "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "devOptional": true + "dev": true }, "node_modules/lodash.omit": { "version": "4.5.0", @@ -9388,16 +9422,19 @@ } }, "node_modules/logform": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/logform/-/logform-2.5.1.tgz", - "integrity": "sha512-9FyqAm9o9NKKfiAKfZoYo9bGXXuwMkxQiQttkT4YjjVtQVIQtK6LmVtlxmCaFswo6N4AfEkHqZTV0taDtPotNg==", + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/logform/-/logform-2.6.1.tgz", + "integrity": "sha512-CdaO738xRapbKIMVn2m4F6KTj4j7ooJ8POVnebSgKo3KBz5axNXRAL7ZdRjIV6NOr2Uf4vjtRkxrFETOioCqSA==", "dependencies": { - "@colors/colors": "1.5.0", + "@colors/colors": "1.6.0", "@types/triple-beam": "^1.3.2", "fecha": "^4.2.0", "ms": "^2.1.1", "safe-stable-stringify": "^2.3.1", "triple-beam": "^1.3.0" + }, + "engines": { + "node": ">= 12.0.0" } }, "node_modules/long": { @@ -9406,14 +9443,12 @@ "integrity": "sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q==" }, "node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" + "yallist": "^3.0.2" } }, "node_modules/lru-queue": { @@ -9425,9 +9460,9 @@ } }, "node_modules/luxon": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/luxon/-/luxon-3.4.3.tgz", - "integrity": "sha512-tFWBiv3h7z+T/tDaoxA8rqTxy1CHV6gHS//QdaH4pulbq/JuBSGgQspQQqcgnwdAx6pNI7cmvz5Sv/addzHmUg==", + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/luxon/-/luxon-3.5.0.tgz", + "integrity": "sha512-rh+Zjr6DNfUYR3bPwJEnuwDdqMbxZW7LOQfUN4B54+Cl+0o5zaU9RJ6bcidfDtC1cWCZXQ+nvX8bf6bAji37QQ==", "engines": { "node": ">=12" } @@ -9454,28 +9489,29 @@ "dev": true }, "node_modules/make-fetch-happen": { - "version": "11.1.1", - "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-11.1.1.tgz", - "integrity": "sha512-rLWS7GCSTcEujjVBs2YqG7Y4643u8ucvCJeSRqiLYhesrDuzeuFIk37xREzAsfQaqzl8b9rNCE4m6J8tvX4Q8w==", + "version": "10.2.1", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-10.2.1.tgz", + "integrity": "sha512-NgOPbRiaQM10DYXvN3/hhGVI2M5MtITFryzBGxHM5p4wnFxsVCbxkrBrDsk+EZ5OB4jEOT7AjDxtdF+KVEFT7w==", "dependencies": { "agentkeepalive": "^4.2.1", - "cacache": "^17.0.0", - "http-cache-semantics": "^4.1.1", + "cacache": "^16.1.0", + "http-cache-semantics": "^4.1.0", "http-proxy-agent": "^5.0.0", "https-proxy-agent": "^5.0.0", "is-lambda": "^1.0.1", "lru-cache": "^7.7.1", - "minipass": "^5.0.0", - "minipass-fetch": "^3.0.0", + "minipass": "^3.1.6", + "minipass-collect": "^1.0.2", + "minipass-fetch": "^2.0.3", "minipass-flush": "^1.0.5", "minipass-pipeline": "^1.2.4", "negotiator": "^0.6.3", "promise-retry": "^2.0.1", "socks-proxy-agent": "^7.0.0", - "ssri": "^10.0.0" + "ssri": "^9.0.0" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, "node_modules/make-fetch-happen/node_modules/lru-cache": { @@ -9502,15 +9538,14 @@ "optional": true }, "node_modules/marked": { - "version": "9.1.6", - "resolved": "https://registry.npmjs.org/marked/-/marked-9.1.6.tgz", - "integrity": "sha512-jcByLnIFkd5gSXZmjNvS1TlmRhCXZjIzHYlaGkPlLIekG55JDR2Z4va9tZwCiP+/RDERiNhMOFu01xd6O5ct1Q==", - "peer": true, + "version": "12.0.2", + "resolved": "https://registry.npmjs.org/marked/-/marked-12.0.2.tgz", + "integrity": "sha512-qXUm7e/YKFoqFPYPa3Ukg9xlI5cyAtGmyEIzMfW//m6kXwCy2Ps9DYf5ioijFKQ8qyuscrHoY04iJGctu2Kg0Q==", "bin": { "marked": "bin/marked.js" }, "engines": { - "node": ">= 16" + "node": ">= 18" } }, "node_modules/marked-admonition-extension": { @@ -9523,11 +9558,11 @@ } }, "node_modules/marked-emoji": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/marked-emoji/-/marked-emoji-1.4.0.tgz", - "integrity": "sha512-/2TJfGzXpiBBq+X3akHHbTrAjZPJDwR+7FV6SyQLECnQEfaoVkrpKZJzHhPTAq3Sl/A1l2frMT0u6b38VBBlNg==", + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/marked-emoji/-/marked-emoji-1.4.2.tgz", + "integrity": "sha512-2sP+bp2z76dwbILzQ7ijy2PyjjAJR3iAZCzaNGThD2UijFUBeidkn6MoCdX/j47tPIcWt9nwnjqRQPd01ZrfdA==", "peerDependencies": { - "marked": ">=4 <13" + "marked": ">=4 <15" } }, "node_modules/material-colors": { @@ -9564,18 +9599,21 @@ } }, "node_modules/memoizee": { - "version": "0.4.15", - "resolved": "https://registry.npmjs.org/memoizee/-/memoizee-0.4.15.tgz", - "integrity": "sha512-UBWmJpLZd5STPm7PMUlOw/TSy972M+z8gcyQ5veOnSDRREz/0bmpyTfKt3/51DhEBqCZQn1udM/5flcSPYhkdQ==", + "version": "0.4.17", + "resolved": "https://registry.npmjs.org/memoizee/-/memoizee-0.4.17.tgz", + "integrity": "sha512-DGqD7Hjpi/1or4F/aYAspXKNm5Yili0QDAFAY4QYvpqpgiY6+1jOfqpmByzjxbWd/T9mChbCArXAbDAsTm5oXA==", "dependencies": { - "d": "^1.0.1", - "es5-ext": "^0.10.53", + "d": "^1.0.2", + "es5-ext": "^0.10.64", "es6-weak-map": "^2.0.3", "event-emitter": "^0.3.5", "is-promise": "^2.2.2", "lru-queue": "^0.1.0", "next-tick": "^1.1.0", "timers-ext": "^0.1.7" + }, + "engines": { + "node": ">=0.12" } }, "node_modules/merge-stream": { @@ -9594,12 +9632,12 @@ } }, "node_modules/micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", "dev": true, "dependencies": { - "braces": "^3.0.2", + "braces": "^3.0.3", "picomatch": "^2.3.1" }, "engines": { @@ -9626,15 +9664,11 @@ } }, "node_modules/mimic-fn": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", - "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", - "dev": true, + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=6" } }, "node_modules/min-req-promise": { @@ -9662,9 +9696,12 @@ } }, "node_modules/minipass": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", - "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dependencies": { + "yallist": "^4.0.0" + }, "engines": { "node": ">=8" } @@ -9680,41 +9717,22 @@ "node": ">= 8" } }, - "node_modules/minipass-collect/node_modules/minipass": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", - "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/minipass-fetch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-3.0.4.tgz", - "integrity": "sha512-jHAqnA728uUpIaFm7NWsCnqKT6UqZz7GcI/bDpPATuwYyKwJwW0remxSCxUlKiEty+eopHGa3oc8WxgQ1FFJqg==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-2.1.2.tgz", + "integrity": "sha512-LT49Zi2/WMROHYoqGgdlQIZh8mLPZmOrN2NdJjMXxYe4nkN6FUyuPuOAOedNJDrx0IRGg9+4guZewtp8hE6TxA==", "dependencies": { - "minipass": "^7.0.3", + "minipass": "^3.1.6", "minipass-sized": "^1.0.3", "minizlib": "^2.1.2" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" }, "optionalDependencies": { "encoding": "^0.1.13" } }, - "node_modules/minipass-fetch/node_modules/minipass": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", - "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, "node_modules/minipass-flush": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", @@ -9726,17 +9744,6 @@ "node": ">= 8" } }, - "node_modules/minipass-flush/node_modules/minipass": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", - "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/minipass-pipeline": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", @@ -9748,17 +9755,6 @@ "node": ">=8" } }, - "node_modules/minipass-pipeline/node_modules/minipass": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", - "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/minipass-sized": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz", @@ -9770,16 +9766,10 @@ "node": ">=8" } }, - "node_modules/minipass-sized/node_modules/minipass": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", - "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=8" - } + "node_modules/minipass/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" }, "node_modules/minizlib": { "version": "2.1.2", @@ -9793,16 +9783,10 @@ "node": ">= 8" } }, - "node_modules/minizlib/node_modules/minipass": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", - "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=8" - } + "node_modules/minizlib/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" }, "node_modules/mkdirp": { "version": "0.5.6", @@ -9858,9 +9842,9 @@ } }, "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/muggle-string": { "version": "0.3.1", @@ -9901,14 +9885,14 @@ } }, "node_modules/nan": { - "version": "2.18.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.18.0.tgz", - "integrity": "sha512-W7tfG7vMOGtD30sHoZSSc/JVYiyDPEyQVso/Zz+/uQd0B0L46gtC+pHha5FFMRpil6fm/AoEcRWyOVi4+E/f8w==" + "version": "2.20.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.20.0.tgz", + "integrity": "sha512-bk3gXBZDGILuuo/6sKtr0DQmSThYHLtNCdSdXk9YkxD/jK6X2vmCyyXBBxyqZ4XcnzTyYEAThfX3DCEnLf6igw==" }, "node_modules/nanoid": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz", - "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==", + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", "funding": [ { "type": "github", @@ -10023,15 +10007,15 @@ } }, "node_modules/node-gyp": { - "version": "9.4.0", - "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-9.4.0.tgz", - "integrity": "sha512-dMXsYP6gc9rRbejLXmTbVRYjAHw7ppswsKyMxuxJxxOHzluIO1rGp9TOQgjFJ+2MCqcOcQTOPB/8Xwhr+7s4Eg==", + "version": "9.4.1", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-9.4.1.tgz", + "integrity": "sha512-OQkWKbjQKbGkMf/xqI1jjy3oCTgMKJac58G2+bjZb3fza6gW2YrCSdMQYaoTb70crvE//Gngr4f0AgVHmqHvBQ==", "dependencies": { "env-paths": "^2.2.0", "exponential-backoff": "^3.1.1", "glob": "^7.1.4", "graceful-fs": "^4.2.6", - "make-fetch-happen": "^11.0.3", + "make-fetch-happen": "^10.0.3", "nopt": "^6.0.0", "npmlog": "^6.0.0", "rimraf": "^3.0.2", @@ -10047,9 +10031,9 @@ } }, "node_modules/node-gyp-build": { - "version": "4.6.1", - "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.6.1.tgz", - "integrity": "sha512-24vnklJmyRS8ViBNI8KbtK/r/DmXQMRiOMXTNz2nrTnAYUwjmEEbnnpB/+kt+yWRv73bPsSPRFddrcIbAxSiMQ==", + "version": "4.8.2", + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.8.2.tgz", + "integrity": "sha512-IRUxE4BVsHWXkV/SFOut4qTlagw2aM8T5/vnTsmrHJvVoKueJHRc/JaFND7QDDc61kLYUJ6qlZM3sqTSyx2dTw==", "bin": { "node-gyp-build": "bin.js", "node-gyp-build-optional": "optional.js", @@ -10060,6 +10044,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-3.0.1.tgz", "integrity": "sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg==", + "deprecated": "This package is no longer supported.", "dependencies": { "delegates": "^1.0.0", "readable-stream": "^3.6.0" @@ -10068,40 +10053,11 @@ "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "node_modules/node-gyp/node_modules/chownr": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", - "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", - "engines": { - "node": ">=10" - } - }, - "node_modules/node-gyp/node_modules/fs-minipass": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", - "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", - "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/node-gyp/node_modules/fs-minipass/node_modules/minipass": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", - "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/node-gyp/node_modules/gauge": { "version": "4.0.4", "resolved": "https://registry.npmjs.org/gauge/-/gauge-4.0.4.tgz", "integrity": "sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==", + "deprecated": "This package is no longer supported.", "dependencies": { "aproba": "^1.0.3 || ^2.0.0", "color-support": "^1.1.3", @@ -10116,6 +10072,14 @@ "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, + "node_modules/node-gyp/node_modules/minipass": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", + "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", + "engines": { + "node": ">=8" + } + }, "node_modules/node-gyp/node_modules/mkdirp": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", @@ -10145,6 +10109,7 @@ "version": "6.0.2", "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-6.0.2.tgz", "integrity": "sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==", + "deprecated": "This package is no longer supported.", "dependencies": { "are-we-there-yet": "^3.0.0", "console-control-strings": "^1.1.0", @@ -10171,6 +10136,11 @@ "node": ">=10" } }, + "node_modules/node-gyp/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, "node_modules/node-int64": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", @@ -10202,6 +10172,7 @@ "version": "2.7.1", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", "dependencies": { "glob": "^7.1.3" }, @@ -10218,9 +10189,9 @@ } }, "node_modules/node-releases": { - "version": "2.0.13", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz", - "integrity": "sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==", + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.18.tgz", + "integrity": "sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==", "dev": true }, "node_modules/node-segfault-handler": { @@ -10242,9 +10213,9 @@ } }, "node_modules/nodemailer": { - "version": "6.9.13", - "resolved": "https://registry.npmjs.org/nodemailer/-/nodemailer-6.9.13.tgz", - "integrity": "sha512-7o38Yogx6krdoBf3jCAqnIN4oSQFx+fMa0I7dK1D+me9kBxx12D+/33wSb+fhOCtIxvYJ+4x4IMEhmhCKfAiOA==", + "version": "6.9.15", + "resolved": "https://registry.npmjs.org/nodemailer/-/nodemailer-6.9.15.tgz", + "integrity": "sha512-AHf04ySLC6CIfuRtRiEYtGEXgRfa6INgWGluDhnxTZhHSKvrBu7lc1VVchQ0d8nPc4cFaZoPq8vkyNoZr0TpGQ==", "engines": { "node": ">=6.0.0" } @@ -10303,36 +10274,22 @@ } }, "node_modules/npm-run-path": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.1.0.tgz", - "integrity": "sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", "dev": true, "dependencies": { - "path-key": "^4.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "path-key": "^3.0.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/npm-run-path/node_modules/path-key": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", - "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", - "dev": true, "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=8" } }, "node_modules/npmlog": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", + "deprecated": "This package is no longer supported.", "dependencies": { "are-we-there-yet": "~1.1.2", "console-control-strings": "~1.1.0", @@ -10398,9 +10355,12 @@ } }, "node_modules/object-inspect": { - "version": "1.12.3", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", - "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.2.tgz", + "integrity": "sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==", + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -10414,13 +10374,13 @@ } }, "node_modules/object.assign": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", - "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", - "devOptional": true, + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", + "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", + "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", "has-symbols": "^1.0.3", "object-keys": "^1.1.1" }, @@ -10432,28 +10392,29 @@ } }, "node_modules/object.entries": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.7.tgz", - "integrity": "sha512-jCBs/0plmPsOnrKAfFQXRG2NFjlhZgjjcBLSmTnEhU8U6vVTsVe8ANeQJCHTl3gSsI4J+0emOoCgoKlmQPMgmA==", + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.8.tgz", + "integrity": "sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ==", "optional": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" }, "engines": { "node": ">= 0.4" } }, "node_modules/object.fromentries": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.7.tgz", - "integrity": "sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA==", + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz", + "integrity": "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0" }, "engines": { "node": ">= 0.4" @@ -10463,26 +10424,28 @@ } }, "node_modules/object.groupby": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.1.tgz", - "integrity": "sha512-HqaQtqLnp/8Bn4GL16cj+CUYbnpe1bh0TtEaWvybszDG4tgxCJuRpV8VGuvNaI1fAnI4lUJzDG55MXcOH4JZcQ==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.3.tgz", + "integrity": "sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "get-intrinsic": "^1.2.1" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2" + }, + "engines": { + "node": ">= 0.4" } }, "node_modules/object.values": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.7.tgz", - "integrity": "sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.0.tgz", + "integrity": "sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" }, "engines": { "node": ">= 0.4" @@ -10528,33 +10491,14 @@ } }, "node_modules/onetime": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", - "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", - "dev": true, - "dependencies": { - "mimic-fn": "^4.0.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/open": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/open/-/open-9.1.0.tgz", - "integrity": "sha512-OS+QTnw1/4vrf+9hh1jc1jnYjzSG4ttTBB8UxOwAnInG3Uo4ssetzC1ihqaIHjLJnA5GGlRl6QlZXOTQhRBUvg==", - "dev": true, + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", "dependencies": { - "default-browser": "^4.0.0", - "define-lazy-prop": "^3.0.0", - "is-inside-container": "^1.0.0", - "is-wsl": "^2.2.0" + "mimic-fn": "^2.1.0" }, "engines": { - "node": ">=14.16" + "node": ">=6" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -10564,7 +10508,6 @@ "version": "5.6.1", "resolved": "https://github.com/kuzzleio/node-openid-client/archive/refs/tags/5.6.1.tar.gz", "integrity": "sha512-npjW97xlCRnCSYDxXu+01ZFS63TX70kUtQq9dUnP6BTkWwXczZihr/GbPYsO0pm3ZO6q6Gm+6ZsWiGtprLv2Tg==", - "license": "MIT", "dependencies": { "jose": "^4.15.4", "lru-cache": "^6.0.0", @@ -10576,13 +10519,29 @@ } }, "node_modules/openid-client/node_modules/jose": { - "version": "4.15.5", - "resolved": "https://registry.npmjs.org/jose/-/jose-4.15.5.tgz", - "integrity": "sha512-jc7BFxgKPKi94uOvEmzlSWFFe2+vASyXaKUpdQKatWAESU2MWjDfFf0fdfc83CDKcA5QecabZeNLyfhe3yKNkg==", + "version": "4.15.9", + "resolved": "https://registry.npmjs.org/jose/-/jose-4.15.9.tgz", + "integrity": "sha512-1vUQX+IdDMVPj4k8kOxgUqlcK518yluMuGZwqlr44FS1ppZB/5GWh4rZG89erpOBOJjU/OBsnCVFfapsRz6nEA==", "funding": { "url": "https://github.com/sponsors/panva" } }, + "node_modules/openid-client/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/openid-client/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, "node_modules/optional-js": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/optional-js/-/optional-js-2.3.0.tgz", @@ -10590,17 +10549,17 @@ "optional": true }, "node_modules/optionator": { - "version": "0.9.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", - "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", "dev": true, "dependencies": { - "@aashutoshrathi/word-wrap": "^1.2.3", "deep-is": "^0.1.3", "fast-levenshtein": "^2.0.6", "levn": "^0.4.1", "prelude-ls": "^1.2.1", - "type-check": "^0.4.0" + "type-check": "^0.4.0", + "word-wrap": "^1.2.5" }, "engines": { "node": ">= 0.8.0" @@ -10668,6 +10627,7 @@ "version": "0.1.5", "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", + "deprecated": "This package is no longer supported.", "dependencies": { "os-homedir": "^1.0.0", "os-tmpdir": "^1.0.0" @@ -10726,6 +10686,12 @@ "node": ">=6" } }, + "node_modules/package-json-from-dist": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.0.tgz", + "integrity": "sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==", + "dev": true + }, "node_modules/parent-module": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", @@ -10819,6 +10785,7 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, "engines": { "node": ">=8" } @@ -10830,26 +10797,34 @@ "devOptional": true }, "node_modules/path-scurry": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.2.tgz", - "integrity": "sha512-7xTavNy5RQXnsjANvVvMkEjvloOinkAjv/Z6Ildz9v2RinZ4SBKTWFOVRbaF8p0vpHnyjV/UwNDdKuUv6M5qcA==", + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "dev": true, "dependencies": { "lru-cache": "^10.2.0", "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" }, "engines": { - "node": ">=16 || 14 >=14.17" + "node": ">=16 || 14 >=14.18" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, "node_modules/path-scurry/node_modules/lru-cache": { - "version": "10.2.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.0.tgz", - "integrity": "sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==", + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "dev": true + }, + "node_modules/path-scurry/node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "dev": true, "engines": { - "node": "14 || >=16.14" + "node": ">=16 || 14 >=14.17" } }, "node_modules/path-type": { @@ -10867,9 +10842,9 @@ "integrity": "sha512-KG8UEiEVkR3wGEb4m5yZkVCzigAD+cVEJck2CzYZO37ZGJfctvVptVO192MwrtPhzONn6go8ylnOdMhKqi4nfg==" }, "node_modules/picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.0.tgz", + "integrity": "sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==" }, "node_modules/picomatch": { "version": "2.3.1", @@ -11009,10 +10984,19 @@ "vue": "^2.5.18" } }, + "node_modules/possible-typed-array-names": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", + "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/postcss": { - "version": "8.4.31", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz", - "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==", + "version": "8.4.45", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.45.tgz", + "integrity": "sha512-7KTLTdzdZZYscUc65XmjFiB73vBhBfbPztCYdUNvlaso9PrzjzcmjqBPR0lNGkcVlcO4BjiO5rK/qNz+XAen1Q==", "funding": [ { "type": "opencollective", @@ -11028,9 +11012,9 @@ } ], "dependencies": { - "nanoid": "^3.3.6", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" + "nanoid": "^3.3.7", + "picocolors": "^1.0.1", + "source-map-js": "^1.2.0" }, "engines": { "node": "^10 || ^12 || >=14" @@ -11108,9 +11092,9 @@ } }, "node_modules/postcss-load-config/node_modules/lilconfig": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.1.tgz", - "integrity": "sha512-O18pf7nyvHTckunPWCV1XUNXU1piu01y2b7ATJ0ppkUkk8ocqVWBrYjJBCwHDjD/ZWcfyrA0P4gKhzWGi5EINQ==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.2.tgz", + "integrity": "sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow==", "dev": true, "engines": { "node": ">=14" @@ -11120,9 +11104,9 @@ } }, "node_modules/postcss-load-config/node_modules/yaml": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.4.1.tgz", - "integrity": "sha512-pIXzoImaqmfOrL7teGUBt/T7ZDnyeGBWyXQBvOVhLkWLN37GXv8NMLK406UY6dS51JfcQHsmcW5cJ441bHg6Lg==", + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.5.1.tgz", + "integrity": "sha512-bLQOjaX/ADgQ20isPJRvF0iRUHIxVhYvr53Of7wGcWlO2jvtUlH5m87DsmulFVxRpNLOnI4tB6p/oh8D7kpn9Q==", "dev": true, "bin": { "yaml": "bin.mjs" @@ -11132,28 +11116,34 @@ } }, "node_modules/postcss-nested": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.0.1.tgz", - "integrity": "sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==", + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.2.0.tgz", + "integrity": "sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ==", "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], "dependencies": { - "postcss-selector-parser": "^6.0.11" + "postcss-selector-parser": "^6.1.1" }, "engines": { "node": ">=12.0" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, "peerDependencies": { "postcss": "^8.2.14" } }, "node_modules/postcss-selector-parser": { - "version": "6.0.13", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.13.tgz", - "integrity": "sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==", + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz", + "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==", "dev": true, "dependencies": { "cssesc": "^3.0.0", @@ -11179,9 +11169,9 @@ } }, "node_modules/prettier": { - "version": "3.2.5", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.2.5.tgz", - "integrity": "sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A==", + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.3.3.tgz", + "integrity": "sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==", "dev": true, "bin": { "prettier": "bin/prettier.cjs" @@ -11250,6 +11240,11 @@ "asap": "~2.0.6" } }, + "node_modules/promise-inflight": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", + "integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==" + }, "node_modules/promise-retry": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz", @@ -11310,18 +11305,18 @@ "optional": true }, "node_modules/punycode": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", - "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", "devOptional": true, "engines": { "node": ">=6" } }, "node_modules/pure-rand": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.0.4.tgz", - "integrity": "sha512-LA0Y9kxMYv47GIPJy6MI84fqTd2HmYZI83W/kM/SkKfDlajnZYfmXFTxkbY+xSBPkLJxltMa9hIkmdc29eguMA==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.1.0.tgz", + "integrity": "sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==", "dev": true, "funding": [ { @@ -11343,11 +11338,11 @@ } }, "node_modules/qs": { - "version": "6.11.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.2.tgz", - "integrity": "sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==", + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz", + "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", "dependencies": { - "side-channel": "^1.0.4" + "side-channel": "^1.0.6" }, "engines": { "node": ">=0.6" @@ -11421,9 +11416,9 @@ } }, "node_modules/react-is": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", - "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", "dev": true }, "node_modules/read-cache": { @@ -11480,14 +11475,15 @@ } }, "node_modules/regexp.prototype.flags": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.1.tgz", - "integrity": "sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==", - "devOptional": true, + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz", + "integrity": "sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==", + "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "set-function-name": "^2.0.0" + "call-bind": "^1.0.6", + "define-properties": "^1.2.1", + "es-errors": "^1.3.0", + "set-function-name": "^2.0.1" }, "engines": { "node": ">= 0.4" @@ -11531,14 +11527,14 @@ } }, "node_modules/require-in-the-middle": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/require-in-the-middle/-/require-in-the-middle-7.2.0.tgz", - "integrity": "sha512-3TLx5TGyAY6AOqLBoXmHkNql0HIf2RGbuMgCDT2WO/uGVAPJs6h7Kl+bN6TIZGd9bWhWPwnDnTHGtW8Iu77sdw==", + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/require-in-the-middle/-/require-in-the-middle-7.4.0.tgz", + "integrity": "sha512-X34iHADNbNDfr6OTStIAHWSAvvKQRYgLO6duASaVf7J2VA3lvmNYboAHOuLC2huav1IwgZJtyEcJCKVzFxOSMQ==", "optional": true, "dependencies": { - "debug": "^4.1.1", + "debug": "^4.3.5", "module-details-from-path": "^1.0.3", - "resolve": "^1.22.1" + "resolve": "^1.22.8" }, "engines": { "node": ">=8.6.0" @@ -11550,9 +11546,9 @@ "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==" }, "node_modules/resolve": { - "version": "1.22.6", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.6.tgz", - "integrity": "sha512-njhxM7mV12JfufShqGy3Rz8j11RPdLy4xi15UurGJeoHLfJpVXKdh3ueuOqbYUcDZnffr6X739JBo5LzyahEsw==", + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", "devOptional": true, "dependencies": { "is-core-module": "^2.13.0", @@ -11626,28 +11622,6 @@ "node": ">=8" } }, - "node_modules/restore-cursor/node_modules/mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "engines": { - "node": ">=6" - } - }, - "node_modules/restore-cursor/node_modules/onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dependencies": { - "mimic-fn": "^2.1.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/retimer": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/retimer/-/retimer-3.0.0.tgz", @@ -11670,16 +11644,11 @@ "node": ">=0.10.0" } }, - "node_modules/rfdc": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz", - "integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==", - "optional": true - }, "node_modules/rimraf": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", "dependencies": { "glob": "^7.1.3" }, @@ -11693,121 +11662,17 @@ "node_modules/rollup": { "version": "3.29.4", "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.29.4.tgz", - "integrity": "sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw==", - "dev": true, - "bin": { - "rollup": "dist/bin/rollup" - }, - "engines": { - "node": ">=14.18.0", - "npm": ">=8.0.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, - "node_modules/run-applescript": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/run-applescript/-/run-applescript-5.0.0.tgz", - "integrity": "sha512-XcT5rBksx1QdIhlFOCtgZkB99ZEouFZ1E2Kc2LHqNW13U3/74YGdkQRmThTwxy4QIyookibDKYZOPqX//6BlAg==", - "dev": true, - "dependencies": { - "execa": "^5.0.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/run-applescript/node_modules/execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", - "dev": true, - "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" - } - }, - "node_modules/run-applescript/node_modules/human-signals": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", - "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", - "dev": true, - "engines": { - "node": ">=10.17.0" - } - }, - "node_modules/run-applescript/node_modules/is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/run-applescript/node_modules/mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/run-applescript/node_modules/npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", - "dev": true, - "dependencies": { - "path-key": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/run-applescript/node_modules/onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dev": true, - "dependencies": { - "mimic-fn": "^2.1.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/run-applescript/node_modules/strip-final-newline": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", - "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "integrity": "sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw==", "dev": true, + "bin": { + "rollup": "dist/bin/rollup" + }, "engines": { - "node": ">=6" + "node": ">=14.18.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" } }, "node_modules/run-async": { @@ -11849,19 +11714,14 @@ "tslib": "^2.1.0" } }, - "node_modules/rxjs/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/safe-array-concat": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.0.1.tgz", - "integrity": "sha512-6XbUAseYE2KtOuGueyeobCySj9L4+66Tn6KQMOPQJrAJEowYKW/YR/MGJZl7FdydUdaFu4LYyDZjxf4/Nmo23Q==", - "devOptional": true, + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.2.tgz", + "integrity": "sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==", + "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.1", + "call-bind": "^1.0.7", + "get-intrinsic": "^1.2.4", "has-symbols": "^1.0.3", "isarray": "^2.0.5" }, @@ -11892,23 +11752,26 @@ ] }, "node_modules/safe-regex-test": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", - "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==", - "devOptional": true, + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.3.tgz", + "integrity": "sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==", + "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.3", + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", "is-regex": "^1.1.4" }, + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/safe-stable-stringify": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.4.3.tgz", - "integrity": "sha512-e2bDA2WJT0wxseVd4lsDP4+3ONX6HpMXQa1ZhFQ7SU+GjvORCmShbCMltrtIDfkYhVHrOcPtj+KhmDBdPdZD1g==", + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.5.0.tgz", + "integrity": "sha512-b3rppTKm9T+PsVCBEOUR46GWI7fdOs00VKZ1+9c1EWDaDMvjQc6tUwuFyIprgGgTcWoVHSKrU8H31ZHA2e0RHA==", "engines": { "node": ">=10" } @@ -11936,9 +11799,9 @@ } }, "node_modules/sax": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.3.0.tgz", - "integrity": "sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA==" + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.4.1.tgz", + "integrity": "sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==" }, "node_modules/scmp": { "version": "2.1.0", @@ -11951,12 +11814,9 @@ "integrity": "sha512-6aU+Rwsezw7VR8/nyvKTx8QpWH9FrcYiXXlqC4z5d5XQBDRqtbfsRjnwGyqbi3gddNtWHuEk9OANUotL26qKUw==" }, "node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "dependencies": { - "lru-cache": "^6.0.0" - }, + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", "bin": { "semver": "bin/semver.js" }, @@ -11986,14 +11846,15 @@ } }, "node_modules/set-function-name": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.1.tgz", - "integrity": "sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==", - "devOptional": true, + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", + "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", + "dev": true, "dependencies": { - "define-data-property": "^1.0.1", + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", "functions-have-names": "^1.2.3", - "has-property-descriptors": "^1.0.0" + "has-property-descriptors": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -12009,6 +11870,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, "dependencies": { "shebang-regex": "^3.0.0" }, @@ -12020,18 +11882,23 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, "engines": { "node": ">=8" } }, "node_modules/side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", + "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", "dependencies": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "object-inspect": "^1.13.1" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -12080,15 +11947,15 @@ } }, "node_modules/socks": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/socks/-/socks-2.7.1.tgz", - "integrity": "sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==", + "version": "2.8.3", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.3.tgz", + "integrity": "sha512-l5x7VUUWbjVFbafGLxPWkYsHIhEvmF85tbIeFZWc8ZPtoMyybuEhL7Jye/ooC4/d48FgOjSJXgsF/AJPYCW8Zw==", "dependencies": { - "ip": "^2.0.0", + "ip-address": "^9.0.5", "smart-buffer": "^4.2.0" }, "engines": { - "node": ">= 10.13.0", + "node": ">= 10.0.0", "npm": ">= 3.0.0" } }, @@ -12130,9 +11997,9 @@ } }, "node_modules/source-map-js": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", - "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz", + "integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==", "engines": { "node": ">=0.10.0" } @@ -12156,10 +12023,9 @@ } }, "node_modules/sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", - "dev": true + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz", + "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==" }, "node_modules/sql-summary": { "version": "1.0.1", @@ -12168,22 +12034,14 @@ "optional": true }, "node_modules/ssri": { - "version": "10.0.5", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.5.tgz", - "integrity": "sha512-bSf16tAFkGeRlUNDjXu8FzaMQt6g2HZJrun7mtMbIPOddxt3GLMSz5VWUWcqTJUPfLEaDIepGxv+bYQW49596A==", + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-9.0.1.tgz", + "integrity": "sha512-o57Wcn66jMQvfHG1FlYbWeZWW/dHZhJXjpIcTfXldXEk5nz5lStPo3mK0OJQfGR3RbZUlbISexbljkJzuEj/8Q==", "dependencies": { - "minipass": "^7.0.3" + "minipass": "^3.1.1" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/ssri/node_modules/minipass": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", - "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", - "engines": { - "node": ">=16 || 14 >=14.17" + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, "node_modules/stack-trace": { @@ -12256,13 +12114,6 @@ "node": ">=10" } }, - "node_modules/string-similarity": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/string-similarity/-/string-similarity-4.0.4.tgz", - "integrity": "sha512-/q/8Q4Bl4ZKAPjj8WerIBJWALKkaPRfrvhfF8k/B23i4nzrlRj2/go1m90In7nG/3XDSbOo0+pu6RvCTM9RGMQ==", - "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", - "optional": true - }, "node_modules/string-width": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", @@ -12281,6 +12132,7 @@ "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -12291,14 +12143,15 @@ } }, "node_modules/string.prototype.trim": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.8.tgz", - "integrity": "sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==", - "devOptional": true, + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz", + "integrity": "sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==", + "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.0", + "es-object-atoms": "^1.0.0" }, "engines": { "node": ">= 0.4" @@ -12308,28 +12161,31 @@ } }, "node_modules/string.prototype.trimend": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.7.tgz", - "integrity": "sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==", - "devOptional": true, + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz", + "integrity": "sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==", + "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/string.prototype.trimstart": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.7.tgz", - "integrity": "sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==", - "devOptional": true, + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", + "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", + "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -12351,6 +12207,7 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, "dependencies": { "ansi-regex": "^5.0.1" }, @@ -12368,15 +12225,12 @@ } }, "node_modules/strip-final-newline": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", - "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", "dev": true, "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=6" } }, "node_modules/strip-json-comments": { @@ -12423,31 +12277,29 @@ } }, "node_modules/sucrase/node_modules/glob": { - "version": "10.3.12", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.12.tgz", - "integrity": "sha512-TCNv8vJ+xz4QiqTpfOJA7HvYv+tNIRHKfUWw/q+v2jdgN4ebz+KY9tGx5J4rHP0o84mNP+ApH66HRX8us3Khqg==", + "version": "10.4.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", + "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", "dev": true, "dependencies": { "foreground-child": "^3.1.0", - "jackspeak": "^2.3.6", - "minimatch": "^9.0.1", - "minipass": "^7.0.4", - "path-scurry": "^1.10.2" + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" }, "bin": { "glob": "dist/esm/bin.mjs" }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, "node_modules/sucrase/node_modules/minimatch": { - "version": "9.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", - "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", "dev": true, "dependencies": { "brace-expansion": "^2.0.1" @@ -12460,9 +12312,9 @@ } }, "node_modules/sucrase/node_modules/minipass": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", - "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", "dev": true, "engines": { "node": ">=16 || 14 >=14.17" @@ -12492,13 +12344,13 @@ } }, "node_modules/synckit": { - "version": "0.8.5", - "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.8.5.tgz", - "integrity": "sha512-L1dapNV6vu2s/4Sputv8xGsCdAVlb5nRDMFU/E27D44l5U6cw1g0dGd45uLc+OXjNMmF4ntiMdCimzcjFKQI8Q==", + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.9.1.tgz", + "integrity": "sha512-7gr8p9TQP6RAHusBOSLs46F4564ZrjV8xFmw5zCmgmhGUcw2hxsShhJ6CEiHQMgPDwAQ1fWHPM0ypc4RMAig4A==", "dev": true, "dependencies": { - "@pkgr/utils": "^2.3.1", - "tslib": "^2.5.0" + "@pkgr/core": "^0.1.0", + "tslib": "^2.6.2" }, "engines": { "node": "^14.18.0 || >=16.0.0" @@ -12507,16 +12359,10 @@ "url": "https://opencollective.com/unts" } }, - "node_modules/synckit/node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "dev": true - }, "node_modules/tailwindcss": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.3.tgz", - "integrity": "sha512-U7sxQk/n397Bmx4JHbJx/iSOOv5G+II3f1kpLpY2QeUv5DcPdcTsYLlusZfq1NthHS1c1cZoyFmmkex1rzke0A==", + "version": "3.4.10", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.10.tgz", + "integrity": "sha512-KWZkVPm7yJRhdu4SRSl9d4AK2wM3a50UsvgHZO7xY77NQr2V+fIrEuoDGQcbvswWvFGbS2f6e+jC/6WJm1Dl0w==", "dev": true, "dependencies": { "@alloc/quick-lru": "^5.2.0", @@ -12585,6 +12431,11 @@ "node": ">=4.5" } }, + "node_modules/tar/node_modules/chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" + }, "node_modules/tar/node_modules/fs-minipass": { "version": "1.2.7", "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.7.tgz", @@ -12610,11 +12461,6 @@ "minipass": "^2.9.0" } }, - "node_modules/tar/node_modules/yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" - }, "node_modules/template-iot-api": { "resolved": "apps/api", "link": true @@ -12678,12 +12524,15 @@ } }, "node_modules/timers-ext": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/timers-ext/-/timers-ext-0.1.7.tgz", - "integrity": "sha512-b85NUNzTSdodShTIbky6ZF02e8STtVVfD+fu4aXXShEELpozH+bCpJLYMPZbsABN2wDH7fJpqIoXxJpzbf0NqQ==", + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/timers-ext/-/timers-ext-0.1.8.tgz", + "integrity": "sha512-wFH7+SEAcKfJpfLPkrgMPvvwnEtj8W4IurvEyrKsDleXnKLCDw71w8jltvfLa8Rm4qQxxT4jmDBYbJG/z7qoww==", "dependencies": { - "es5-ext": "~0.10.46", - "next-tick": "1" + "es5-ext": "^0.10.64", + "next-tick": "^1.1.0" + }, + "engines": { + "node": ">=0.12" } }, "node_modules/tinycolor2": { @@ -12691,18 +12540,6 @@ "resolved": "https://registry.npmjs.org/tinycolor2/-/tinycolor2-1.6.0.tgz", "integrity": "sha512-XPaBkWQJdsf3pLKJV9p4qN/S+fm2Oj8AIPo1BTUhg5oxkvm9+SVEGFdhyOz7tTdUTfvxMiAs4sp6/eZO2Ew+pw==" }, - "node_modules/titleize": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/titleize/-/titleize-3.0.0.tgz", - "integrity": "sha512-KxVu8EYHDPBdUYdKZdKtU2aj2XfEx9AfjXxE/Aj0vT06w2icA09Vus1rh6eSu1y01akYg6BjIK/hxyLJINoMLQ==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/tmp": { "version": "0.0.33", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", @@ -12724,7 +12561,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", - "dev": true, "engines": { "node": ">=4" } @@ -12775,28 +12611,30 @@ "dev": true }, "node_modules/ts-jest": { - "version": "29.1.2", - "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.1.2.tgz", - "integrity": "sha512-br6GJoH/WUX4pu7FbZXuWGKGNDuU7b8Uj77g/Sp7puZV6EXzuByl6JrECvm0MzVzSTkSHWTihsXt+5XYER5b+g==", + "version": "29.2.5", + "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.2.5.tgz", + "integrity": "sha512-KD8zB2aAZrcKIdGk4OwpJggeLcH1FgrICqDSROWqlnJXGCXK4Mn6FcdK2B6670Xr73lHMG1kHw8R87A0ecZ+vA==", "dev": true, "dependencies": { - "bs-logger": "0.x", - "fast-json-stable-stringify": "2.x", + "bs-logger": "^0.2.6", + "ejs": "^3.1.10", + "fast-json-stable-stringify": "^2.1.0", "jest-util": "^29.0.0", "json5": "^2.2.3", - "lodash.memoize": "4.x", - "make-error": "1.x", - "semver": "^7.5.3", - "yargs-parser": "^21.0.1" + "lodash.memoize": "^4.1.2", + "make-error": "^1.3.6", + "semver": "^7.6.3", + "yargs-parser": "^21.1.1" }, "bin": { "ts-jest": "cli.js" }, "engines": { - "node": "^16.10.0 || ^18.0.0 || >=20.0.0" + "node": "^14.15.0 || ^16.10.0 || ^18.0.0 || >=20.0.0" }, "peerDependencies": { "@babel/core": ">=7.0.0-beta.0 <8", + "@jest/transform": "^29.0.0", "@jest/types": "^29.0.0", "babel-jest": "^29.0.0", "jest": "^29.0.0", @@ -12806,6 +12644,9 @@ "@babel/core": { "optional": true }, + "@jest/transform": { + "optional": true + }, "@jest/types": { "optional": true }, @@ -12818,9 +12659,9 @@ } }, "node_modules/ts-node": { - "version": "10.9.1", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz", - "integrity": "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==", + "version": "10.9.2", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz", + "integrity": "sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==", "dev": true, "dependencies": { "@cspotcode/source-map-support": "^0.8.0", @@ -12867,9 +12708,9 @@ "dev": true }, "node_modules/tsconfig-paths": { - "version": "3.14.2", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.2.tgz", - "integrity": "sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g==", + "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", @@ -12900,10 +12741,9 @@ } }, "node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==" }, "node_modules/tsutils": { "version": "3.21.0", @@ -12920,27 +12760,33 @@ "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" } }, + "node_modules/tsutils/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, "node_modules/turbo": { - "version": "1.10.15", - "resolved": "https://registry.npmjs.org/turbo/-/turbo-1.10.15.tgz", - "integrity": "sha512-mKKkqsuDAQy1wCCIjCdG+jOCwUflhckDMSRoeBPcIL/CnCl7c5yRDFe7SyaXloUUkt4tUR0rvNIhVCcT7YeQpg==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/turbo/-/turbo-2.1.1.tgz", + "integrity": "sha512-u9gUDkmR9dFS8b5kAYqIETK4OnzsS4l2ragJ0+soSMHh6VEeNHjTfSjk1tKxCqLyziCrPogadxP680J+v6yGHw==", "dev": true, "bin": { "turbo": "bin/turbo" }, "optionalDependencies": { - "turbo-darwin-64": "1.10.15", - "turbo-darwin-arm64": "1.10.15", - "turbo-linux-64": "1.10.15", - "turbo-linux-arm64": "1.10.15", - "turbo-windows-64": "1.10.15", - "turbo-windows-arm64": "1.10.15" + "turbo-darwin-64": "2.1.1", + "turbo-darwin-arm64": "2.1.1", + "turbo-linux-64": "2.1.1", + "turbo-linux-arm64": "2.1.1", + "turbo-windows-64": "2.1.1", + "turbo-windows-arm64": "2.1.1" } }, "node_modules/turbo-darwin-64": { - "version": "1.10.15", - "resolved": "https://registry.npmjs.org/turbo-darwin-64/-/turbo-darwin-64-1.10.15.tgz", - "integrity": "sha512-Sik5uogjkRTe1XVP9TC2GryEMOJCaKE2pM/O9uLn4koQDnWKGcLQv+mDU+H+9DXvKLnJnKCD18OVRkwK5tdpoA==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/turbo-darwin-64/-/turbo-darwin-64-2.1.1.tgz", + "integrity": "sha512-aYNuJpZlCoi0Htd79fl/2DywpewGKijdXeOfg9KzNuPVKzSMYlAXuAlNGh0MKjiOcyqxQGL7Mq9LFhwA0VpDpQ==", "cpu": [ "x64" ], @@ -12951,9 +12797,9 @@ ] }, "node_modules/turbo-darwin-arm64": { - "version": "1.10.15", - "resolved": "https://registry.npmjs.org/turbo-darwin-arm64/-/turbo-darwin-arm64-1.10.15.tgz", - "integrity": "sha512-xwqyFDYUcl2xwXyGPmHkmgnNm4Cy0oNzMpMOBGRr5x64SErS7QQLR4VHb0ubiR+VAb8M+ECPklU6vD1Gm+wekg==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/turbo-darwin-arm64/-/turbo-darwin-arm64-2.1.1.tgz", + "integrity": "sha512-tifJKD8yHY48rHXPMcM8o1jI/Jk2KCaXiNjTKvvy9Zsim61BZksNVLelIbrRoCGwAN6PUBZO2lGU5iL/TQJ5Pw==", "cpu": [ "arm64" ], @@ -12964,9 +12810,9 @@ ] }, "node_modules/turbo-linux-64": { - "version": "1.10.15", - "resolved": "https://registry.npmjs.org/turbo-linux-64/-/turbo-linux-64-1.10.15.tgz", - "integrity": "sha512-dM07SiO3RMAJ09Z+uB2LNUSkPp3I1IMF8goH5eLj+d8Kkwoxd/+qbUZOj9RvInyxU/IhlnO9w3PGd3Hp14m/nA==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/turbo-linux-64/-/turbo-linux-64-2.1.1.tgz", + "integrity": "sha512-Js6d/bSQe9DuV9c7ITXYpsU/ADzFHABdz1UIHa7Oqjj9VOEbFeA9WpAn0c+mdJrVD+IXJFbbDZUjN7VYssmtcg==", "cpu": [ "x64" ], @@ -12977,9 +12823,9 @@ ] }, "node_modules/turbo-linux-arm64": { - "version": "1.10.15", - "resolved": "https://registry.npmjs.org/turbo-linux-arm64/-/turbo-linux-arm64-1.10.15.tgz", - "integrity": "sha512-MkzKLkKYKyrz4lwfjNXH8aTny5+Hmiu4SFBZbx+5C0vOlyp6fV5jZANDBvLXWiDDL4DSEAuCEK/2cmN6FVH1ow==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/turbo-linux-arm64/-/turbo-linux-arm64-2.1.1.tgz", + "integrity": "sha512-LidzTCq0yvQ+N8w8Qub9FmhQ/mmEIeoqFi7DSupekEV2EjvE9jw/zYc9Pk67X+g7dHVfgOnvVzmrjChdxpFePw==", "cpu": [ "arm64" ], @@ -12990,9 +12836,9 @@ ] }, "node_modules/turbo-windows-64": { - "version": "1.10.15", - "resolved": "https://registry.npmjs.org/turbo-windows-64/-/turbo-windows-64-1.10.15.tgz", - "integrity": "sha512-3TdVU+WEH9ThvQGwV3ieX/XHebtYNHv9HARHauPwmVj3kakoALkpGxLclkHFBLdLKkqDvmHmXtcsfs6cXXRHJg==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/turbo-windows-64/-/turbo-windows-64-2.1.1.tgz", + "integrity": "sha512-GKc9ZywKwy4xLDhwXd6H07yzl0TB52HjXMrFLyHGhCVnf/w0oq4sLJv2sjbvuarPjsyx4xnCBJ3m3oyL2XmFtA==", "cpu": [ "x64" ], @@ -13003,9 +12849,9 @@ ] }, "node_modules/turbo-windows-arm64": { - "version": "1.10.15", - "resolved": "https://registry.npmjs.org/turbo-windows-arm64/-/turbo-windows-arm64-1.10.15.tgz", - "integrity": "sha512-l+7UOBCbfadvPMYsX08hyLD+UIoAkg6ojfH+E8aud3gcA1padpjCJTh9gMpm3QdMbKwZteT5uUM+wyi6Rbbyww==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/turbo-windows-arm64/-/turbo-windows-arm64-2.1.1.tgz", + "integrity": "sha512-oFKkMj11KKUv3xSK9/fhAEQTxLUp1Ol1EOktwc32+SFtEU0uls7kosAz0b+qe8k3pJGEMFdDPdqoEjyJidbxtQ==", "cpu": [ "arm64" ], @@ -13034,9 +12880,9 @@ } }, "node_modules/twilio/node_modules/axios": { - "version": "1.6.8", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.8.tgz", - "integrity": "sha512-v/ZHtJDU39mDpyBoFVkETcd/uNdxrWRrg3bKpOKzXFA6Bvqopts6ALSMU3y6ijYxbw2B+wPrIv46egTzJXCLGQ==", + "version": "1.7.7", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.7.tgz", + "integrity": "sha512-S4kL7XrjgBmvdGut0sN3yJxqYzrDOnivkBiN0OFs6hLiUam3UPvswUo0kqGyhqUZGEOytHyumEdXsAkgCOUf3Q==", "dependencies": { "follow-redirects": "^1.15.6", "form-data": "^4.0.0", @@ -13065,9 +12911,9 @@ } }, "node_modules/type": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", - "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==" + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/type/-/type-2.7.3.tgz", + "integrity": "sha512-8j+1QmAbPvLZow5Qpi6NCaN8FB60p/6x8/vfNqOk/hC+HuvFZhL4+WfekuhQLiqFZXOgQdrs3B+XxEmCc6b3FQ==" }, "node_modules/type-check": { "version": "0.4.0", @@ -13103,29 +12949,30 @@ } }, "node_modules/typed-array-buffer": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.0.tgz", - "integrity": "sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==", - "devOptional": true, + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz", + "integrity": "sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==", + "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.1", - "is-typed-array": "^1.1.10" + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "is-typed-array": "^1.1.13" }, "engines": { "node": ">= 0.4" } }, "node_modules/typed-array-byte-length": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.0.tgz", - "integrity": "sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==", - "devOptional": true, + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz", + "integrity": "sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==", + "dev": true, "dependencies": { - "call-bind": "^1.0.2", + "call-bind": "^1.0.7", "for-each": "^0.3.3", - "has-proto": "^1.0.1", - "is-typed-array": "^1.1.10" + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13" }, "engines": { "node": ">= 0.4" @@ -13135,16 +12982,17 @@ } }, "node_modules/typed-array-byte-offset": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.0.tgz", - "integrity": "sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==", - "devOptional": true, + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz", + "integrity": "sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==", + "dev": true, "dependencies": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", "for-each": "^0.3.3", - "has-proto": "^1.0.1", - "is-typed-array": "^1.1.10" + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13" }, "engines": { "node": ">= 0.4" @@ -13154,23 +13002,29 @@ } }, "node_modules/typed-array-length": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz", - "integrity": "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==", - "devOptional": true, + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.6.tgz", + "integrity": "sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==", + "dev": true, "dependencies": { - "call-bind": "^1.0.2", + "call-bind": "^1.0.7", "for-each": "^0.3.3", - "is-typed-array": "^1.1.9" + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13", + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/typescript": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.1.6.tgz", - "integrity": "sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA==", + "version": "5.4.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.5.tgz", + "integrity": "sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==", "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -13183,7 +13037,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", - "devOptional": true, + "dev": true, "dependencies": { "call-bind": "^1.0.2", "has-bigints": "^1.0.2", @@ -13195,14 +13049,11 @@ } }, "node_modules/undici": { - "version": "5.28.4", - "resolved": "https://registry.npmjs.org/undici/-/undici-5.28.4.tgz", - "integrity": "sha512-72RFADWFqKmUb2hmmvNODKL3p9hcB6Gt2DOQMis1SEBaV6a4MH8soBvzg+95CYhCKPFedut2JY9bMfrDl9D23g==", - "dependencies": { - "@fastify/busboy": "^2.0.0" - }, + "version": "6.19.8", + "resolved": "https://registry.npmjs.org/undici/-/undici-6.19.8.tgz", + "integrity": "sha512-U8uCCl2x9TK3WANvmBavymRzxbfFYG+tAu+fgx3zxQy3qdagQqBLwJVrdyO1TBfUXvfKveMKJZhpvUYoOjM+4g==", "engines": { - "node": ">=14.0" + "node": ">=18.17" } }, "node_modules/undici-types": { @@ -13227,25 +13078,25 @@ "optional": true }, "node_modules/unique-filename": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-3.0.0.tgz", - "integrity": "sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-2.0.1.tgz", + "integrity": "sha512-ODWHtkkdx3IAR+veKxFV+VBkUMcN+FaqzUUd7IZzt+0zhDZFPFxhlqwPF3YQvMHx1TD0tdgYl+kuPnJ8E6ql7A==", "dependencies": { - "unique-slug": "^4.0.0" + "unique-slug": "^3.0.0" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, "node_modules/unique-slug": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-4.0.0.tgz", - "integrity": "sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-3.0.0.tgz", + "integrity": "sha512-8EyMynh679x/0gqE9fT9oilG+qEt+ibFyqjuVTsZn1+CMxH+XLlpvr2UZx4nVcCwTpx81nICr2JQFkM+HPLq4w==", "dependencies": { "imurmurhash": "^0.1.4" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, "node_modules/unix-dgram": { @@ -13262,19 +13113,10 @@ "node": ">=0.10.48" } }, - "node_modules/untildify": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz", - "integrity": "sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/update-browserslist-db": { - "version": "1.0.13", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", - "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.0.tgz", + "integrity": "sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==", "dev": true, "funding": [ { @@ -13291,8 +13133,8 @@ } ], "dependencies": { - "escalade": "^3.1.1", - "picocolors": "^1.0.0" + "escalade": "^3.1.2", + "picocolors": "^1.0.1" }, "bin": { "update-browserslist-db": "cli.js" @@ -13305,7 +13147,7 @@ "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "devOptional": true, + "dev": true, "dependencies": { "punycode": "^2.1.0" } @@ -13333,13 +13175,9 @@ } }, "node_modules/uuid": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", - "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", - "funding": [ - "https://github.com/sponsors/broofa", - "https://github.com/sponsors/ctavan" - ], + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", "bin": { "uuid": "dist/bin/uuid" } @@ -13361,9 +13199,9 @@ "dev": true }, "node_modules/v8-to-istanbul": { - "version": "9.1.3", - "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.1.3.tgz", - "integrity": "sha512-9lDD+EVI2fjFsMWXc6dy5JJzBsVTcQ2fVkfBvncZ6xJWG9wtBhOldG+mHkSL0+V1K/xgZz0JDO5UT5hFwHUghg==", + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.3.0.tgz", + "integrity": "sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==", "dev": true, "dependencies": { "@jridgewell/trace-mapping": "^0.3.12", @@ -13438,18 +13276,19 @@ } }, "node_modules/vue": { - "version": "2.7.14", - "resolved": "https://registry.npmjs.org/vue/-/vue-2.7.14.tgz", - "integrity": "sha512-b2qkFyOM0kwqWFuQmgd4o+uHGU7T+2z3T+WQp8UBjADfEv2n4FEMffzBmCKNP0IGzOEEfYjvtcC62xaSKeQDrQ==", + "version": "2.7.16", + "resolved": "https://registry.npmjs.org/vue/-/vue-2.7.16.tgz", + "integrity": "sha512-4gCtFXaAA3zYZdTp5s4Hl2sozuySsgz4jy1EnpBHNfpMa9dK1ZCG7viqBPCwXtmgc8nHqUsAu3G4gtmXkkY3Sw==", + "deprecated": "Vue 2 has reached EOL and is no longer actively maintained. See https://v2.vuejs.org/eol/ for more details.", "dependencies": { - "@vue/compiler-sfc": "2.7.14", + "@vue/compiler-sfc": "2.7.16", "csstype": "^3.1.0" } }, "node_modules/vue-chartjs": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/vue-chartjs/-/vue-chartjs-5.2.0.tgz", - "integrity": "sha512-d3zpKmGZr2OWHQ1xmxBcAn5ShTG917+/UCLaSpaCDDqT0U7DBsvFzTs69ZnHCgKoXT55GZDW8YEj9Av+dlONLA==", + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/vue-chartjs/-/vue-chartjs-5.3.1.tgz", + "integrity": "sha512-rZjqcHBxKiHrBl0CIvcOlVEBwRhpWAVf6rDU3vUfa7HuSRmGtCslc0Oc8m16oAVuk0erzc1FCtH1VCriHsrz+A==", "peerDependencies": { "chart.js": "^4.1.1", "vue": "^3.0.0-0 || ^2.7.0" @@ -13478,9 +13317,9 @@ } }, "node_modules/vue-eslint-parser": { - "version": "9.3.2", - "resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-9.3.2.tgz", - "integrity": "sha512-q7tWyCVaV9f8iQyIA5Mkj/S6AoJ9KBN8IeUSf3XEmBrOtxOZnfTg5s4KClbZBCK3GtnT/+RyCLZyDHuZwTuBjg==", + "version": "9.4.3", + "resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-9.4.3.tgz", + "integrity": "sha512-2rYRLWlIpaiN8xbPiDyXZXRgLGOtWxERV7ND5fFAv5qo1D2N9Fu9MNajBNc6o13lZ+24DAWCkQCvj4klgmcITg==", "dev": true, "dependencies": { "debug": "^4.3.4", @@ -13533,9 +13372,9 @@ "peer": true }, "node_modules/vue-multiselect": { - "version": "2.1.7", - "resolved": "https://registry.npmjs.org/vue-multiselect/-/vue-multiselect-2.1.7.tgz", - "integrity": "sha512-KIegcN+Ntwg3cbkY/jhw2s/+XJUM0Lpi/LcKFYCS8PrZHcWBl2iKCVze7ZCnRj3w8H7/lUJ9v7rj9KQiNxApBw==", + "version": "2.1.9", + "resolved": "https://registry.npmjs.org/vue-multiselect/-/vue-multiselect-2.1.9.tgz", + "integrity": "sha512-nGEppmzhQQT2iDz4cl+ZCX3BpeNhygK50zWFTIRS+r7K7i61uWXJWSioMuf+V/161EPQjexI8NaEBdUlF3dp+g==", "engines": { "node": ">= 4.0.0", "npm": ">= 3.0.0" @@ -13675,7 +13514,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", - "devOptional": true, + "dev": true, "dependencies": { "is-bigint": "^1.0.1", "is-boolean-object": "^1.1.0", @@ -13688,16 +13527,16 @@ } }, "node_modules/which-typed-array": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.11.tgz", - "integrity": "sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew==", - "devOptional": true, + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz", + "integrity": "sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==", + "dev": true, "dependencies": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", "for-each": "^0.3.3", "gopd": "^1.0.1", - "has-tostringtag": "^1.0.0" + "has-tostringtag": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -13758,15 +13597,15 @@ } }, "node_modules/winston-elasticsearch/node_modules/@elastic/elasticsearch": { - "version": "8.10.0", - "resolved": "https://registry.npmjs.org/@elastic/elasticsearch/-/elasticsearch-8.10.0.tgz", - "integrity": "sha512-RIEyqz0D18bz/dK+wJltaak+7wKaxDELxuiwOJhuMrvbrBsYDFnEoTdP/TZ0YszHBgnRPGqBDBgH/FHNgHObiQ==", + "version": "8.15.0", + "resolved": "https://registry.npmjs.org/@elastic/elasticsearch/-/elasticsearch-8.15.0.tgz", + "integrity": "sha512-mG90EMdTDoT6GFSdqpUAhWK9LGuiJo6tOWqs0Usd/t15mPQDj7ZqHXfCBqNkASZpwPZpbAYVjd57S6nbUBINCg==", "dependencies": { - "@elastic/transport": "^8.3.4", + "@elastic/transport": "^8.7.0", "tslib": "^2.4.0" }, "engines": { - "node": ">=14" + "node": ">=18" } }, "node_modules/winston-elasticsearch/node_modules/retry": { @@ -13777,11 +13616,6 @@ "node": ">= 4" } }, - "node_modules/winston-elasticsearch/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/winston-syslog": { "version": "2.7.0", "resolved": "https://registry.npmjs.org/winston-syslog/-/winston-syslog-2.7.0.tgz", @@ -13812,23 +13646,13 @@ "node": ">= 12.0.0" } }, - "node_modules/winston/node_modules/@colors/colors": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.6.0.tgz", - "integrity": "sha512-Ir+AOibqzrIsL6ajt3Rz3LskB7OiMVHqltZmspbW/TJuTVuyOMirVqAkjfY6JISiLHgyNqicAC8AyHHGzNd/dA==", - "engines": { - "node": ">=0.1.90" - } - }, - "node_modules/winston/node_modules/is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "node_modules/word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "dev": true, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=0.10.0" } }, "node_modules/wrap-ansi": { @@ -13849,6 +13673,7 @@ "version": "7.0.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -13880,9 +13705,9 @@ } }, "node_modules/ws": { - "version": "8.14.2", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.14.2.tgz", - "integrity": "sha512-wEBG1ftX4jcglPxgFCMJmZ2PLtSbJ2Peg6TmpJFTbe9GZYOQCDPdMYu/Tm0/bGZkw8paZnJY45J4K2PZrLYq8g==", + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz", + "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==", "engines": { "node": ">=10.0.0" }, @@ -13934,9 +13759,9 @@ } }, "node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" }, "node_modules/yaml": { "version": "1.10.2", diff --git a/package.json b/package.json index a47e22a..73aeb90 100644 --- a/package.json +++ b/package.json @@ -19,7 +19,7 @@ "eslint-plugin-prettier": "^5.0.0", "prettier": "^3.2.5", "turbo": "latest", - "typescript": "5.1.*" + "typescript": "5.4.*" }, "engines": { "node": ">=18.17.1" From edeae7bb9d8ba8cdf0cb9a4436f43b0ae28b7811 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Rodriguez?= Date: Sat, 7 Sep 2024 00:25:02 +0200 Subject: [PATCH 2/6] chore: remove unused code --- .../lib/modules/air_quality/assets/Room.ts | 77 --- .../lib/modules/air_quality/assets/index.ts | 11 - .../lib/modules/air_quality/devices/Airly.ts | 55 -- .../air_quality/devices/AirlyDecoder.ts | 79 --- .../air_quality/devices/CO2Measurement.ts | 9 - .../devices/IlluminanceMeasurement.ts | 9 - .../air_quality/devices/IneoSenseACSSwitch.ts | 7 - .../devices/IneoSenseACSSwitchDecoder.ts | 74 --- .../air_quality/devices/WaterMeasurement.ts | 9 - .../lib/modules/air_quality/devices/index.ts | 20 - apps/api/lib/modules/air_quality/index.ts | 10 - .../modules/air_quality/permissions/index.ts | 13 - .../asset_tracking/TenantAssetTracking.ts | 40 -- .../asset_tracking/assets/AssetsModule.ts | 19 - .../asset_tracking/assets/Container.ts | 74 --- .../modules/asset_tracking/assets/Truck.ts | 65 -- .../asset_tracking/assets/Warehouse.ts | 44 -- .../modules/asset_tracking/assets/index.ts | 1 - .../modules/asset_tracking/devices/Abeeway.ts | 54 -- .../asset_tracking/devices/AbeewayDecoder.ts | 80 --- .../asset_tracking/devices/DevicesModule.ts | 17 - .../modules/asset_tracking/devices/Enginko.ts | 46 -- .../asset_tracking/devices/EnginkoDecoder.ts | 58 -- .../modules/asset_tracking/devices/Loka.ts | 46 -- .../asset_tracking/devices/LokaDecoder.ts | 61 -- .../modules/asset_tracking/devices/index.ts | 1 - .../measures/MovementRecordMeasurement.ts | 13 - .../modules/asset_tracking/measures/index.ts | 1 - .../permissions/PermissionsModule.ts | 30 - .../permissions/ProfileTestSoftTenant.ts | 84 --- .../permissions/RoleFunctionalTests.ts | 32 - .../asset_tracking/permissions/index.ts | 1 - .../rules-engine/CreateMovementRecordTask.ts | 59 -- .../asset-truck-geofencing-rule.ts | 36 -- .../rules-engine/enrichment-workflow.ts | 19 - .../asset_tracking/rules-engine/index.ts | 3 - .../bulkImport/BulkImportController.ts | 29 - .../modules/bulkImport/BulkImportModule.ts | 20 - .../modules/bulkImport/BulkImportService.ts | 283 --------- apps/api/lib/modules/bulkImport/CsvParser.ts | 62 -- .../lib/modules/decoders/TenantDecoders.ts | 15 - .../modules/decoders/devices/CityloneSLBox.ts | 49 -- .../decoders/devices/CityloneSLBoxDecoder.ts | 41 -- .../modules/decoders/devices/DevicesModule.ts | 17 - .../decoders/devices/MilesightEM500SWL.ts | 52 -- .../devices/MilesightEM500SWLDecoder.ts | 54 -- .../modules/decoders/devices/NexelecCarbon.ts | 57 -- .../decoders/devices/NexelecCarbonDecoder.ts | 68 --- .../api/lib/modules/decoders/devices/index.ts | 14 - .../modules/fixtures/FixturesController.ts | 71 --- .../lib/modules/fixtures/FixturesGenerator.ts | 301 --------- .../lib/modules/fixtures/FixturesModule.ts | 18 - .../air_quality/AirQualityFixtures.ts | 80 --- .../ResetAirQualityFixturesScheduledTask.ts | 26 - .../asset_tracking/AssetTrackingFixtures.ts | 351 ----------- ...ResetAssetTrackingFixturesScheduledTask.ts | 26 - .../modules/fixtures/asset_tracking/roads.ts | 246 -------- apps/api/lib/modules/fixtures/index.ts | 1 - .../public_lighting/PublicLightingFixtures.ts | 323 ---------- ...esetPublicLigthingFixturesScheduledTask.ts | 20 - .../public_lighting/TenantPublicLighting.ts | 19 - .../public_lighting/assets/AssetsModule.ts | 13 - .../public_lighting/assets/StreetLamp.ts | 59 -- .../modules/public_lighting/assets/index.ts | 1 - .../devices/BrightnessMeasurement.ts | 9 - .../public_lighting/devices/DevicesModule.ts | 17 - .../modules/public_lighting/devices/Kara.ts | 42 -- .../public_lighting/devices/KaraDecoder.ts | 56 -- .../devices/PowerConsumptionMeasurement.ts | 9 - .../modules/public_lighting/devices/index.ts | 3 - .../permissions/PermissionsModule.ts | 15 - .../public_lighting/permissions/index.ts | 1 - apps/api/lib/types/Fixtures.ts | 7 - apps/api/lib/types/Log.ts | 13 - apps/api/lib/types/Tenant.ts | 18 - apps/api/lib/types/index.ts | 2 - .../air_quality/AirlyDecoder.test.ts | 66 -- .../IneoSenseACSSwitchDecoder.test.ts | 62 -- .../asset_tracking/AbeewayDecoder.test.ts | 70 --- .../asset_tracking/EnginkoDecoder.test.ts | 50 -- .../asset_tracking/LokaDecoder.test.ts | 54 -- .../create-movement-record.test.ts | 295 --------- .../load-fixtures/load-air-quality.test.ts | 143 ----- .../load-fixtures/load-asset-tracking.test.ts | 221 ------- .../load-public-lighting.test.ts | 133 ---- apps/web/src/assets/.gitkeep | 1 + apps/web/src/assets/data/catalog/sensors.json | 578 ------------------ apps/web/src/components/.gitkeep | 1 + apps/web/src/components/bulkImport/LogType.ts | 28 - .../bulkImport/modals/BulkImportLogModal.vue | 220 ------- apps/web/src/composables/.gitkeep | 2 + apps/web/src/composables/useLamp.ts | 174 ------ apps/web/src/composables/useMqtt.ts | 110 ---- apps/web/src/helpers/.gitkeep | 2 + apps/web/src/helpers/timePickerToDate.ts | 26 - apps/web/src/locales/en.json | 74 +-- apps/web/src/locales/fr.json | 74 +-- apps/web/src/main.ts | 42 +- apps/web/src/types/AcknowledgeMessage.ts | 22 - apps/web/src/views/.gitkeep | 1 + apps/web/src/views/bulkImport/BulkImport.vue | 139 ----- apps/web/src/views/catalog/CatalogList.vue | 176 ------ apps/web/src/views/catalog/DeviceInfoView.vue | 112 ---- .../catalog/decodersForm/DeviceCreateForm.vue | 213 ------- .../src/widgets/level-widget/LevelWidget.vue | 116 ---- .../widgets/level-widget/LevelWidgetForm.vue | 91 --- .../src/widgets/on-off-widget/OnOffWidget.vue | 199 ------ .../widgets/on-off-widget/OnOffWidgetForm.vue | 91 --- .../widgets/sample-widget/SampleWidget.vue | 4 +- .../sample-widget/SampleWidgetForm.vue | 2 +- .../scheduler-widget/SchedulerWidget.vue | 281 --------- .../scheduler-widget/SchedulerWidgetForm.vue | 92 --- .../statusMap-widget/StatusMapWidget.vue | 309 ---------- .../statusMap-widget/StatusMapWidgetForm.vue | 3 - 114 files changed, 34 insertions(+), 8008 deletions(-) delete mode 100644 apps/api/lib/modules/air_quality/assets/Room.ts delete mode 100644 apps/api/lib/modules/air_quality/assets/index.ts delete mode 100644 apps/api/lib/modules/air_quality/devices/Airly.ts delete mode 100644 apps/api/lib/modules/air_quality/devices/AirlyDecoder.ts delete mode 100644 apps/api/lib/modules/air_quality/devices/CO2Measurement.ts delete mode 100644 apps/api/lib/modules/air_quality/devices/IlluminanceMeasurement.ts delete mode 100644 apps/api/lib/modules/air_quality/devices/IneoSenseACSSwitch.ts delete mode 100644 apps/api/lib/modules/air_quality/devices/IneoSenseACSSwitchDecoder.ts delete mode 100644 apps/api/lib/modules/air_quality/devices/WaterMeasurement.ts delete mode 100644 apps/api/lib/modules/air_quality/devices/index.ts delete mode 100644 apps/api/lib/modules/air_quality/index.ts delete mode 100644 apps/api/lib/modules/air_quality/permissions/index.ts delete mode 100644 apps/api/lib/modules/asset_tracking/TenantAssetTracking.ts delete mode 100644 apps/api/lib/modules/asset_tracking/assets/AssetsModule.ts delete mode 100644 apps/api/lib/modules/asset_tracking/assets/Container.ts delete mode 100644 apps/api/lib/modules/asset_tracking/assets/Truck.ts delete mode 100644 apps/api/lib/modules/asset_tracking/assets/Warehouse.ts delete mode 100644 apps/api/lib/modules/asset_tracking/assets/index.ts delete mode 100644 apps/api/lib/modules/asset_tracking/devices/Abeeway.ts delete mode 100644 apps/api/lib/modules/asset_tracking/devices/AbeewayDecoder.ts delete mode 100644 apps/api/lib/modules/asset_tracking/devices/DevicesModule.ts delete mode 100644 apps/api/lib/modules/asset_tracking/devices/Enginko.ts delete mode 100644 apps/api/lib/modules/asset_tracking/devices/EnginkoDecoder.ts delete mode 100644 apps/api/lib/modules/asset_tracking/devices/Loka.ts delete mode 100644 apps/api/lib/modules/asset_tracking/devices/LokaDecoder.ts delete mode 100644 apps/api/lib/modules/asset_tracking/devices/index.ts delete mode 100644 apps/api/lib/modules/asset_tracking/measures/MovementRecordMeasurement.ts delete mode 100644 apps/api/lib/modules/asset_tracking/measures/index.ts delete mode 100644 apps/api/lib/modules/asset_tracking/permissions/PermissionsModule.ts delete mode 100644 apps/api/lib/modules/asset_tracking/permissions/ProfileTestSoftTenant.ts delete mode 100644 apps/api/lib/modules/asset_tracking/permissions/RoleFunctionalTests.ts delete mode 100644 apps/api/lib/modules/asset_tracking/permissions/index.ts delete mode 100644 apps/api/lib/modules/asset_tracking/rules-engine/CreateMovementRecordTask.ts delete mode 100644 apps/api/lib/modules/asset_tracking/rules-engine/asset-truck-geofencing-rule.ts delete mode 100644 apps/api/lib/modules/asset_tracking/rules-engine/enrichment-workflow.ts delete mode 100644 apps/api/lib/modules/asset_tracking/rules-engine/index.ts delete mode 100644 apps/api/lib/modules/bulkImport/BulkImportController.ts delete mode 100644 apps/api/lib/modules/bulkImport/BulkImportModule.ts delete mode 100644 apps/api/lib/modules/bulkImport/BulkImportService.ts delete mode 100644 apps/api/lib/modules/bulkImport/CsvParser.ts delete mode 100644 apps/api/lib/modules/decoders/TenantDecoders.ts delete mode 100644 apps/api/lib/modules/decoders/devices/CityloneSLBox.ts delete mode 100644 apps/api/lib/modules/decoders/devices/CityloneSLBoxDecoder.ts delete mode 100644 apps/api/lib/modules/decoders/devices/DevicesModule.ts delete mode 100644 apps/api/lib/modules/decoders/devices/MilesightEM500SWL.ts delete mode 100644 apps/api/lib/modules/decoders/devices/MilesightEM500SWLDecoder.ts delete mode 100644 apps/api/lib/modules/decoders/devices/NexelecCarbon.ts delete mode 100644 apps/api/lib/modules/decoders/devices/NexelecCarbonDecoder.ts delete mode 100644 apps/api/lib/modules/decoders/devices/index.ts delete mode 100644 apps/api/lib/modules/fixtures/FixturesController.ts delete mode 100644 apps/api/lib/modules/fixtures/FixturesGenerator.ts delete mode 100644 apps/api/lib/modules/fixtures/FixturesModule.ts delete mode 100644 apps/api/lib/modules/fixtures/air_quality/AirQualityFixtures.ts delete mode 100644 apps/api/lib/modules/fixtures/air_quality/ResetAirQualityFixturesScheduledTask.ts delete mode 100644 apps/api/lib/modules/fixtures/asset_tracking/AssetTrackingFixtures.ts delete mode 100644 apps/api/lib/modules/fixtures/asset_tracking/ResetAssetTrackingFixturesScheduledTask.ts delete mode 100644 apps/api/lib/modules/fixtures/asset_tracking/roads.ts delete mode 100644 apps/api/lib/modules/fixtures/index.ts delete mode 100644 apps/api/lib/modules/fixtures/public_lighting/PublicLightingFixtures.ts delete mode 100644 apps/api/lib/modules/fixtures/public_lighting/ResetPublicLigthingFixturesScheduledTask.ts delete mode 100644 apps/api/lib/modules/public_lighting/TenantPublicLighting.ts delete mode 100644 apps/api/lib/modules/public_lighting/assets/AssetsModule.ts delete mode 100644 apps/api/lib/modules/public_lighting/assets/StreetLamp.ts delete mode 100644 apps/api/lib/modules/public_lighting/assets/index.ts delete mode 100644 apps/api/lib/modules/public_lighting/devices/BrightnessMeasurement.ts delete mode 100644 apps/api/lib/modules/public_lighting/devices/DevicesModule.ts delete mode 100644 apps/api/lib/modules/public_lighting/devices/Kara.ts delete mode 100644 apps/api/lib/modules/public_lighting/devices/KaraDecoder.ts delete mode 100644 apps/api/lib/modules/public_lighting/devices/PowerConsumptionMeasurement.ts delete mode 100644 apps/api/lib/modules/public_lighting/devices/index.ts delete mode 100644 apps/api/lib/modules/public_lighting/permissions/PermissionsModule.ts delete mode 100644 apps/api/lib/modules/public_lighting/permissions/index.ts delete mode 100644 apps/api/lib/types/Fixtures.ts delete mode 100644 apps/api/lib/types/Log.ts delete mode 100644 apps/api/lib/types/Tenant.ts delete mode 100644 apps/api/lib/types/index.ts delete mode 100644 apps/api/tests/scenarios/air_quality/AirlyDecoder.test.ts delete mode 100644 apps/api/tests/scenarios/air_quality/IneoSenseACSSwitchDecoder.test.ts delete mode 100644 apps/api/tests/scenarios/asset_tracking/AbeewayDecoder.test.ts delete mode 100644 apps/api/tests/scenarios/asset_tracking/EnginkoDecoder.test.ts delete mode 100644 apps/api/tests/scenarios/asset_tracking/LokaDecoder.test.ts delete mode 100644 apps/api/tests/scenarios/asset_tracking/create-movement-record.test.ts delete mode 100644 apps/api/tests/scenarios/load-fixtures/load-air-quality.test.ts delete mode 100644 apps/api/tests/scenarios/load-fixtures/load-asset-tracking.test.ts delete mode 100644 apps/api/tests/scenarios/load-fixtures/load-public-lighting.test.ts create mode 100644 apps/web/src/assets/.gitkeep delete mode 100644 apps/web/src/assets/data/catalog/sensors.json create mode 100644 apps/web/src/components/.gitkeep delete mode 100644 apps/web/src/components/bulkImport/LogType.ts delete mode 100644 apps/web/src/components/bulkImport/modals/BulkImportLogModal.vue create mode 100644 apps/web/src/composables/.gitkeep delete mode 100644 apps/web/src/composables/useLamp.ts delete mode 100644 apps/web/src/composables/useMqtt.ts create mode 100644 apps/web/src/helpers/.gitkeep delete mode 100644 apps/web/src/helpers/timePickerToDate.ts delete mode 100644 apps/web/src/types/AcknowledgeMessage.ts create mode 100644 apps/web/src/views/.gitkeep delete mode 100644 apps/web/src/views/bulkImport/BulkImport.vue delete mode 100644 apps/web/src/views/catalog/CatalogList.vue delete mode 100644 apps/web/src/views/catalog/DeviceInfoView.vue delete mode 100644 apps/web/src/views/catalog/decodersForm/DeviceCreateForm.vue delete mode 100644 apps/web/src/widgets/level-widget/LevelWidget.vue delete mode 100644 apps/web/src/widgets/level-widget/LevelWidgetForm.vue delete mode 100644 apps/web/src/widgets/on-off-widget/OnOffWidget.vue delete mode 100644 apps/web/src/widgets/on-off-widget/OnOffWidgetForm.vue delete mode 100644 apps/web/src/widgets/scheduler-widget/SchedulerWidget.vue delete mode 100644 apps/web/src/widgets/scheduler-widget/SchedulerWidgetForm.vue delete mode 100644 apps/web/src/widgets/statusMap-widget/StatusMapWidget.vue delete mode 100644 apps/web/src/widgets/statusMap-widget/StatusMapWidgetForm.vue diff --git a/apps/api/lib/modules/air_quality/assets/Room.ts b/apps/api/lib/modules/air_quality/assets/Room.ts deleted file mode 100644 index f96ffc6..0000000 --- a/apps/api/lib/modules/air_quality/assets/Room.ts +++ /dev/null @@ -1,77 +0,0 @@ -import { - AssetContent, - AssetModelDefinition, - HumidityMeasurement, - Metadata, - TemperatureMeasurement, -} from 'kuzzle-device-manager'; - -import { CO2Measurement } from '../devices/CO2Measurement'; -import { IlluminanceMeasurement } from '../devices/IlluminanceMeasurement'; - -/** - * Type representing the metadata of a "Room" asset. - * - * This is optional and can be omitted if you don't want strong typing - */ -export interface RoomMetadata extends Metadata { - buildingName: string; - position: { - lat: number; - lon: number; - }; - roomName: string; -} - -/** - * Type representing the measures of a "Room" asset. - * - * This is optional and can be omitted if you don't want strong typing - */ -export type RoomMeasurements = { - temperature: TemperatureMeasurement; - humidity: HumidityMeasurement; - co2: CO2Measurement; - illuminance: IlluminanceMeasurement; -}; - -/** - * Type meant to be used when manipulating a "Room" asset. - * - * It is constructed when the types of the asset possible measures and metadata. - * - * This is optional and can be omitted if you don't want strong typing - */ -export interface RoomAssetContent extends AssetContent { - model: 'Room'; -} - -/** - * Asset definition used by the plugin to create associated ressources - * and updates mappings. - */ -export const roomAssetDefinition: AssetModelDefinition = { - defaultMetadata: {}, - measures: [ - { - name: 'temperature', - type: 'temperature', - }, - { - name: 'humidity', - type: 'humidity', - }, - { - name: 'co2', - type: 'co2', - }, - { - name: 'illuminance', - type: 'illuminance', - }, - ], - metadataMappings: { - floor: { type: 'integer' }, - width: { type: 'float' }, - }, -}; diff --git a/apps/api/lib/modules/air_quality/assets/index.ts b/apps/api/lib/modules/air_quality/assets/index.ts deleted file mode 100644 index 39dfadf..0000000 --- a/apps/api/lib/modules/air_quality/assets/index.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { DeviceManagerPlugin } from 'kuzzle-device-manager'; - -import { IoTApplication } from '../../../IoTApplication'; - -import { roomAssetDefinition } from './Room'; - -export function registerAssetsModule(app: IoTApplication) { - const deviceManager = app.plugin.get('device-manager'); - - deviceManager.models.registerAsset('air_quality', 'Room', roomAssetDefinition); -} diff --git a/apps/api/lib/modules/air_quality/devices/Airly.ts b/apps/api/lib/modules/air_quality/devices/Airly.ts deleted file mode 100644 index 3c7da43..0000000 --- a/apps/api/lib/modules/air_quality/devices/Airly.ts +++ /dev/null @@ -1,55 +0,0 @@ -import { - DeviceContent, - DeviceModelDefinition, - Metadata, - HumidityMeasurement, - TemperatureMeasurement, -} from 'kuzzle-device-manager'; - -import { CO2Measurement } from './CO2Measurement'; -import { IlluminanceMeasurement } from './IlluminanceMeasurement'; -import { AirlyDecoder } from './AirlyDecoder'; - -/** - * Type representing the metadata of a "Airly" device. - * - * This is optional and can be omitted if you don't want strong typing - */ -export interface AirlyMetadata extends Metadata { - trackerType: string; - serialNumber: string; -} - -/** - * Type representing the measures of a "Container" asset. - * - * This is optional and can be omitted if you don't want strong typing - */ -export type AbeewayMeasurements = { - illuminance: IlluminanceMeasurement; - co2: CO2Measurement; - temperature: TemperatureMeasurement; - humidity: HumidityMeasurement; -}; - -/** - * Type meant to be used when manipulating a "Airly" asset. - * - * It is constructed when the types of the asset possible measures and metadata. - * - * This is optional and can be omitted if you don't want strong typing - */ -export interface AirlyDeviceContent extends DeviceContent { - model: 'Airly'; -} - -export const AirlyDeviceDefinition: DeviceModelDefinition = { - decoder: new AirlyDecoder(), - defaultMetadata: { - trackerType: 'Embedded', - }, - metadataMappings: { - trackerType: { type: 'keyword' }, - serialNumber: { type: 'keyword' }, - }, -}; diff --git a/apps/api/lib/modules/air_quality/devices/AirlyDecoder.ts b/apps/api/lib/modules/air_quality/devices/AirlyDecoder.ts deleted file mode 100644 index 9d1bc46..0000000 --- a/apps/api/lib/modules/air_quality/devices/AirlyDecoder.ts +++ /dev/null @@ -1,79 +0,0 @@ -import { - DecodedPayload, - Decoder, - HumidityMeasurement, - TemperatureMeasurement, -} from 'kuzzle-device-manager'; -import { JSONObject } from 'kuzzle'; -import { has } from 'lodash'; - -import { CO2Measurement } from './CO2Measurement'; -import { IlluminanceMeasurement } from './IlluminanceMeasurement'; - -export class AirlyDecoder extends Decoder { - public measures = [ - { name: 'temperature', type: 'temperature' }, - { name: 'humidity', type: 'humidity' }, - { name: 'co2', type: 'co2' }, - { name: 'illuminance', type: 'illuminance' }, - ] as const; - - constructor() { - super(); - - this.payloadsMappings = { - deviceId: { type: 'keyword' }, - }; - } - - async validate(payload: JSONObject): Promise { - this.ensureProperties(payload, ['deviceId']); - - const properties = ['temperature', 'humidity', 'co2', 'illuminance']; - - return properties.every((property) => has(payload, property)); - } - - async decode( - decodedPayload: DecodedPayload, - payload: JSONObject, - ): Promise> { - const deviceId = payload.deviceId; - - const measuredAt = payload.timestamp || Date.now(); - - decodedPayload.addMeasurement(deviceId, 'temperature', { - measuredAt, - type: 'temperature', - values: { - temperature: payload.temperature, - }, - }); - - decodedPayload.addMeasurement(deviceId, 'humidity', { - measuredAt, - type: 'humidity', - values: { - humidity: payload.humidity, - }, - }); - - decodedPayload.addMeasurement(deviceId, 'co2', { - measuredAt, - type: 'co2', - values: { - co2: payload.co2, - }, - }); - - decodedPayload.addMeasurement(deviceId, 'illuminance', { - measuredAt, - type: 'illuminance', - values: { - illuminance: payload.illuminance, - }, - }); - - return decodedPayload; - } -} diff --git a/apps/api/lib/modules/air_quality/devices/CO2Measurement.ts b/apps/api/lib/modules/air_quality/devices/CO2Measurement.ts deleted file mode 100644 index 1fc256a..0000000 --- a/apps/api/lib/modules/air_quality/devices/CO2Measurement.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { MeasureDefinition } from 'kuzzle-device-manager'; - -export type CO2Measurement = { - co2: number; -}; - -export const co2MeasureDefinition: MeasureDefinition = { - valuesMappings: { co2: { type: 'float' } }, -}; diff --git a/apps/api/lib/modules/air_quality/devices/IlluminanceMeasurement.ts b/apps/api/lib/modules/air_quality/devices/IlluminanceMeasurement.ts deleted file mode 100644 index 8c73ca7..0000000 --- a/apps/api/lib/modules/air_quality/devices/IlluminanceMeasurement.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { MeasureDefinition } from 'kuzzle-device-manager'; - -export type IlluminanceMeasurement = { - illuminance: number; -}; - -export const illuminanceMeasureDefinition: MeasureDefinition = { - valuesMappings: { illuminance: { type: 'float' } }, -}; diff --git a/apps/api/lib/modules/air_quality/devices/IneoSenseACSSwitch.ts b/apps/api/lib/modules/air_quality/devices/IneoSenseACSSwitch.ts deleted file mode 100644 index c8e1ad3..0000000 --- a/apps/api/lib/modules/air_quality/devices/IneoSenseACSSwitch.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { DeviceModelDefinition } from 'kuzzle-device-manager'; - -import { IneoSenseACSSwitchDecoder } from './IneoSenseACSSwitchDecoder'; - -export const IneoSenseACSSwitchDefinition: DeviceModelDefinition = { - decoder: new IneoSenseACSSwitchDecoder(), -}; diff --git a/apps/api/lib/modules/air_quality/devices/IneoSenseACSSwitchDecoder.ts b/apps/api/lib/modules/air_quality/devices/IneoSenseACSSwitchDecoder.ts deleted file mode 100644 index 95fba7d..0000000 --- a/apps/api/lib/modules/air_quality/devices/IneoSenseACSSwitchDecoder.ts +++ /dev/null @@ -1,74 +0,0 @@ -import { - DecodedPayload, - Decoder, - BatteryMeasurement, - HumidityMeasurement, - TemperatureMeasurement, -} from 'kuzzle-device-manager'; -import { JSONObject } from 'kuzzle'; -import { has } from 'lodash'; - -export class IneoSenseACSSwitchDecoder extends Decoder { - public measures = [ - { name: 'battery', type: 'battery' }, - { name: 'temperature', type: 'temperature' }, - { name: 'humidity', type: 'humidity' }, - ] as const; - - constructor() { - super(); - - this.action = 'ineo-sense-acs-switch'; - - this.payloadsMappings = { - deviceInfo: { - properties: { - devEui: { type: 'keyword' }, - }, - }, - }; - } - - async validate(payload: JSONObject): Promise { - this.ensureProperties(payload, ['deviceInfo.devEui']); - - const properties = ['data']; - return properties.every((property) => has(payload, property)); - } - - async decode( - decodedPayload: DecodedPayload, - payload: JSONObject, - ): Promise> { - const rawPayload = Buffer.from(payload.data, 'base64'); - - const deviceId = payload.deviceInfo.devEui; - const measuredAt = new Date(payload.time).getTime() || Date.now(); - - decodedPayload.addMeasurement(deviceId, 'battery', { - measuredAt, - type: 'battery', - values: { - battery: 100 - rawPayload.readUInt8(16), - }, - }); - - decodedPayload.addMeasurement(deviceId, 'temperature', { - measuredAt, - type: 'temperature', - values: { - temperature: rawPayload.readUInt16BE(17) / 256, - }, - }); - - decodedPayload.addMeasurement(deviceId, 'humidity', { - measuredAt, - type: 'humidity', - values: { - humidity: rawPayload.readUInt16BE(19) / 256, - }, - }); - - return decodedPayload; - } -} diff --git a/apps/api/lib/modules/air_quality/devices/WaterMeasurement.ts b/apps/api/lib/modules/air_quality/devices/WaterMeasurement.ts deleted file mode 100644 index 1381e5f..0000000 --- a/apps/api/lib/modules/air_quality/devices/WaterMeasurement.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { MeasureDefinition } from 'kuzzle-device-manager'; - -export type WaterMeasurement = { - water: number; -}; - -export const waterMeasureDefinition: MeasureDefinition = { - valuesMappings: { water: { type: 'float' } }, -}; diff --git a/apps/api/lib/modules/air_quality/devices/index.ts b/apps/api/lib/modules/air_quality/devices/index.ts deleted file mode 100644 index 236f7e2..0000000 --- a/apps/api/lib/modules/air_quality/devices/index.ts +++ /dev/null @@ -1,20 +0,0 @@ -import { DeviceManagerPlugin } from 'kuzzle-device-manager'; - -import { IoTApplication } from '../../../IoTApplication'; - -import { AirlyDeviceDefinition } from './Airly'; -import { co2MeasureDefinition } from './CO2Measurement'; -import { waterMeasureDefinition } from './WaterMeasurement'; -import { illuminanceMeasureDefinition } from './IlluminanceMeasurement'; -import { IneoSenseACSSwitchDefinition } from './IneoSenseACSSwitch'; - -export function registerDevicesModule(app: IoTApplication) { - const deviceManager = app.plugin.get('device-manager'); - - deviceManager.models.registerMeasure('co2', co2MeasureDefinition); - deviceManager.models.registerMeasure('water', waterMeasureDefinition); - deviceManager.models.registerMeasure('illuminance', illuminanceMeasureDefinition); - - deviceManager.models.registerDevice('Airly', AirlyDeviceDefinition); - deviceManager.models.registerDevice('IneoSenseACSSwitch', IneoSenseACSSwitchDefinition); -} diff --git a/apps/api/lib/modules/air_quality/index.ts b/apps/api/lib/modules/air_quality/index.ts deleted file mode 100644 index d7efb3b..0000000 --- a/apps/api/lib/modules/air_quality/index.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { IoTApplication } from '../../IoTApplication'; -import { registerAssetsModule } from './assets'; -import { registerDevicesModule } from './devices'; -import { registerPermissionsModule } from './permissions'; - -export function registerTenantAirQuality(app: IoTApplication) { - registerAssetsModule(app); - registerDevicesModule(app); - registerPermissionsModule(app); -} diff --git a/apps/api/lib/modules/air_quality/permissions/index.ts b/apps/api/lib/modules/air_quality/permissions/index.ts deleted file mode 100644 index 0808aaa..0000000 --- a/apps/api/lib/modules/air_quality/permissions/index.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { ProfileTenantAdmin, ProfileTenantReader } from '@kuzzleio/iot-platform-backend'; -import { MultiTenancyPlugin } from '@kuzzleio/plugin-multi-tenancy'; - -import { IoTApplication } from '../../../IoTApplication'; - -export function registerPermissionsModule(app: IoTApplication) { - const multiTenancy = app.plugin.get('multi-tenancy'); - - multiTenancy.registerProfilesTemplates('air_quality', { - [ProfileTenantAdmin.name]: ProfileTenantAdmin.definition, - [ProfileTenantReader.name]: ProfileTenantReader.definition, - }); -} diff --git a/apps/api/lib/modules/asset_tracking/TenantAssetTracking.ts b/apps/api/lib/modules/asset_tracking/TenantAssetTracking.ts deleted file mode 100644 index e60b574..0000000 --- a/apps/api/lib/modules/asset_tracking/TenantAssetTracking.ts +++ /dev/null @@ -1,40 +0,0 @@ -import { WorkflowsPlugin } from '@kuzzleio/plugin-workflows'; -import { DeviceManagerPlugin } from 'kuzzle-device-manager'; - -import { Module } from '../shared'; - -import { AssetsModule } from './assets'; -import { DevicesModule } from './devices'; -import { movementRecordMeasureDefinition } from './measures'; -import { - enrichmentWorkflow, - assetTruckGeofencingRule, - CreateMovementRecordTask, -} from './rules-engine'; -import { PermissionsModule } from './permissions'; - -export class TenantAssetTracking extends Module { - private modules: Module[] = []; - - register(): void { - const workflowsPlugin = this.app.plugin.get('workflows'); - workflowsPlugin.registerDefaultRule(assetTruckGeofencingRule, { - group: 'asset_tracking', - }); - workflowsPlugin.registerDefaultWorkflow(enrichmentWorkflow, { - group: 'asset_tracking', - }); - workflowsPlugin.registerTask(new CreateMovementRecordTask()); - - const deviceManagerPlugin = this.app.plugin.get('device-manager'); - deviceManagerPlugin.models.registerMeasure('movementRecord', movementRecordMeasureDefinition); - - this.modules.push(new DevicesModule(this.app)); - this.modules.push(new AssetsModule(this.app)); - this.modules.push(new PermissionsModule(this.app)); - - for (const module of this.modules) { - module.register(); - } - } -} diff --git a/apps/api/lib/modules/asset_tracking/assets/AssetsModule.ts b/apps/api/lib/modules/asset_tracking/assets/AssetsModule.ts deleted file mode 100644 index c6af9ea..0000000 --- a/apps/api/lib/modules/asset_tracking/assets/AssetsModule.ts +++ /dev/null @@ -1,19 +0,0 @@ -import { DeviceManagerPlugin } from 'kuzzle-device-manager'; - -import { Module } from '../../shared'; - -import { containerAssetDefinition } from './Container'; -import { truckAssetDefinition } from './Truck'; -import { warehouseAssetDefinition } from './Warehouse'; - -export class AssetsModule extends Module { - register(): void { - const deviceManager = this.app.plugin.get('device-manager'); - - deviceManager.models.registerAsset('asset_tracking', 'Container', containerAssetDefinition); - - deviceManager.models.registerAsset('asset_tracking', 'Truck', truckAssetDefinition); - - deviceManager.models.registerAsset('asset_tracking', 'Warehouse', warehouseAssetDefinition); - } -} diff --git a/apps/api/lib/modules/asset_tracking/assets/Container.ts b/apps/api/lib/modules/asset_tracking/assets/Container.ts deleted file mode 100644 index f08a91e..0000000 --- a/apps/api/lib/modules/asset_tracking/assets/Container.ts +++ /dev/null @@ -1,74 +0,0 @@ -import { - AssetContent, - AssetModelDefinition, - Metadata, - PositionMeasurement, - TemperatureMeasurement, -} from 'kuzzle-device-manager'; - -/** - * Type representing the metadata of a "Container" asset. - * - * This is optional and can be omitted if you don't want strong typing - */ -export interface ContainerMetadata extends Metadata { - operator: string; - width: number; - height: number; - length: number; -} - -/** - * Type representing the measures of a "Container" asset. - * - * This is optional and can be omitted if you don't want strong typing - */ -export type ContainerMeasurements = { - position: PositionMeasurement; - externalTemperature: TemperatureMeasurement; - internalTemperature: TemperatureMeasurement; -}; - -/** - * Type meant to be used when manipulating a "Container" asset. - * - * It is constructed when the types of the asset possible measures and metadata. - * - * This is optional and can be omitted if you don't want strong typing - */ -export interface ContainerAssetContent - extends AssetContent { - model: 'Container'; -} - -/** - * Asset definition used by the plugin to create associated ressources - * and updates mappings. - */ -export const containerAssetDefinition: AssetModelDefinition = { - defaultMetadata: { - width: 2.33, - height: 2.35, - length: 5.867, - }, - measures: [ - { - name: 'position', - type: 'position', - }, - { - name: 'externalTemperature', - type: 'temperature', - }, - { - name: 'internalTemperature', - type: 'temperature', - }, - ], - metadataMappings: { - operator: { type: 'keyword' }, - width: { type: 'float' }, - height: { type: 'float' }, - length: { type: 'float' }, - }, -}; diff --git a/apps/api/lib/modules/asset_tracking/assets/Truck.ts b/apps/api/lib/modules/asset_tracking/assets/Truck.ts deleted file mode 100644 index d1fbb2a..0000000 --- a/apps/api/lib/modules/asset_tracking/assets/Truck.ts +++ /dev/null @@ -1,65 +0,0 @@ -import { - GeofencingMeasurements, - GeofencingMetadata, - makeGeofencing, -} from '@kuzzleio/iot-platform-backend'; -import { AssetContent } from 'kuzzle-device-manager'; - -import { MovementRecordMeasurement } from '../measures'; - -/** - * Type representing the metadata of a "Truck" asset. - * - * This is optional and can be omitted if you don't want strong typing - */ -export interface TruckMetadata extends GeofencingMetadata { - numberPlate: string; - capacity: number; - couch: boolean; -} - -/** - * Type representing the measures of a "Truck" asset. - * - * This is optional and can be omitted if you don't want strong typing - */ -export interface TruckMeasurements extends GeofencingMeasurements { - movementRecord: MovementRecordMeasurement; -} - -/** - * Type meant to be used when manipulating a "Truck" asset. - * - * It is constructed when the types of the asset possible measures and metadata. - * - * This is optional and can be omitted if you don't want strong typing - */ -export interface TruckAssetContent extends AssetContent { - model: 'Truck'; -} - -/** - * Asset definition used by the plugin to create associated ressources - * and updates mappings. - */ -export const truckAssetDefinition = makeGeofencing({ - defaultMetadata: { - capacity: 38, - couch: false, - }, - measures: [ - { - name: 'position', - type: 'position', - }, - { - name: 'movementRecord', - type: 'movementRecord', - }, - ], - metadataMappings: { - capacity: { type: 'integer' }, - numberPlate: { type: 'keyword' }, - couch: { type: 'boolean' }, - }, -}); diff --git a/apps/api/lib/modules/asset_tracking/assets/Warehouse.ts b/apps/api/lib/modules/asset_tracking/assets/Warehouse.ts deleted file mode 100644 index 8dde0cf..0000000 --- a/apps/api/lib/modules/asset_tracking/assets/Warehouse.ts +++ /dev/null @@ -1,44 +0,0 @@ -import { AssetContent } from 'kuzzle-device-manager'; - -import { GeofencePolygonMetadata, makeGeofence } from '@kuzzleio/iot-platform-backend'; - -/** - * Type representing the metadata of a "Warehouse" asset. - * - * This is optional and can be omitted if you don't want strong typing - */ -export interface WarehouseMetadata extends GeofencePolygonMetadata { - surface: number; - loadingBays: number; -} - -/** - * Type representing the measures of a "Warehouse" asset. - * - * This is optional and can be omitted if you don't want strong typing - */ -export type WarehouseMeasurements = Record; - -/** - * Type meant to be used when manipulating a "Warehouse" asset. - * - * It is constructed when the types of the asset possible measures and metadata. - * - * This is optional and can be omitted if you don't want strong typing - */ -export interface WarehouseAssetContent - extends AssetContent { - model: 'Warehouse'; -} - -/** - * Asset definition used by the plugin to create associated ressources - * and updates mappings. - */ -export const warehouseAssetDefinition = makeGeofence({ - measures: [], - metadataMappings: { - surface: { type: 'float' }, - loadingBays: { type: 'float' }, - }, -}); diff --git a/apps/api/lib/modules/asset_tracking/assets/index.ts b/apps/api/lib/modules/asset_tracking/assets/index.ts deleted file mode 100644 index 4812e14..0000000 --- a/apps/api/lib/modules/asset_tracking/assets/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './AssetsModule'; diff --git a/apps/api/lib/modules/asset_tracking/devices/Abeeway.ts b/apps/api/lib/modules/asset_tracking/devices/Abeeway.ts deleted file mode 100644 index 3a8cdc8..0000000 --- a/apps/api/lib/modules/asset_tracking/devices/Abeeway.ts +++ /dev/null @@ -1,54 +0,0 @@ -import { - DeviceContent, - DeviceModelDefinition, - Metadata, - PositionMeasurement, - BatteryMeasurement, - TemperatureMeasurement, -} from 'kuzzle-device-manager'; - -import { AbeewayDecoder } from './AbeewayDecoder'; - -/** - * Type representing the metadata of a "Abeeway" device. - * - * This is optional and can be omitted if you don't want strong typing - */ -export interface AbeewayMetadata extends Metadata { - trackerType: string; - serialNumber: string; -} - -/** - * Type representing the measures of a "Container" asset. - * - * This is optional and can be omitted if you don't want strong typing - */ -export type AbeewayMeasurements = { - position: PositionMeasurement; - externalTemperature: TemperatureMeasurement; - internalTemperature: TemperatureMeasurement; - battery: BatteryMeasurement; -}; - -/** - * Type meant to be used when manipulating a "Abeeway" asset. - * - * It is constructed when the types of the asset possible measures and metadata. - * - * This is optional and can be omitted if you don't want strong typing - */ -export interface AbeewayDeviceContent extends DeviceContent { - model: 'Abeeway'; -} - -export const abeewayDeviceDefinition: DeviceModelDefinition = { - decoder: new AbeewayDecoder(), - defaultMetadata: { - trackerType: 'Embedded', - }, - metadataMappings: { - trackerType: { type: 'keyword' }, - serialNumber: { type: 'keyword' }, - }, -}; diff --git a/apps/api/lib/modules/asset_tracking/devices/AbeewayDecoder.ts b/apps/api/lib/modules/asset_tracking/devices/AbeewayDecoder.ts deleted file mode 100644 index 7ef4846..0000000 --- a/apps/api/lib/modules/asset_tracking/devices/AbeewayDecoder.ts +++ /dev/null @@ -1,80 +0,0 @@ -import { - BatteryMeasurement, - DecodedPayload, - Decoder, - PositionMeasurement, - TemperatureMeasurement, -} from 'kuzzle-device-manager'; -import { JSONObject } from 'kuzzle'; -import { has } from 'lodash'; - -export class AbeewayDecoder extends Decoder { - public measures = [ - { name: 'position', type: 'position' }, - { name: 'externalTemperature', type: 'temperature' }, - { name: 'internalTemperature', type: 'temperature' }, - { name: 'battery', type: 'battery' }, - ] as const; - - constructor() { - super(); - - this.payloadsMappings = { - deviceEUI: { type: 'keyword' }, - }; - } - - async validate(payload: JSONObject): Promise { - this.ensureProperties(payload, ['deviceEUI']); - - const properties = ['lat', 'lon', 'battery', 'externalTemperature', 'internalTemperature']; - - return properties.every((property) => has(payload, property)); - } - - async decode( - decodedPayload: DecodedPayload, - payload: JSONObject, - ): Promise> { - const deviceId = payload.deviceEUI; - - const measuredAt = payload.timestamp || Date.now(); - - decodedPayload.addMeasurement(deviceId, 'position', { - measuredAt, - type: 'position', - values: { - position: { - lat: payload.lat, - lon: payload.lon, - }, - }, - }); - - decodedPayload.addMeasurement(deviceId, 'battery', { - measuredAt, - type: 'battery', - values: { - battery: payload.battery, - }, - }); - - decodedPayload.addMeasurement(deviceId, 'externalTemperature', { - measuredAt, - type: 'temperature', - values: { - temperature: payload.externalTemperature, - }, - }); - - decodedPayload.addMeasurement(deviceId, 'internalTemperature', { - measuredAt, - type: 'temperature', - values: { - temperature: payload.internalTemperature, - }, - }); - - return decodedPayload; - } -} diff --git a/apps/api/lib/modules/asset_tracking/devices/DevicesModule.ts b/apps/api/lib/modules/asset_tracking/devices/DevicesModule.ts deleted file mode 100644 index 9a8ef42..0000000 --- a/apps/api/lib/modules/asset_tracking/devices/DevicesModule.ts +++ /dev/null @@ -1,17 +0,0 @@ -import { DeviceManagerPlugin } from 'kuzzle-device-manager'; - -import { Module } from '../../shared'; - -import { abeewayDeviceDefinition } from './Abeeway'; -import { enginkoDeviceDefinition } from './Enginko'; -import { lokaDeviceDefinition } from './Loka'; - -export class DevicesModule extends Module { - register(): void { - const deviceManager = this.app.plugin.get('device-manager'); - - deviceManager.models.registerDevice('Abeeway', abeewayDeviceDefinition); - deviceManager.models.registerDevice('Enginko', enginkoDeviceDefinition); - deviceManager.models.registerDevice('Loka', lokaDeviceDefinition); - } -} diff --git a/apps/api/lib/modules/asset_tracking/devices/Enginko.ts b/apps/api/lib/modules/asset_tracking/devices/Enginko.ts deleted file mode 100644 index 6af2c00..0000000 --- a/apps/api/lib/modules/asset_tracking/devices/Enginko.ts +++ /dev/null @@ -1,46 +0,0 @@ -import { - BatteryMeasurement, - DeviceContent, - DeviceModelDefinition, - Metadata, - TemperatureMeasurement, -} from 'kuzzle-device-manager'; - -import { EnginkoDecoder } from './EnginkoDecoder'; - -/** - * Type representing the metadata of a "Enginko" device. - * - * This is optional and can be omitted if you don't want strong typing - */ -export interface EnginkoMetadata extends Metadata { - lns: string; -} - -/** - * Type representing the measures of a "Container" asset. - * - * This is optional and can be omitted if you don't want strong typing - */ -export type EnginkoMeasurements = { - temperature: TemperatureMeasurement; - battery: BatteryMeasurement; -}; - -/** - * Type meant to be used when manipulating a "Enginko" asset. - * - * It is constructed when the types of the asset possible measures and metadata. - * - * This is optional and can be omitted if you don't want strong typing - */ -export interface EnginkoDeviceContent extends DeviceContent { - model: 'Enginko'; -} - -export const enginkoDeviceDefinition: DeviceModelDefinition = { - decoder: new EnginkoDecoder(), - metadataMappings: { - lns: { type: 'keyword' }, - }, -}; diff --git a/apps/api/lib/modules/asset_tracking/devices/EnginkoDecoder.ts b/apps/api/lib/modules/asset_tracking/devices/EnginkoDecoder.ts deleted file mode 100644 index 9702105..0000000 --- a/apps/api/lib/modules/asset_tracking/devices/EnginkoDecoder.ts +++ /dev/null @@ -1,58 +0,0 @@ -import { - BatteryMeasurement, - DecodedPayload, - Decoder, - TemperatureMeasurement, -} from 'kuzzle-device-manager'; -import { JSONObject } from 'kuzzle'; -import { has } from 'lodash'; - -export class EnginkoDecoder extends Decoder { - public measures = [ - { name: 'temperature', type: 'temperature' }, - { name: 'battery', type: 'battery' }, - ] as const; - - constructor() { - super(); - - this.payloadsMappings = { - deviceEUI: { type: 'keyword' }, - }; - } - - async validate(payload: JSONObject): Promise { - this.ensureProperties(payload, ['deviceEUI']); - - const properties = ['temperature', 'battery']; - - return properties.every((property) => has(payload, property)); - } - - async decode( - decodedPayload: DecodedPayload, - payload: JSONObject, - ): Promise> { - const deviceId = payload.deviceEUI; - - const measuredAt = payload.timestamp || Date.now(); - - decodedPayload.addMeasurement(deviceId, 'temperature', { - measuredAt, - type: 'temperature', - values: { - temperature: payload.temperature, - }, - }); - - decodedPayload.addMeasurement(deviceId, 'battery', { - measuredAt, - type: 'battery', - values: { - battery: payload.battery, - }, - }); - - return decodedPayload; - } -} diff --git a/apps/api/lib/modules/asset_tracking/devices/Loka.ts b/apps/api/lib/modules/asset_tracking/devices/Loka.ts deleted file mode 100644 index 3293e60..0000000 --- a/apps/api/lib/modules/asset_tracking/devices/Loka.ts +++ /dev/null @@ -1,46 +0,0 @@ -import { - BatteryMeasurement, - DeviceContent, - DeviceModelDefinition, - Metadata, - PositionMeasurement, -} from 'kuzzle-device-manager'; - -import { LokaDecoder } from './LokaDecoder'; - -/** - * Type representing the metadata of a "Loka" device. - * - * This is optional and can be omitted if you don't want strong typing - */ -export interface LokaMetadata extends Metadata { - lns: string; -} - -/** - * Type representing the measures of a "Container" asset. - * - * This is optional and can be omitted if you don't want strong typing - */ -export type LokaMeasurements = { - position: PositionMeasurement; - battery: BatteryMeasurement; -}; - -/** - * Type meant to be used when manipulating a "Loka" asset. - * - * It is constructed when the types of the asset possible measures and metadata. - * - * This is optional and can be omitted if you don't want strong typing - */ -export interface LokaDeviceContent extends DeviceContent { - model: 'Loka'; -} - -export const lokaDeviceDefinition: DeviceModelDefinition = { - decoder: new LokaDecoder(), - metadataMappings: { - lns: { type: 'keyword' }, - }, -}; diff --git a/apps/api/lib/modules/asset_tracking/devices/LokaDecoder.ts b/apps/api/lib/modules/asset_tracking/devices/LokaDecoder.ts deleted file mode 100644 index b4e7f3f..0000000 --- a/apps/api/lib/modules/asset_tracking/devices/LokaDecoder.ts +++ /dev/null @@ -1,61 +0,0 @@ -import { - BatteryMeasurement, - DecodedPayload, - Decoder, - PositionMeasurement, -} from 'kuzzle-device-manager'; -import { JSONObject } from 'kuzzle'; -import { has } from 'lodash'; - -export class LokaDecoder extends Decoder { - public measures = [ - { name: 'position', type: 'position' }, - { name: 'battery', type: 'battery' }, - ] as const; - - constructor() { - super(); - - this.payloadsMappings = { - deviceEUI: { type: 'keyword' }, - }; - } - - async validate(payload: JSONObject): Promise { - this.ensureProperties(payload, ['deviceEUI']); - - const properties = ['lat', 'lon', 'battery']; - - return properties.every((property) => has(payload, property)); - } - - async decode( - decodedPayload: DecodedPayload, - payload: JSONObject, - ): Promise> { - const deviceId = payload.deviceEUI; - - const measuredAt = payload.timestamp || Date.now(); - - decodedPayload.addMeasurement(deviceId, 'position', { - measuredAt, - type: 'position', - values: { - position: { - lat: payload.lat, - lon: payload.lon, - }, - }, - }); - - decodedPayload.addMeasurement(deviceId, 'battery', { - measuredAt, - type: 'battery', - values: { - battery: payload.battery, - }, - }); - - return decodedPayload; - } -} diff --git a/apps/api/lib/modules/asset_tracking/devices/index.ts b/apps/api/lib/modules/asset_tracking/devices/index.ts deleted file mode 100644 index 3a1c64a..0000000 --- a/apps/api/lib/modules/asset_tracking/devices/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './DevicesModule'; diff --git a/apps/api/lib/modules/asset_tracking/measures/MovementRecordMeasurement.ts b/apps/api/lib/modules/asset_tracking/measures/MovementRecordMeasurement.ts deleted file mode 100644 index 3fcbcea..0000000 --- a/apps/api/lib/modules/asset_tracking/measures/MovementRecordMeasurement.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { MeasureDefinition } from 'kuzzle-device-manager'; - -export type MovementRecordMeasurement = { - in: string | null; - out: string | null; -}; - -export const movementRecordMeasureDefinition: MeasureDefinition = { - valuesMappings: { - in: { type: 'keyword' }, - out: { type: 'keyword' }, - }, -}; diff --git a/apps/api/lib/modules/asset_tracking/measures/index.ts b/apps/api/lib/modules/asset_tracking/measures/index.ts deleted file mode 100644 index 8238980..0000000 --- a/apps/api/lib/modules/asset_tracking/measures/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './MovementRecordMeasurement'; diff --git a/apps/api/lib/modules/asset_tracking/permissions/PermissionsModule.ts b/apps/api/lib/modules/asset_tracking/permissions/PermissionsModule.ts deleted file mode 100644 index 33d0cec..0000000 --- a/apps/api/lib/modules/asset_tracking/permissions/PermissionsModule.ts +++ /dev/null @@ -1,30 +0,0 @@ -import { ProfileTenantAdmin, ProfileTenantReader } from '@kuzzleio/iot-platform-backend'; -import { MultiTenancyPlugin } from '@kuzzleio/plugin-multi-tenancy'; - -import { Module } from '../../shared'; -import { ProfileTestSoftTenant } from './ProfileTestSoftTenant'; -import { RoleFunctionalTests } from './RoleFunctionalTests'; - -export class PermissionsModule extends Module { - register(): void { - const multiTenancy = this.app.plugin.get('multi-tenancy'); - - this.app.import.roles({ - [RoleFunctionalTests.name]: RoleFunctionalTests.definition, - }); - - // ? Add role functional test to tenant profiles - const functionalTestsPolicy = { - roleId: RoleFunctionalTests.name, - }; - ProfileTenantAdmin.definition.policies.push(functionalTestsPolicy); - ProfileTenantReader.definition.policies.push(functionalTestsPolicy); - - multiTenancy.registerProfilesTemplates('asset_tracking', { - [ProfileTenantAdmin.name]: ProfileTenantAdmin.definition, - [ProfileTenantReader.name]: ProfileTenantReader.definition, - // ? profile for tests - [ProfileTestSoftTenant.name]: ProfileTestSoftTenant.definition, - }); - } -} diff --git a/apps/api/lib/modules/asset_tracking/permissions/ProfileTestSoftTenant.ts b/apps/api/lib/modules/asset_tracking/permissions/ProfileTestSoftTenant.ts deleted file mode 100644 index 0a7f0bf..0000000 --- a/apps/api/lib/modules/asset_tracking/permissions/ProfileTestSoftTenant.ts +++ /dev/null @@ -1,84 +0,0 @@ -import { KuzzleProfile } from '@kuzzleio/iot-platform-backend'; - -/** - * Users with this profile can read main resources of the tenant and administrate digitaltwins they belongs to. - * - * They don't have access to the tenant's users. - */ -export const ProfileTestSoftTenant: KuzzleProfile = { - name: 'TestSoftTenant', - definition: { - policies: [ - { - roleId: 'tenants.reader', - }, - { - roleId: 'functionalTests', - }, - { - roleId: 'default', - restrictedTo: [ - { - index: '{tenantIndex}', - }, - ], - }, - { - roleId: 'documents.reader', - restrictedTo: [ - { - index: '{tenantIndex}', - }, - ], - }, - { - roleId: 'dashboards.admin', - restrictedTo: [ - { - index: '{tenantIndex}', - }, - ], - }, - { - roleId: 'assets.admin', - restrictedTo: [ - { - index: '{tenantIndex}', - }, - ], - }, - { - roleId: 'devices.admin', - restrictedTo: [ - { - index: '{tenantIndex}', - }, - ], - }, - { - roleId: 'measures.admin', - restrictedTo: [ - { - index: '{tenantIndex}', - }, - ], - }, - { - roleId: 'alerts.admin', - restrictedTo: [ - { - index: '{tenantIndex}', - }, - ], - }, - { - roleId: 'alertRules.admin', - restrictedTo: [ - { - index: '{tenantIndex}', - }, - ], - }, - ], - }, -}; diff --git a/apps/api/lib/modules/asset_tracking/permissions/RoleFunctionalTests.ts b/apps/api/lib/modules/asset_tracking/permissions/RoleFunctionalTests.ts deleted file mode 100644 index 9d5f63c..0000000 --- a/apps/api/lib/modules/asset_tracking/permissions/RoleFunctionalTests.ts +++ /dev/null @@ -1,32 +0,0 @@ -import { KuzzleRole } from '@kuzzleio/iot-platform-backend'; - -/** - * Role to allow needed actions for functional tests - */ -export const RoleFunctionalTests: KuzzleRole = { - name: 'functionalTests', - definition: { - controllers: { - admin: { - actions: { - loadFixtures: true, - }, - }, - fixtures: { - actions: { - '*': true, - }, - }, - document: { - actions: { - '*': true, - }, - }, - collection: { - actions: { - '*': true, - }, - }, - }, - }, -}; diff --git a/apps/api/lib/modules/asset_tracking/permissions/index.ts b/apps/api/lib/modules/asset_tracking/permissions/index.ts deleted file mode 100644 index e169a75..0000000 --- a/apps/api/lib/modules/asset_tracking/permissions/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './PermissionsModule'; diff --git a/apps/api/lib/modules/asset_tracking/rules-engine/CreateMovementRecordTask.ts b/apps/api/lib/modules/asset_tracking/rules-engine/CreateMovementRecordTask.ts deleted file mode 100644 index 47292cd..0000000 --- a/apps/api/lib/modules/asset_tracking/rules-engine/CreateMovementRecordTask.ts +++ /dev/null @@ -1,59 +0,0 @@ -import { Task, WorkflowContext } from '@kuzzleio/plugin-workflows'; -import { MeasureContent } from 'kuzzle-device-manager'; -import { KDocument } from 'kuzzle-sdk'; - -import { TruckAssetContent } from '../assets/Truck'; -import { MovementRecordMeasurement } from '../measures'; - -export class CreateMovementRecordTask extends Task { - constructor() { - super('create-movement-record'); - - this.description = `This task will create a new "movementRecord" measure for the asset if the asset entered or exited a geofence`; - } - - async run(context: WorkflowContext) { - const measures = context.payload.measures as MeasureContent[]; - const asset = context.payload.asset as KDocument; - - if (context.props.previousGeofence === asset._source.metadata.geofencing.state) { - return context; - } - - const movementRecord: MeasureContent = { - type: 'movementRecord', - values: { - out: context.props.previousGeofence, - in: asset._source.metadata.geofencing.state, - }, - measuredAt: asset._source.measures.position.measuredAt, - asset: { - _id: asset._id, - model: asset._source.model, - reference: asset._source.reference, - measureName: 'movementRecord', - metadata: asset._source.metadata, - groups: asset._source.groups ?? [], - }, - origin: { - _id: asset._source.measures.position.originId, - payloadUuids: asset._source.measures.position.payloadUuids, - type: 'computed', - measureName: 'movementRecord', - }, - }; - - measures.push(movementRecord); - - asset._source.measures.movementRecord = { - name: 'movementRecord', - type: 'computed', - measuredAt: movementRecord.measuredAt, - values: movementRecord.values, - originId: movementRecord.origin._id, - payloadUuids: movementRecord.origin.payloadUuids, - }; - - return context; - } -} diff --git a/apps/api/lib/modules/asset_tracking/rules-engine/asset-truck-geofencing-rule.ts b/apps/api/lib/modules/asset_tracking/rules-engine/asset-truck-geofencing-rule.ts deleted file mode 100644 index 63aa777..0000000 --- a/apps/api/lib/modules/asset_tracking/rules-engine/asset-truck-geofencing-rule.ts +++ /dev/null @@ -1,36 +0,0 @@ -import { Rule, RuleContent } from '@kuzzleio/plugin-workflows'; - -const assetTruckGeofencingRuleContent: RuleContent = { - name: 'asset-truck-geofencing', - description: 'Rule to enrich geofencing Truck assets by using the Warehouse geofence', - filters: { - and: [ - // Only if the asset is geofencing enabled - { - not: { - equals: { 'asset._source.metadata.geofencing.disabled': true }, - }, - }, - // Only if the asset model is Truck - { - equals: { 'asset._source.model': 'Truck' }, - }, - ], - }, - actions: [ - { - type: 'task', - name: 'prepare-geofencing', - }, - { - type: 'rule-group', - name: 'warehouse', - }, - { - type: 'task', - name: 'create-movement-record', - }, - ], -}; - -export const assetTruckGeofencingRule = new Rule(assetTruckGeofencingRuleContent); diff --git a/apps/api/lib/modules/asset_tracking/rules-engine/enrichment-workflow.ts b/apps/api/lib/modules/asset_tracking/rules-engine/enrichment-workflow.ts deleted file mode 100644 index 4e07c96..0000000 --- a/apps/api/lib/modules/asset_tracking/rules-engine/enrichment-workflow.ts +++ /dev/null @@ -1,19 +0,0 @@ -import { Workflow, WorkflowContent } from '@kuzzleio/plugin-workflows'; - -const enrichmentWorkflowContent: WorkflowContent = { - name: 'Enrichment Workflow', - description: 'Workflow to enrich devices, assets and measures in the ingestion pipeline', - payloadPath: '.', - trigger: { - type: 'event', - event: 'engine:{engine-index}:device-manager:measures:persist:before', - }, - actions: [ - { - type: 'rule', - name: 'asset-truck-geofencing', - }, - ], -}; - -export const enrichmentWorkflow = new Workflow(enrichmentWorkflowContent); diff --git a/apps/api/lib/modules/asset_tracking/rules-engine/index.ts b/apps/api/lib/modules/asset_tracking/rules-engine/index.ts deleted file mode 100644 index 20965d7..0000000 --- a/apps/api/lib/modules/asset_tracking/rules-engine/index.ts +++ /dev/null @@ -1,3 +0,0 @@ -export * from './CreateMovementRecordTask'; -export * from './asset-truck-geofencing-rule'; -export * from './enrichment-workflow'; diff --git a/apps/api/lib/modules/bulkImport/BulkImportController.ts b/apps/api/lib/modules/bulkImport/BulkImportController.ts deleted file mode 100644 index 22f7ec7..0000000 --- a/apps/api/lib/modules/bulkImport/BulkImportController.ts +++ /dev/null @@ -1,29 +0,0 @@ -import { Backend, Controller, KuzzleRequest } from 'kuzzle'; - -import { BulkImportService } from './BulkImportService'; - -export class BulkImportController extends Controller { - private readonly service: BulkImportService; - - constructor(app: Backend, service: BulkImportService) { - super(app); - - this.service = service; - this.name = 'bulk-import'; - - this.definition = { - actions: { - import: { - handler: this.parseAndImport, - }, - }, - }; - } - - async parseAndImport(request: KuzzleRequest) { - const currentIndex = request.getBodyString('currentIndex'); - const uniqueId = request.getBodyString('uniqueId'); - const fileContent = request.getBodyString('content'); - return this.service.parseAndImport(fileContent, currentIndex, uniqueId); - } -} diff --git a/apps/api/lib/modules/bulkImport/BulkImportModule.ts b/apps/api/lib/modules/bulkImport/BulkImportModule.ts deleted file mode 100644 index 79fab2a..0000000 --- a/apps/api/lib/modules/bulkImport/BulkImportModule.ts +++ /dev/null @@ -1,20 +0,0 @@ -import { BulkImportController } from './BulkImportController'; -import { BulkImportService } from './BulkImportService'; - -import { Module } from '../shared'; -import { IoTApplication } from '../../IoTApplication'; - -export class BulkImportModule extends Module { - constructor(app: IoTApplication) { - super(app); - } - - register(): void { - const service = new BulkImportService(this.app); - this.app.controller.use(new BulkImportController(this.app, service)); - } - - async init() { - // Nothing here - } -} diff --git a/apps/api/lib/modules/bulkImport/BulkImportService.ts b/apps/api/lib/modules/bulkImport/BulkImportService.ts deleted file mode 100644 index 5750c6d..0000000 --- a/apps/api/lib/modules/bulkImport/BulkImportService.ts +++ /dev/null @@ -1,283 +0,0 @@ -import { Backend, JSONObject } from 'kuzzle'; -import { - ApiAssetCreateRequest, - ApiAssetCreateResult, - ApiDeviceCreateRequest, - ApiDeviceCreateResult, - ApiDeviceLinkAssetRequest, - ApiDeviceLinkAssetResult, -} from 'kuzzle-device-manager'; - -import { Log, LogType } from '../../types'; - -import { parseCsv } from './CsvParser'; - -type Content = { - asset_id?: string; - asset_reference?: string; - device_id?: string; - device_reference?: string; -} & JSONObject; - -export class BulkImportService { - private readonly app: Backend; - private logs: Log[]; - - constructor(app: Backend) { - this.app = app; - this.logs = []; - } - - async parseAndImport(rawContent: string, currentIndex: string, uniqueId: string): Promise { - this.logs = []; - const content = await this.parseFile(rawContent, uniqueId); - return this.importAssetsAndDevices(content, currentIndex, uniqueId); - } - - async parseFile(content: string, uniqueId: string): Promise { - try { - return parseCsv(content); - } catch (error) { - await this.addLog(uniqueId, 'csv-parse-error', 'error'); - return []; - } - } - - async importAssetsAndDevices( - content: Content, - currentIndex: string, - uniqueId: string, - ): Promise { - try { - const promises = []; - for (const [lineNumber, line] of content.entries()) { - if (promises.length >= 75) { - await Promise.all(promises); - promises.splice(0, promises.length); - } - - const createDeviceAndAsset: Promise[] = []; - const isAsset = line.asset_model && line.asset_reference; - const isDevice = line.device_model && line.device_reference; - - if (isAsset) { - createDeviceAndAsset.push(this.createAsset(line, uniqueId, currentIndex)); - } - - if (isDevice) { - createDeviceAndAsset.push(this.createDevice(line, lineNumber, uniqueId, currentIndex)); - } - - const createDeviceAndAssetPromise = Promise.all(createDeviceAndAsset); - - if (isDevice && isAsset) { - promises.push( - createDeviceAndAssetPromise.then(() => - this.linkDeviceToAsset(line, uniqueId, currentIndex), - ), - ); - continue; - } - - promises.push(createDeviceAndAssetPromise); - - if (!isAsset && !isDevice) { - promises.push( - this.addLog(uniqueId, 'invalid', 'error', { - lineNumber: lineNumber + 1, - }), - ); - } - } - await Promise.all(promises); - } catch (error) { - await this.addLog(uniqueId, error.message, 'kuzzle_error'); - } - } - - async createAsset(value: Content, uniqueId: string, currentIndex: string): Promise { - try { - await this.app.sdk.query({ - controller: 'device-manager/assets', - action: 'create', - engineId: currentIndex, - body: { - model: value.asset_model, - reference: value.asset_reference, - }, - }); - await this.addLog(uniqueId, 'asset-created', 'success', { - assetModel: value.asset_model, - assetReference: value.asset_reference, - }); - } catch (error) { - if (error.id !== 'services.storage.document_already_exists') { - await this.addLog(uniqueId, error.message, 'kuzzle_error'); - } - } - const metadata = await this.parseMetadata('asset', value); - const id = `${value.asset_model}-${value.asset_reference}`; - await this.updateMetadata('asset', id, value, metadata, uniqueId, currentIndex); - } - - async createDevice( - value: Content, - lineNumber: number, - uniqueId: string, - currentIndex: string, - ): Promise { - const id = `${value.device_model}-${value.device_reference}`; - const otherTenant = await this.getExistingDeviceTenant(value, id, uniqueId, currentIndex); - if (otherTenant && otherTenant !== 'platform') { - await this.addLog(uniqueId, 'device-link-to-another-tenant', 'error', { - deviceModel: value.device_model, - deviceReference: value.device_reference, - otherTenant: otherTenant, - lineNumber, - }); - return; - } - if (!otherTenant) { - try { - await this.app.sdk.query({ - controller: 'device-manager/devices', - action: 'create', - engineId: currentIndex, - body: { - model: value.device_model, - reference: value.device_reference, - }, - }); - await this.addLog(uniqueId, 'device-created', 'success', { - deviceModel: value.device_model, - deviceReference: value.device_reference, - }); - } catch (error) { - if (error.id !== 'services.storage.document_already_exists') { - await this.addLog(uniqueId, error.message, 'kuzzle_error'); - } - } - } - const metadata = await this.parseMetadata('device', value); - await this.updateMetadata('device', id, value, metadata, uniqueId, currentIndex); - } - - /** - * Get the tenant where the device already exists (if it exists) - * @return {string | null} the engineId of the tenant where the device already exists or null if it doesn't exist - */ - async getExistingDeviceTenant( - value: Content, - id: string, - uniqueId: string, - currentIndex: string, - ): Promise<'platform' | string | null> { - try { - const { result } = await this.app.sdk.query({ - controller: 'device-manager/devices', - action: 'get', - engineId: 'platform', - _id: id, - }); - const source = result._source; - if (source.engineId === null) { - // the device exists in the platform tenant - await this.app.sdk.query({ - controller: 'device-manager/devices', - action: 'attachEngine', - engineId: currentIndex, - _id: id, - }); - await this.addLog(uniqueId, 'orphan-device-link', 'success', { - deviceModel: value.device_model, - deviceReference: value.device_reference, - currentIndex, - }); - return 'platform'; - } - return source.engineId !== currentIndex ? source.engineId : null; - } catch (error) { - if (error.status === 404) { - return null; // the device doesn't exist yet - } - await this.addLog(uniqueId, error.message, 'kuzzle_error'); - return null; - } - } - - async linkDeviceToAsset(value: Content, uniqueId: string, currentIndex: string): Promise { - try { - await this.app.sdk.query({ - controller: 'device-manager/devices', - action: 'linkAsset', - _id: `${value.device_model}-${value.device_reference}`, - assetId: `${value.asset_model}-${value.asset_reference}`, - engineId: currentIndex, - implicitMeasuresLinking: true, - }); - await this.addLog(uniqueId, 'device-linked', 'success', { - deviceModel: value.device_model, - deviceReference: value.device_reference, - assetModel: value.asset_model, - assetReference: value.asset_reference, - }); - } catch (error) { - await this.addLog(uniqueId, error.message, 'kuzzle_error'); - } - } - - async parseMetadata(type: string, value: JSONObject) { - const metadata: JSONObject = {}; - for (const [key, _value] of Object.entries(value)) { - if (key.startsWith(type + '_metadata') && _value) { - metadata[key.replace(type + '_metadata_', '')] = _value; - } - } - return metadata; - } - - async updateMetadata( - type: string, - id: string, - value: Content, - metadata: JSONObject, - uniqueId: string, - currentIndex: string, - ): Promise { - try { - const collection = type + 's'; - await this.app.sdk.query({ - controller: 'device-manager/' + collection, - action: 'update', - engineId: currentIndex, - _id: id, - body: { - metadata: metadata, - }, - }); - const typeString = type.charAt(0).toUpperCase() + type.slice(1); - await this.addLog(uniqueId, 'metadata-updated', 'success', { - type: typeString, - model: value[type + '_model'], - reference: value[type + '_reference'], - }); - } catch (error) { - await this.addLog(uniqueId, error.message, 'kuzzle_error'); - } - } - - async addLog(uniqueId: string, message: string, type: LogType, params = {}): Promise { - const log = { - log: { - message, - params, - }, - type, - }; - await this.app.sdk.realtime.publish('bulk-import', 'log', { - ...log, - uniqueId, - }); - this.logs.push(log); - } -} diff --git a/apps/api/lib/modules/bulkImport/CsvParser.ts b/apps/api/lib/modules/bulkImport/CsvParser.ts deleted file mode 100644 index 3b1ce32..0000000 --- a/apps/api/lib/modules/bulkImport/CsvParser.ts +++ /dev/null @@ -1,62 +0,0 @@ -import { JSONObject } from 'kuzzle'; - -export function parseCsv(content: string): JSONObject { - const lineBreakerUsed = content.includes('\r\n') ? '\r\n' : '\n'; - const lines = content.split(lineBreakerUsed).filter((line) => line.length > 0); - const data: JSONObject[] = []; - const headers = parseRow(lines[0]); - - for (let i = 1; i < lines.length; i++) { - const line = lines[i]; - const row = parseRow(line); - if (row.length !== headers.length) { - throw new Error('Invalid CSV file'); - } - const object: JSONObject = {}; - for (let j = 0; j < headers.length; j++) { - const header = headers[j]; - object[header] = row[j]; - } - data.push(object); - } - - return data; -} - -const parseRow = (line: string): string[] => { - const row: string[] = []; - const characters: string[] = []; - let insideQuote = false; - let quoteType = ''; - - for (let i = 0; i < line.length; i++) { - const char = line[i]; - - if (char === '"' || char === "'") { - if (!insideQuote) { - insideQuote = true; - quoteType = char; - continue; - } - if (insideQuote && quoteType === char) { - insideQuote = false; - continue; - } - } - - if (char === ',' && !insideQuote) { - row.push(characters.join('')); - characters.length = 0; - continue; - } - - if ((char === ' ' || char === '\t') && !insideQuote) { - continue; - } - - characters.push(char); - } - - row.push(characters.join('')); - return row; -}; diff --git a/apps/api/lib/modules/decoders/TenantDecoders.ts b/apps/api/lib/modules/decoders/TenantDecoders.ts deleted file mode 100644 index 6ee3f9a..0000000 --- a/apps/api/lib/modules/decoders/TenantDecoders.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { Module } from '../shared'; - -import { DevicesModule } from './devices'; - -export class TenantDecoders extends Module { - private modules: Module[] = []; - - register(): void { - this.modules.push(new DevicesModule(this.app)); - - for (const module of this.modules) { - module.register(); - } - } -} diff --git a/apps/api/lib/modules/decoders/devices/CityloneSLBox.ts b/apps/api/lib/modules/decoders/devices/CityloneSLBox.ts deleted file mode 100644 index 00bb9ee..0000000 --- a/apps/api/lib/modules/decoders/devices/CityloneSLBox.ts +++ /dev/null @@ -1,49 +0,0 @@ -import { - DeviceContent, - DeviceModelDefinition, - Metadata, - BatteryMeasurement, -} from 'kuzzle-device-manager'; -import { CityloneSLBoxDecoder } from './CityloneSLBoxDecoder'; - -/** - * Type representing the metadata of a "CityloneSLBox" device. - * - * This is optional and can be omitted if you don't want strong typing - */ -export interface CityloneSLBoxMetadata extends Metadata { - trackerType: string; - serialNumber: string; -} - -/** - * Type representing the measures of a "CityloneSLBox" device. - * - * This is optional and can be omitted if you don't want strong typing - */ -export type CityloneSLBoxMeasurements = { - battery: BatteryMeasurement; -}; - -/** - * Type meant to be used when manipulating a "CityloneSLBox" a device. - * - * It is constructed with the types of the device possible measures and metadata. - * - * This is optional and can be omitted if you don't want strong typing - */ -export interface CityloneSLBoxDeviceContent - extends DeviceContent { - model: 'CityloneSLBox'; -} - -export const CityloneSLBoxDeviceDefinition: DeviceModelDefinition = { - decoder: new CityloneSLBoxDecoder(), - defaultMetadata: { - trackerType: 'Embedded', - }, - metadataMappings: { - trackerType: { type: 'keyword' }, - serialNumber: { type: 'keyword' }, - }, -}; diff --git a/apps/api/lib/modules/decoders/devices/CityloneSLBoxDecoder.ts b/apps/api/lib/modules/decoders/devices/CityloneSLBoxDecoder.ts deleted file mode 100644 index 831a67e..0000000 --- a/apps/api/lib/modules/decoders/devices/CityloneSLBoxDecoder.ts +++ /dev/null @@ -1,41 +0,0 @@ -import { BatteryMeasurement, DecodedPayload, Decoder } from 'kuzzle-device-manager'; -import { JSONObject } from 'kuzzle'; -import { has } from 'lodash'; - -export class CityloneSLBoxDecoder extends Decoder { - public measures = [{ name: 'battery', type: 'battery' }] as const; - - constructor() { - super(); - - this.payloadsMappings = { - deviceEUI: { type: 'keyword' }, - }; - } - - async validate(payload: JSONObject): Promise { - this.ensureProperties(payload, ['deviceEUI']); - - const properties = []; - - return properties.every((property) => has(payload, property)); - } - - async decode( - decodedPayload: DecodedPayload, - payload: JSONObject, - ): Promise> { - const deviceId = payload.deviceEUI; - - const measuredAt = payload.timestamp || Date.now(); - - decodedPayload.addMeasurement(deviceId, 'battery', { - measuredAt, - type: 'battery', - values: { - battery: payload.battery, - }, - }); - return decodedPayload; - } -} diff --git a/apps/api/lib/modules/decoders/devices/DevicesModule.ts b/apps/api/lib/modules/decoders/devices/DevicesModule.ts deleted file mode 100644 index 2f7d9c3..0000000 --- a/apps/api/lib/modules/decoders/devices/DevicesModule.ts +++ /dev/null @@ -1,17 +0,0 @@ -import { DeviceManagerPlugin } from 'kuzzle-device-manager'; - -import { Module } from '../../shared'; - -import { NexelecCarbonDeviceDefinition } from './NexelecCarbon'; -import { CityloneSLBoxDeviceDefinition } from './CityloneSLBox'; -import { MilesightEM500SWLDeviceDefinition } from './MilesightEM500SWL'; - -export class DevicesModule extends Module { - register(): void { - const deviceManager = this.app.plugin.get('device-manager'); - - deviceManager.models.registerDevice('NexelecCarbon', NexelecCarbonDeviceDefinition); - deviceManager.models.registerDevice('CityloneSLBox', CityloneSLBoxDeviceDefinition); - deviceManager.models.registerDevice('MilesightEM500SWL', MilesightEM500SWLDeviceDefinition); - } -} diff --git a/apps/api/lib/modules/decoders/devices/MilesightEM500SWL.ts b/apps/api/lib/modules/decoders/devices/MilesightEM500SWL.ts deleted file mode 100644 index c799431..0000000 --- a/apps/api/lib/modules/decoders/devices/MilesightEM500SWL.ts +++ /dev/null @@ -1,52 +0,0 @@ -import { - DeviceContent, - DeviceModelDefinition, - Metadata, - BatteryMeasurement, -} from 'kuzzle-device-manager'; -import { WaterMeasurement } from '../../air_quality/devices/WaterMeasurement'; - -import { MilesightEM500SWLDecoder } from './MilesightEM500SWLDecoder'; - -/** - * Type representing the metadata of a "MilesightEM500SWL" device. - * - * This is optional and can be omitted if you don't want strong typing - */ -export interface MilesightEM500SWLMetadata extends Metadata { - trackerType: string; - serialNumber: string; -} - -/** - * Type representing the measures of a "MilesightEM500SWL" device. - * - * This is optional and can be omitted if you don't want strong typing - */ -export type MilesightEM500SWLMeasurements = { - battery: BatteryMeasurement; - water: WaterMeasurement; -}; - -/** - * Type meant to be used when manipulating a "MilesightEM500SWL" a device. - * - * It is constructed with the types of the device possible measures and metadata. - * - * This is optional and can be omitted if you don't want strong typing - */ -export interface MilesightEM500SWLDeviceContent - extends DeviceContent { - model: 'MilesightEM500SWL'; -} - -export const MilesightEM500SWLDeviceDefinition: DeviceModelDefinition = { - decoder: new MilesightEM500SWLDecoder(), - defaultMetadata: { - trackerType: 'Embedded', - }, - metadataMappings: { - trackerType: { type: 'keyword' }, - serialNumber: { type: 'keyword' }, - }, -}; diff --git a/apps/api/lib/modules/decoders/devices/MilesightEM500SWLDecoder.ts b/apps/api/lib/modules/decoders/devices/MilesightEM500SWLDecoder.ts deleted file mode 100644 index da3247c..0000000 --- a/apps/api/lib/modules/decoders/devices/MilesightEM500SWLDecoder.ts +++ /dev/null @@ -1,54 +0,0 @@ -import { BatteryMeasurement, DecodedPayload, Decoder } from 'kuzzle-device-manager'; -import { JSONObject } from 'kuzzle'; -import { has } from 'lodash'; -import { WaterMeasurement } from '../../air_quality/devices/WaterMeasurement'; - -export class MilesightEM500SWLDecoder extends Decoder { - /** - * Declare the measure extracted by this Decoder - */ - public measures = [ - { name: 'water', type: 'water' }, - { name: 'battery', type: 'battery' }, - ] as const; - - constructor() { - super(); //DEVICE MODEL - this.payloadsMappings = { - devEUI: { type: 'keyword' }, - }; - } - - async validate(payload: JSONObject): Promise { - this.ensureProperties(payload, ['devEUI']); - - const properties = ['water']; - - return properties.every((property) => has(payload, property)); - } - - async decode( - decodedPayload: DecodedPayload, - payload: JSONObject, - ): Promise> { - const deviceId = payload.devEUI; - const measuredAt = payload.timestamp || Date.now(); - - decodedPayload.addMeasurement(deviceId, 'battery', { - measuredAt, - type: 'battery', - values: { - battery: payload.battery, - }, - }); - - decodedPayload.addMeasurement(deviceId, 'water', { - measuredAt, - type: 'water', - values: { - water: payload.water, - }, - }); - return decodedPayload; - } -} diff --git a/apps/api/lib/modules/decoders/devices/NexelecCarbon.ts b/apps/api/lib/modules/decoders/devices/NexelecCarbon.ts deleted file mode 100644 index 75b36be..0000000 --- a/apps/api/lib/modules/decoders/devices/NexelecCarbon.ts +++ /dev/null @@ -1,57 +0,0 @@ -import { - DeviceContent, - DeviceModelDefinition, - Metadata, - BatteryMeasurement, - TemperatureMeasurement, - HumidityMeasurement, -} from 'kuzzle-device-manager'; -import { CO2Measurement } from '../../air_quality/devices/CO2Measurement'; - -import { NexelecCarbonDecoder } from './NexelecCarbonDecoder'; - -/** - * Type representing the metadata of a "NexelecCarbon" device. - * - * This is optional and can be omitted if you don't want strong typing - */ -export interface NexelecCarbonMetadata extends Metadata { - trackerType: string; - serialNumber: string; -} - -/** - * Type representing the measures of a "NexelecCarbon" device. - * - * This is optional and can be omitted if you don't want strong typing - */ -export type NexelecCarbonMeasurements = { - battery: BatteryMeasurement; - humidity: HumidityMeasurement; - co2: CO2Measurement; - externalTemperature: TemperatureMeasurement; - internalTemperature: TemperatureMeasurement; -}; - -/** - * Type meant to be used when manipulating a "NexelecCarbon" a device. - * - * It is constructed with the types of the device possible measures and metadata. - * - * This is optional and can be omitted if you don't want strong typing - */ -export interface NexelecCarbonDeviceContent - extends DeviceContent { - model: 'NexelecCarbon'; -} - -export const NexelecCarbonDeviceDefinition: DeviceModelDefinition = { - decoder: new NexelecCarbonDecoder(), - defaultMetadata: { - trackerType: 'Embedded', - }, - metadataMappings: { - trackerType: { type: 'keyword' }, - serialNumber: { type: 'keyword' }, - }, -}; diff --git a/apps/api/lib/modules/decoders/devices/NexelecCarbonDecoder.ts b/apps/api/lib/modules/decoders/devices/NexelecCarbonDecoder.ts deleted file mode 100644 index cc7ffc8..0000000 --- a/apps/api/lib/modules/decoders/devices/NexelecCarbonDecoder.ts +++ /dev/null @@ -1,68 +0,0 @@ -import { - DecodedPayload, - Decoder, - HumidityMeasurement, - TemperatureMeasurement, -} from 'kuzzle-device-manager'; -import { CO2Measurement } from '../../air_quality/devices/CO2Measurement'; -import { JSONObject } from 'kuzzle'; -import { has } from 'lodash'; - -export class NexelecCarbonDecoder extends Decoder { - public measures = [ - { name: 'humidity', type: 'humidity' }, - { name: 'co2', type: 'co2' }, - { name: 'temperature', type: 'temperature' }, - ] as const; - - constructor() { - super(); - - this.payloadsMappings = { - devEUI: { type: 'keyword' }, - }; - } - - async validate(payload: JSONObject): Promise { - this.ensureProperties(payload, ['devEUI']); - - const properties = ['humidity', 'co2', 'temperature']; - - return properties.every((property) => has(payload, property)); - } - - async decode( - decodedPayload: DecodedPayload, - payload: JSONObject, - ): Promise> { - const deviceId = payload.devEUI; - - const measuredAt = payload.timestamp || Date.now(); - - decodedPayload.addMeasurement(deviceId, 'co2', { - measuredAt, - type: 'co2', - values: { - co2: payload.co2, - }, - }); - - decodedPayload.addMeasurement(deviceId, 'humidity', { - measuredAt, - type: 'humidity', - values: { - humidity: payload.humidity, - }, - }); - - decodedPayload.addMeasurement(deviceId, 'temperature', { - measuredAt, - type: 'temperature', - values: { - temperature: payload.temperature, - }, - }); - - return decodedPayload; - } -} diff --git a/apps/api/lib/modules/decoders/devices/index.ts b/apps/api/lib/modules/decoders/devices/index.ts deleted file mode 100644 index f2bf737..0000000 --- a/apps/api/lib/modules/decoders/devices/index.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { DeviceManagerPlugin } from 'kuzzle-device-manager'; - -import { IoTApplication } from '../../../IoTApplication'; - -import { co2MeasureDefinition } from '../../air_quality/devices/CO2Measurement'; -import { waterMeasureDefinition } from '../../air_quality/devices/WaterMeasurement'; - -export * from './DevicesModule'; - -export function registerDevicesModule(app: IoTApplication) { - const deviceManager = app.plugin.get('device-manager'); - deviceManager.models.registerMeasure('co2', co2MeasureDefinition); - deviceManager.models.registerMeasure('water', waterMeasureDefinition); -} diff --git a/apps/api/lib/modules/fixtures/FixturesController.ts b/apps/api/lib/modules/fixtures/FixturesController.ts deleted file mode 100644 index 681e2cb..0000000 --- a/apps/api/lib/modules/fixtures/FixturesController.ts +++ /dev/null @@ -1,71 +0,0 @@ -import { Backend, BadRequestError, Controller, KuzzleRequest } from 'kuzzle'; - -import { FixtureStage } from '../../types'; -import { AirQualityFixtures } from './air_quality/AirQualityFixtures'; -import { AssetTrackingFixtures } from './asset_tracking/AssetTrackingFixtures'; -import { PublicLightingFixtures } from './public_lighting/PublicLightingFixtures'; - -export class FixturesController extends Controller { - private validStage = Object.values(FixtureStage); - private assetTracking: AssetTrackingFixtures; - private airQuality: AirQualityFixtures; - private publicLighting: PublicLightingFixtures; - - constructor(app: Backend) { - super(app); - - this.definition = { - actions: { - load: { - handler: this.load, - }, - reset: { - handler: this.reset, - }, - }, - }; - - this.assetTracking = new AssetTrackingFixtures(app); - this.airQuality = new AirQualityFixtures(app); - this.publicLighting = new PublicLightingFixtures(app); - } - - async load(request: KuzzleRequest) { - const tenant = request.getString('tenant'); - const stage = request.getString('stage', 'all') as FixtureStage; - - if (!this.validStage.includes(stage)) { - throw new BadRequestError( - `"${stage}" is not a valid stage name, you should use one of the following stage option ${this.validStage.join( - ', ', - )}`, - ); - } - - switch (tenant) { - case 'asset_tracking': - return this.assetTracking.runStage(stage); - case 'air_quality': - return this.airQuality.runStage(stage); - case 'public_lighting': - return this.publicLighting.runStage(stage); - default: - throw new BadRequestError(`Unknown tenant: ${tenant}`); - } - } - - async reset(request: KuzzleRequest) { - const tenant = request.getString('tenant'); - - switch (tenant) { - case 'asset_tracking': - return this.assetTracking.reset(); - case 'air_quality': - return this.airQuality.reset(); - case 'public_lighting': - return this.publicLighting.reset(); - default: - throw new BadRequestError(`Unknown tenant: ${tenant}`); - } - } -} diff --git a/apps/api/lib/modules/fixtures/FixturesGenerator.ts b/apps/api/lib/modules/fixtures/FixturesGenerator.ts deleted file mode 100644 index be5d31b..0000000 --- a/apps/api/lib/modules/fixtures/FixturesGenerator.ts +++ /dev/null @@ -1,301 +0,0 @@ -import { Backend, BadRequestError, JSONObject } from 'kuzzle'; -import { - ApiAssetCreateRequest as BaseAssetCreateRequest, - ApiAssetDeleteRequest, - ApiDeviceCreateRequest, - ApiDeviceDeleteRequest, - ApiDeviceLinkAssetRequest, - ApiGroupAddAssetsRequest, - ApiGroupCreateRequest, -} from 'kuzzle-device-manager'; - -import { FixtureStage, Tenant } from '../../types'; - -interface ApiAssetCreateRequest extends BaseAssetCreateRequest { - softTenantId?: string; -} - -export abstract class FixturesGenerator { - protected app: Backend; - protected tenantName: string; - protected tenantGroup: string; - protected tenantIndex: string; - - constructor(app: Backend, tenantName: string, tenantGroup: string) { - this.app = app; - this.tenantName = tenantName; - this.tenantGroup = tenantGroup; - this.tenantIndex = `tenant-${tenantGroup}-${tenantName}`; - } - - abstract loadDigitalTwins(): Promise; - abstract loadMeasures(): Promise; - abstract loadDashboards(): Promise; - abstract resetDigitalTwins(): Promise; - - async runAll(): Promise { - await this.loadUsers(); - await this.loadDigitalTwins(); - await this.loadMeasures(); - await this.loadDashboards(); - } - - async reset() { - await this.resetDigitalTwins(); - await this.resetMeasures(); - await this.truncate('alerts'); - await this.truncate('assets-history'); - await this.loadDigitalTwins(); - await this.loadMeasures(); - } - - async runStage(stage: keyof typeof FixtureStage) { - await this.createIfNoExists(); - - switch (stage) { - case FixtureStage.all: - return this.runAll(); - case FixtureStage.users: - return this.loadUsers(); - case FixtureStage.digital_twins: - return this.loadDigitalTwins(); - case FixtureStage.dashboards: - return this.loadDashboards(); - case FixtureStage.measures: - return this.loadMeasures(); - default: - throw new BadRequestError(`Unknown stage: ${stage}`); - } - } - - /** - * We must create the engines manually because the IoT Backend register pipes - * to create them after the multi tenancy plugin actions but pipes are not - * triggered from the backend. - */ - async createIfNoExists() { - const { result } = await this.app.sdk.query({ - controller: 'multi-tenancy/tenant', - action: 'exists', - name: this.tenantName, - group: this.tenantGroup, - }); - - if (!result.exists) { - const { result: tenant } = await this.app.sdk.query({ - controller: 'multi-tenancy/tenant', - action: 'create', - name: this.tenantName, - group: this.tenantGroup, - }); - - await this.createEngine('device-manager', 'create', this.tenantIndex, this.tenantGroup); - await this.createEngine('workflows', 'create', this.tenantIndex, this.tenantGroup); - await this.createEngine('scheduler', 'create', this.tenantIndex, this.tenantGroup); - await this.createEngine('dashboard-builder', 'create', this.tenantIndex, this.tenantGroup); - await this.createSoftTenant(tenant as Exclude, 'sdet'); - } - } - - async loadUsers() { - await Promise.all([ - this.createUser('tenant_admin', this.tenantGroup), - this.createUser('tenant_reader', this.tenantGroup), - ]); - } - - async createAsset( - model: string, - reference: string, - metadata: TMetadata = {} as TMetadata, - softTenantId?: string, - ) { - try { - await this.app.sdk.query({ - controller: 'device-manager/assets', - action: 'create', - engineId: this.tenantIndex, - softTenantId, - body: { - model, - reference, - metadata: metadata as any, - }, - }); - - return `Create Asset: ${model}-${reference}`; - } catch (error) { - if (error.id !== 'services.storage.document_already_exists') { - throw error; - } - } - } - - async deleteAsset(model: string, reference: string) { - try { - await this.app.sdk.query({ - controller: 'device-manager/assets', - action: 'delete', - engineId: this.tenantIndex, - _id: `${model}-${reference}`, - }); - - return `Delete Asset: ${model}-${reference}`; - } catch (error) { - return error.message; - } - } - - async createDevice(model: string, reference: string) { - try { - await this.app.sdk.query({ - controller: 'device-manager/devices', - action: 'create', - engineId: this.tenantIndex, - body: { - model, - reference, - }, - }); - - return `Create Device: ${model}-${reference}`; - } catch (error) { - if (error.id !== 'services.storage.document_already_exists') { - throw error; - } - } - } - - async deleteDevice(model: string, reference: string) { - try { - await this.app.sdk.query({ - controller: 'device-manager/devices', - action: 'delete', - engineId: this.tenantIndex, - _id: `${model}-${reference}`, - }); - - return `Delete Device: ${model}-${reference}`; - } catch (error) { - return error.message; - } - } - - async linkAsset( - assetId: string, - deviceId: string, - measureNames: ApiDeviceLinkAssetRequest['body']['measureNames'], - ) { - try { - await this.app.sdk.query({ - controller: 'device-manager/devices', - action: 'linkAsset', - engineId: this.tenantIndex, - _id: deviceId, - assetId, - body: { measureNames }, - }); - - return `Link Asset: ${assetId} to Device: ${deviceId}`; - } catch (error) { - return error.message; - } - } - - async groupAssets(groupName: string, assetIds: string[]) { - const groupId = groupName.toLocaleLowerCase().replace(' ', '-'); - const groupExist = await this.app.sdk.document.exists( - this.tenantIndex, - 'assets-groups', - groupId, - ); - if (!groupExist) { - await this.app.sdk.query({ - controller: 'device-manager/assetsGroup', - action: 'create', - engineId: this.tenantIndex, - _id: groupId, - body: { - name: groupName, - }, - }); - } - return this.app.sdk.query({ - controller: 'device-manager/assetsGroup', - action: 'addAsset', - engineId: this.tenantIndex, - _id: groupId, - body: { - assetIds, - }, - }); - } - - async createUser(profile: string, name: string) { - try { - await this.app.sdk.query({ - controller: 'multi-tenancy/user', - action: 'create', - profile, - _id: `${name}.${profile}`, - tenantId: this.tenantIndex, - body: { - credentials: { - local: { - username: `${name}.${profile}`, - password: 'password', - }, - }, - }, - }); - - return `Create User: ${name}.${profile}`; - } catch (error) { - return error.message; - } - } - - async resetMeasures() { - await this.truncate('measures'); - } - - async truncate(collection: string) { - await this.app.sdk.collection.refresh(this.tenantIndex, collection); - await this.app.sdk.document.deleteByQuery(this.tenantIndex, collection); - } - - randomNum(min: number, max: number) { - return Math.floor(Math.random() * (max - min + 1) + min); - } - - async createEngine(plugin: string, action: string, index: string, group?: string) { - return this.app.sdk - .query({ - action, - controller: `${plugin}/engine`, - group, - index, - }) - .catch((error) => { - this.app.log.error(`[${index}] Cannot ${action} ${plugin} engine: ${error}`); - - throw error; - }); - } - - async createSoftTenant(tenant: Exclude, name: string) { - return this.app.sdk.query({ - controller: 'multi-tenancy/soft-tenant', - action: 'create', - tenantId: tenant.group, - _tenant: { - _id: tenant.index, - _source: { - group: tenant.group, - name: tenant.name, - }, - }, - name, - }); - } -} diff --git a/apps/api/lib/modules/fixtures/FixturesModule.ts b/apps/api/lib/modules/fixtures/FixturesModule.ts deleted file mode 100644 index 4de4272..0000000 --- a/apps/api/lib/modules/fixtures/FixturesModule.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { WorkflowsPlugin } from '@kuzzleio/plugin-workflows'; - -import { Module } from '../shared'; - -import { resetAirQualityFixturesScheduledTask } from './air_quality/ResetAirQualityFixturesScheduledTask'; -import { resetAssetTrackingFixturesScheduledTask } from './asset_tracking/ResetAssetTrackingFixturesScheduledTask'; -import { FixturesController } from './FixturesController'; - -export class FixturesModule extends Module { - register(): void { - const workflows = this.app.plugin.get('workflows'); - - workflows.registerDefaultWorkflow(resetAirQualityFixturesScheduledTask); - workflows.registerDefaultWorkflow(resetAssetTrackingFixturesScheduledTask); - - this.app.controller.use(new FixturesController(this.app)); - } -} diff --git a/apps/api/lib/modules/fixtures/air_quality/AirQualityFixtures.ts b/apps/api/lib/modules/fixtures/air_quality/AirQualityFixtures.ts deleted file mode 100644 index 57ecc77..0000000 --- a/apps/api/lib/modules/fixtures/air_quality/AirQualityFixtures.ts +++ /dev/null @@ -1,80 +0,0 @@ -import { Backend } from 'kuzzle'; - -import { FixturesGenerator } from '../FixturesGenerator'; - -export class AirQualityFixtures extends FixturesGenerator { - constructor(app: Backend) { - super(app, 'kuzzle', 'air_quality'); - } - - async loadDigitalTwins() { - await Promise.all([ - this.createAsset('Room', 'CE2'), - this.createAsset('Room', 'CM1'), - - this.createDevice('Airly', 'AIR1'), - this.createDevice('Airly', 'AIR2'), - this.createDevice('Airly', 'AIR3'), - this.createDevice('IneoSenseACSSwitch', 'TEMP1'), - ]); - - await this.linkAsset('Room-CE2', 'Airly-AIR1', [ - { device: 'temperature', asset: 'temperature' }, - { device: 'co2', asset: 'co2' }, - { device: 'humidity', asset: 'humidity' }, - { device: 'illuminance', asset: 'illuminance' }, - ]); - - await this.groupAssets('School', ['Room-CE2', 'Room-CM1']); - - await this.app.sdk.collection.refresh('platform', 'devices'); - } - - async resetDigitalTwins() { - await Promise.all([this.deleteAsset('Room', 'CE2'), this.deleteAsset('Room', 'CM1')]); - - await Promise.all([ - this.deleteDevice('Airly', 'AIR1'), - this.deleteDevice('Airly', 'AIR2'), - this.deleteDevice('Airly', 'AIR3'), - this.deleteDevice('IneoSenseACSSwitch', 'TEMP1'), - ]); - } - - async loadDashboards() { - // nothing there - } - - /** - * We do not send payloads to devices who are linked to the same device - * at the same time to avoid race conditions - */ - async loadMeasures() { - await Promise.all([ - this.generateAirlyHistory('AIR1', 7), - this.generateAirlyHistory('AIR2', 7), - this.generateAirlyHistory('AIR3', 7), - ]); - } - - private async generateAirlyHistory(deviceId: string, days: number) { - let timestamp = Date.now() - 1000 * 60 * 60 * 24 * days; // start X days ago - - for (let i = 0; i <= days * 24; i++) { - await this.app.sdk.query({ - controller: 'device-manager/payloads', - action: 'airly', - body: { - deviceId, - temperature: this.randomNum(15, 30), - humidity: this.randomNum(50, 80), - co2: this.randomNum(200, 800), - illuminance: this.randomNum(6000, 9000), - timestamp, - }, - }); - - timestamp += 1000 * 60 * 60; - } - } -} diff --git a/apps/api/lib/modules/fixtures/air_quality/ResetAirQualityFixturesScheduledTask.ts b/apps/api/lib/modules/fixtures/air_quality/ResetAirQualityFixturesScheduledTask.ts deleted file mode 100644 index 371e914..0000000 --- a/apps/api/lib/modules/fixtures/air_quality/ResetAirQualityFixturesScheduledTask.ts +++ /dev/null @@ -1,26 +0,0 @@ -import { Workflow, WorkflowContent } from '@kuzzleio/plugin-workflows'; - -const content: WorkflowContent = { - name: 'reset-air-quality-fixtures', - description: 'Reset air quality fixtures every day at 4am', - payloadPath: '.', - trigger: { - type: 'scheduler', - schedule: { - syntax: 'cron', - value: '0 4 * * *', - }, - }, - actions: [ - { - type: 'api', - request: { - controller: 'fixtures', - action: 'reset', - tenant: 'air_quality', - }, - }, - ], -}; - -export const resetAirQualityFixturesScheduledTask = new Workflow(content); diff --git a/apps/api/lib/modules/fixtures/asset_tracking/AssetTrackingFixtures.ts b/apps/api/lib/modules/fixtures/asset_tracking/AssetTrackingFixtures.ts deleted file mode 100644 index 4ec9346..0000000 --- a/apps/api/lib/modules/fixtures/asset_tracking/AssetTrackingFixtures.ts +++ /dev/null @@ -1,351 +0,0 @@ -import { Backend } from 'kuzzle'; -import { WarehouseMetadata } from 'lib/modules/asset_tracking/assets/Warehouse'; - -import { FixturesGenerator } from '../FixturesGenerator'; -import { ROADS } from './roads'; - -export class AssetTrackingFixtures extends FixturesGenerator { - constructor(app: Backend) { - super(app, 'kuzzle', 'asset_tracking'); - } - - async loadDigitalTwins() { - await Promise.all([ - this.createAsset('Container', 'zulu'), - this.createAsset('Container', 'yankee'), - this.createAsset('Container', 'tango'), - - this.createAsset('Truck', 'sierra', undefined, 'sdet'), - this.createAsset('Truck', 'romeo', undefined, 'sdet'), - - // @todo this asset does not trigger the rule creation because it's created - // from the backend. We need global pipes - this.createAsset('Warehouse', 'IDFSud', { - surface: 23_000, - loadingBays: 16, - geofence: { - name: 'IDFSud', - group: 'warehouse', - disabled: false, - perimeter: { - type: 'Polygon', - coordinates: [ - [ - [48.601855911857456, 2.660012258595742], - [48.59868545002661, 2.6591147612317627], - [48.598309789704444, 2.6617958925986045], - [48.60145773681958, 2.662806997224749], - [48.601855911857456, 2.660012258595742], - ], - ], - }, - }, - }), - // @todo this asset does not trigger the rule creation because it's created - // from the backend. We need global pipes - this.createAsset('Warehouse', 'IDFNord', { - surface: 15_000, - loadingBays: 12, - geofence: { - name: 'IDFNord', - group: 'warehouse', - disabled: false, - perimeter: { - type: 'Polygon', - coordinates: [ - [ - [49.00952957325299, 2.4838636253124946], - [49.00600868479984, 2.483106516509082], - [49.00582336798439, 2.4856264458095723], - [49.00907001878247, 2.48728756512466], - [49.00952957325299, 2.4838636253124946], - ], - ], - }, - }, - }), - - this.createDevice('Abeeway', 'ABE1'), - this.createDevice('Abeeway', 'ABE2'), - this.createDevice('Abeeway', 'ABE3'), - - this.createDevice('Enginko', 'ENG1'), - this.createDevice('Enginko', 'ENG2'), - this.createDevice('Enginko', 'ENG3'), - - this.createDevice('Loka', 'LOK1'), - this.createDevice('Loka', 'LOK2'), - this.createDevice('Loka', 'LOK3'), - ]); - - await this.linkAsset('Container-zulu', 'Abeeway-ABE1', [ - { device: 'position', asset: 'position' }, - { device: 'externalTemperature', asset: 'externalTemperature' }, - { device: 'internalTemperature', asset: 'internalTemperature' }, - ]); - - await this.linkAsset('Container-tango', 'Enginko-ENG1', [ - { device: 'temperature', asset: 'externalTemperature' }, - ]); - await this.linkAsset('Container-tango', 'Enginko-ENG2', [ - { device: 'temperature', asset: 'internalTemperature' }, - ]); - await this.linkAsset('Container-tango', 'Loka-LOK1', [ - { device: 'position', asset: 'position' }, - ]); - - await this.linkAsset('Truck-sierra', 'Loka-LOK2', [{ device: 'position', asset: 'position' }]); - - await this.groupAssets('Trucks', ['Truck-sierra', 'Truck-romeo']); - - await this.app.sdk.collection.refresh('platform', 'devices'); - } - - async resetDigitalTwins() { - await Promise.all([ - this.deleteAsset('Container', 'zulu'), - this.deleteAsset('Container', 'yankee'), - this.deleteAsset('Container', 'tango'), - - this.deleteAsset('Warehouse', 'IDFSud'), - this.deleteAsset('Warehouse', 'IDFNord'), - - this.deleteAsset('Truck', 'sierra'), - this.deleteAsset('Truck', 'romeo'), - ]); - - await Promise.all([ - this.deleteDevice('Abeeway', 'ABE1'), - this.deleteDevice('Abeeway', 'ABE2'), - this.deleteDevice('Abeeway', 'ABE3'), - - this.deleteDevice('Enginko', 'ENG1'), - this.deleteDevice('Enginko', 'ENG2'), - this.deleteDevice('Enginko', 'ENG3'), - - this.deleteDevice('Loka', 'LOK1'), - this.deleteDevice('Loka', 'LOK2'), - this.deleteDevice('Loka', 'LOK3'), - ]); - } - - async loadAlertRules() { - const coldChainRule = { - name: 'Chaîne du froid', - description: - 'Alerte déclenchée lorsque la chaine du froid est rompue pour un conteneur frigorifique', - filters: { - and: [ - { - range: { - 'asset.measures.internalTemperature.values.temperature': { - gt: 0, - }, - }, - }, - ], - }, - collection: 'assets-history', - }; - await this.app.sdk.document.createOrReplace( - this.tenantIndex, - 'alert-rules', - 'alert-rule--cold-chain', - coldChainRule, - ); - } - - async loadDashboards() { - const containersTemperatureDashboard = { - type: 'dashboard', - dashboard: { - label: 'Containers temperature', - layout: [ - { - settings: { - chartType: 'line', - timeInterval: '1h', - dataSources: [ - { - color: '#9F0500', - aggregateField: 'avg', - legend: 'External', - query: { - body: '{\n "bool": {\n "must": [\n { "term": {"asset._id": "Container-zulu" } },\n { "term": {"asset.measureName": "externalTemperature" } }\n ]\n }\n}', - }, - measureField: 'values.temperature', - dateField: 'measuredAt', - collection: 'measures', - key: '8f1c4baf-9d2a-4b2d-aa07-7236193ae28b', - }, - { - color: '#0062B1', - aggregateField: 'avg', - legend: 'Internal', - query: { - body: '{\n "bool": {\n "must": [\n { "term": {"asset._id": "Container-zulu" } },\n { "term": {"asset.measureName": "internalTemperature" } }\n ]\n }\n}', - }, - measureField: 'values.temperature', - dateField: 'measuredAt', - collection: 'measures', - key: '78058a1e-963f-46e7-86f2-628fef14790b', - }, - ], - }, - w: 6, - moved: false, - x: 0, - h: 40, - name: 'chart', - y: 0, - i: '791424ec-dd15-4040-99f3-b2b6b3a3e5ce', - label: 'Container-zulu', - }, - { - settings: { - chartType: 'line', - timeInterval: '1h', - dataSources: [ - { - color: '#9F0500', - aggregateField: 'avg', - legend: 'External', - query: { - body: '{\n "bool": {\n "must": [\n { "term": {"asset._id": "Container-tango" } },\n { "term": {"asset.measureName": "externalTemperature" } }\n ]\n }\n}', - }, - measureField: 'values.temperature', - dateField: 'measuredAt', - collection: 'measures', - key: 'ad19dcd0-4e06-4ec6-90bc-73d4ede316f6', - }, - { - color: '#0062B1', - aggregateField: 'avg', - legend: 'Internal', - query: { - body: '{\n "bool": {\n "must": [\n { "term": {"asset._id": "Container-tango" } },\n { "term": {"asset.measureName": "internalTemperature" } }\n ]\n }\n}', - }, - measureField: 'values.temperature', - dateField: 'measuredAt', - collection: 'measures', - key: 'fd8b55ed-417d-428e-abc7-c88769f949eb', - }, - ], - }, - w: 6, - moved: false, - x: 6, - h: 40, - name: 'chart', - y: 0, - i: '30c18205-6856-456f-a15f-15ce9251f3e4', - label: 'Container-tango', - }, - ], - }, - }; - await this.app.sdk.document.createOrReplace( - this.tenantIndex, - 'config', - 'dashboard--containers-temperature', - containersTemperatureDashboard, - ); - } - - /** - * We do not send payloads to devices who are linked to the same device - * at the same time to avoid race conditions - */ - async loadMeasures() { - await Promise.all([ - this.generateAbeewayHistory('ABE1', 'montpellier-lyon', 7), - this.generateAbeewayHistory('ABE2', 'montpellier-marseille', 4), - this.generateEnginkoHistory('ENG1', 7, () => this.randomNum(15, 30)), - ]); - - await Promise.all([ - this.generateLokaHistory('LOK1', 'lyon-paris', 7), - this.generateLokaHistory('LOK2', 'montpellier-toulouse', 3), - ]); - - await Promise.all([ - this.generateEnginkoHistory('ENG2', 7, () => this.randomNum(5, -10)), - this.generateEnginkoHistory('ENG3', 2, () => this.randomNum(-5, -15)), - ]); - } - - private async generateAbeewayHistory(reference: string, road: keyof typeof ROADS, days: number) { - let battery = 100; - - const points = ROADS[road]; - const minuteInterval = Math.round(60 / (points.length / 24)); - - let timestamp = Date.now() - 1000 * 60 * 60 * 24 * days; // start X days ago - - // send a gps payload every hour for X days - for (const [lat, lon] of points) { - await this.app.sdk.query({ - controller: 'device-manager/payloads', - action: 'abeeway', - body: { - deviceEUI: reference, - lat, - lon, - battery: (battery -= 1), - externalTemperature: this.randomNum(20, 35), - internalTemperature: this.randomNum(-5, -15), - timestamp, - }, - }); - - timestamp += 1000 * 60 * minuteInterval; - } - } - - private async generateLokaHistory(reference: string, road: keyof typeof ROADS, days: number) { - let battery = 100; - - const points = ROADS[road]; - const totalMinutes = days * 24 * 60; - const minuteInterval = Math.round(totalMinutes / points.length); - - let timestamp = Date.now() - 1000 * 60 * 60 * 24 * days; // start X days ago - - // send a gps payload every hour for X days - for (const [lat, lon] of points) { - await this.app.sdk.query({ - controller: 'device-manager/payloads', - action: 'loka', - body: { - deviceEUI: reference, - lat, - lon, - battery: (battery -= 1), - timestamp, - }, - }); - - timestamp += 1000 * 60 * minuteInterval; - } - } - - private async generateEnginkoHistory(deviceId: string, days: number, generator: () => number) { - let battery = 100; - let timestamp = Date.now() - 1000 * 60 * 60 * 24 * days; // start X days ago - - for (let i = 0; i <= days * 24; i++) { - await this.app.sdk.query({ - controller: 'device-manager/payloads', - action: 'enginko', - body: { - deviceEUI: deviceId, - temperature: generator(), - battery: (battery -= 1), - timestamp, - }, - }); - - timestamp += 1000 * 60 * 60; - } - } -} diff --git a/apps/api/lib/modules/fixtures/asset_tracking/ResetAssetTrackingFixturesScheduledTask.ts b/apps/api/lib/modules/fixtures/asset_tracking/ResetAssetTrackingFixturesScheduledTask.ts deleted file mode 100644 index c18fe63..0000000 --- a/apps/api/lib/modules/fixtures/asset_tracking/ResetAssetTrackingFixturesScheduledTask.ts +++ /dev/null @@ -1,26 +0,0 @@ -import { Workflow, WorkflowContent } from '@kuzzleio/plugin-workflows'; - -const content: WorkflowContent = { - name: 'reset-asset-tracking-fixtures', - description: 'Reset asset tracking fixtures every day at 4am', - payloadPath: '.', - trigger: { - type: 'scheduler', - schedule: { - syntax: 'cron', - value: '0 4 30 * *', - }, - }, - actions: [ - { - type: 'api', - request: { - controller: 'fixtures', - action: 'reset', - tenant: 'asset_tracking', - }, - }, - ], -}; - -export const resetAssetTrackingFixturesScheduledTask = new Workflow(content); diff --git a/apps/api/lib/modules/fixtures/asset_tracking/roads.ts b/apps/api/lib/modules/fixtures/asset_tracking/roads.ts deleted file mode 100644 index de55864..0000000 --- a/apps/api/lib/modules/fixtures/asset_tracking/roads.ts +++ /dev/null @@ -1,246 +0,0 @@ -/* eslint-disable prettier/prettier */ -// prettier-ignore -export const ROADS = { - // 83 points - "montpellier-lyon": [ - [43.61221676817573, 3.8836669921874996], - [43.632099415557754, 3.9935302734375], - [43.67581809328341, 4.0374755859375], - [43.71950494269107, 4.119873046875], - [43.74728909225908, 4.19677734375], - [43.79092385423618, 4.2791748046875], - [43.8186748554532, 4.339599609375], - [43.862257524417934, 4.4549560546875], - [43.9058083561574, 4.54833984375], - [43.937461690316646, 4.6142578125], - [43.98491011404692, 4.6966552734375], - [44.02837121279199, 4.735107421875], - [44.05601169578525, 4.779052734375], - [44.11125397357155, 4.7900390625], - [44.134913443750726, 4.8065185546875], - [44.15068115978094, 4.7625732421875], - [44.22158376545796, 4.7296142578125], - [44.27273816279087, 4.7296142578125], - [44.34742225636393, 4.757080078125], - [44.41416430998939, 4.735107421875], - [44.465151013519616, 4.779052734375], - [44.5278427984555, 4.7900390625], - [44.57090430226871, 4.81201171875], - [44.64129986075226, 4.81201171875], - [44.71161010858431, 4.7900390625], - [44.77013681219717, 4.81201171875], - [44.80522439622254, 4.833984374999999], - [44.883120442385646, 4.8779296875], - [44.94536144236941, 4.894409179687499], - [44.99588261816546, 4.894409179687499], - [45.061881623213026, 4.8779296875], - [45.127804527473224, 4.888916015625], - [45.19752230305682, 4.888916015625], - [45.26715476332791, 4.8504638671875], - [45.31739181570158, 4.81201171875], - [45.36758436884978, 4.8065185546875], - [45.413876460821086, 4.8284912109375], - [45.46783598133375, 4.8284912109375], - [45.51789504294005, 4.85595703125], - [45.54098421805075, 4.8614501953125], - [45.590978249451936, 4.8284912109375], - [45.625563438215984, 4.81201171875], - [45.66780526567164, 4.8175048828125], - [45.706179285330855, 4.833984374999999], - [45.75219336063106, 4.8284912109375], - ], - // 52 points - "montpellier-toulouse": [ - [43.61221676817573, 3.878173828125], - [43.5843700152048, 3.8726806640625], - [43.55651037504758, 3.834228515625], - [43.54854811091286, 3.80126953125], - [43.520671902437606, 3.7683105468749996], - [43.49676775343911, 3.7243652343749996], - [43.48082639482503, 3.6694335937500004], - [43.45690646829029, 3.6254882812499996], - [43.43696596521823, 3.5760498046875], - [43.40504748787035, 3.5211181640624996], - [43.393073720674415, 3.4661865234375], - [43.37710501700073, 3.4332275390625], - [43.361132106881726, 3.3892822265625], - [43.34914966389313, 3.33984375], - [43.337164854911094, 3.2958984375], - [43.31718491566705, 3.2464599609375], - [43.30119623257966, 3.218994140625], - [43.26120612479979, 3.1695556640624996], - [43.21718664827096, 3.1256103515625], - [43.18515250937298, 3.0706787109375], - [43.17313537107136, 3.0322265625], - [43.153101551466385, 2.9498291015625], - [43.15710884095329, 2.8839111328125], - [43.16512263158296, 2.8289794921874996], - [43.16512263158296, 2.7575683593749996], - [43.16512263158296, 2.691650390625], - [43.16912913272099, 2.65869140625], - [43.16912913272099, 2.6092529296875], - [43.16912913272099, 2.5323486328125], - [43.16512263158296, 2.48291015625], - [43.177141346631714, 2.449951171875], - [43.18915769654922, 2.4005126953125], - [43.193162620926074, 2.362060546875], - [43.213183300738876, 2.340087890625], - [43.197167282501276, 2.2906494140625], - [43.20917969039356, 2.2412109375], - [43.22118973298753, 2.186279296875], - [43.229195113965005, 2.1148681640624996], - [43.24520272203356, 2.0489501953125], - [43.27320591705845, 1.9830322265624998], - [43.29320031385282, 1.9445800781249998], - [43.32517767999296, 1.8896484375], - [43.345154990451135, 1.8292236328125], - [43.369119087738554, 1.7578125], - [43.401056495052906, 1.69189453125], - [43.41701888881103, 1.6534423828125], - [43.43696596521823, 1.60400390625], - [43.464880828929545, 1.5655517578125], - [43.50872101129684, 1.5216064453125], - [43.54058479482877, 1.4886474609375], - [43.56845179881218, 1.4666748046875], - [43.600284023536325, 1.4337158203125], - ], - // 45 points - "lyon-paris": [ - [45.84028105450088, 4.757080078125], - [45.87853662114514, 4.735107421875], - [45.920587344733654, 4.7406005859375], - [45.96642454131025, 4.72412109375], - [46.027481852486645, 4.735107421875], - [46.08085173686784, 4.7406005859375], - [46.13417004624326, 4.76806640625], - [46.195042108660154, 4.7845458984375], - [46.244451065485094, 4.8065185546875], - [46.28622391806706, 4.8284912109375], - [46.31658418182218, 4.822998046875], - [46.3583020562222, 4.844970703125], - [46.39619977845332, 4.866943359375], - [46.437856895024204, 4.8834228515625], - [46.494610770689384, 4.89990234375], - [46.53619267489863, 4.9053955078125], - [46.581518465658014, 4.894409179687499], - [46.638122462379656, 4.85595703125], - [46.694667307773116, 4.844970703125], - [46.72856582519053, 4.833984374999999], - [46.773730730079386, 4.8175048828125], - [46.82637528602131, 4.822998046875], - [46.86019101567027, 4.822998046875], - [46.924007100770275, 4.822998046875], - [46.95401192579361, 4.8284912109375], - [46.991494313050424, 4.8614501953125], - [47.02895043138593, 4.872436523437499], - [47.07012182383309, 4.8175048828125], - [47.08882558740757, 4.779052734375], - [47.111261437080344, 4.7406005859375], - [47.16357498846737, 4.691162109375], - [47.19344533938292, 4.658203125], - [47.2307596483469, 4.603271484375], - [47.245678021018755, 4.581298828125], - [47.26804770458176, 4.531860351562499], - [47.31275872224939, 4.493408203125], - [47.349989032003215, 4.4549560546875], - [47.372314620566925, 4.41650390625], - [47.402067376409036, 4.3560791015625], - [47.43923470537306, 4.3011474609375], - [47.46152250874388, 4.229736328124999], - [47.491224888201955, 4.141845703125], - [47.506069781910846, 4.06494140625], - [47.52091047852614, 3.9825439453125], - [47.55428670127958, 3.9385986328125], - [47.5913464767971, 3.9056396484374996], - [47.63948497925488, 3.9056396484374996], - [47.66538735632654, 3.8616943359375], - [47.69127688626756, 3.8232421874999996], - [47.724544549099676, 3.7628173828124996], - [47.75779097897638, 3.7243652343749996], - [47.8094654494779, 3.6419677734374996], - [47.84265762816538, 3.6035156249999996], - [47.868459093342956, 3.526611328125], - [47.88688085106901, 3.4442138671875], - [47.90529605906089, 3.3673095703125], - [47.931066347509784, 3.2574462890625], - [47.964180715412276, 3.197021484375], - [48.004625021133904, 3.1585693359375], - [48.04503763958813, 3.1146240234375], - [48.09642606004488, 3.0706787109375], - [48.125767833701666, 2.98828125], - [48.16242149265211, 2.9168701171875], - [48.188063481211415, 2.8399658203125], - [48.213692646648035, 2.7740478515625], - [48.25759852914997, 2.713623046875], - [48.29415798558204, 2.6751708984375], - [48.31242790407178, 2.63671875], - [48.34894812401375, 2.5872802734374996], - [48.4146186174932, 2.537841796875], - [48.46199462233164, 2.5103759765625], - [48.516604348867475, 2.493896484375], - [48.55661410872126, 2.4774169921874996], - [48.58932584966975, 2.449951171875], - [48.629278127969414, 2.39501953125], - [48.66557095325139, 2.362060546875], - [48.69458640884518, 2.318115234375], - [48.716337032605665, 2.2961425781249996], - [48.7453232421382, 2.3126220703125], - [48.76343113791796, 2.3345947265625], - [48.76705193388751, 2.373046875], - [48.78153250728974, 2.406005859375], - [48.79239019646406, 2.4334716796875], - ], - // 50 points - "montpellier-marseille": [ - [43.61221676817573, 3.8671874999999996], - [43.598295002627175, 3.9138793945312496], - [43.60823944964323, 3.9495849609374996], - [43.620170616189895, 3.97705078125], - [43.64005063334696, 3.9797973632812496], - [43.66389797397276, 4.01275634765625], - [43.695679697898825, 4.07867431640625], - [43.70163689691259, 4.11712646484375], - [43.72744458647464, 4.17205810546875], - [43.73736766145917, 4.199523925781249], - [43.76117633310127, 4.24896240234375], - [43.77902662160831, 4.290161132812499], - [43.80678314779554, 4.34234619140625], - [43.82660134505382, 4.39178466796875], - [43.79092385423618, 4.411010742187499], - [43.76712702120528, 4.44671630859375], - [43.757208878849376, 4.45220947265625], - [43.739352079154706, 4.47967529296875], - [43.72148995228582, 4.50439453125], - [43.69369383336777, 4.54559326171875], - [43.67581809328341, 4.59503173828125], - [43.67979094030124, 4.63623046875], - [43.65793702655821, 4.691162109375], - [43.64800079902171, 4.72686767578125], - [43.630111446719226, 4.77081298828125], - [43.63806292753483, 4.83673095703125], - [43.636075155965784, 4.8779296875], - [43.63806292753483, 4.91912841796875], - [43.63806292753483, 4.9493408203125], - [43.63806292753483, 4.98779296875], - [43.62613531177414, 5.05645751953125], - [43.620170616189895, 5.083923339843749], - [43.620170616189895, 5.11962890625], - [43.6102281417864, 5.15533447265625], - [43.600284023536325, 5.17730712890625], - [43.58834891179792, 5.21026611328125], - [43.56845179881218, 5.22674560546875], - [43.560491112629286, 5.234985351562499], - [43.55252937447483, 5.28167724609375], - [43.54456658436357, 5.325622558593749], - [43.54058479482877, 5.361328125], - [43.530629170442424, 5.39703369140625], - [43.51270490464819, 5.416259765624999], - [43.488797600050006, 5.416259765624999], - [43.450925007583706, 5.4052734375], - [43.4249985081581, 5.39154052734375], - [43.39706523932025, 5.361328125], - [43.35314407444698, 5.3668212890625], - [43.32717570677798, 5.38330078125], - [43.29919735147067, 5.38330078125], - ], -}; diff --git a/apps/api/lib/modules/fixtures/index.ts b/apps/api/lib/modules/fixtures/index.ts deleted file mode 100644 index e1ccefe..0000000 --- a/apps/api/lib/modules/fixtures/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './FixturesModule'; diff --git a/apps/api/lib/modules/fixtures/public_lighting/PublicLightingFixtures.ts b/apps/api/lib/modules/fixtures/public_lighting/PublicLightingFixtures.ts deleted file mode 100644 index c5f4e50..0000000 --- a/apps/api/lib/modules/fixtures/public_lighting/PublicLightingFixtures.ts +++ /dev/null @@ -1,323 +0,0 @@ -import { Backend } from 'kuzzle'; -import { ApiAssetCreateRequest, ApiDeviceLinkAssetRequest } from 'kuzzle-device-manager'; - -import { FixturesGenerator } from '../FixturesGenerator'; - -export class PublicLightingFixtures extends FixturesGenerator { - constructor(app: Backend) { - super(app, 'kuzzle', 'public_lighting'); - } - - async loadDigitalTwins() { - await Promise.all([ - // Rue Colin - this.createStreetLamp('StreetLamp', '0001', { lat: 43.60219, lon: 3.8788 }, 'Rue Colin'), - this.createStreetLamp('StreetLamp', '0002', { lat: 43.60188, lon: 3.87876 }, 'Rue Colin'), - this.createStreetLamp('StreetLamp', '0003', { lat: 43.60169, lon: 3.8785 }, 'Rue Colin'), - this.createStreetLamp('StreetLamp', '0004', { lat: 43.60147, lon: 3.87853 }, 'Rue Colin'), - this.createStreetLamp('StreetLamp', '0005', { lat: 43.60123, lon: 3.87821 }, 'Rue Colin'), - - // Rue Lakanal - this.createStreetLamp('StreetLamp', '0006', { lat: 43.61671, lon: 3.87827 }, 'Rue Lakanal'), - this.createStreetLamp('StreetLamp', '0007', { lat: 43.61689, lon: 3.87797 }, 'Rue Lakanal'), - this.createStreetLamp('StreetLamp', '0008', { lat: 43.61695, lon: 3.87755 }, 'Rue Lakanal'), - this.createStreetLamp('StreetLamp', '0009', { lat: 43.61713, lon: 3.87723 }, 'Rue Lakanal'), - this.createStreetLamp('StreetLamp', '0010', { lat: 43.61721, lon: 3.87677 }, 'Rue Lakanal'), - - this.createDevice('Kara', 'KAR1'), - this.createDevice('Kara', 'KAR2'), - this.createDevice('Kara', 'KAR3'), - this.createDevice('Kara', 'KAR4'), - this.createDevice('Kara', 'KAR5'), - - this.createDevice('Kara', 'KAR6'), - this.createDevice('Kara', 'KAR7'), - this.createDevice('Kara', 'KAR8'), - this.createDevice('Kara', 'KAR9'), - this.createDevice('Kara', 'KAR10'), - ]); - - await Promise.all([ - this.linkStreetLamp('StreetLamp-0001', 'Kara-KAR1'), - this.linkStreetLamp('StreetLamp-0002', 'Kara-KAR2'), - this.linkStreetLamp('StreetLamp-0003', 'Kara-KAR3'), - this.linkStreetLamp('StreetLamp-0004', 'Kara-KAR4'), - this.linkStreetLamp('StreetLamp-0005', 'Kara-KAR5'), - this.linkStreetLamp('StreetLamp-0006', 'Kara-KAR6'), - this.linkStreetLamp('StreetLamp-0007', 'Kara-KAR7'), - this.linkStreetLamp('StreetLamp-0008', 'Kara-KAR8'), - this.linkStreetLamp('StreetLamp-0009', 'Kara-KAR9'), - this.linkStreetLamp('StreetLamp-0010', 'Kara-KAR10'), - ]); - - await this.groupAssets('Rue Colin', [ - 'StreetLamp-0001', - 'StreetLamp-0002', - 'StreetLamp-0003', - 'StreetLamp-0004', - 'StreetLamp-0005', - ]); - await this.groupAssets('Rue Lakanal', [ - 'StreetLamp-0006', - 'StreetLamp-0007', - 'StreetLamp-0008', - 'StreetLamp-0009', - 'StreetLamp-0010', - ]); - - await this.app.sdk.collection.refresh('platform', 'devices'); - } - - async resetDigitalTwins() { - await Promise.all([ - this.deleteAsset('StreetLamp', '0001'), - this.deleteAsset('StreetLamp', '0002'), - this.deleteAsset('StreetLamp', '0003'), - this.deleteAsset('StreetLamp', '0004'), - this.deleteAsset('StreetLamp', '0005'), - this.deleteAsset('StreetLamp', '0006'), - this.deleteAsset('StreetLamp', '0007'), - this.deleteAsset('StreetLamp', '0008'), - this.deleteAsset('StreetLamp', '0009'), - this.deleteAsset('StreetLamp', '0010'), - ]); - - await Promise.all([ - this.deleteDevice('Kara', 'KAR1'), - this.deleteDevice('Kara', 'KAR2'), - this.deleteDevice('Kara', 'KAR3'), - this.deleteDevice('Kara', 'KAR4'), - this.deleteDevice('Kara', 'KAR5'), - this.deleteDevice('Kara', 'KAR6'), - this.deleteDevice('Kara', 'KAR7'), - this.deleteDevice('Kara', 'KAR8'), - this.deleteDevice('Kara', 'KAR9'), - this.deleteDevice('Kara', 'KAR10'), - ]); - } - - async loadDashboards() { - const rueColinDashboard = { - type: 'dashboard', - dashboard: { - label: 'Rue Colin', - layout: [ - { - settings: { - chartType: 'line', - timeInterval: '1h', - dataSources: [ - { - color: '#FB9E00', - aggregateField: 'avg', - legend: 'Lumens', - query: { - body: '{\n "bool": {\n "filter": [\n {\n "term": {\n "asset.metadata.street": "Rue Colin"\n }\n },\n {\n "term": {\n "type": "brightness"\n }\n }\n ]\n }\n}', - }, - measureField: 'values.lumens', - dateField: 'measuredAt', - collection: 'measures', - key: '2a77e703-7e60-4fb4-97f4-dad802218d6d', - }, - ], - }, - w: 6, - moved: false, - x: 0, - h: 40, - name: 'chart', - y: 40, - i: 'a8be5ef8-ed0e-4f8a-9ad6-f777eeb7d497', - label: 'Average Brightness', - }, - { - settings: { - chartType: 'bar', - timeInterval: '1h', - dataSources: [ - { - color: '#9F0500', - aggregateField: 'avg', - legend: 'Watt', - query: { - body: '{\n "bool": {\n "filter": [\n {\n "term": {\n "asset.metadata.street": "Rue Colin"\n }\n },\n {\n "term": {\n "type": "powerConsumption"\n }\n }\n ]\n }\n}', - }, - measureField: 'values.watt', - dateField: 'measuredAt', - collection: 'measures', - key: 'a1a4f1a3-ad57-452b-8065-cd30d07344e7', - }, - ], - }, - w: 6, - moved: false, - x: 6, - h: 40, - name: 'chart', - y: 40, - i: 'af49cbc7-235d-4d0c-bdee-4a695606bfc9', - label: 'Average Consumption', - }, - { - settings: { - dateStart: null, - mapType: 'position', - dateEnd: null, - dataSources: [ - { - color: '#009CE0', - legend: 'Position', - positionField: 'metadata.position', - query: { - body: '{ "term": {\n "asset.metadata.street": "Rue Colin"\n }\n}', - }, - dateField: '_kuzzle_info.createdAt', - collection: 'assets', - key: '44136afd-2204-4ae2-ad0a-8ebe625c729a', - unicityField: 'reference', - }, - ], - }, - w: 6, - moved: false, - x: 0, - h: 40, - name: 'map', - y: 0, - i: '8eff34f1-a05a-404d-84ff-e8d5d71b8c70', - label: 'Street Lamps', - }, - { - settings: { - query: { - body: '{"bool":{"filter":[{"term":{"metadata.street":"Rue Colin"}},{"term":{"model":"StreetLamp"}}]}}', - }, - collection: 'assets', - fields: ['model', 'reference', 'metadata.street'], - }, - w: 6, - moved: false, - x: 6, - h: 40, - name: 'table', - y: 0, - i: '3d1cb301-70d5-4a13-a271-4eda32c9d5d7', - label: 'Street Lamps', - }, - ], - }, - }; - await this.app.sdk.document.createOrReplace( - this.tenantIndex, - 'config', - 'lighting-rue-colin', - rueColinDashboard, - ); - } - - /** - * We do not send payloads to devices who are linked to the same device - * at the same time to avoid race conditions - */ - async loadMeasures() { - await Promise.all([ - this.generateKaraHistory('KAR1', 4), - this.generateKaraHistory('KAR2', 4), - this.generateKaraHistory('KAR3', 4), - this.generateKaraHistory('KAR4', 4), - this.generateKaraHistory('KAR5', 4), - this.generateKaraHistory('KAR6', 4), - this.generateKaraHistory('KAR7', 4), - this.generateKaraHistory('KAR8', 4), - this.generateKaraHistory('KAR9', 4), - this.generateKaraHistory('KAR10', 4), - ]); - } - - async createStreetLamp( - model: string, - reference: string, - position: { lat: number; lon: number }, - street: string, - ) { - try { - await this.app.sdk.query({ - controller: 'device-manager/assets', - action: 'create', - engineId: this.tenantIndex, - body: { - model, - reference, - metadata: { - position, - street, - }, - }, - }); - - return `Create Asset: ${model}-${reference}`; - } catch (error) { - this.app.log.error(error); - return error.message; - } - } - - async linkStreetLamp(assetId: string, deviceId: string) { - try { - await this.app.sdk.query({ - controller: 'device-manager/devices', - action: 'linkAsset', - engineId: this.tenantIndex, - _id: deviceId, - assetId, - implicitMeasuresLinking: true, - }); - - return `Link Asset: ${assetId} to Device: ${deviceId}`; - } catch (error) { - this.app.log.error(error); - return error.message; - } - } - private async generateKaraHistory(deviceEUI: string, days: number) { - let timestamp = Date.now() - 1000 * 60 * 60 * 24 * days; // start X days ago - - for (let i = 0; i <= days * 24; i++) { - const brightness = this.getBrightness(timestamp); - const powerConsumption = this.getPowerConsumption(brightness); - - await this.app.sdk.query({ - controller: 'device-manager/payloads', - action: 'kara', - body: { - deviceEUI, - brightness, - powerConsumption, - timestamp, - }, - }); - - timestamp += 1000 * 60 * 60; - } - } - - private getBrightness(timestamp: number) { - const hour = new Date(timestamp).getHours(); - if (hour >= 9 && hour <= 17) { - return 0; - } - if (hour >= 18 && hour <= 20) { - return this.randomNum(2500, 2500 + 100 * (hour % 17)); - } - if (hour >= 21 || hour <= 5) { - return this.randomNum(3500, 3500 + 100 * (hour % 20)); - } - if (hour >= 6 && hour <= 8) { - return this.randomNum(2500, 2500 + 100 * (hour % 5)); - } - } - - private getPowerConsumption(brightness: number) { - return brightness / 15; - } -} diff --git a/apps/api/lib/modules/fixtures/public_lighting/ResetPublicLigthingFixturesScheduledTask.ts b/apps/api/lib/modules/fixtures/public_lighting/ResetPublicLigthingFixturesScheduledTask.ts deleted file mode 100644 index fc3c737..0000000 --- a/apps/api/lib/modules/fixtures/public_lighting/ResetPublicLigthingFixturesScheduledTask.ts +++ /dev/null @@ -1,20 +0,0 @@ -import { ScheduledTask, ScheduledTaskContent } from '@kuzzleio/iot-platform-backend/node_modules/@kuzzleio/scheduler'; - -const taskContent: ScheduledTaskContent = { - name: 'reset-air-quality-fixtures', - action: { - type: 'api', - request: { - controller: 'fixtures', - action: 'reset', - tenant: 'public_lighting', - }, - }, - description: 'Reset public lighting fixtures every day at 4am', - schedule: { - syntax: 'cron', - value: '0 4 * * *', - }, -}; - -export const resetPublicLightingFixturesScheduledTask = new ScheduledTask(taskContent); diff --git a/apps/api/lib/modules/public_lighting/TenantPublicLighting.ts b/apps/api/lib/modules/public_lighting/TenantPublicLighting.ts deleted file mode 100644 index 1430eb6..0000000 --- a/apps/api/lib/modules/public_lighting/TenantPublicLighting.ts +++ /dev/null @@ -1,19 +0,0 @@ -import { Module } from '../shared'; - -import { AssetsModule } from './assets'; -import { DevicesModule } from './devices'; -import { PermissionsModule } from './permissions'; - -export class TenantPublicLighting extends Module { - private modules: Module[] = []; - - register(): void { - this.modules.push(new DevicesModule(this.app)); - this.modules.push(new AssetsModule(this.app)); - this.modules.push(new PermissionsModule(this.app)); - - for (const module of this.modules) { - module.register(); - } - } -} diff --git a/apps/api/lib/modules/public_lighting/assets/AssetsModule.ts b/apps/api/lib/modules/public_lighting/assets/AssetsModule.ts deleted file mode 100644 index 1f570e7..0000000 --- a/apps/api/lib/modules/public_lighting/assets/AssetsModule.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { DeviceManagerPlugin } from 'kuzzle-device-manager'; - -import { Module } from '../../shared'; - -import { streetLampAssetDefinition } from './StreetLamp'; - -export class AssetsModule extends Module { - register(): void { - const deviceManager = this.app.plugin.get('device-manager'); - - deviceManager.models.registerAsset('public_lighting', 'StreetLamp', streetLampAssetDefinition); - } -} diff --git a/apps/api/lib/modules/public_lighting/assets/StreetLamp.ts b/apps/api/lib/modules/public_lighting/assets/StreetLamp.ts deleted file mode 100644 index 297b72a..0000000 --- a/apps/api/lib/modules/public_lighting/assets/StreetLamp.ts +++ /dev/null @@ -1,59 +0,0 @@ -import { AssetContent, AssetModelDefinition, Metadata } from 'kuzzle-device-manager'; - -import { BrightnessMeasurement, PowerConsumptionMeasurement } from '../devices/'; - -/** - * Type representing the metadata of a "StreetLamp" asset. - * - * This is optional and can be omitted if you don't want strong typing - */ -export interface StreetLampMetadata extends Metadata { - position: { - lat: number; - lon: number; - }; - street: string; -} - -/** - * Type representing the measures of a "StreetLamp" asset. - * - * This is optional and can be omitted if you don't want strong typing - */ -export type StreetLampMeasurements = { - brightness: BrightnessMeasurement; - powerConsumption: PowerConsumptionMeasurement; -}; - -/** - * Type meant to be used when manipulating a "StreetLamp" asset. - * - * It is constructed when the types of the asset possible measures and metadata. - * - * This is optional and can be omitted if you don't want strong typing - */ -export interface StreetLampAssetContent - extends AssetContent { - model: 'StreetLamp'; -} - -/** - * Asset definition used by the plugin to create associated ressources - * and updates mappings. - */ -export const streetLampAssetDefinition: AssetModelDefinition = { - measures: [ - { - name: 'brightness', - type: 'brightness', - }, - { - name: 'powerConsumption', - type: 'powerConsumption', - }, - ], - metadataMappings: { - position: { type: 'geo_point' }, - street: { type: 'keyword' }, - }, -}; diff --git a/apps/api/lib/modules/public_lighting/assets/index.ts b/apps/api/lib/modules/public_lighting/assets/index.ts deleted file mode 100644 index 4812e14..0000000 --- a/apps/api/lib/modules/public_lighting/assets/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './AssetsModule'; diff --git a/apps/api/lib/modules/public_lighting/devices/BrightnessMeasurement.ts b/apps/api/lib/modules/public_lighting/devices/BrightnessMeasurement.ts deleted file mode 100644 index 070d73d..0000000 --- a/apps/api/lib/modules/public_lighting/devices/BrightnessMeasurement.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { MeasureDefinition } from 'kuzzle-device-manager'; - -export type BrightnessMeasurement = { - lumens: number; -}; - -export const brightnessMeasureDefinition: MeasureDefinition = { - valuesMappings: { lumens: { type: 'float' } }, -}; diff --git a/apps/api/lib/modules/public_lighting/devices/DevicesModule.ts b/apps/api/lib/modules/public_lighting/devices/DevicesModule.ts deleted file mode 100644 index c42c9d9..0000000 --- a/apps/api/lib/modules/public_lighting/devices/DevicesModule.ts +++ /dev/null @@ -1,17 +0,0 @@ -import { DeviceManagerPlugin } from 'kuzzle-device-manager'; - -import { Module } from '../../shared'; -import { brightnessMeasureDefinition } from './BrightnessMeasurement'; - -import { karaDeviceDefinition } from './Kara'; -import { powerConsumptionMeasureDefinition } from './PowerConsumptionMeasurement'; - -export class DevicesModule extends Module { - register(): void { - const deviceManager = this.app.plugin.get('device-manager'); - - deviceManager.models.registerDevice('Kara', karaDeviceDefinition); - deviceManager.models.registerMeasure('brightness', brightnessMeasureDefinition); - deviceManager.models.registerMeasure('powerConsumption', powerConsumptionMeasureDefinition); - } -} diff --git a/apps/api/lib/modules/public_lighting/devices/Kara.ts b/apps/api/lib/modules/public_lighting/devices/Kara.ts deleted file mode 100644 index 04c8774..0000000 --- a/apps/api/lib/modules/public_lighting/devices/Kara.ts +++ /dev/null @@ -1,42 +0,0 @@ -import { DeviceContent, DeviceModelDefinition, Metadata } from 'kuzzle-device-manager'; -import { BrightnessMeasurement } from './BrightnessMeasurement'; - -import { KaraDecoder } from './KaraDecoder'; -import { PowerConsumptionMeasurement } from './PowerConsumptionMeasurement'; - -/** - * Type representing the metadata of a "Kara" device. - * - * This is optional and can be omitted if you don't want strong typing - */ -export interface KaraMetadata extends Metadata { - serialNumber: string; -} - -/** - * Type representing the measures of a "Container" asset. - * - * This is optional and can be omitted if you don't want strong typing - */ -export type KaraMeasurements = { - brightness: BrightnessMeasurement; - powerConsumption: PowerConsumptionMeasurement; -}; - -/** - * Type meant to be used when manipulating a "Kara" asset. - * - * It is constructed when the types of the asset possible measures and metadata. - * - * This is optional and can be omitted if you don't want strong typing - */ -export interface KaraDeviceContent extends DeviceContent { - model: 'Kara'; -} - -export const karaDeviceDefinition: DeviceModelDefinition = { - decoder: new KaraDecoder(), - metadataMappings: { - serialNumber: { type: 'keyword' }, - }, -}; diff --git a/apps/api/lib/modules/public_lighting/devices/KaraDecoder.ts b/apps/api/lib/modules/public_lighting/devices/KaraDecoder.ts deleted file mode 100644 index 6b71c39..0000000 --- a/apps/api/lib/modules/public_lighting/devices/KaraDecoder.ts +++ /dev/null @@ -1,56 +0,0 @@ -import { DecodedPayload, Decoder } from 'kuzzle-device-manager'; -import { JSONObject } from 'kuzzle'; -import { has } from 'lodash'; - -import { BrightnessMeasurement } from './BrightnessMeasurement'; -import { PowerConsumptionMeasurement } from './PowerConsumptionMeasurement'; - -export class KaraDecoder extends Decoder { - public measures = [ - { name: 'brightness', type: 'brightness' }, - { name: 'powerConsumption', type: 'powerConsumption' }, - ] as const; - - constructor() { - super(); - - this.payloadsMappings = { - deviceEUI: { type: 'keyword' }, - }; - } - - async validate(payload: JSONObject): Promise { - this.ensureProperties(payload, ['deviceEUI']); - - const properties = ['brightness', 'powerConsumption']; - - return properties.every((property) => has(payload, property)); - } - - async decode( - decodedPayload: DecodedPayload, - payload: JSONObject, - ): Promise> { - const deviceId = payload.deviceEUI; - - const measuredAt = payload.timestamp || Date.now(); - - decodedPayload.addMeasurement(deviceId, 'brightness', { - measuredAt, - type: 'brightness', - values: { - lumens: payload.brightness, - }, - }); - - decodedPayload.addMeasurement(deviceId, 'powerConsumption', { - measuredAt, - type: 'powerConsumption', - values: { - watt: payload.powerConsumption, - }, - }); - - return decodedPayload; - } -} diff --git a/apps/api/lib/modules/public_lighting/devices/PowerConsumptionMeasurement.ts b/apps/api/lib/modules/public_lighting/devices/PowerConsumptionMeasurement.ts deleted file mode 100644 index b372191..0000000 --- a/apps/api/lib/modules/public_lighting/devices/PowerConsumptionMeasurement.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { MeasureDefinition } from 'kuzzle-device-manager'; - -export type PowerConsumptionMeasurement = { - watt: number; -}; - -export const powerConsumptionMeasureDefinition: MeasureDefinition = { - valuesMappings: { watt: { type: 'float' } }, -}; diff --git a/apps/api/lib/modules/public_lighting/devices/index.ts b/apps/api/lib/modules/public_lighting/devices/index.ts deleted file mode 100644 index 532f6f9..0000000 --- a/apps/api/lib/modules/public_lighting/devices/index.ts +++ /dev/null @@ -1,3 +0,0 @@ -export * from './DevicesModule'; -export * from './BrightnessMeasurement'; -export * from './PowerConsumptionMeasurement'; diff --git a/apps/api/lib/modules/public_lighting/permissions/PermissionsModule.ts b/apps/api/lib/modules/public_lighting/permissions/PermissionsModule.ts deleted file mode 100644 index 1f2f951..0000000 --- a/apps/api/lib/modules/public_lighting/permissions/PermissionsModule.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { ProfileTenantAdmin, ProfileTenantReader } from '@kuzzleio/iot-platform-backend'; -import { MultiTenancyPlugin } from '@kuzzleio/plugin-multi-tenancy'; - -import { Module } from '../../shared'; - -export class PermissionsModule extends Module { - register(): void { - const multiTenancy = this.app.plugin.get('multi-tenancy'); - - multiTenancy.registerProfilesTemplates('public_lighting', { - [ProfileTenantAdmin.name]: ProfileTenantAdmin.definition, - [ProfileTenantReader.name]: ProfileTenantReader.definition, - }); - } -} diff --git a/apps/api/lib/modules/public_lighting/permissions/index.ts b/apps/api/lib/modules/public_lighting/permissions/index.ts deleted file mode 100644 index e169a75..0000000 --- a/apps/api/lib/modules/public_lighting/permissions/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './PermissionsModule'; diff --git a/apps/api/lib/types/Fixtures.ts b/apps/api/lib/types/Fixtures.ts deleted file mode 100644 index 0dd1af8..0000000 --- a/apps/api/lib/types/Fixtures.ts +++ /dev/null @@ -1,7 +0,0 @@ -export enum FixtureStage { - all = 'all', - users = 'users', - digital_twins = 'digital_twins', - dashboards = 'dashboards', - measures = 'measures', -} diff --git a/apps/api/lib/types/Log.ts b/apps/api/lib/types/Log.ts deleted file mode 100644 index f32ee73..0000000 --- a/apps/api/lib/types/Log.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { JSONObject } from 'kuzzle'; - -export interface LogMessage { - message: string; - params?: JSONObject; -} - -export type LogType = 'error' | 'warning' | 'success' | 'kuzzle_error'; - -export interface Log { - log: LogMessage; - type: LogType; -} diff --git a/apps/api/lib/types/Tenant.ts b/apps/api/lib/types/Tenant.ts deleted file mode 100644 index 4f2ead3..0000000 --- a/apps/api/lib/types/Tenant.ts +++ /dev/null @@ -1,18 +0,0 @@ -// ? Duplicate from frontend (maybe merge this types in third packages) -import { KDocument, KDocumentContent } from 'kuzzle-sdk'; - -export interface Tenant { - _id: string; - group: string; - index: string; - name: string; - softTenants?: SoftTenant[]; -} - -export interface SoftTenant { - id: string; - name: string; -} - -export type TenantDocumentContent = Exclude & KDocumentContent; -export type TenantDocument = KDocument; diff --git a/apps/api/lib/types/index.ts b/apps/api/lib/types/index.ts deleted file mode 100644 index 2437400..0000000 --- a/apps/api/lib/types/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export * from './Log'; -export * from './Tenant'; diff --git a/apps/api/tests/scenarios/air_quality/AirlyDecoder.test.ts b/apps/api/tests/scenarios/air_quality/AirlyDecoder.test.ts deleted file mode 100644 index 6fced85..0000000 --- a/apps/api/tests/scenarios/air_quality/AirlyDecoder.test.ts +++ /dev/null @@ -1,66 +0,0 @@ -import { DeviceContent } from 'kuzzle-device-manager'; - -import { useSdk, truncateCollection } from '../../../../../helpers'; - -jest.setTimeout(10000); - -describe('AirlyDecoder', () => { - const sdk = useSdk(); - - beforeAll(async () => { - await sdk.connect(); - }); - - beforeEach(async () => { - await truncateCollection(sdk, 'platform', 'devices'); - }); - - afterAll(async () => { - sdk.disconnect(); - }); - - it('should decode position and battery measures', async () => { - await sdk.query({ - controller: 'device-manager/payloads', - action: 'airly', - body: { - deviceId: 'unlinked', - temperature: 27, - humidity: 69, - co2: 650, - illuminance: 8500, - timestamp: 1673959649017, - }, - }); - - const device = await sdk.document.get('platform', 'devices', 'Airly-unlinked'); - - expect(device._source.measures.temperature).toMatchObject({ - measuredAt: 1673959649017, - values: { - temperature: 27, - }, - }); - - expect(device._source.measures.humidity).toMatchObject({ - measuredAt: 1673959649017, - values: { - humidity: 69, - }, - }); - - expect(device._source.measures.co2).toMatchObject({ - measuredAt: 1673959649017, - values: { - co2: 650, - }, - }); - - expect(device._source.measures.illuminance).toMatchObject({ - measuredAt: 1673959649017, - values: { - illuminance: 8500, - }, - }); - }); -}); diff --git a/apps/api/tests/scenarios/air_quality/IneoSenseACSSwitchDecoder.test.ts b/apps/api/tests/scenarios/air_quality/IneoSenseACSSwitchDecoder.test.ts deleted file mode 100644 index 6b1d097..0000000 --- a/apps/api/tests/scenarios/air_quality/IneoSenseACSSwitchDecoder.test.ts +++ /dev/null @@ -1,62 +0,0 @@ -import { DeviceContent } from 'kuzzle-device-manager'; - -import { useSdk, truncateCollection } from '../../../../../helpers'; - -jest.setTimeout(10000); - -describe('IneoSenseACSSwitch', () => { - const sdk = useSdk(); - - beforeAll(async () => { - await sdk.connect(); - }); - - beforeEach(async () => { - await truncateCollection(sdk, 'platform', 'devices'); - }); - - afterAll(async () => { - sdk.disconnect(); - }); - - it('should decode temperature, humidity and battery measures', async () => { - await sdk.query({ - controller: 'device-manager/payloads', - action: 'ineo-sense-acs-switch', - body: { - deviceInfo: { - devEui: '70b3d56371d4bd95', - }, - data: 'YgXDTs4DBAEAAAAAAAAAACMTACoA+LYCHPltZA==', - time: '2023-03-16T13:01:44.326372683+00:00', - }, - }); - - const device = await sdk.document.get( - 'platform', - 'devices', - 'IneoSenseACSSwitch-70b3d56371d4bd95', - ); - - expect(device._source.measures.temperature).toMatchObject({ - measuredAt: 1678971704326, - values: { - temperature: 19, - }, - }); - - expect(device._source.measures.humidity).toMatchObject({ - measuredAt: 1678971704326, - values: { - humidity: 42, - }, - }); - - expect(device._source.measures.battery).toMatchObject({ - measuredAt: 1678971704326, - values: { - battery: 65, - }, - }); - }); -}); diff --git a/apps/api/tests/scenarios/asset_tracking/AbeewayDecoder.test.ts b/apps/api/tests/scenarios/asset_tracking/AbeewayDecoder.test.ts deleted file mode 100644 index e3a051e..0000000 --- a/apps/api/tests/scenarios/asset_tracking/AbeewayDecoder.test.ts +++ /dev/null @@ -1,70 +0,0 @@ -import { DeviceContent } from 'kuzzle-device-manager'; - -import { useSdk, truncateCollection } from '../../../../../helpers'; - -jest.setTimeout(10000); - -describe('AbeewayDecoder', () => { - const sdk = useSdk(); - - beforeAll(async () => { - await sdk.connect(); - }); - - beforeEach(async () => { - await truncateCollection(sdk, 'platform', 'devices'); - }); - - afterAll(async () => { - sdk.disconnect(); - }); - - it('should decode position, battery and temperature measures', async () => { - await sdk.query({ - controller: 'device-manager/payloads', - action: 'abeeway', - body: { - deviceEUI: 'unlinked', - lat: 48.856614, - lon: 2.3522219, - battery: 99, - externalTemperature: 21, - internalTemperature: -5, - timestamp: 1673959649017, - }, - }); - - const device = await sdk.document.get('platform', 'devices', 'Abeeway-unlinked'); - - expect(device._source.measures.position).toMatchObject({ - measuredAt: 1673959649017, - values: { - position: { - lat: 48.856614, - lon: 2.3522219, - }, - }, - }); - - expect(device._source.measures.battery).toMatchObject({ - measuredAt: 1673959649017, - values: { - battery: 99, - }, - }); - - expect(device._source.measures.externalTemperature).toMatchObject({ - measuredAt: 1673959649017, - values: { - temperature: 21, - }, - }); - - expect(device._source.measures.internalTemperature).toMatchObject({ - measuredAt: 1673959649017, - values: { - temperature: -5, - }, - }); - }); -}); diff --git a/apps/api/tests/scenarios/asset_tracking/EnginkoDecoder.test.ts b/apps/api/tests/scenarios/asset_tracking/EnginkoDecoder.test.ts deleted file mode 100644 index 5655aff..0000000 --- a/apps/api/tests/scenarios/asset_tracking/EnginkoDecoder.test.ts +++ /dev/null @@ -1,50 +0,0 @@ -import { DeviceContent } from 'kuzzle-device-manager'; - -import { useSdk, truncateCollection } from '../../../../../helpers'; - -jest.setTimeout(10000); - -describe('EnginkoDecoder', () => { - const sdk = useSdk(); - - beforeAll(async () => { - await sdk.connect(); - }); - - beforeEach(async () => { - await truncateCollection(sdk, 'platform', 'devices'); - }); - - afterAll(async () => { - sdk.disconnect(); - }); - - it('should decode temperature measures', async () => { - await sdk.query({ - controller: 'device-manager/payloads', - action: 'enginko', - body: { - deviceEUI: 'unlinked', - temperature: 21, - battery: 99, - timestamp: 1673959649017, - }, - }); - - const device = await sdk.document.get('platform', 'devices', 'Enginko-unlinked'); - - expect(device._source.measures.temperature).toMatchObject({ - measuredAt: 1673959649017, - values: { - temperature: 21, - }, - }); - - expect(device._source.measures.battery).toMatchObject({ - measuredAt: 1673959649017, - values: { - battery: 99, - }, - }); - }); -}); diff --git a/apps/api/tests/scenarios/asset_tracking/LokaDecoder.test.ts b/apps/api/tests/scenarios/asset_tracking/LokaDecoder.test.ts deleted file mode 100644 index 7e45bb6..0000000 --- a/apps/api/tests/scenarios/asset_tracking/LokaDecoder.test.ts +++ /dev/null @@ -1,54 +0,0 @@ -import { DeviceContent } from 'kuzzle-device-manager'; - -import { useSdk, truncateCollection } from '../../../../../helpers'; - -jest.setTimeout(10000); - -describe('LokaDecoder', () => { - const sdk = useSdk(); - - beforeAll(async () => { - await sdk.connect(); - }); - - beforeEach(async () => { - await truncateCollection(sdk, 'platform', 'devices'); - }); - - afterAll(async () => { - sdk.disconnect(); - }); - - it('should decode position measures', async () => { - await sdk.query({ - controller: 'device-manager/payloads', - action: 'loka', - body: { - deviceEUI: 'unlinked', - lat: 42.42, - lon: 21.21, - battery: 99, - timestamp: 1673959649017, - }, - }); - - const device = await sdk.document.get('platform', 'devices', 'Loka-unlinked'); - - expect(device._source.measures.position).toMatchObject({ - measuredAt: 1673959649017, - values: { - position: { - lat: 42.42, - lon: 21.21, - }, - }, - }); - - expect(device._source.measures.battery).toMatchObject({ - measuredAt: 1673959649017, - values: { - battery: 99, - }, - }); - }); -}); diff --git a/apps/api/tests/scenarios/asset_tracking/create-movement-record.test.ts b/apps/api/tests/scenarios/asset_tracking/create-movement-record.test.ts deleted file mode 100644 index 91e9515..0000000 --- a/apps/api/tests/scenarios/asset_tracking/create-movement-record.test.ts +++ /dev/null @@ -1,295 +0,0 @@ -import { AssetContent, MeasureContent } from 'kuzzle-device-manager'; - -import { - beforeAllCreateTenants, - beforeEachTruncateCollections, - sendPayloads, - useSdk, -} from '../../../../../helpers'; - -jest.setTimeout(10000); - -describe('Geofencing: create movement record measure', () => { - const sdk = useSdk(); - - const insideIDFSud = [ - { - lat: 48.59992236307457, - lon: 2.659880335714945, - }, - { - lat: 48.60148778787524, - lon: 2.6603530803797355, - }, - ]; - const insideIDFNord = [ - { - lat: 49.00756531881916, - lon: 2.4858072479120494, - }, - { - lat: 49.00646826752515, - lon: 2.4854230434447686, - }, - ]; - const outsideEverything = [ - { - lat: 48.60295023447267, - lon: 2.6561274713374132, - }, - { - lat: 48.60259514497082, - lon: 2.6580890797178824, - }, - ]; - - function moveTruck(position: { lat: number; lon: number }) { - return sendPayloads(sdk, 'loka', [ - { - deviceEUI: 'LOK2', - battery: 100, - ...position, - }, - ]); - } - - beforeAll(async () => { - await sdk.connect(); - await beforeAllCreateTenants(sdk); - // update the workflows - await sdk.query({ - controller: 'multi-tenancy/tenant', - action: 'update', - name: 'kuzzle', - group: 'asset_tracking', - // should be available in the next version of the workflows plugin (>0.5.2) - force: true, - }); - }); - - beforeEach(async () => { - await beforeEachTruncateCollections(sdk); - await sdk.query({ - controller: 'fixtures', - action: 'load', - tenant: 'asset_tracking', - stage: 'digital_twins', - }); - // create rules associated to Warehouses - // @todo remove this when we have global pipes - await sdk.collection.refresh('tenant-asset_tracking-kuzzle', 'assets'); - await sdk.document.updateByQuery('tenant-asset_tracking-kuzzle', 'assets', {}, {}); - }); - - afterAll(async () => { - sdk.disconnect(); - }); - - it('asset outside of everything moving inside a geofence', async () => { - await moveTruck(outsideEverything[0]); - - await moveTruck(insideIDFSud[0]); - await sdk.collection.refresh('tenant-asset_tracking-kuzzle', 'measures'); - - const measures = await sdk.document.search( - 'tenant-asset_tracking-kuzzle', - 'measures', - { - query: { - equals: { type: 'movementRecord' }, - }, - sort: { measuredAt: 'asc' }, - }, - { lang: 'koncorde' }, - ); - - expect(measures.hits).toHaveLength(2); - expect(measures.hits[0]._source).toMatchObject({ - values: { - in: null, - }, - }); - expect(measures.hits[1]._source).toMatchObject({ - values: { - out: null, - in: 'IDFSud', - }, - }); - - const assets = await sdk.document.get( - 'tenant-asset_tracking-kuzzle', - 'assets', - 'Truck-sierra', - ); - - expect(assets._source.metadata).toMatchObject({ - geofencing: { - state: 'IDFSud', - }, - }); - }); - - it('asset outside everything moving outside everything', async () => { - await moveTruck(outsideEverything[0]); - - await moveTruck(outsideEverything[1]); - await sdk.collection.refresh('tenant-asset_tracking-kuzzle', 'measures'); - - const measures = await sdk.document.search( - 'tenant-asset_tracking-kuzzle', - 'measures', - { - query: { - equals: { type: 'movementRecord' }, - }, - sort: { measuredAt: 'asc' }, - }, - { lang: 'koncorde' }, - ); - - expect(measures.hits).toHaveLength(1); - expect(measures.hits[0]._source).toMatchObject({ - values: { - in: null, - }, - }); - - const assets = await sdk.document.get( - 'tenant-asset_tracking-kuzzle', - 'assets', - 'Truck-sierra', - ); - - expect(assets._source.metadata).toMatchObject({ - geofencing: { - state: null, - }, - }); - }); - - it('asset inside a geofence moving inside the same geofence', async () => { - await moveTruck(insideIDFSud[0]); - - await moveTruck(insideIDFSud[1]); - await sdk.collection.refresh('tenant-asset_tracking-kuzzle', 'measures'); - - const result = await sdk.document.search( - 'tenant-asset_tracking-kuzzle', - 'measures', - { - query: { - equals: { type: 'movementRecord' }, - }, - sort: { measuredAt: 'asc' }, - }, - { lang: 'koncorde' }, - ); - - expect(result.hits).toHaveLength(1); - expect(result.hits[0]._source).toMatchObject({ - values: { - in: 'IDFSud', - }, - }); - - const assets = await sdk.document.get( - 'tenant-asset_tracking-kuzzle', - 'assets', - 'Truck-sierra', - ); - - expect(assets._source.metadata).toMatchObject({ - geofencing: { - state: 'IDFSud', - }, - }); - }); - - it('asset inside a geofence moving inside another geofence', async () => { - await moveTruck(insideIDFSud[0]); - - await moveTruck(insideIDFNord[0]); - await sdk.collection.refresh('tenant-asset_tracking-kuzzle', 'measures'); - - const result = await sdk.document.search( - 'tenant-asset_tracking-kuzzle', - 'measures', - { - query: { - equals: { type: 'movementRecord' }, - }, - sort: { measuredAt: 'asc' }, - }, - { lang: 'koncorde' }, - ); - - expect(result.hits).toHaveLength(2); - expect(result.hits[0]._source).toMatchObject({ - values: { - in: 'IDFSud', - }, - }); - expect(result.hits[1]._source).toMatchObject({ - values: { - out: 'IDFSud', - in: 'IDFNord', - }, - }); - - const assets = await sdk.document.get( - 'tenant-asset_tracking-kuzzle', - 'assets', - 'Truck-sierra', - ); - - expect(assets._source.metadata).toMatchObject({ - geofencing: { - state: 'IDFNord', - }, - }); - }); - - it('asset inside a geofence moving outside everything', async () => { - await moveTruck(insideIDFSud[0]); - - await moveTruck(outsideEverything[0]); - await sdk.collection.refresh('tenant-asset_tracking-kuzzle', 'measures'); - - const result = await sdk.document.search( - 'tenant-asset_tracking-kuzzle', - 'measures', - { - query: { - equals: { type: 'movementRecord' }, - }, - sort: { measuredAt: 'asc' }, - }, - { lang: 'koncorde' }, - ); - - expect(result.hits).toHaveLength(2); - expect(result.hits[0]._source).toMatchObject({ - values: { - in: 'IDFSud', - }, - }); - expect(result.hits[1]._source).toMatchObject({ - values: { - out: 'IDFSud', - in: null, - }, - }); - - const assets = await sdk.document.get( - 'tenant-asset_tracking-kuzzle', - 'assets', - 'Truck-sierra', - ); - - expect(assets._source.metadata).toMatchObject({ - geofencing: { - state: null, - }, - }); - }); -}); diff --git a/apps/api/tests/scenarios/load-fixtures/load-air-quality.test.ts b/apps/api/tests/scenarios/load-fixtures/load-air-quality.test.ts deleted file mode 100644 index cd18c77..0000000 --- a/apps/api/tests/scenarios/load-fixtures/load-air-quality.test.ts +++ /dev/null @@ -1,143 +0,0 @@ -import { Kuzzle } from 'kuzzle-sdk'; - -import { truncateCollection, useSdk } from '../../../../../helpers'; - -jest.setTimeout(120 * 1000); - -const now = new Date().getTime(); - -describe('FixturesController: air quality', () => { - const sdk = useSdk(); - - beforeAll(async () => { - await sdk.connect(); - }); - - beforeEach(async () => { - try { - await sdk.query({ - controller: 'multi-tenancy/tenant', - action: 'delete', - name: 'kuzzle', - group: 'air_quality', - }); - } catch (error) { - // nothing - } - await truncateCollection(sdk, 'platform', 'devices'); - }); - - afterAll(async () => { - sdk.disconnect(); - }); - - // eslint-disable-next-line jest/expect-expect - it('should load all air_quality fixtures', async () => { - await sdk.query({ - controller: 'fixtures', - action: 'load', - tenant: 'air_quality', - }); - - await checkDevices(sdk); - await checkAssets(sdk); - }); - - // eslint-disable-next-line jest/expect-expect - it('should allow to reset the fixtures', async () => { - await sdk.query({ - controller: 'fixtures', - action: 'load', - tenant: 'air_quality', - }); - - await sdk.query({ - controller: 'fixtures', - action: 'reset', - tenant: 'air_quality', - }); - - await checkDevices(sdk); - await checkAssets(sdk); - }); -}); - -async function checkDevices(sdk: Kuzzle) { - await expect( - sdk.document.get('tenant-air_quality-kuzzle', 'devices', 'Airly-AIR1'), - ).resolves.toMatchObject({ - _source: { - assetId: 'Room-CE2', - measures: { - temperature: { - name: 'temperature', - }, - }, - }, - }); - await expect( - sdk.document.get('tenant-air_quality-kuzzle', 'devices', 'Airly-AIR2'), - ).resolves.toMatchObject({ - _source: { - assetId: null, - measures: { - temperature: { - name: 'temperature', - }, - }, - }, - }); - await expect( - sdk.document.get('tenant-air_quality-kuzzle', 'devices', 'Airly-AIR3'), - ).resolves.toMatchObject({ - _source: { - assetId: null, - measures: {}, - }, - }); -} - -async function checkAssets(sdk: Kuzzle) { - const CE2 = await sdk.document.get('tenant-air_quality-kuzzle', 'assets', 'Room-CE2'); - expect(CE2._source).toMatchObject({ - model: 'Room', - reference: 'CE2', - linkedDevices: [ - { - _id: 'Airly-AIR1', - }, - ], - measures: { - temperature: { - originId: 'Airly-AIR1', - }, - }, - groups: [ - { - id: 'school', - }, - ], - }); - - expect(typeof CE2._source.groups[0].date).toBe('number'); - expect(new Date(CE2._source.groups[0].date).getTime()).toBeGreaterThanOrEqual(now); - expect(typeof CE2._source.measures.temperature.values.temperature).toBe('number'); - - const CM1 = await sdk.document.get('tenant-air_quality-kuzzle', 'assets', 'Room-CM1'); - expect(CM1._source).toMatchObject({ - model: 'Room', - reference: 'CM1', - linkedDevices: [], - measures: { - temperature: null, - }, - groups: [ - { - id: 'school', - }, - ], - }); - - expect(typeof CM1._source.groups[0].date).toBe('number'); - expect(new Date(CM1._source.groups[0].date).getTime()).toBeGreaterThanOrEqual(now); -} diff --git a/apps/api/tests/scenarios/load-fixtures/load-asset-tracking.test.ts b/apps/api/tests/scenarios/load-fixtures/load-asset-tracking.test.ts deleted file mode 100644 index 43f21e3..0000000 --- a/apps/api/tests/scenarios/load-fixtures/load-asset-tracking.test.ts +++ /dev/null @@ -1,221 +0,0 @@ -import { Kuzzle } from 'kuzzle-sdk'; - -import { truncateCollection, useSdk } from '../../../../../helpers'; - -jest.setTimeout(120 * 1000); - -const now = new Date().getTime(); - -describe('FixturesController: asset tracking', () => { - const sdk = useSdk(); - - beforeAll(async () => { - await sdk.connect(); - }); - - beforeEach(async () => { - try { - await sdk.query({ - controller: 'multi-tenancy/tenant', - action: 'delete', - name: 'kuzzle', - group: 'asset_tracking', - }); - } catch (error) { - // nothing - } - await truncateCollection(sdk, 'platform', 'devices'); - }); - - afterAll(async () => { - sdk.disconnect(); - }); - - // eslint-disable-next-line jest/expect-expect - it('should load all asset_tracking fixtures', async () => { - await sdk.query({ - controller: 'fixtures', - action: 'load', - tenant: 'asset_tracking', - }); - - await checkDevices(sdk); - await checkAssets(sdk); - }); - - // eslint-disable-next-line jest/expect-expect - it('should allow to reset the fixtures', async () => { - await sdk.query({ - controller: 'fixtures', - action: 'load', - tenant: 'asset_tracking', - }); - - await sdk.query({ - controller: 'fixtures', - action: 'reset', - tenant: 'asset_tracking', - }); - - await checkDevices(sdk); - await checkAssets(sdk); - }); -}); - -async function checkDevices(sdk: Kuzzle) { - await expect( - sdk.document.get('tenant-asset_tracking-kuzzle', 'devices', 'Abeeway-ABE1'), - ).resolves.toMatchObject({ - _source: { - assetId: 'Container-zulu', - measures: { - internalTemperature: { - name: 'internalTemperature', - }, - }, - }, - }); - await expect( - sdk.document.get('tenant-asset_tracking-kuzzle', 'devices', 'Abeeway-ABE2'), - ).resolves.toMatchObject({ - _source: { - assetId: null, - measures: { - internalTemperature: { - name: 'internalTemperature', - }, - }, - }, - }); - await expect( - sdk.document.get('tenant-asset_tracking-kuzzle', 'devices', 'Abeeway-ABE3'), - ).resolves.toMatchObject({ - _source: { - assetId: null, - measures: {}, - }, - }); - - await expect( - sdk.document.get('tenant-asset_tracking-kuzzle', 'devices', 'Enginko-ENG1'), - ).resolves.toMatchObject({ - _source: { - assetId: 'Container-tango', - measures: { - temperature: { - name: 'temperature', - }, - }, - }, - }); - await expect( - sdk.document.get('tenant-asset_tracking-kuzzle', 'devices', 'Enginko-ENG2'), - ).resolves.toMatchObject({ - _source: { - assetId: 'Container-tango', - measures: { - temperature: { - name: 'temperature', - }, - }, - }, - }); - await expect( - sdk.document.get('tenant-asset_tracking-kuzzle', 'devices', 'Enginko-ENG3'), - ).resolves.toMatchObject({ - _source: { - assetId: null, - measures: { - temperature: { - name: 'temperature', - }, - }, - }, - }); - await expect( - sdk.document.get('tenant-asset_tracking-kuzzle', 'devices', 'Loka-LOK1'), - ).resolves.toMatchObject({ - _source: { - assetId: 'Container-tango', - measures: { - position: { - name: 'position', - }, - }, - }, - }); - await expect( - sdk.document.get('tenant-asset_tracking-kuzzle', 'devices', 'Loka-LOK2'), - ).resolves.toMatchObject({ - _source: { - assetId: 'Truck-sierra', - measures: { - position: { - name: 'position', - }, - }, - }, - }); - await expect( - sdk.document.get('tenant-asset_tracking-kuzzle', 'devices', 'Loka-LOK3'), - ).resolves.toMatchObject({ - _source: { - assetId: null, - measures: {}, - }, - }); -} - -async function checkAssets(sdk: Kuzzle) { - const sierra = await sdk.document.get('tenant-asset_tracking-kuzzle', 'assets', 'Truck-sierra'); - expect(sierra._source).toMatchObject({ - model: 'Truck', - reference: 'sierra', - linkedDevices: [ - { - _id: 'Loka-LOK2', - }, - ], - measures: { - position: { - originId: 'Loka-LOK2', - }, - }, - metadata: { - capacity: 38, - geofencing: { - disabled: false, - state: null, - }, - }, - groups: [ - { - id: 'trucks', - }, - ], - }); - - expect(typeof sierra._source.groups[0].date).toBe('number'); - expect(new Date(sierra._source.groups[0].date).getTime()).toBeGreaterThanOrEqual(now); - - expect(typeof sierra._source.measures.position.values.position.lon).toBe('number'); - expect(typeof sierra._source.measures.position.values.position.lat).toBe('number'); - - const romeo = await sdk.document.get('tenant-asset_tracking-kuzzle', 'assets', 'Truck-romeo'); - expect(romeo._source).toMatchObject({ - model: 'Truck', - reference: 'romeo', - linkedDevices: [], - measures: { - position: null, - }, - groups: [ - { - id: 'trucks', - }, - ], - }); - - expect(typeof romeo._source.groups[0].date).toBe('number'); - expect(new Date(romeo._source.groups[0].date).getTime()).toBeGreaterThanOrEqual(now); -} diff --git a/apps/api/tests/scenarios/load-fixtures/load-public-lighting.test.ts b/apps/api/tests/scenarios/load-fixtures/load-public-lighting.test.ts deleted file mode 100644 index ffd2320..0000000 --- a/apps/api/tests/scenarios/load-fixtures/load-public-lighting.test.ts +++ /dev/null @@ -1,133 +0,0 @@ -import { Kuzzle } from 'kuzzle-sdk'; - -import { truncateCollection, useSdk } from '../../../../../helpers'; - -jest.setTimeout(120 * 1000); - -const now = new Date().getTime(); - -describe('FixturesController: public lighting', () => { - const sdk = useSdk(); - - beforeAll(async () => { - await sdk.connect(); - }); - - beforeEach(async () => { - try { - await sdk.query({ - controller: 'multi-tenancy/tenant', - action: 'delete', - name: 'kuzzle', - group: 'public_lighting', - }); - } catch (error) { - // nothing - } - await truncateCollection(sdk, 'platform', 'devices'); - }); - - afterAll(async () => { - sdk.disconnect(); - }); - - // eslint-disable-next-line jest/expect-expect - it('should load all public_lighting fixtures', async () => { - await sdk.query({ - controller: 'fixtures', - action: 'load', - tenant: 'public_lighting', - }); - - await checkAssets(sdk); - }); - - // eslint-disable-next-line jest/expect-expect - it('should allow to reset the fixtures', async () => { - await sdk.query({ - controller: 'fixtures', - action: 'load', - tenant: 'public_lighting', - }); - - await sdk.query({ - controller: 'fixtures', - action: 'reset', - tenant: 'public_lighting', - }); - - await checkAssets(sdk); - }); -}); - -async function checkAssets(sdk: Kuzzle) { - const streetLamp0001 = await sdk.document.get( - 'tenant-public_lighting-kuzzle', - 'assets', - 'StreetLamp-0001', - ); - - expect(streetLamp0001._source).toMatchObject({ - model: 'StreetLamp', - reference: '0001', - linkedDevices: [ - { - _id: 'Kara-KAR1', - }, - ], - measures: { - brightness: { - originId: 'Kara-KAR1', - }, - }, - metadata: { - street: 'Rue Colin', - }, - groups: [ - { - id: 'rue-colin', - }, - ], - }); - - expect(typeof streetLamp0001._source.groups[0].date).toBe('number'); - expect(new Date(streetLamp0001._source.groups[0].date).getTime()).toBeGreaterThanOrEqual(now); - - expect(typeof streetLamp0001._source.measures.brightness.values.lumens).toBe('number'); - expect(typeof streetLamp0001._source.measures.powerConsumption.values.watt).toBe('number'); - - const streetLamp0010 = await sdk.document.get( - 'tenant-public_lighting-kuzzle', - 'assets', - 'StreetLamp-0010', - ); - - expect(streetLamp0010._source).toMatchObject({ - model: 'StreetLamp', - reference: '0010', - linkedDevices: [ - { - _id: 'Kara-KAR10', - }, - ], - measures: { - brightness: { - originId: 'Kara-KAR10', - }, - }, - metadata: { - street: 'Rue Lakanal', - }, - groups: [ - { - id: 'rue-lakanal', - }, - ], - }); - - expect(typeof streetLamp0010._source.groups[0].date).toBe('number'); - expect(new Date(streetLamp0010._source.groups[0].date).getTime()).toBeGreaterThanOrEqual(now); - - expect(typeof streetLamp0010._source.measures.brightness.values.lumens).toBe('number'); - expect(typeof streetLamp0010._source.measures.powerConsumption.values.watt).toBe('number'); -} diff --git a/apps/web/src/assets/.gitkeep b/apps/web/src/assets/.gitkeep new file mode 100644 index 0000000..d43917a --- /dev/null +++ b/apps/web/src/assets/.gitkeep @@ -0,0 +1 @@ +Directory for images, css and others static assets diff --git a/apps/web/src/assets/data/catalog/sensors.json b/apps/web/src/assets/data/catalog/sensors.json deleted file mode 100644 index 72c0791..0000000 --- a/apps/web/src/assets/data/catalog/sensors.json +++ /dev/null @@ -1,578 +0,0 @@ -[ - { - "reference": "Micro Tracker", - "manufacturer": "Abeeway", - "measures": [ - { - "labelFr": "Géolocalisation", - "labelEn": "Geolocation", - "type": "position" - } - ], - "network": "LoraWAN, GPS, Wi-Fi, Bluetooth", - "power": "Batterie", - "powerEn": "Battery", - "sales": "https://www.abeeway.com/micro-tracker/", - "datasheet": "https://www.abeeway.com/wp-content/uploads/2022/08/Abeeway_Products_Micro_B_2022-V2.5.pdf" - }, - { - "reference": "Industrial Tracker", - "manufacturer": "Abeeway", - "measures": [ - { - "labelFr": "Géolocalisation", - "labelEn": "Geolocation", - "type": "position" - } - ], - "network": "LoraWAN, GPS, Wi-Fi, Bluetooth", - "power": "Batterie", - "powerEn": "Battery", - "sales": "https://www.abeeway.com/industrial-tracker/", - "datasheet": "https://www.abeeway.com/wp-content/uploads/2022/08/Abeeway_Products_Industrial_2022-V1.5.pdf" - }, - { - "reference": "IZAR", - "manufacturer": "Axioma", - "measures": [ - { - "labelFr": "Mesure consommation d’eau", - "labelEn": "Water consumption measurement", - "type": "water" - } - ], - "network": "NB-IoT, AMR, NFC, LoRaWAN", - "power": "Batterie", - "powerEn": "Battery", - "sales": "https://www.axiomametering.com/storage/app/uploads/public/5e8/2fd/a58/5e82fda58b85c657440637.pdf", - "datasheet": "https://www.axiomametering.com/storage/app/uploads/public/633/407/361/6334073618813862422134.pdf" - }, - { - "reference": "CR 400", - "manufacturer": "Cellocator", - "measures": [ - { - "labelFr": "Capteur Véhicule", - "labelEn": "Vehicle sensor", - "type": "vehicle" - }, - { - "labelFr": "Géolocalisation", - "labelEn": "Geolocation", - "type": "position" - }, - { - "labelFr": "Vitesse", - "labelEn": "Speed", - "type": "speed" - }, - { - "labelFr": "Niveau carburant", - "labelEn": "Fuel level", - "type": "fuel" - }, - { - "labelFr": "activité/vitesse", - "labelEn": "activity/speed", - "type": "activity" - } - ], - "network": "", - "power": "Batterie", - "powerEn": "Battery", - "sales": "https://www.cellocator.com/products/cr-400/", - "datasheet": "https://www.cellocator.com/wp-content/uploads/CllctrPF_CR400_Bro_241121_web.pdf" - }, - { - "reference": "SLBox 2", - "manufacturer": "Citylone", - "measures": [ - { - "labelFr": "Télé-alarme et télé-éclairage", - "labelEn": "Remote alarm and lighting", - "type": "alarm" - } - ], - "network": "LoRaWAN", - "power": "Secteur", - "powerEn": "Mains", - "sales": "https://www.citylone.com/wp-content/uploads/2020/04/Documentation-commerciale-SmartLighting-Box-0320.pdf", - "datasheet": "https://www.citylone.com/wp-content/uploads/2021/02/Documentation-commerciale-SmartLighting-Box-0221.pdf" - }, - { - "reference": "SLBox", - "manufacturer": "Citylone", - "measures": [ - { - "labelFr": "Télé-relève via compteur", - "labelEn": "Remote measurement via meter", - "type": "meter" - }, - { - "labelFr": "Alarmes", - "labelEn": "Alarms", - "type": "alarm" - } - ], - "network": "LoRaWAN", - "power": "Secteur", - "powerEn": "Mains", - "sales": "https://www.citylone.com/wp-content/uploads/2018/11/Documentation-commerciale-SmartLighting-Box-2018-10.pdf", - "datasheet": "https://www.citylone.com/wp-content/uploads/2021/02/Documentation-commerciale-SmartLighting-Box-0221.pdf" - }, - { - "reference": "EOSD", - "manufacturer": "Easyfit", - "measures": [ - { - "labelFr": "Détection Bureau", - "labelEn": "Office sensor", - "type": "office" - } - ], - "network": "Europe : EnOcean 868 MHz\nNorth America : EnOcean 902 MHz", - "power": "Batterie", - "powerEn": "Battery", - "sales": "https://www.easyfit-controls.com/portfolio/occupancy-sensor-sub-desk-eosd/", - "datasheet": "https://www.cdiweb.com/datasheets/enocean/eosd_installation_guide.pdf" - }, - { - "reference": "BLE Beacons", - "manufacturer": "Ela Innovation", - "measures": [ - { - "labelFr": "Identification d’équipements", - "labelEn": "Gear identification", - "type": "identification" - } - ], - "network": "Bluetooth", - "power": "Batterie", - "powerEn": "Battery", - "sales": "https://elainnovation.com/en/catalogue/blue-coin-id-en/", - "datasheet": "https://elainnovation.com/wp-content/uploads/2020/09/FP-Blue-COIN-ID-07B-EN-1.pdf" - }, - { - "reference": "ElsysERS CO2", - "manufacturer": "Elsys.se", - "measures": [ - { - "labelFr": "Température", - "labelEn": "Temperature", - "type": "temperature" - }, - { - "labelFr": "Humidité", - "labelEn": "Humidity", - "type": "humidity" - }, - { - "labelFr": "CO2", - "labelEn": "CO2", - "type": "co2" - }, - { - "labelFr": "Luminosité", - "labelEn": "Light", - "type": "light" - }, - { - "labelFr": "Présence", - "labelEn": "Presence", - "type": "presence" - } - ], - "network": "LoRaWAN", - "power": "Batterie", - "powerEn": "Battery", - "sales": "https://elsys.se/public/manuals/Operating%20Manual%20ERS%20CO2.pdf", - "datasheet": "https://elsys.se/public/datasheets/ERS_CO2_datasheet.pdf" - }, - { - "reference": "MCF-LW12TERPM", - "manufacturer": "Enginko", - "measures": [ - { - "labelFr": "Température", - "labelEn": "Temperature", - "type": "temperature" - }, - { - "labelFr": "Humidité", - "labelEn": "Humidity", - "type": "humidity" - }, - { - "labelFr": "Pression", - "labelEn": "Air Pressure", - "type": "pressure" - }, - { - "labelFr": "Qualité de l’air", - "labelEn": "Air Quality", - "type": "air" - } - ], - "network": "LoRaWAN", - "power": "Batterie", - "powerEn": "Battery", - "sales": "https://enginko.com/en/solutions/lorawan-outdoor-environmental-sensor-mcf-lw12terpm/", - "datasheet": "https://enginko.com/wp-content/uploads/2020/09/enginko%C2%AE_datasheet_MCF-LW12TERPM_EN013W01.pdf" - }, - { - "reference": "PE6LORA", - "manufacturer": "Ewattch", - "measures": [ - { - "labelFr": "Consommation électrique", - "labelEn": "Power consumption", - "type": "power" - } - ], - "network": "LoRaWAN", - "power": "Secteur", - "powerEn": "Mains", - "sales": "https://ewattch.com/squid-lora-sous-comptage-electrique/", - "datasheet": "https://objenious.com/wp-content/uploads/pim_img/SQUID-LoRaWAN-Technical-documentation-EN.pdf" - }, - { - "reference": "Ambiance CO2", - "manufacturer": "Ewattch", - "measures": [ - { - "labelFr": "Température", - "labelEn": "Temperature", - "type": "temperature" - }, - { - "labelFr": "Luminosité", - "labelEn": "Light", - "type": "light" - }, - { - "labelFr": "Humidité", - "labelEn": "Humidity", - "type": "humidity" - }, - { - "labelFr": "Présence", - "labelEn": "Presence", - "type": "presence" - }, - { - "labelFr": "CO2", - "labelEn": "CO2", - "type": "co2" - } - ], - "network": "LoraWAN", - "power": "Batterie", - "powerEn": "Battery", - "sales": "https://ewattch.com/ambiance-mesure-co2/#1669803532673-ed54be5c-5f70", - "datasheet": "https://ewattch.com/wp-content/uploads/2022/10/Fiches-Techniques-Ambiance.pdf" - }, - { - "reference": "Ambiance", - "manufacturer": "Ewattch", - "measures": [ - { - "labelFr": "Température", - "labelEn": "Temperature", - "type": "temperature" - }, - { - "labelFr": "Luminosité", - "labelEn": "Light", - "type": "light" - }, - { - "labelFr": "Humidité", - "labelEn": "Humidity", - "type": "humidity" - }, - { - "labelFr": "Présence", - "labelEn": "Presence", - "type": "presence" - } - ], - "network": "LoRaWAN", - "power": "Batterie", - "powerEn": "Battery", - "sales": "https://ewattch.com/ambiance-mesure-temperature-humidite-luminosite-presence/#1590419691763-caca80db-6196", - "datasheet": "https://ewattch.com/wp-content/uploads/2022/10/Fiches-Techniques-Ambiance.pdf" - }, - { - "reference": "Squid", - "manufacturer": "Ewattch", - "measures": [ - { - "labelFr": "Consommation électrique", - "labelEn": "Power consumption", - "type": "power" - } - ], - "network": "LoRaWAN", - "power": "Secteur", - "powerEn": "Mains", - "sales": "https://ewattch.com/squid-lora-sous-comptage-electrique/#1590756083369-e333cecc-6d62", - "datasheet": "https://objenious.com/wp-content/uploads/pim_img/SQUID-LoRaWAN-Technical-documentation-EN.pdf" - }, - { - "reference": "Room monitor", - "manufacturer": "GreenCityzen", - "measures": [ - { - "labelFr": "Température", - "labelEn": "Temperature", - "type": "temperature" - }, - { - "labelFr": "Humidité", - "labelEn": "Humidity", - "type": "humidity" - }, - { - "labelFr": "CO2", - "labelEn": "CO2", - "type": "co2" - }, - { - "labelFr": "Luminosité", - "labelEn": "Light", - "type": "light" - }, - { - "labelFr": "Présence", - "labelEn": "Presence", - "type": "presence" - } - ], - "network": "LoRaWAN, Sigfox", - "power": "Batterie", - "powerEn": "Battery", - "sales": "https://www.greencityzen.fr/produits-en/hummbox-room-monitor/", - "datasheet": "Lien Datasheet" - }, - { - "reference": "Heywaste", - "manufacturer": "Heyliot", - "measures": [ - { - "labelFr": "Niveau de remplissage", - "labelEn": "Fill level", - "type": "fill_level" - } - ], - "network": "LoRaWAN / Sigfox", - "power": "Batterie", - "powerEn": "Battery", - "sales": "https://www.heyliot.com/fabrication-capteur-heyliot-ouestronic/", - "datasheet": "https://lora-alliance.org/wp-content/uploads/2020/05/Fiche-Technique-Heywaste-v1.1-mars2020.pdf" - }, - { - "reference": "ESG-Logger-Hygro", - "manufacturer": "Ineo-Sense", - "measures": [ - { - "labelFr": "Température", - "labelEn": "Temperature", - "type": "temperature" - }, - { - "labelFr": "Humidité", - "labelEn": "Humidity", - "type": "humidity" - } - ], - "network": "LoRaWAN , (Option : Sigfox), CloverNet", - "power": "Batterie", - "powerEn": "Battery", - "sales": "https://www.ineo-sense.com/portfolio/esg-logger-hygro/", - "datasheet": "https://www.ineo-sense.com/wp-content/uploads/2022/05/ESG-Logger-Hygro-EN.pdf" - }, - { - "reference": "TRK-Tracer", - "manufacturer": "Ineo-sense", - "measures": [ - { - "labelFr": "Géolocalisation", - "labelEn": "Geolocation", - "type": "geolocation" - } - ], - "network": "LoRaWAN, Sigfox, CloverNet", - "power": "Batterie", - "powerEn": "Battery", - "sales": "https://www.ineo-sense.com/portfolio/trk-tracer/", - "datasheet": "https://www.ineo-sense.com/wp-content/uploads/2022/05/TRK-Tracer-EN.pdf" - }, - { - "reference": "Cyble 5", - "manufacturer": "Itron", - "measures": [ - { - "labelFr": "Collecte de données rapide + Télé-relevé IoT", - "labelEn": "Fast data reporting + IoT remote metering", - "type": "data" - } - ], - "network": "LoRaWAN / Sigfox / OMSv4", - "power": "Batteries", - "powerEn": "Battery", - "sales": "https://www.itron.com/-/media/feature/products/documents/brochure/cyble-5-fr-web.pdf", - "datasheet": "https://www.itron.com/-/media/feature/products/documents/user-guides-and-manuals/cyble-rf-rf-ht-ml-web.pdf" - }, - { - "reference": "Karrick", - "manufacturer": "Kawantech", - "measures": [ - { - "labelFr": "Géolocalisation", - "labelEn": "Geolocation", - "type": "position" - } - ], - "network": "LoRaWAN /4G / Bluetooth / NFC", - "power": "Secteur", - "powerEn": "Mains", - "sales": "", - "datasheet": "" - }, - { - "reference": "Kara", - "manufacturer": "Kawantech", - "measures": [ - { - "labelFr": "Géolocalisation", - "labelEn": "Geolocation", - "type": "position" - }, - { - "labelFr": "Eclairage", - "labelEn": "Lighting", - "type": "light" - }, - { - "labelFr": "Température", - "labelEn": "Temperature", - "type": "temperature" - }, - { - "labelFr": "Accéléromètre", - "labelEn": "Acceleration", - "type": "acceleration" - }, - { - "labelFr": "Magnétomètre", - "labelEn": "Magnetometer", - "type": "magnetometer" - } - ], - "network": "Wi-FI/LoRaWAN/DASH7", - "power": "Secteur", - "powerEn": "Mains", - "sales": "https://www.kawantech.com/kara/", - "datasheet": "https://www.asprom.com/lumen/lehenaff.pdf" - }, - { - "reference": "Loka Primis", - "manufacturer": "Loka", - "measures": [ - { - "labelFr": "Géolocalisation", - "labelEn": "Geolocation", - "type": "position" - }, - { - "labelFr": "Température", - "labelEn": "Temperature", - "type": "temperature" - }, - { - "labelFr": "Accéléromètre", - "labelEn": "Acceleration", - "type": "acceleration" - } - ], - "network": "Sigfox, Wi-Fi, Bluetooth", - "power": "Batterie", - "powerEn": "Battery", - "sales": "https://loka.systems/loka-iot-devices-2/", - "datasheet": "https://wnetdev.sharepoint.com/LoKa-Systems/Shared%20Documents/Forms/AllItems.aspx?id=%2FLoKa%2DSystems%2FShared%20Documents%2FPartners%2FShared%20Docs%2FMarketing%20Collateral%2FLOKA%2DPRIMIS%2Ddatasheet%2D1%2Epdf&parent=%2FLoKa%2DSystems%2FShared%20Documents%2FPartners%2FShared%20Docs%2FMarketing%20Collateral&p=true&ga=1" - }, - { - "reference": "EM500SWL", - "manufacturer": "Milesight", - "measures": [ - { - "labelFr": "Mesure niveau de l’eau", - "labelEn": "Water level measurement", - "type": "water" - } - ], - "network": "LoRaWAN", - "power": "Batterie", - "powerEn": "Battery", - "sales": "https://resource.milesight-iot.com/milesight/document/em500-series-user-guide-en.pdf", - "datasheet": "https://resource.milesight-iot.com/milesight/document/em500-swl-datasheet-en.pdf" - }, - { - "reference": "Carbon", - "manufacturer": "Nexelec", - "measures": [ - { - "labelFr": "CO2", - "labelEn": "CO2", - "type": "co2" - }, - { - "labelFr": "Température", - "labelEn": "Temperature", - "type": "temperature" - }, - { - "labelFr": "Humidité", - "labelEn": "Humidity", - "type": "humidity" - } - ], - "network": "LoRaWAN, Sigfox, EnOcean", - "power": "Batterie", - "powerEn": "Battery", - "sales": "https://www.nexelec.fr/carbon-detecteur-co2", - "datasheet": "https://www.nexelec.fr/_files/ugd/7f2846_29bdc24564344c10b6e0ae952210a6bf.pdf" - }, - { - "reference": "Sens’o ATEX", - "manufacturer": "Nke", - "measures": [ - { - "labelFr": "Télé-relève données compteurs consommation d’eau, de gaz et d’électricité", - "labelEn": "Remote meter reading of water, gas and electricity consumption", - "type": "data" - } - ], - "network": "LoRaWAN", - "power": "Batterie", - "powerEn": "Battery", - "sales": "https://www.watteco.fr/download/fiche-technique-capteur-pulse-senso-atex-zone-1-lorawan/?wpdmdl=8360&refresh=63da3d86534861675246982", - "datasheet": "https://www.watteco.fr/download/quick-start-guide-atex-torano-pulse-senso/?wpdmdl=10477&refresh=63da3d86551981675246982" - }, - { - "reference": "Tic", - "manufacturer": "Nke", - "measures": [ - { - "labelFr": "Télé-relève de compteur électrique", - "labelEn": "Remote reading of electric meter", - "type": "data" - } - ], - "network": "LoRaWAN", - "power": "Secteur", - "powerEn": "Mains", - "sales": "https://airicom.com/watteco/7135-50-70-008-capteur-tic-autonome-lora-nke-watteco.html", - "datasheet": "https://airicom.com/index.php?controller=attachment&id_attachment=298" - } -] diff --git a/apps/web/src/components/.gitkeep b/apps/web/src/components/.gitkeep new file mode 100644 index 0000000..9bf7bd0 --- /dev/null +++ b/apps/web/src/components/.gitkeep @@ -0,0 +1 @@ +Directory for Vue components diff --git a/apps/web/src/components/bulkImport/LogType.ts b/apps/web/src/components/bulkImport/LogType.ts deleted file mode 100644 index 9634ac9..0000000 --- a/apps/web/src/components/bulkImport/LogType.ts +++ /dev/null @@ -1,28 +0,0 @@ -import { locales } from '~/locales/en.json'; - -const bulkImportLocales = locales.bulkImport; - -export enum LogType { - error = 'red', - warning = 'orange', - success = 'black', -} - -interface BulkImportLog { - message: string; - params: string; -} - -interface BulkImportError { - type: 'kuzzle_error'; - log: BulkImportLog; -} - -interface BulkImportMessage { - type: keyof typeof LogType; - log: BulkImportLog & { - message: Extract; - }; -} - -export type BulkImportContent = BulkImportError | BulkImportMessage; diff --git a/apps/web/src/components/bulkImport/modals/BulkImportLogModal.vue b/apps/web/src/components/bulkImport/modals/BulkImportLogModal.vue deleted file mode 100644 index a6949f9..0000000 --- a/apps/web/src/components/bulkImport/modals/BulkImportLogModal.vue +++ /dev/null @@ -1,220 +0,0 @@ - - - - - diff --git a/apps/web/src/composables/.gitkeep b/apps/web/src/composables/.gitkeep new file mode 100644 index 0000000..911591b --- /dev/null +++ b/apps/web/src/composables/.gitkeep @@ -0,0 +1,2 @@ +Directory for Vue composables +Useful for sharing Vue logic like methods, computeds, ... between components diff --git a/apps/web/src/composables/useLamp.ts b/apps/web/src/composables/useLamp.ts deleted file mode 100644 index 1b2819e..0000000 --- a/apps/web/src/composables/useLamp.ts +++ /dev/null @@ -1,174 +0,0 @@ -import { onMounted, Ref, ref } from 'vue'; -import { useKuzzle, useRights, useI18n, useToast } from '@kuzzleio/iot-platform-frontend'; -import type { DeviceContent } from 'kuzzle-device-manager-types'; -import { KDocumentContentGeneric, KHit, SearchResult } from 'kuzzle-sdk'; - -import { LightingRule } from '~/types/LightingPayload'; -import { WidgetSettingsType } from '~/types/WidgetProps'; -import { useMqtt } from './useMqtt'; - -// Define driver list constant -const avalaibleDrivers = [0, 1, 2, 3, 4] as const; -// Use typeof variable[number] to get a union of items types -export type driverType = (typeof avalaibleDrivers)[number]; - -type Levels = [number, number, number, number, number, number]; - -interface StreetLamp { - _id: string; -} - -interface UseLamp { - streetlamps: Ref; - currentStreetlamp: Ref; - driversLamp: typeof avalaibleDrivers; - currentDriverLamp: Ref; - minLevel: Ref; - maxLevel: Ref; - sendLightingRuleToKaraDevice: ( - lightingRule: LightingRule, - loading: Ref, - ) => Promise; - getLevels: () => Levels; -} -export function useLamp(widgetSettingsProp: WidgetSettingsType, engineIndexProp: string): UseLamp { - // Props - const widgetSettings = widgetSettingsProp; - const engineIndex = engineIndexProp; - - // Composables - const $kuzzle = useKuzzle(); - const $rights = useRights(); - const $i18n = useI18n(); - const $toast = useToast(); - const { sendToMqtt } = useMqtt(); - - // Refs - const currentStreetlamp = ref(null); - const streetlamps = ref([]); - const currentDriverLamp = ref(0); - const minLevel = ref(10); - const maxLevel = ref(100); - - // Hooks - onMounted(() => { - void fetchStreetlamps(); - }); - - // Functions - function getLevels(): Levels { - const low = Number(minLevel.value); - const high = Number(maxLevel.value); - return [ - low, - high, - Math.round((high - low) / 3 + low), // MEDIUM - Math.round((high - low) / 2 + low), // NEIGHBOUR - Math.round((high - low) / 1.8 + low), // SAFETY - Math.round((high - low) / 1.2 + low), // NEIGHBOUR_SAFETY - ]; - } - - async function fetchStreetlamps(): Promise { - if (!$rights.canSearchAsset.value) { - $toast.showError($i18n.t('locales.widget.common.cant-search-asset')); - return; - } - - const fetchedStreetLamps: StreetLamp[] = []; - - try { - let result: SearchResult> | null = - await $kuzzle.document.search( - engineIndex, - 'assets', - { - query: { - equals: { - model: widgetSettings.dataSources.assetModel, - }, - }, - }, - { - lang: 'koncorde', - }, - ); - - while (result != null) { - fetchedStreetLamps.push(...result.hits); - result = await result.next(); - } - streetlamps.value = fetchedStreetLamps; - } catch (error) { - $toast.showError((error as Error).message); - console.error(error); - } - } - - async function sendLightingRuleToKaraDevice( - lightingRule: LightingRule, - loading: Ref, - ): Promise { - loading.value = true; - - try { - const MACAddress = await getMACAddress(); - await sendToMqtt(MACAddress, 'LightingRule', { - LightingRule: lightingRule, - }); - } catch (error) { - $toast.showError((error as Error).message); - console.error(error); - } - - loading.value = false; - } - - async function getMACAddress(): Promise { - if (currentStreetlamp.value === null) { - throw Error($i18n.t('locales.widget.common.no-streetlamp-selected') as string); - } - - const { hits } = await $kuzzle.document.search( - engineIndex, - 'devices', - { - query: { - and: [ - { - equals: { - model: 'Kara', - }, - }, - { - equals: { - assetId: currentStreetlamp.value._id, - }, - }, - ], - }, - }, - { - lang: 'koncorde', - size: 1, - }, - ); - - if (hits.length === 0) { - throw Error($i18n.t('locales.widget.common.no-kara-devices-linked') as string); - } - - return hits[0]._source.reference; - } - - return { - streetlamps, - currentStreetlamp, - driversLamp: avalaibleDrivers, - currentDriverLamp, - minLevel, - maxLevel, - sendLightingRuleToKaraDevice, - getLevels, - }; -} diff --git a/apps/web/src/composables/useMqtt.ts b/apps/web/src/composables/useMqtt.ts deleted file mode 100644 index 8669461..0000000 --- a/apps/web/src/composables/useMqtt.ts +++ /dev/null @@ -1,110 +0,0 @@ -import { useKuzzle, useI18n, useToast } from '@kuzzleio/iot-platform-frontend'; -import { DocumentNotification, JSONObject, Notification } from 'kuzzle-sdk'; - -import { AcknowledgeMessage, AcknowledgeStatus } from '../types/AcknowledgeMessage'; - -interface UseMqtt { - sendToMqtt: ( - deviceId: string, - topic: T, - payload: { [topic in T]: JSONObject }, - ) => Promise; -} -export function useMqtt(): UseMqtt { - // Composables - const $kuzzle = useKuzzle(); - const $toast = useToast(); - const $i18n = useI18n(); - - // Functions - async function sendToMqtt( - deviceId: string, - topic: T, - payload: { [topic in T]: JSONObject }, - ): Promise { - if (payload[topic] === undefined) { - throw new Error($i18n.t('locales.widget.common.malformed-payload') as string); - } - - let roomId: string | null = null; - - // eslint-disable-next-line no-async-promise-executor, @typescript-eslint/no-misused-promises - const subscribeAndSend = new Promise(async (resolve) => { - try { - const cid = window.crypto.getRandomValues(new Uint32Array(1))[0]; - - roomId = await $kuzzle.realtime.subscribe( - 'mqtt', - 'acknowledgement', - { - equals: { 'message.ackMessage.cid': cid }, - }, - async (notification) => await handleAcknowledgement(notification, resolve), - ); - - (payload[topic] as JSONObject).cid = cid; - await $kuzzle.query({ - controller: 'kawantech/mqtt', - action: 'send', - body: { - topic: `${deviceId}/${topic}`, - payload, - }, - }); - } catch (error) { - $toast.showError((error as Error).message); - resolve(false); - } - }); - - const timeout = new Promise((resolve) => { - setTimeout(() => resolve(true), 5000); - }); - - const hasTimedOut = await Promise.race([subscribeAndSend, timeout]); - - if (hasTimedOut) { - $toast.showError( - $i18n.t('locales.acknowledgement.statut.not-received'), - $i18n.t('locales.acknowledgement.timeout'), - ); - } - - if (roomId !== null) { - await $kuzzle.realtime.unsubscribe(roomId); - } - } - - async function handleAcknowledgement( - notification: Notification, - resolve: (value: false) => void, - ): Promise { - const { result } = notification as DocumentNotification; - - const { topic, type, statut } = (result._source as AcknowledgeMessage).message.ackMessage; - - const topicTranslated = $i18n.te(`locales.acknowledgement.topics.${topic}`) - ? ($i18n.t(`locales.acknowledgement.topics.${topic}`) as string) - : topic; - const typeTranslated = $i18n.te(`locales.acknowledgement.types.${topic}.${type}`) - ? ($i18n.t(`locales.acknowledgement.types.${topic}.${type}`) as string) - : type; - const statutTranslated = $i18n.te(`locales.acknowledgement.statut.${statut}`) - ? ($i18n.t(`locales.acknowledgement.statut.${statut}`) as string) - : statut; - - const content = `Commande : ${topicTranslated}\nType : ${typeTranslated}\nStatut : ${statutTranslated}`; - - if (statut === AcknowledgeStatus.RECEIVED_APPLIED) { - $toast.showSuccess(content, $i18n.t('locales.acknowledgement.acknowledgement')); - } else { - $toast.showError(content, $i18n.t('locales.acknowledgement.acknowledgement')); - } - - resolve(false); - } - - return { - sendToMqtt, - }; -} diff --git a/apps/web/src/helpers/.gitkeep b/apps/web/src/helpers/.gitkeep new file mode 100644 index 0000000..274defb --- /dev/null +++ b/apps/web/src/helpers/.gitkeep @@ -0,0 +1,2 @@ +Directory for helpers +Useful for sharing functions to simplify logic diff --git a/apps/web/src/helpers/timePickerToDate.ts b/apps/web/src/helpers/timePickerToDate.ts deleted file mode 100644 index 85b52c8..0000000 --- a/apps/web/src/helpers/timePickerToDate.ts +++ /dev/null @@ -1,26 +0,0 @@ -// slice i, i+2 -// set utc hours -export default function timePickerToDate(timePicker: string, currentDate?: Date): Date { - const { hours, minutes, seconds } = decomposeTimeFormat(timePicker); - - const date = currentDate ?? new Date(Date.now()); - date.setUTCHours(hours); - date.setUTCMinutes(minutes); - date.setUTCSeconds(seconds); - - return date; -} - -interface Time { - hours: number; - minutes: number; - seconds: number; -} -function decomposeTimeFormat(timeFormat: string): Time { - const time = timeFormat.split(':'); - const hours = parseInt(time[0], 10); - const minutes = parseInt(time[1], 10); - const seconds = parseInt(time[2], 10); - - return { hours, minutes, seconds }; -} diff --git a/apps/web/src/locales/en.json b/apps/web/src/locales/en.json index d7fa603..57b0ab7 100644 --- a/apps/web/src/locales/en.json +++ b/apps/web/src/locales/en.json @@ -1,80 +1,10 @@ { - "Home": "Home", "locales": { - "bulkImport": { - "browse": "Drag and drop or browse to upload your file", - "description": "You can import assets and devices in bulk using a CSV file to automate creation", - "drop": "Drop your file here", - "import": "Import data", - "log": { - "asset-created": "Asset {assetModel} {assetReference} created", - "csv-parse-error": "Error while parsing CSV file! Please check your file and try again.", - "device-created": "Device {deviceModel} {deviceReference} created", - "device-link-to-another-tenant": "Device {deviceModel} {deviceReference} already linked to tenant {otherTenant}, skipping (L{lineNumber})", - "device-linked": "Device {deviceModel} {deviceReference} linked to asset {assetModel} {assetReference}", - "invalid": "Line {lineNumber} is not valid, skipping", - "metadata-updated": "{type} {model} {reference} found, metadata updated", - "orphan-device-link": "Device {deviceModel} {deviceReference} found in orphan device, link to current tenant ({currentIndex})" - }, - "logModal": { - "copy": "Copy logs", - "copySuccess": "Logs copied to clipboard", - "filter": "Log filter", - "filters": { - "all": "All", - "error": "Error", - "success": "Success", - "warning": "Warning" - }, - "title": "Import log" - }, - "title": "Bulk Import" - }, - "catalog": { - "action": "Provide a Decoder", - "detail": "Sensors Details", - "description": "Sensors Catalog for the Kuzzle IoT Platform.", - "doc": "Documentation Details", - "datasheet": "Datasheet", - "decoder": "Provide a Decoder", - "edit": "Edit", - "empty": "There are no records to show", - "emptyLinkedAsset": "Click here to link an asset", - "generalInfo": "General info", - "linkAsset": "Link an Asset", - "linkedAsset": "Linked Asset", - "link": "Link", - "measureType": "Measure Types", - "measures": "Measures", - "metadata": "Metadata", - "model": "Model", - "manufacturer": "Manufacturer", - "network": "Network", - "power": "Power", - "reference": "Reference", - "sales": "Sales", - "technical": "Technical Details", - "type": "Type", - "title": "IoT Sensors Catalog", - "unknown-link": "Link unavailable" - }, - "devices": { - "modals": { - "create": "Provide a Decoder", - "createDescription": "Provide a new Sensor with her Decoder by providing here its Model and Reference. The Model must correspond to an existing Decoder, which is installed on the Platform. The Reference is a unique ID you can arbitrarily choose." - } - }, - "sidebar": { - "bulkImport": "Bulk Import", - "catalog": "Catalog" - }, "widget": { - "common": { - "asset-model": "Asset Model" - }, - "sampleWidget": { + "sample-widget": { "title": "This is sample widget", "label": "Sample Widget", + "asset-model": "Asset Model", "buckettingField": "bucketting field :" } } diff --git a/apps/web/src/locales/fr.json b/apps/web/src/locales/fr.json index 78eb462..c92785c 100644 --- a/apps/web/src/locales/fr.json +++ b/apps/web/src/locales/fr.json @@ -1,80 +1,10 @@ { - "Home": "Accueil", "locales": { - "bulkImport": { - "browse": "Glissez et déposez ou sélectionnez votre fichier", - "description": "Vous pouvez importer des actifs ainsi que des capteurs en lot en utilisant un fichier CSV afin d'automatiser la création.", - "drop": "Déposez votre fichier ici", - "import": "Importer les données", - "log": { - "asset-created": "Actif {assetModel} {assetReference} créé", - "csv-parse-error": "Erreur lors de l'analyse du fichier CSV ! Veuillez vérifier votre fichier et réessayer.", - "device-created": "Capteur {deviceModel} {deviceReference} créé", - "device-link-to-another-tenant": "Capteur {deviceModel} {deviceReference} déjà lié au client {otherTenant}, sautée (L{lineNumber})", - "device-linked": "Capteur {deviceModel} {deviceReference} lié à l'actif {assetModel} {assetReference}", - "invalid": "Ligne {lineNumber} invalide, sautée", - "metadata-updated": "{type} {model} {reference} trouvé, mise à jour des métadonnées", - "orphan-device-link": "Capteur {deviceModel} {deviceReference} trouvé dans les capteurs orphelins, liaison au client actuel ({currentIndex})" - }, - "logModal": { - "copy": "Copier les résultats", - "copySuccess": "Résultats copiés dans le presse-papier", - "filter": "Filtrer les résultats", - "filters": { - "all": "Tout", - "error": "Erreur", - "success": "Succès", - "warning": "Avertissement" - }, - "title": "Résultat de l'import" - }, - "title": "Import en lot" - }, - "catalog": { - "action": "Provisionner un capteur", - "detail": "Détails du capteur", - "description": "Catalogue de capteurs pour la Plateforme Kuzzle IoT.", - "doc": "Détails sur la Documentation", - "datasheet": "Technique (Datasheet)", - "decoder": "Provisionner un capteur", - "edit": "Modifier", - "empty": "Aucune information à afficher", - "emptyLinkedAsset": "Cliquez ici pour lier un Actif", - "generalInfo": "Informations Générales", - "linkAsset": "Lier un Actif", - "linkedAsset": "Actif lié", - "link": "Lien", - "measureType": "Type de mesure", - "measures": "Mesures", - "metadata": "Métadonnées", - "model": "Modèle", - "manufacturer": "Constructeur", - "network": "Réseaux", - "power": "Source d'Alimentation", - "reference": "Référence", - "sales": "Commercial", - "technical": "Détails Techniques", - "type": "Type", - "title": "Catalogue de Capteurs IoT", - "unknown-link": "Lien non disponible" - }, - "devices": { - "modals": { - "create": "Provisionner un capteur", - "createDescription": "Provisionnez un nouveau Capteur avec son Décodeur en renseignant son Modèle et sa Référence. Le Modèle doit correspondre à un Décodeur actuellement installé sur la Plate-forme, alors que la Référence est un ID unique que vous pouvez choisir arbitrairement." - } - }, - "sidebar": { - "bulkImport": "Import en lot", - "catalog": "Catalogue" - }, "widget": { - "common": { - "asset-model": "Modèle d'Actif" - }, - "sampleWidget": { + "sample-widget": { "title": "Ceci est un widget d'exemple", "label": "Widget d'exemple", + "asset-model": "Modèle d'Actif", "buckettingField": "Champ de regroupement :" } } diff --git a/apps/web/src/main.ts b/apps/web/src/main.ts index d906275..f752a8f 100644 --- a/apps/web/src/main.ts +++ b/apps/web/src/main.ts @@ -1,11 +1,9 @@ import './style.css'; -import { faDatabase } from '@fortawesome/free-solid-svg-icons/faDatabase'; import { IotPlatform } from '@kuzzleio/iot-platform-frontend'; import appConfig from './config'; import locales from './locales'; -import BulkImport from '~/views/bulkImport/BulkImport.vue'; import SampleWidget from '~/widgets/sample-widget/SampleWidget.vue'; import SampleWidgetForm from '~/widgets/sample-widget/SampleWidgetForm.vue'; @@ -15,29 +13,29 @@ const app = new IotPlatform({ }); // Load custom views : -app.appChunks.get('admin')?.addChildrenView({ - name: 'bulk-import', - label: 'locales.sidebar.bulkImport', - icon: faDatabase, - route: { - path: '/bulk-import', - component: BulkImport, - meta: { - breadcrumb: 'locales.sidebar.bulkImport', - }, - }, - enabled: { - rights: { - controller: 'bulk-import', - action: 'import', - index: null, - }, - }, -}); +// app.appChunks.get('admin')?.addChildrenView({ +// name: 'bulk-import', +// label: 'locales.sidebar.bulkImport', +// icon: faDatabase, +// route: { +// path: '/bulk-import', +// component: BulkImport, +// meta: { +// breadcrumb: 'locales.sidebar.bulkImport', +// }, +// }, +// enabled: { +// rights: { +// controller: 'bulk-import', +// action: 'import', +// index: null, +// }, +// }, +// }); // Load custom widgets : app.widgets.set('sample-widget', { - label: 'locales.widget.sampleWidget.label', + label: 'widget.sample-widget.label', component: SampleWidget, formComponent: SampleWidgetForm, icon: 'face-meh', diff --git a/apps/web/src/types/AcknowledgeMessage.ts b/apps/web/src/types/AcknowledgeMessage.ts deleted file mode 100644 index 7a4850e..0000000 --- a/apps/web/src/types/AcknowledgeMessage.ts +++ /dev/null @@ -1,22 +0,0 @@ -export enum AcknowledgeStatus { - RECEIVED_APPLIED = 0, - RECEIVED_IGNORED = 1, - RECEIVED_UNKNOWN_TOPIC = 2, - RECEIVED_ERROR_CONTENT = 3, - RECEIVED_ERROR_APPLY = 4, - RECEIVED_ERROR_HEADER = 5, - RECEIVED_UNKNOWN_PARAMETER = 6, - RECEIVED_INVALID_JSON = 7, -} - -export interface AcknowledgeMessage { - topic: string; - message: { - ackMessage: { - topic: string; - type: number; - statut: AcknowledgeStatus; - cid: number; - }; - }; -} diff --git a/apps/web/src/views/.gitkeep b/apps/web/src/views/.gitkeep new file mode 100644 index 0000000..2ab2306 --- /dev/null +++ b/apps/web/src/views/.gitkeep @@ -0,0 +1 @@ +Directory for Application Vue Views diff --git a/apps/web/src/views/bulkImport/BulkImport.vue b/apps/web/src/views/bulkImport/BulkImport.vue deleted file mode 100644 index 80fff9a..0000000 --- a/apps/web/src/views/bulkImport/BulkImport.vue +++ /dev/null @@ -1,139 +0,0 @@ - - - - - diff --git a/apps/web/src/views/catalog/CatalogList.vue b/apps/web/src/views/catalog/CatalogList.vue deleted file mode 100644 index f48f874..0000000 --- a/apps/web/src/views/catalog/CatalogList.vue +++ /dev/null @@ -1,176 +0,0 @@ - - - - - diff --git a/apps/web/src/views/catalog/DeviceInfoView.vue b/apps/web/src/views/catalog/DeviceInfoView.vue deleted file mode 100644 index 064b8db..0000000 --- a/apps/web/src/views/catalog/DeviceInfoView.vue +++ /dev/null @@ -1,112 +0,0 @@ - - - diff --git a/apps/web/src/views/catalog/decodersForm/DeviceCreateForm.vue b/apps/web/src/views/catalog/decodersForm/DeviceCreateForm.vue deleted file mode 100644 index 402d5fe..0000000 --- a/apps/web/src/views/catalog/decodersForm/DeviceCreateForm.vue +++ /dev/null @@ -1,213 +0,0 @@ - - - diff --git a/apps/web/src/widgets/level-widget/LevelWidget.vue b/apps/web/src/widgets/level-widget/LevelWidget.vue deleted file mode 100644 index 34ee0d0..0000000 --- a/apps/web/src/widgets/level-widget/LevelWidget.vue +++ /dev/null @@ -1,116 +0,0 @@ - - - diff --git a/apps/web/src/widgets/level-widget/LevelWidgetForm.vue b/apps/web/src/widgets/level-widget/LevelWidgetForm.vue deleted file mode 100644 index b62414a..0000000 --- a/apps/web/src/widgets/level-widget/LevelWidgetForm.vue +++ /dev/null @@ -1,91 +0,0 @@ - - - diff --git a/apps/web/src/widgets/on-off-widget/OnOffWidget.vue b/apps/web/src/widgets/on-off-widget/OnOffWidget.vue deleted file mode 100644 index 95656a9..0000000 --- a/apps/web/src/widgets/on-off-widget/OnOffWidget.vue +++ /dev/null @@ -1,199 +0,0 @@ - - - - - diff --git a/apps/web/src/widgets/on-off-widget/OnOffWidgetForm.vue b/apps/web/src/widgets/on-off-widget/OnOffWidgetForm.vue deleted file mode 100644 index b62414a..0000000 --- a/apps/web/src/widgets/on-off-widget/OnOffWidgetForm.vue +++ /dev/null @@ -1,91 +0,0 @@ - - - diff --git a/apps/web/src/widgets/sample-widget/SampleWidget.vue b/apps/web/src/widgets/sample-widget/SampleWidget.vue index 157eaa6..90881fc 100644 --- a/apps/web/src/widgets/sample-widget/SampleWidget.vue +++ b/apps/web/src/widgets/sample-widget/SampleWidget.vue @@ -1,8 +1,8 @@