Compare commits
17 Commits
feature/IO
...
feature/IO
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
02a1d39ca4 | ||
|
|
d50efe9890 | ||
|
|
789af9fb30 | ||
|
|
18da11f593 | ||
|
|
0ca1937140 | ||
|
|
7898d5a595 | ||
|
|
e8aa4f2dac | ||
|
|
271d15d969 | ||
|
|
136d52ec0b | ||
|
|
90b9ab906a | ||
|
|
02fd5e1701 | ||
|
|
2dcd05c593 | ||
|
|
0e9414cbc8 | ||
|
|
ddc235637a | ||
|
|
60549597cb | ||
|
|
9fe94481e7 | ||
|
|
b78d0253de |
@@ -5,7 +5,6 @@ orbs:
|
|||||||
aws-s3: circleci/aws-s3@4.0.0
|
aws-s3: circleci/aws-s3@4.0.0
|
||||||
aws-cli: circleci/aws-cli@4.0
|
aws-cli: circleci/aws-cli@4.0
|
||||||
eb: circleci/aws-elastic-beanstalk@2.0.1
|
eb: circleci/aws-elastic-beanstalk@2.0.1
|
||||||
jira: circleci/jira@2.1.0
|
|
||||||
jobs:
|
jobs:
|
||||||
imex-api-deploy:
|
imex-api-deploy:
|
||||||
docker:
|
docker:
|
||||||
@@ -19,12 +18,6 @@ jobs:
|
|||||||
eb status --verbose
|
eb status --verbose
|
||||||
eb deploy
|
eb deploy
|
||||||
eb status
|
eb status
|
||||||
- jira/notify:
|
|
||||||
environment: Production (ImEX) - API
|
|
||||||
environment_type: production
|
|
||||||
job_type: deployment
|
|
||||||
pipeline_id: << pipeline.id >>
|
|
||||||
pipeline_number: << pipeline.number >>
|
|
||||||
|
|
||||||
imex-hasura-migrate:
|
imex-hasura-migrate:
|
||||||
docker:
|
docker:
|
||||||
@@ -40,16 +33,11 @@ jobs:
|
|||||||
- run:
|
- run:
|
||||||
name: Execute migration
|
name: Execute migration
|
||||||
command: |
|
command: |
|
||||||
curl -L https://github.com/hasura/graphql-engine/raw/stable/cli/get.sh | bash
|
npm install hasura-cli -g
|
||||||
hasura migrate apply --endpoint https://db.imex.online/ --admin-secret << parameters.secret >>
|
hasura migrate apply --endpoint https://db.imex.online/ --admin-secret << parameters.secret >>
|
||||||
hasura metadata apply --endpoint https://db.imex.online/ --admin-secret << parameters.secret >>
|
hasura metadata apply --endpoint https://db.imex.online/ --admin-secret << parameters.secret >>
|
||||||
hasura metadata reload --endpoint https://db.imex.online/ --admin-secret << parameters.secret >>
|
hasura metadata reload --endpoint https://db.imex.online/ --admin-secret << parameters.secret >>
|
||||||
- jira/notify:
|
|
||||||
environment: Production (ImEX) - Hasura
|
|
||||||
environment_type: production
|
|
||||||
pipeline_id: << pipeline.id >>
|
|
||||||
job_type: deployment
|
|
||||||
pipeline_number: << pipeline.number >>
|
|
||||||
imex-app-build:
|
imex-app-build:
|
||||||
docker:
|
docker:
|
||||||
- image: cimg/node:18.18.2
|
- image: cimg/node:18.18.2
|
||||||
@@ -74,7 +62,6 @@ jobs:
|
|||||||
to: "s3://imex-online-production/"
|
to: "s3://imex-online-production/"
|
||||||
arguments: "--exclude '*.map'"
|
arguments: "--exclude '*.map'"
|
||||||
|
|
||||||
|
|
||||||
imex-app-beta-build:
|
imex-app-beta-build:
|
||||||
docker:
|
docker:
|
||||||
- image: cimg/node:18.18.2
|
- image: cimg/node:18.18.2
|
||||||
@@ -99,12 +86,6 @@ jobs:
|
|||||||
from: dist
|
from: dist
|
||||||
to: "s3://imex-online-beta/"
|
to: "s3://imex-online-beta/"
|
||||||
arguments: "--exclude '*.map'"
|
arguments: "--exclude '*.map'"
|
||||||
- jira/notify:
|
|
||||||
environment: Production (ImEX) - Front End
|
|
||||||
environment_type: production
|
|
||||||
pipeline_id: << pipeline.id >>
|
|
||||||
job_type: deployment
|
|
||||||
pipeline_number: << pipeline.number >>
|
|
||||||
|
|
||||||
rome-api-deploy:
|
rome-api-deploy:
|
||||||
docker:
|
docker:
|
||||||
@@ -118,12 +99,7 @@ jobs:
|
|||||||
eb status --verbose
|
eb status --verbose
|
||||||
eb deploy
|
eb deploy
|
||||||
eb status
|
eb status
|
||||||
- jira/notify:
|
|
||||||
environment: Production (Rome) - API
|
|
||||||
environment_type: production
|
|
||||||
pipeline_id: << pipeline.id >>
|
|
||||||
job_type: deployment
|
|
||||||
pipeline_number: << pipeline.number >>
|
|
||||||
rome-hasura-migrate:
|
rome-hasura-migrate:
|
||||||
docker:
|
docker:
|
||||||
- image: cimg/node:18.18.2
|
- image: cimg/node:18.18.2
|
||||||
@@ -138,16 +114,11 @@ jobs:
|
|||||||
- run:
|
- run:
|
||||||
name: Execute migration
|
name: Execute migration
|
||||||
command: |
|
command: |
|
||||||
curl -L https://github.com/hasura/graphql-engine/raw/stable/cli/get.sh | bash
|
npm install hasura-cli -g
|
||||||
hasura migrate apply --endpoint https://db.romeonline.io/ --admin-secret << parameters.secret >>
|
hasura migrate apply --endpoint https://db.romeonline.io/ --admin-secret << parameters.secret >>
|
||||||
hasura metadata apply --endpoint https://db.romeonline.io/ --admin-secret << parameters.secret >>
|
hasura metadata apply --endpoint https://db.romeonline.io/ --admin-secret << parameters.secret >>
|
||||||
hasura metadata reload --endpoint https://db.romeonline.io/ --admin-secret << parameters.secret >>
|
hasura metadata reload --endpoint https://db.romeonline.io/ --admin-secret << parameters.secret >>
|
||||||
- jira/notify:
|
|
||||||
environment: Production (Rome) - Hasura
|
|
||||||
environment_type: production
|
|
||||||
pipeline_id: << pipeline.id >>
|
|
||||||
job_type: deployment
|
|
||||||
pipeline_number: << pipeline.number >>
|
|
||||||
rome-app-build:
|
rome-app-build:
|
||||||
docker:
|
docker:
|
||||||
- image: cimg/node:18.18.2
|
- image: cimg/node:18.18.2
|
||||||
@@ -172,12 +143,6 @@ jobs:
|
|||||||
from: dist
|
from: dist
|
||||||
to: "s3://rome-online-production/"
|
to: "s3://rome-online-production/"
|
||||||
arguments: "--exclude '*.map'"
|
arguments: "--exclude '*.map'"
|
||||||
- jira/notify:
|
|
||||||
environment: Production (Rome) - Front End
|
|
||||||
environment_type: production
|
|
||||||
pipeline_id: << pipeline.id >>
|
|
||||||
job_type: deployment
|
|
||||||
pipeline_number: << pipeline.number >>
|
|
||||||
|
|
||||||
promanager-app-build:
|
promanager-app-build:
|
||||||
docker:
|
docker:
|
||||||
@@ -203,12 +168,6 @@ jobs:
|
|||||||
from: dist
|
from: dist
|
||||||
to: "s3://promanager-production/"
|
to: "s3://promanager-production/"
|
||||||
arguments: "--exclude '*.map'"
|
arguments: "--exclude '*.map'"
|
||||||
- jira/notify:
|
|
||||||
environment: Production (ProManager) - Front End
|
|
||||||
environment_type: production
|
|
||||||
pipeline_id: << pipeline.id >>
|
|
||||||
job_type: deployment
|
|
||||||
pipeline_number: << pipeline.number >>
|
|
||||||
|
|
||||||
test-rome-hasura-migrate:
|
test-rome-hasura-migrate:
|
||||||
docker:
|
docker:
|
||||||
@@ -224,18 +183,10 @@ jobs:
|
|||||||
- run:
|
- run:
|
||||||
name: Execute migration
|
name: Execute migration
|
||||||
command: |
|
command: |
|
||||||
curl -L https://github.com/hasura/graphql-engine/raw/stable/cli/get.sh | bash
|
npm install hasura-cli -g
|
||||||
hasura migrate apply --endpoint https://db.test.romeonline.io/ --admin-secret << parameters.secret >>
|
hasura migrate apply --endpoint https://db.test.romeonline.io/ --admin-secret << parameters.secret >>
|
||||||
sleep 5
|
|
||||||
hasura metadata apply --endpoint https://db.test.romeonline.io/ --admin-secret << parameters.secret >>
|
hasura metadata apply --endpoint https://db.test.romeonline.io/ --admin-secret << parameters.secret >>
|
||||||
sleep 10
|
|
||||||
hasura metadata reload --endpoint https://db.test.romeonline.io/ --admin-secret << parameters.secret >>
|
hasura metadata reload --endpoint https://db.test.romeonline.io/ --admin-secret << parameters.secret >>
|
||||||
- jira/notify:
|
|
||||||
environment: Test (Rome) - Hasura
|
|
||||||
environment_type: testing
|
|
||||||
pipeline_id: << pipeline.id >>
|
|
||||||
job_type: deployment
|
|
||||||
pipeline_number: << pipeline.number >>
|
|
||||||
|
|
||||||
test-rome-app-build:
|
test-rome-app-build:
|
||||||
docker:
|
docker:
|
||||||
@@ -261,12 +212,6 @@ jobs:
|
|||||||
from: dist
|
from: dist
|
||||||
to: "s3://rome-online-test/"
|
to: "s3://rome-online-test/"
|
||||||
arguments: "--exclude '*.map'"
|
arguments: "--exclude '*.map'"
|
||||||
- jira/notify:
|
|
||||||
environment: Test (Rome) - Front End
|
|
||||||
environment_type: testing
|
|
||||||
pipeline_id: << pipeline.id >>
|
|
||||||
job_type: deployment
|
|
||||||
pipeline_number: << pipeline.number >>
|
|
||||||
|
|
||||||
test-promanager-app-build:
|
test-promanager-app-build:
|
||||||
docker:
|
docker:
|
||||||
@@ -292,12 +237,6 @@ jobs:
|
|||||||
from: dist
|
from: dist
|
||||||
to: "s3://promanager-testing/"
|
to: "s3://promanager-testing/"
|
||||||
arguments: "--exclude '*.map'"
|
arguments: "--exclude '*.map'"
|
||||||
- jira/notify:
|
|
||||||
environment: Test (ProManager) - Front End
|
|
||||||
environment_type: testing
|
|
||||||
pipeline_id: << pipeline.id >>
|
|
||||||
job_type: deployment
|
|
||||||
pipeline_number: << pipeline.number >>
|
|
||||||
|
|
||||||
test-hasura-migrate:
|
test-hasura-migrate:
|
||||||
docker:
|
docker:
|
||||||
@@ -313,18 +252,10 @@ jobs:
|
|||||||
- run:
|
- run:
|
||||||
name: Execute migration
|
name: Execute migration
|
||||||
command: |
|
command: |
|
||||||
curl -L https://github.com/hasura/graphql-engine/raw/stable/cli/get.sh | bash
|
npm install hasura-cli -g
|
||||||
hasura migrate apply --endpoint https://db.test.bodyshop.app/ --admin-secret << parameters.secret >>
|
hasura migrate apply --endpoint https://db.test.bodyshop.app/ --admin-secret << parameters.secret >>
|
||||||
sleep 15
|
|
||||||
hasura metadata apply --endpoint https://db.test.bodyshop.app/ --admin-secret << parameters.secret >>
|
hasura metadata apply --endpoint https://db.test.bodyshop.app/ --admin-secret << parameters.secret >>
|
||||||
sleep 30
|
|
||||||
hasura metadata reload --endpoint https://db.test.bodyshop.app/ --admin-secret << parameters.secret >>
|
hasura metadata reload --endpoint https://db.test.bodyshop.app/ --admin-secret << parameters.secret >>
|
||||||
- jira/notify:
|
|
||||||
environment: Test (ImEX) - Hasura
|
|
||||||
environment_type: testing
|
|
||||||
pipeline_id: << pipeline.id >>
|
|
||||||
job_type: deployment
|
|
||||||
pipeline_number: << pipeline.number >>
|
|
||||||
|
|
||||||
imex-test-app-build:
|
imex-test-app-build:
|
||||||
docker:
|
docker:
|
||||||
@@ -371,12 +302,7 @@ jobs:
|
|||||||
from: dist
|
from: dist
|
||||||
to: "s3://imex-online-test-beta/"
|
to: "s3://imex-online-test-beta/"
|
||||||
arguments: "--exclude '*.map'"
|
arguments: "--exclude '*.map'"
|
||||||
- jira/notify:
|
|
||||||
environment: Test (ImEX) - Front End
|
|
||||||
environment_type: testing
|
|
||||||
pipeline_id: << pipeline.id >>
|
|
||||||
job_type: deployment
|
|
||||||
pipeline_number: << pipeline.number >>
|
|
||||||
|
|
||||||
admin-app-build:
|
admin-app-build:
|
||||||
docker:
|
docker:
|
||||||
@@ -427,7 +353,7 @@ workflows:
|
|||||||
secret: ${HASURA_PROD_SECRET}
|
secret: ${HASURA_PROD_SECRET}
|
||||||
filters:
|
filters:
|
||||||
branches:
|
branches:
|
||||||
only: master-AIO
|
only: master
|
||||||
- rome-api-deploy:
|
- rome-api-deploy:
|
||||||
filters:
|
filters:
|
||||||
branches:
|
branches:
|
||||||
@@ -437,7 +363,7 @@ workflows:
|
|||||||
branches:
|
branches:
|
||||||
only: master-AIO
|
only: master-AIO
|
||||||
- rome-hasura-migrate:
|
- rome-hasura-migrate:
|
||||||
secret: ${HASURA_ROME_PROD_SECRET}
|
secret: ${HASURA_PROD_SECRET}
|
||||||
filters:
|
filters:
|
||||||
branches:
|
branches:
|
||||||
only: master-AIO
|
only: master-AIO
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -1,5 +1,5 @@
|
|||||||
VITE_APP_GRAPHQL_ENDPOINT=https://db.dev.imex.online/v1/graphql
|
VITE_APP_GRAPHQL_ENDPOINT=https://db.dev.bodyshop.app/v1/graphql
|
||||||
VITE_APP_GRAPHQL_ENDPOINT_WS=wss://db.dev.imex.online/v1/graphql
|
VITE_APP_GRAPHQL_ENDPOINT_WS=wss://db.dev.bodyshop.app/v1/graphql
|
||||||
VITE_APP_GA_CODE=231099835
|
VITE_APP_GA_CODE=231099835
|
||||||
VITE_APP_FIREBASE_CONFIG={"apiKey":"AIzaSyDPLT8GiDHDR1R4nI66Qi0BY1aYviDPioc","authDomain":"imex-dev.firebaseapp.com","databaseURL":"https://imex-dev.firebaseio.com","projectId":"imex-dev","storageBucket":"imex-dev.appspot.com","messagingSenderId":"759548147434","appId":"1:759548147434:web:e8239868a48ceb36700993","measurementId":"G-K5XRBVVB4S"}
|
VITE_APP_FIREBASE_CONFIG={"apiKey":"AIzaSyDPLT8GiDHDR1R4nI66Qi0BY1aYviDPioc","authDomain":"imex-dev.firebaseapp.com","databaseURL":"https://imex-dev.firebaseio.com","projectId":"imex-dev","storageBucket":"imex-dev.appspot.com","messagingSenderId":"759548147434","appId":"1:759548147434:web:e8239868a48ceb36700993","measurementId":"G-K5XRBVVB4S"}
|
||||||
VITE_APP_CLOUDINARY_ENDPOINT_API=https://api.cloudinary.com/v1_1/io-test
|
VITE_APP_CLOUDINARY_ENDPOINT_API=https://api.cloudinary.com/v1_1/io-test
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
VITE_APP_GRAPHQL_ENDPOINT=https://db.dev.imex.online/v1/graphql
|
VITE_APP_GRAPHQL_ENDPOINT=https://db.dev.bodyshop.app/v1/graphql
|
||||||
VITE_APP_GRAPHQL_ENDPOINT_WS=wss://db.dev.imex.online/v1/graphql
|
VITE_APP_GRAPHQL_ENDPOINT_WS=wss://db.dev.bodyshop.app/v1/graphql
|
||||||
VITE_APP_GA_CODE=231099835
|
VITE_APP_GA_CODE=231099835
|
||||||
VITE_APP_FIREBASE_CONFIG={"apiKey":"AIzaSyDPLT8GiDHDR1R4nI66Qi0BY1aYviDPioc","authDomain":"imex-dev.firebaseapp.com","databaseURL":"https://imex-dev.firebaseio.com","projectId":"imex-dev","storageBucket":"imex-dev.appspot.com","messagingSenderId":"759548147434","appId":"1:759548147434:web:e8239868a48ceb36700993","measurementId":"G-K5XRBVVB4S"}
|
VITE_APP_FIREBASE_CONFIG={"apiKey":"AIzaSyDPLT8GiDHDR1R4nI66Qi0BY1aYviDPioc","authDomain":"imex-dev.firebaseapp.com","databaseURL":"https://imex-dev.firebaseio.com","projectId":"imex-dev","storageBucket":"imex-dev.appspot.com","messagingSenderId":"759548147434","appId":"1:759548147434:web:e8239868a48ceb36700993","measurementId":"G-K5XRBVVB4S"}
|
||||||
VITE_APP_CLOUDINARY_ENDPOINT_API=https://api.cloudinary.com/v1_1/io-test
|
VITE_APP_CLOUDINARY_ENDPOINT_API=https://api.cloudinary.com/v1_1/io-test
|
||||||
|
|||||||
@@ -1,8 +1,7 @@
|
|||||||
VITE_APP_GRAPHQL_ENDPOINT=https://db.dev.imex.online/v1/graphql
|
VITE_APP_GRAPHQL_ENDPOINT=https://db.dev.bodyshop.app/v1/graphql
|
||||||
VITE_APP_GRAPHQL_ENDPOINT_WS=wss://db.dev.imex.online/v1/graphql
|
VITE_APP_GRAPHQL_ENDPOINT_WS=wss://db.dev.bodyshop.app/v1/graphql
|
||||||
VITE_APP_GA_CODE=231099835
|
VITE_APP_GA_CODE=231099835
|
||||||
# VITE_APP_FIREBASE_CONFIG={ "apiKey": "AIzaSyAuLQR9SV5LsVxjU8wh9hvFLdhcAHU6cxE", "authDomain": "rome-prod-1.firebaseapp.com", "projectId": "rome-prod-1", "storageBucket": "rome-prod-1.appspot.com", "messagingSenderId": "147786367145", "appId": "1:147786367145:web:9d4cba68071c3f29a8a9b8", "measurementId": "G-G8Z9DRHTZS"}
|
VITE_APP_FIREBASE_CONFIG={ "apiKey": "AIzaSyAuLQR9SV5LsVxjU8wh9hvFLdhcAHU6cxE", "authDomain": "rome-prod-1.firebaseapp.com", "projectId": "rome-prod-1", "storageBucket": "rome-prod-1.appspot.com", "messagingSenderId": "147786367145", "appId": "1:147786367145:web:9d4cba68071c3f29a8a9b8", "measurementId": "G-G8Z9DRHTZS"}
|
||||||
VITE_APP_FIREBASE_CONFIG={"apiKey":"AIzaSyDPLT8GiDHDR1R4nI66Qi0BY1aYviDPioc","authDomain":"imex-dev.firebaseapp.com","databaseURL":"https://imex-dev.firebaseio.com","projectId":"imex-dev","storageBucket":"imex-dev.appspot.com","messagingSenderId":"759548147434","appId":"1:759548147434:web:e8239868a48ceb36700993","measurementId":"G-K5XRBVVB4S"}
|
|
||||||
VITE_APP_CLOUDINARY_ENDPOINT_API=https://api.cloudinary.com/v1_1/io-test
|
VITE_APP_CLOUDINARY_ENDPOINT_API=https://api.cloudinary.com/v1_1/io-test
|
||||||
VITE_APP_CLOUDINARY_ENDPOINT=https://res.cloudinary.com/io-test
|
VITE_APP_CLOUDINARY_ENDPOINT=https://res.cloudinary.com/io-test
|
||||||
VITE_APP_CLOUDINARY_API_KEY=957865933348715
|
VITE_APP_CLOUDINARY_API_KEY=957865933348715
|
||||||
|
|||||||
@@ -2,9 +2,6 @@
|
|||||||
<html lang="en">
|
<html lang="en">
|
||||||
<head>
|
<head>
|
||||||
<meta charset="utf-8"/>
|
<meta charset="utf-8"/>
|
||||||
<meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate">
|
|
||||||
<meta http-equiv="Pragma" content="no-cache">
|
|
||||||
<meta http-equiv="Expires" content="0">
|
|
||||||
<% if (env.VITE_APP_INSTANCE === 'IMEX') { %>
|
<% if (env.VITE_APP_INSTANCE === 'IMEX') { %>
|
||||||
<link rel="icon" href="/favicon.png"/>
|
<link rel="icon" href="/favicon.png"/>
|
||||||
<% } %> <% if (env.VITE_APP_INSTANCE === 'ROME') { %>
|
<% } %> <% if (env.VITE_APP_INSTANCE === 'ROME') { %>
|
||||||
|
|||||||
894
client/package-lock.json
generated
894
client/package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@@ -9,35 +9,35 @@
|
|||||||
"proxy": "http://localhost:4000",
|
"proxy": "http://localhost:4000",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@ant-design/pro-layout": "^7.19.12",
|
"@ant-design/pro-layout": "^7.19.12",
|
||||||
"@apollo/client": "^3.11.4",
|
"@apollo/client": "^3.11.6",
|
||||||
"@emotion/is-prop-valid": "^1.3.0",
|
"@emotion/is-prop-valid": "^1.3.0",
|
||||||
"@fingerprintjs/fingerprintjs": "^4.4.3",
|
"@fingerprintjs/fingerprintjs": "^4.4.3",
|
||||||
"@jsreport/browser-client": "^3.1.0",
|
"@jsreport/browser-client": "^3.1.0",
|
||||||
"@reduxjs/toolkit": "^2.2.7",
|
"@reduxjs/toolkit": "^2.2.7",
|
||||||
"@sentry/cli": "^2.33.1",
|
"@sentry/cli": "^2.34.1",
|
||||||
"@sentry/react": "^7.114.0",
|
"@sentry/react": "^7.114.0",
|
||||||
"@splitsoftware/splitio-react": "^1.12.1",
|
"@splitsoftware/splitio-react": "^1.12.1",
|
||||||
"@tanem/react-nprogress": "^5.0.51",
|
"@tanem/react-nprogress": "^5.0.51",
|
||||||
"@vitejs/plugin-react": "^4.3.1",
|
"@vitejs/plugin-react": "^4.3.1",
|
||||||
"antd": "^5.20.1",
|
"antd": "^5.20.5",
|
||||||
"apollo-link-logger": "^2.0.1",
|
"apollo-link-logger": "^2.0.1",
|
||||||
"apollo-link-sentry": "^3.3.0",
|
"apollo-link-sentry": "^3.3.0",
|
||||||
"autosize": "^6.0.1",
|
"autosize": "^6.0.1",
|
||||||
"axios": "^1.7.4",
|
"axios": "^1.7.7",
|
||||||
"classnames": "^2.5.1",
|
"classnames": "^2.5.1",
|
||||||
"css-box-model": "^1.2.1",
|
"css-box-model": "^1.2.1",
|
||||||
"dayjs": "^1.11.12",
|
"dayjs": "^1.11.13",
|
||||||
"dayjs-business-days2": "^1.2.2",
|
"dayjs-business-days2": "^1.2.2",
|
||||||
"dinero.js": "^1.9.1",
|
"dinero.js": "^1.9.1",
|
||||||
"dotenv": "^16.4.5",
|
"dotenv": "^16.4.5",
|
||||||
"env-cmd": "^10.1.0",
|
"env-cmd": "^10.1.0",
|
||||||
"exifr": "^7.1.3",
|
"exifr": "^7.1.3",
|
||||||
"firebase": "^10.12.5",
|
"firebase": "^10.13.1",
|
||||||
"graphql": "^16.9.0",
|
"graphql": "^16.9.0",
|
||||||
"i18next": "^23.12.3",
|
"i18next": "^23.14.0",
|
||||||
"i18next-browser-languagedetector": "^8.0.0",
|
"i18next-browser-languagedetector": "^8.0.0",
|
||||||
"immutability-helper": "^3.1.1",
|
"immutability-helper": "^3.1.1",
|
||||||
"libphonenumber-js": "^1.11.5",
|
"libphonenumber-js": "^1.11.7",
|
||||||
"logrocket": "^8.1.2",
|
"logrocket": "^8.1.2",
|
||||||
"markerjs2": "^2.32.1",
|
"markerjs2": "^2.32.1",
|
||||||
"memoize-one": "^6.0.0",
|
"memoize-one": "^6.0.0",
|
||||||
@@ -47,7 +47,7 @@
|
|||||||
"query-string": "^9.1.0",
|
"query-string": "^9.1.0",
|
||||||
"raf-schd": "^4.0.3",
|
"raf-schd": "^4.0.3",
|
||||||
"react": "^18.3.1",
|
"react": "^18.3.1",
|
||||||
"react-big-calendar": "^1.13.2",
|
"react-big-calendar": "^1.13.4",
|
||||||
"react-color": "^2.19.3",
|
"react-color": "^2.19.3",
|
||||||
"react-cookie": "^7.2.0",
|
"react-cookie": "^7.2.0",
|
||||||
"react-dom": "^18.3.1",
|
"react-dom": "^18.3.1",
|
||||||
@@ -58,15 +58,15 @@
|
|||||||
"react-icons": "^5.3.0",
|
"react-icons": "^5.3.0",
|
||||||
"react-image-lightbox": "^5.1.4",
|
"react-image-lightbox": "^5.1.4",
|
||||||
"react-markdown": "^9.0.1",
|
"react-markdown": "^9.0.1",
|
||||||
"react-number-format": "^5.4.0",
|
"react-number-format": "^5.4.1",
|
||||||
"react-popopo": "^2.1.9",
|
"react-popopo": "^2.1.9",
|
||||||
"react-product-fruits": "^2.2.6",
|
"react-product-fruits": "^2.2.61",
|
||||||
"react-redux": "^9.1.2",
|
"react-redux": "^9.1.2",
|
||||||
"react-resizable": "^3.0.5",
|
"react-resizable": "^3.0.5",
|
||||||
"react-router-dom": "^6.26.0",
|
"react-router-dom": "^6.26.1",
|
||||||
"react-sticky": "^6.0.3",
|
"react-sticky": "^6.0.3",
|
||||||
"react-virtualized": "^9.22.5",
|
"react-virtualized": "^9.22.5",
|
||||||
"react-virtuoso": "^4.10.1",
|
"react-virtuoso": "^4.10.2",
|
||||||
"recharts": "^2.12.7",
|
"recharts": "^2.12.7",
|
||||||
"redux": "^5.0.1",
|
"redux": "^5.0.1",
|
||||||
"redux-actions": "^3.0.3",
|
"redux-actions": "^3.0.3",
|
||||||
@@ -74,9 +74,9 @@
|
|||||||
"redux-saga": "^1.3.0",
|
"redux-saga": "^1.3.0",
|
||||||
"redux-state-sync": "^3.1.4",
|
"redux-state-sync": "^3.1.4",
|
||||||
"reselect": "^5.1.1",
|
"reselect": "^5.1.1",
|
||||||
"sass": "^1.77.8",
|
"sass": "^1.78.0",
|
||||||
"socket.io-client": "^4.7.5",
|
"socket.io-client": "^4.7.5",
|
||||||
"styled-components": "^6.1.12",
|
"styled-components": "^6.1.13",
|
||||||
"subscriptions-transport-ws": "^0.11.0",
|
"subscriptions-transport-ws": "^0.11.0",
|
||||||
"use-memo-one": "^1.1.3",
|
"use-memo-one": "^1.1.3",
|
||||||
"userpilot": "^1.3.5",
|
"userpilot": "^1.3.5",
|
||||||
@@ -130,15 +130,15 @@
|
|||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@babel/plugin-proposal-private-property-in-object": "^7.21.11",
|
"@babel/plugin-proposal-private-property-in-object": "^7.21.11",
|
||||||
"@babel/preset-react": "^7.24.7",
|
"@babel/preset-react": "^7.24.7",
|
||||||
"@dotenvx/dotenvx": "^1.7.0",
|
"@dotenvx/dotenvx": "^1.13.3",
|
||||||
"@emotion/babel-plugin": "^11.12.0",
|
"@emotion/babel-plugin": "^11.12.0",
|
||||||
"@emotion/react": "^11.13.0",
|
"@emotion/react": "^11.13.3",
|
||||||
"@sentry/webpack-plugin": "^2.22.2",
|
"@sentry/webpack-plugin": "^2.22.4",
|
||||||
"@testing-library/cypress": "^10.0.2",
|
"@testing-library/cypress": "^10.0.2",
|
||||||
"browserslist": "^4.23.3",
|
"browserslist": "^4.23.3",
|
||||||
"browserslist-to-esbuild": "^2.1.1",
|
"browserslist-to-esbuild": "^2.1.1",
|
||||||
"cross-env": "^7.0.3",
|
"cross-env": "^7.0.3",
|
||||||
"cypress": "^13.13.3",
|
"cypress": "^13.14.1",
|
||||||
"eslint": "^8.57.0",
|
"eslint": "^8.57.0",
|
||||||
"eslint-config-react-app": "^7.0.1",
|
"eslint-config-react-app": "^7.0.1",
|
||||||
"eslint-plugin-cypress": "^2.15.1",
|
"eslint-plugin-cypress": "^2.15.1",
|
||||||
@@ -147,13 +147,12 @@
|
|||||||
"react-error-overlay": "6.0.11",
|
"react-error-overlay": "6.0.11",
|
||||||
"redux-logger": "^3.0.6",
|
"redux-logger": "^3.0.6",
|
||||||
"source-map-explorer": "^2.5.3",
|
"source-map-explorer": "^2.5.3",
|
||||||
"vite": "^5.4.0",
|
"vite": "^5.4.3",
|
||||||
"vite-plugin-babel": "^1.2.0",
|
"vite-plugin-babel": "^1.2.0",
|
||||||
"vite-plugin-eslint": "^1.8.1",
|
"vite-plugin-eslint": "^1.8.1",
|
||||||
"vite-plugin-legacy": "^2.1.0",
|
"vite-plugin-legacy": "^2.1.0",
|
||||||
"vite-plugin-node-polyfills": "^0.22.0",
|
"vite-plugin-node-polyfills": "^0.22.0",
|
||||||
"vite-plugin-pwa": "^0.20.1",
|
"vite-plugin-pwa": "^0.20.4",
|
||||||
"vite-plugin-style-import": "^2.0.0",
|
"vite-plugin-style-import": "^2.0.0"
|
||||||
"workbox-window": "^7.1.0"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -18,6 +18,7 @@ import { checkUserSession } from "../redux/user/user.actions";
|
|||||||
import { selectBodyshop, selectCurrentEula, selectCurrentUser } from "../redux/user/user.selectors";
|
import { selectBodyshop, selectCurrentEula, selectCurrentUser } from "../redux/user/user.selectors";
|
||||||
import PrivateRoute from "../components/PrivateRoute";
|
import PrivateRoute from "../components/PrivateRoute";
|
||||||
import "./App.styles.scss";
|
import "./App.styles.scss";
|
||||||
|
import handleBeta from "../utils/handleBeta";
|
||||||
import Eula from "../components/eula/eula.component";
|
import Eula from "../components/eula/eula.component";
|
||||||
import InstanceRenderMgr from "../utils/instanceRenderMgr";
|
import InstanceRenderMgr from "../utils/instanceRenderMgr";
|
||||||
import ProductFruitsWrapper from "./ProductFruitsWrapper.jsx";
|
import ProductFruitsWrapper from "./ProductFruitsWrapper.jsx";
|
||||||
@@ -107,6 +108,8 @@ export function App({ bodyshop, checkUserSession, currentUser, online, setOnline
|
|||||||
return <LoadingSpinner message={t("general.labels.loggingin")} />;
|
return <LoadingSpinner message={t("general.labels.loggingin")} />;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
handleBeta();
|
||||||
|
|
||||||
if (!online) {
|
if (!online) {
|
||||||
return (
|
return (
|
||||||
<Result
|
<Result
|
||||||
|
|||||||
@@ -13,6 +13,7 @@ import Icon, {
|
|||||||
FileFilled,
|
FileFilled,
|
||||||
HomeFilled,
|
HomeFilled,
|
||||||
ImportOutlined,
|
ImportOutlined,
|
||||||
|
InfoCircleOutlined,
|
||||||
LineChartOutlined,
|
LineChartOutlined,
|
||||||
PaperClipOutlined,
|
PaperClipOutlined,
|
||||||
PhoneOutlined,
|
PhoneOutlined,
|
||||||
@@ -26,8 +27,8 @@ import Icon, {
|
|||||||
UserOutlined
|
UserOutlined
|
||||||
} from "@ant-design/icons";
|
} from "@ant-design/icons";
|
||||||
import { useSplitTreatments } from "@splitsoftware/splitio-react";
|
import { useSplitTreatments } from "@splitsoftware/splitio-react";
|
||||||
import { Layout, Menu } from "antd";
|
import { Layout, Menu, Switch, Tooltip } from "antd";
|
||||||
import React from "react";
|
import React, { useEffect, useState } from "react";
|
||||||
import { useTranslation } from "react-i18next";
|
import { useTranslation } from "react-i18next";
|
||||||
import { BsKanban } from "react-icons/bs";
|
import { BsKanban } from "react-icons/bs";
|
||||||
import { FaCalendarAlt, FaCarCrash, FaCreditCard, FaFileInvoiceDollar, FaTasks } from "react-icons/fa";
|
import { FaCalendarAlt, FaCarCrash, FaCreditCard, FaFileInvoiceDollar, FaTasks } from "react-icons/fa";
|
||||||
@@ -42,6 +43,7 @@ import { selectRecentItems, selectSelectedHeader } from "../../redux/application
|
|||||||
import { setModalContext } from "../../redux/modals/modals.actions";
|
import { setModalContext } from "../../redux/modals/modals.actions";
|
||||||
import { signOutStart } from "../../redux/user/user.actions";
|
import { signOutStart } from "../../redux/user/user.actions";
|
||||||
import { selectBodyshop, selectCurrentUser } from "../../redux/user/user.selectors";
|
import { selectBodyshop, selectCurrentUser } from "../../redux/user/user.selectors";
|
||||||
|
import { checkBeta, handleBeta, setBeta } from "../../utils/handleBeta";
|
||||||
import InstanceRenderManager from "../../utils/instanceRenderMgr";
|
import InstanceRenderManager from "../../utils/instanceRenderMgr";
|
||||||
import { HasFeatureAccess } from "../feature-wrapper/feature-wrapper.component";
|
import { HasFeatureAccess } from "../feature-wrapper/feature-wrapper.component";
|
||||||
|
|
||||||
@@ -113,21 +115,19 @@ function Header({
|
|||||||
names: ["ImEXPay", "DmsAp", "Simple_Inventory"],
|
names: ["ImEXPay", "DmsAp", "Simple_Inventory"],
|
||||||
splitKey: bodyshop && bodyshop.imexshopid
|
splitKey: bodyshop && bodyshop.imexshopid
|
||||||
});
|
});
|
||||||
|
const [betaSwitch, setBetaSwitch] = useState(false);
|
||||||
const { t } = useTranslation();
|
const { t } = useTranslation();
|
||||||
|
|
||||||
const deleteBetaCookie = () => {
|
useEffect(() => {
|
||||||
const cookieExists = document.cookie.split("; ").some((row) => row.startsWith(`betaSwitchImex=`));
|
const isBeta = checkBeta();
|
||||||
if (cookieExists) {
|
setBetaSwitch(isBeta);
|
||||||
const domain = window.location.hostname.split(".").slice(-2).join(".");
|
}, []);
|
||||||
document.cookie = `betaSwitchImex=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/; domain=.${domain}`;
|
|
||||||
console.log(`betaSwitchImex cookie deleted`);
|
|
||||||
} else {
|
|
||||||
console.log(`betaSwitchImex cookie does not exist`);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
deleteBetaCookie();
|
const betaSwitchChange = (checked) => {
|
||||||
|
setBeta(checked);
|
||||||
|
setBetaSwitch(checked);
|
||||||
|
handleBeta();
|
||||||
|
};
|
||||||
|
|
||||||
const accountingChildren = [];
|
const accountingChildren = [];
|
||||||
|
|
||||||
@@ -695,6 +695,31 @@ function Header({
|
|||||||
}
|
}
|
||||||
];
|
];
|
||||||
|
|
||||||
|
InstanceRenderManager({
|
||||||
|
executeFunction: true,
|
||||||
|
args: [],
|
||||||
|
imex: () => {
|
||||||
|
menuItems.push({
|
||||||
|
key: "beta-switch",
|
||||||
|
id: "header-beta-switch",
|
||||||
|
style: { marginLeft: "auto" },
|
||||||
|
label: (
|
||||||
|
<Tooltip
|
||||||
|
title={`A more modern ${InstanceRenderManager({
|
||||||
|
imex: t("titles.imexonline"),
|
||||||
|
rome: t("titles.romeonline"),
|
||||||
|
promanager: t("titles.promanager")
|
||||||
|
})} is ready for you to try! You can switch back at any time.`}
|
||||||
|
>
|
||||||
|
<InfoCircleOutlined />
|
||||||
|
<span style={{ marginRight: 8 }}>Try the new app</span>
|
||||||
|
<Switch checked={betaSwitch} onChange={betaSwitchChange} />
|
||||||
|
</Tooltip>
|
||||||
|
)
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Layout.Header>
|
<Layout.Header>
|
||||||
<Menu
|
<Menu
|
||||||
|
|||||||
@@ -6,11 +6,11 @@ import {
|
|||||||
PauseCircleOutlined
|
PauseCircleOutlined
|
||||||
} from "@ant-design/icons";
|
} from "@ant-design/icons";
|
||||||
import { Card, Col, Row, Space, Tooltip } from "antd";
|
import { Card, Col, Row, Space, Tooltip } from "antd";
|
||||||
import Dinero from "dinero.js";
|
|
||||||
import React, { useMemo } from "react";
|
import React, { useMemo } from "react";
|
||||||
import { useTranslation } from "react-i18next";
|
import { useTranslation } from "react-i18next";
|
||||||
import { Link } from "react-router-dom";
|
import { Link } from "react-router-dom";
|
||||||
import { DateTimeFormatter } from "../../utils/DateFormatter";
|
import { DateTimeFormatter } from "../../utils/DateFormatter";
|
||||||
|
import Dinero from "dinero.js";
|
||||||
|
|
||||||
import ProductionAlert from "../production-list-columns/production-list-columns.alert.component";
|
import ProductionAlert from "../production-list-columns/production-list-columns.alert.component";
|
||||||
import ProductionListColumnProductionNote from "../production-list-columns/production-list-columns.productionnote.component";
|
import ProductionListColumnProductionNote from "../production-list-columns/production-list-columns.productionnote.component";
|
||||||
@@ -18,8 +18,8 @@ import ProductionSubletsManageComponent from "../production-sublets-manage/produ
|
|||||||
|
|
||||||
import dayjs from "../../utils/day";
|
import dayjs from "../../utils/day";
|
||||||
|
|
||||||
import JobPartsQueueCount from "../job-parts-queue-count/job-parts-queue-count.component";
|
|
||||||
import OwnerNameDisplay from "../owner-name-display/owner-name-display.component";
|
import OwnerNameDisplay from "../owner-name-display/owner-name-display.component";
|
||||||
|
import JobPartsQueueCount from "../job-parts-queue-count/job-parts-queue-count.component";
|
||||||
|
|
||||||
const cardColor = (ssbuckets, totalHrs) => {
|
const cardColor = (ssbuckets, totalHrs) => {
|
||||||
const bucket = ssbuckets.find((bucket) => bucket.gte <= totalHrs && (!bucket.lt || bucket.lt > totalHrs));
|
const bucket = ssbuckets.find((bucket) => bucket.gte <= totalHrs && (!bucket.lt || bucket.lt > totalHrs));
|
||||||
@@ -213,13 +213,21 @@ const EstimatorToolTip = ({ metadata, cardSettings }) => {
|
|||||||
};
|
};
|
||||||
|
|
||||||
const SubtotalTooltip = ({ metadata, cardSettings, t }) => {
|
const SubtotalTooltip = ({ metadata, cardSettings, t }) => {
|
||||||
const dineroAmount = Dinero(metadata?.job_totals?.totals?.subtotal ?? Dinero()).toFormat();
|
const amount = metadata?.job_totals?.totals?.subtotal?.amount;
|
||||||
|
const dineroAmount = amount ? Dinero({ amount: parseInt(amount * 100) }).toFormat("0,0.00") : null;
|
||||||
|
|
||||||
return (
|
return (
|
||||||
cardSettings?.subtotal && (
|
cardSettings?.subtotal && (
|
||||||
<Col span={cardSettings.compact ? 24 : 12}>
|
<Col span={cardSettings.compact ? 24 : 12}>
|
||||||
<EllipsesToolTip title={`${dineroAmount}`} kiosk={cardSettings.kiosk}>
|
<EllipsesToolTip
|
||||||
{dineroAmount}
|
title={!!amount ? `${t("production.statistics.currency_symbol")}${dineroAmount}` : null}
|
||||||
|
kiosk={cardSettings.kiosk}
|
||||||
|
>
|
||||||
|
{!!amount ? (
|
||||||
|
<span>{`${t("production.statistics.currency_symbol")}${dineroAmount}`}</span>
|
||||||
|
) : (
|
||||||
|
<span> </span>
|
||||||
|
)}
|
||||||
</EllipsesToolTip>
|
</EllipsesToolTip>
|
||||||
</Col>
|
</Col>
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -3,7 +3,6 @@ import { Card, Statistic } from "antd";
|
|||||||
import { useTranslation } from "react-i18next";
|
import { useTranslation } from "react-i18next";
|
||||||
import PropTypes from "prop-types";
|
import PropTypes from "prop-types";
|
||||||
import { defaultKanbanSettings, statisticsItems } from "./settings/defaultKanbanSettings.js";
|
import { defaultKanbanSettings, statisticsItems } from "./settings/defaultKanbanSettings.js";
|
||||||
import Dinero from "dinero.js";
|
|
||||||
|
|
||||||
export const StatisticType = {
|
export const StatisticType = {
|
||||||
HOURS: "hours",
|
HOURS: "hours",
|
||||||
@@ -33,21 +32,7 @@ const ProductionStatistics = ({ data, cardSettings, reducerData }) => {
|
|||||||
};
|
};
|
||||||
|
|
||||||
const calculateTotalAmount = (items, key) => {
|
const calculateTotalAmount = (items, key) => {
|
||||||
return items.reduce((acc, item) => acc.add(Dinero(item[key]?.totals?.subtotal ?? Dinero())), Dinero({ amount: 0 }));
|
return items.reduce((acc, item) => acc + (item[key]?.totals?.subtotal?.amount || 0), 0);
|
||||||
};
|
|
||||||
|
|
||||||
const calculateReducerTotalAmount = (lanes, key) => {
|
|
||||||
return lanes.reduce(
|
|
||||||
(acc, lane) => {
|
|
||||||
return acc.add(
|
|
||||||
lane.cards.reduce(
|
|
||||||
(laneAcc, card) => laneAcc.add(Dinero(card.metadata[key]?.totals?.subtotal ?? Dinero())),
|
|
||||||
Dinero({ amount: 0 })
|
|
||||||
)
|
|
||||||
);
|
|
||||||
},
|
|
||||||
Dinero({ amount: 0 })
|
|
||||||
);
|
|
||||||
};
|
};
|
||||||
|
|
||||||
const calculateReducerTotal = (lanes, key, subKey) => {
|
const calculateReducerTotal = (lanes, key, subKey) => {
|
||||||
@@ -58,6 +43,14 @@ const ProductionStatistics = ({ data, cardSettings, reducerData }) => {
|
|||||||
}, 0);
|
}, 0);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const calculateReducerTotalAmount = (lanes, key) => {
|
||||||
|
return lanes.reduce((acc, lane) => {
|
||||||
|
return (
|
||||||
|
acc + lane.cards.reduce((laneAcc, card) => laneAcc + (card.metadata[key]?.totals?.subtotal?.amount || 0), 0)
|
||||||
|
);
|
||||||
|
}, 0);
|
||||||
|
};
|
||||||
|
|
||||||
const formatValue = (value, type) => {
|
const formatValue = (value, type) => {
|
||||||
if (type === StatisticType.JOBS) {
|
if (type === StatisticType.JOBS) {
|
||||||
return value.toFixed(0);
|
return value.toFixed(0);
|
||||||
@@ -94,15 +87,9 @@ const ProductionStatistics = ({ data, cardSettings, reducerData }) => {
|
|||||||
const totalAmountInProduction = useMemo(() => {
|
const totalAmountInProduction = useMemo(() => {
|
||||||
if (!cardSettings.totalAmountInProduction) return null;
|
if (!cardSettings.totalAmountInProduction) return null;
|
||||||
const total = calculateTotalAmount(data, "job_totals");
|
const total = calculateTotalAmount(data, "job_totals");
|
||||||
return total.toFormat("$0,0.00");
|
return parseFloat(total.toFixed(2));
|
||||||
}, [data, cardSettings.totalAmountInProduction]);
|
}, [data, cardSettings.totalAmountInProduction]);
|
||||||
|
|
||||||
const totalAmountOnBoard = useMemo(() => {
|
|
||||||
if (!reducerData || !cardSettings.totalAmountOnBoard) return null;
|
|
||||||
const total = calculateReducerTotalAmount(reducerData.lanes, "job_totals");
|
|
||||||
return total.toFormat("$0,0.00");
|
|
||||||
}, [reducerData, cardSettings.totalAmountOnBoard]);
|
|
||||||
|
|
||||||
const totalHrsOnBoard = useMemo(() => {
|
const totalHrsOnBoard = useMemo(() => {
|
||||||
if (!reducerData || !cardSettings.totalHrsOnBoard) return null;
|
if (!reducerData || !cardSettings.totalHrsOnBoard) return null;
|
||||||
const total =
|
const total =
|
||||||
@@ -131,6 +118,12 @@ const ProductionStatistics = ({ data, cardSettings, reducerData }) => {
|
|||||||
[reducerData, cardSettings.jobsOnBoard]
|
[reducerData, cardSettings.jobsOnBoard]
|
||||||
);
|
);
|
||||||
|
|
||||||
|
const totalAmountOnBoard = useMemo(() => {
|
||||||
|
if (!reducerData || !cardSettings.totalAmountOnBoard) return null;
|
||||||
|
const total = calculateReducerTotalAmount(reducerData.lanes, "job_totals");
|
||||||
|
return parseFloat(total.toFixed(2));
|
||||||
|
}, [reducerData, cardSettings.totalAmountOnBoard]);
|
||||||
|
|
||||||
const tasksInProduction = useMemo(() => {
|
const tasksInProduction = useMemo(() => {
|
||||||
if (!data || !cardSettings.tasksInProduction) return null;
|
if (!data || !cardSettings.tasksInProduction) return null;
|
||||||
return data.reduce((acc, item) => acc + (item.tasks_aggregate?.aggregate?.count || 0), 0);
|
return data.reduce((acc, item) => acc + (item.tasks_aggregate?.aggregate?.count || 0), 0);
|
||||||
@@ -198,6 +191,7 @@ const ProductionStatistics = ({ data, cardSettings, reducerData }) => {
|
|||||||
<Statistic
|
<Statistic
|
||||||
title={t(`production.statistics.${stat.label}`)}
|
title={t(`production.statistics.${stat.label}`)}
|
||||||
value={formatValue(stat.value, stat.type)}
|
value={formatValue(stat.value, stat.type)}
|
||||||
|
prefix={stat.type === StatisticType.AMOUNT ? t("production.statistics.currency_symbol") : undefined}
|
||||||
suffix={
|
suffix={
|
||||||
stat.type === StatisticType.HOURS
|
stat.type === StatisticType.HOURS
|
||||||
? t("production.statistics.hours")
|
? t("production.statistics.hours")
|
||||||
|
|||||||
@@ -30,226 +30,219 @@ export function ShopInfoRbacComponent({ form, bodyshop }) {
|
|||||||
return (
|
return (
|
||||||
<RbacWrapper action="shop:rbac">
|
<RbacWrapper action="shop:rbac">
|
||||||
<LayoutFormRow>
|
<LayoutFormRow>
|
||||||
{...HasFeatureAccess({ featureName: "export", bodyshop })
|
{...HasFeatureAccess({ featureName: "export", bodyshop }) ? [
|
||||||
? [
|
<Form.Item
|
||||||
<Form.Item
|
label={t("bodyshop.fields.rbac.accounting.exportlog")}
|
||||||
label={t("bodyshop.fields.rbac.accounting.exportlog")}
|
rules={[
|
||||||
rules={[
|
{
|
||||||
{
|
required: true
|
||||||
required: true
|
//message: t("general.validation.required"),
|
||||||
//message: t("general.validation.required"),
|
}
|
||||||
}
|
]}
|
||||||
]}
|
name={["md_rbac", "accounting:exportlog"]}
|
||||||
name={["md_rbac", "accounting:exportlog"]}
|
>
|
||||||
>
|
<InputNumber />
|
||||||
<InputNumber />
|
</Form.Item>,
|
||||||
</Form.Item>,
|
<Form.Item
|
||||||
<Form.Item
|
label={t("bodyshop.fields.rbac.accounting.payables")}
|
||||||
label={t("bodyshop.fields.rbac.accounting.payables")}
|
rules={[
|
||||||
rules={[
|
{
|
||||||
{
|
required: true
|
||||||
required: true
|
//message: t("general.validation.required"),
|
||||||
//message: t("general.validation.required"),
|
}
|
||||||
}
|
]}
|
||||||
]}
|
name={["md_rbac", "accounting:payables"]}
|
||||||
name={["md_rbac", "accounting:payables"]}
|
>
|
||||||
>
|
<InputNumber />
|
||||||
<InputNumber />
|
</Form.Item>,
|
||||||
</Form.Item>,
|
<Form.Item
|
||||||
<Form.Item
|
label={t("bodyshop.fields.rbac.accounting.payments")}
|
||||||
label={t("bodyshop.fields.rbac.accounting.payments")}
|
rules={[
|
||||||
rules={[
|
{
|
||||||
{
|
required: true
|
||||||
required: true
|
//message: t("general.validation.required"),
|
||||||
//message: t("general.validation.required"),
|
}
|
||||||
}
|
]}
|
||||||
]}
|
name={["md_rbac", "accounting:payments"]}
|
||||||
name={["md_rbac", "accounting:payments"]}
|
>
|
||||||
>
|
<InputNumber />
|
||||||
<InputNumber />
|
</Form.Item>,
|
||||||
</Form.Item>,
|
<Form.Item
|
||||||
<Form.Item
|
label={t("bodyshop.fields.rbac.accounting.receivables")}
|
||||||
label={t("bodyshop.fields.rbac.accounting.receivables")}
|
rules={[
|
||||||
rules={[
|
{
|
||||||
{
|
required: true
|
||||||
required: true
|
//message: t("general.validation.required"),
|
||||||
//message: t("general.validation.required"),
|
}
|
||||||
}
|
]}
|
||||||
]}
|
name={["md_rbac", "accounting:receivables"]}
|
||||||
name={["md_rbac", "accounting:receivables"]}
|
>
|
||||||
>
|
<InputNumber />
|
||||||
<InputNumber />
|
</Form.Item>
|
||||||
</Form.Item>
|
]:[]}
|
||||||
]
|
{...HasFeatureAccess({ featureName: "bills", bodyshop }) ? [
|
||||||
: []}
|
<Form.Item
|
||||||
{...HasFeatureAccess({ featureName: "bills", bodyshop })
|
label={t("bodyshop.fields.rbac.bills.delete")}
|
||||||
? [
|
rules={[
|
||||||
<Form.Item
|
{
|
||||||
label={t("bodyshop.fields.rbac.bills.delete")}
|
required: true
|
||||||
rules={[
|
//message: t("general.validation.required"),
|
||||||
{
|
}
|
||||||
required: true
|
]}
|
||||||
//message: t("general.validation.required"),
|
name={["md_rbac", "bills:delete"]}
|
||||||
}
|
>
|
||||||
]}
|
<InputNumber />
|
||||||
name={["md_rbac", "bills:delete"]}
|
</Form.Item>,
|
||||||
>
|
<Form.Item
|
||||||
<InputNumber />
|
label={t("bodyshop.fields.rbac.bills.enter")}
|
||||||
</Form.Item>,
|
rules={[
|
||||||
<Form.Item
|
{
|
||||||
label={t("bodyshop.fields.rbac.bills.enter")}
|
required: true
|
||||||
rules={[
|
//message: t("general.validation.required"),
|
||||||
{
|
}
|
||||||
required: true
|
]}
|
||||||
//message: t("general.validation.required"),
|
name={["md_rbac", "bills:enter"]}
|
||||||
}
|
>
|
||||||
]}
|
<InputNumber />
|
||||||
name={["md_rbac", "bills:enter"]}
|
</Form.Item>,
|
||||||
>
|
<Form.Item
|
||||||
<InputNumber />
|
label={t("bodyshop.fields.rbac.bills.list")}
|
||||||
</Form.Item>,
|
rules={[
|
||||||
<Form.Item
|
{
|
||||||
label={t("bodyshop.fields.rbac.bills.list")}
|
required: true
|
||||||
rules={[
|
//message: t("general.validation.required"),
|
||||||
{
|
}
|
||||||
required: true
|
]}
|
||||||
//message: t("general.validation.required"),
|
name={["md_rbac", "bills:list"]}
|
||||||
}
|
>
|
||||||
]}
|
<InputNumber />
|
||||||
name={["md_rbac", "bills:list"]}
|
</Form.Item>,
|
||||||
>
|
<Form.Item
|
||||||
<InputNumber />
|
label={t("bodyshop.fields.rbac.bills.reexport")}
|
||||||
</Form.Item>,
|
rules={[
|
||||||
<Form.Item
|
{
|
||||||
label={t("bodyshop.fields.rbac.bills.reexport")}
|
required: true
|
||||||
rules={[
|
//message: t("general.validation.required"),
|
||||||
{
|
}
|
||||||
required: true
|
]}
|
||||||
//message: t("general.validation.required"),
|
name={["md_rbac", "bills:reexport"]}
|
||||||
}
|
>
|
||||||
]}
|
<InputNumber />
|
||||||
name={["md_rbac", "bills:reexport"]}
|
</Form.Item>,
|
||||||
>
|
<Form.Item
|
||||||
<InputNumber />
|
label={t("bodyshop.fields.rbac.bills.view")}
|
||||||
</Form.Item>,
|
rules={[
|
||||||
<Form.Item
|
{
|
||||||
label={t("bodyshop.fields.rbac.bills.view")}
|
required: true
|
||||||
rules={[
|
//message: t("general.validation.required"),
|
||||||
{
|
}
|
||||||
required: true
|
]}
|
||||||
//message: t("general.validation.required"),
|
name={["md_rbac", "bills:view"]}
|
||||||
}
|
>
|
||||||
]}
|
<InputNumber />
|
||||||
name={["md_rbac", "bills:view"]}
|
</Form.Item>
|
||||||
>
|
]:[]}
|
||||||
<InputNumber />
|
|
||||||
</Form.Item>
|
{...HasFeatureAccess({ featureName: "courtesycars", bodyshop }) ? [
|
||||||
]
|
<Form.Item
|
||||||
: []}
|
label={t("bodyshop.fields.rbac.contracts.create")}
|
||||||
{...HasFeatureAccess({ featureName: "courtesycars", bodyshop })
|
rules={[
|
||||||
? [
|
{
|
||||||
<Form.Item
|
required: true
|
||||||
label={t("bodyshop.fields.rbac.contracts.create")}
|
//message: t("general.validation.required"),
|
||||||
rules={[
|
}
|
||||||
{
|
]}
|
||||||
required: true
|
name={["md_rbac", "contracts:create"]}
|
||||||
//message: t("general.validation.required"),
|
>
|
||||||
}
|
<InputNumber />
|
||||||
]}
|
</Form.Item>,
|
||||||
name={["md_rbac", "contracts:create"]}
|
<Form.Item
|
||||||
>
|
label={t("bodyshop.fields.rbac.contracts.detail")}
|
||||||
<InputNumber />
|
rules={[
|
||||||
</Form.Item>,
|
{
|
||||||
<Form.Item
|
required: true
|
||||||
label={t("bodyshop.fields.rbac.contracts.detail")}
|
//message: t("general.validation.required"),
|
||||||
rules={[
|
}
|
||||||
{
|
]}
|
||||||
required: true
|
name={["md_rbac", "contracts:detail"]}
|
||||||
//message: t("general.validation.required"),
|
>
|
||||||
}
|
<InputNumber />
|
||||||
]}
|
</Form.Item>,
|
||||||
name={["md_rbac", "contracts:detail"]}
|
<Form.Item
|
||||||
>
|
label={t("bodyshop.fields.rbac.contracts.list")}
|
||||||
<InputNumber />
|
rules={[
|
||||||
</Form.Item>,
|
{
|
||||||
<Form.Item
|
required: true
|
||||||
label={t("bodyshop.fields.rbac.contracts.list")}
|
//message: t("general.validation.required"),
|
||||||
rules={[
|
}
|
||||||
{
|
]}
|
||||||
required: true
|
name={["md_rbac", "contracts:list"]}
|
||||||
//message: t("general.validation.required"),
|
>
|
||||||
}
|
<InputNumber />
|
||||||
]}
|
</Form.Item>,
|
||||||
name={["md_rbac", "contracts:list"]}
|
<Form.Item
|
||||||
>
|
label={t("bodyshop.fields.rbac.courtesycar.create")}
|
||||||
<InputNumber />
|
rules={[
|
||||||
</Form.Item>,
|
{
|
||||||
<Form.Item
|
required: true
|
||||||
label={t("bodyshop.fields.rbac.courtesycar.create")}
|
//message: t("general.validation.required"),
|
||||||
rules={[
|
}
|
||||||
{
|
]}
|
||||||
required: true
|
name={["md_rbac", "courtesycar:create"]}
|
||||||
//message: t("general.validation.required"),
|
>
|
||||||
}
|
<InputNumber />
|
||||||
]}
|
</Form.Item>,
|
||||||
name={["md_rbac", "courtesycar:create"]}
|
<Form.Item
|
||||||
>
|
label={t("bodyshop.fields.rbac.courtesycar.detail")}
|
||||||
<InputNumber />
|
rules={[
|
||||||
</Form.Item>,
|
{
|
||||||
<Form.Item
|
required: true
|
||||||
label={t("bodyshop.fields.rbac.courtesycar.detail")}
|
//message: t("general.validation.required"),
|
||||||
rules={[
|
}
|
||||||
{
|
]}
|
||||||
required: true
|
name={["md_rbac", "courtesycar:detail"]}
|
||||||
//message: t("general.validation.required"),
|
>
|
||||||
}
|
<InputNumber />
|
||||||
]}
|
</Form.Item>,
|
||||||
name={["md_rbac", "courtesycar:detail"]}
|
<Form.Item
|
||||||
>
|
label={t("bodyshop.fields.rbac.courtesycar.list")}
|
||||||
<InputNumber />
|
rules={[
|
||||||
</Form.Item>,
|
{
|
||||||
<Form.Item
|
required: true
|
||||||
label={t("bodyshop.fields.rbac.courtesycar.list")}
|
//message: t("general.validation.required"),
|
||||||
rules={[
|
}
|
||||||
{
|
]}
|
||||||
required: true
|
name={["md_rbac", "courtesycar:list"]}
|
||||||
//message: t("general.validation.required"),
|
>
|
||||||
}
|
<InputNumber />
|
||||||
]}
|
</Form.Item>
|
||||||
name={["md_rbac", "courtesycar:list"]}
|
]:[]}
|
||||||
>
|
{...HasFeatureAccess({ featureName: "csi", bodyshop }) ? [
|
||||||
<InputNumber />
|
<Form.Item
|
||||||
</Form.Item>
|
label={t("bodyshop.fields.rbac.csi.export")}
|
||||||
]
|
rules={[
|
||||||
: []}
|
{
|
||||||
{...HasFeatureAccess({ featureName: "csi", bodyshop })
|
required: true
|
||||||
? [
|
//message: t("general.validation.required"),
|
||||||
<Form.Item
|
}
|
||||||
label={t("bodyshop.fields.rbac.csi.export")}
|
]}
|
||||||
rules={[
|
name={["md_rbac", "csi:export"]}
|
||||||
{
|
>
|
||||||
required: true
|
<InputNumber />
|
||||||
//message: t("general.validation.required"),
|
</Form.Item>,
|
||||||
}
|
<Form.Item
|
||||||
]}
|
label={t("bodyshop.fields.rbac.csi.page")}
|
||||||
name={["md_rbac", "csi:export"]}
|
rules={[
|
||||||
>
|
{
|
||||||
<InputNumber />
|
required: true
|
||||||
</Form.Item>,
|
//message: t("general.validation.required"),
|
||||||
<Form.Item
|
}
|
||||||
label={t("bodyshop.fields.rbac.csi.page")}
|
]}
|
||||||
rules={[
|
name={["md_rbac", "csi:page"]}
|
||||||
{
|
>
|
||||||
required: true
|
<InputNumber />
|
||||||
//message: t("general.validation.required"),
|
</Form.Item>
|
||||||
}
|
]:[]}
|
||||||
]}
|
|
||||||
name={["md_rbac", "csi:page"]}
|
|
||||||
>
|
|
||||||
<InputNumber />
|
|
||||||
</Form.Item>
|
|
||||||
]
|
|
||||||
: []}
|
|
||||||
<Form.Item
|
<Form.Item
|
||||||
label={t("bodyshop.fields.rbac.employees.page")}
|
label={t("bodyshop.fields.rbac.employees.page")}
|
||||||
rules={[
|
rules={[
|
||||||
@@ -262,18 +255,6 @@ export function ShopInfoRbacComponent({ form, bodyshop }) {
|
|||||||
>
|
>
|
||||||
<InputNumber />
|
<InputNumber />
|
||||||
</Form.Item>
|
</Form.Item>
|
||||||
<Form.Item
|
|
||||||
label={t("bodyshop.fields.rbac.employee_teams.page")}
|
|
||||||
rules={[
|
|
||||||
{
|
|
||||||
required: true
|
|
||||||
//message: t("general.validation.required"),
|
|
||||||
}
|
|
||||||
]}
|
|
||||||
name={["md_rbac", "employee_teams:page"]}
|
|
||||||
>
|
|
||||||
<InputNumber />
|
|
||||||
</Form.Item>
|
|
||||||
<Form.Item
|
<Form.Item
|
||||||
label={t("bodyshop.fields.rbac.jobs.admin")}
|
label={t("bodyshop.fields.rbac.jobs.admin")}
|
||||||
rules={[
|
rules={[
|
||||||
@@ -454,6 +435,31 @@ export function ShopInfoRbacComponent({ form, bodyshop }) {
|
|||||||
>
|
>
|
||||||
<InputNumber />
|
<InputNumber />
|
||||||
</Form.Item>
|
</Form.Item>
|
||||||
|
<Form.Item
|
||||||
|
label={t("bodyshop.fields.rbac.employees.page")}
|
||||||
|
rules={[
|
||||||
|
{
|
||||||
|
required: true
|
||||||
|
//message: t("general.validation.required"),
|
||||||
|
}
|
||||||
|
]}
|
||||||
|
name={["md_rbac", "employees:page"]}
|
||||||
|
>
|
||||||
|
<InputNumber />
|
||||||
|
</Form.Item>
|
||||||
|
<Form.Item
|
||||||
|
label={t("bodyshop.fields.rbac.employee_teams.page")}
|
||||||
|
rules={[
|
||||||
|
{
|
||||||
|
required: true
|
||||||
|
//message: t("general.validation.required"),
|
||||||
|
}
|
||||||
|
]}
|
||||||
|
name={["md_rbac", "employee_teams:page"]}
|
||||||
|
>
|
||||||
|
<InputNumber />
|
||||||
|
</Form.Item>
|
||||||
|
|
||||||
<Form.Item
|
<Form.Item
|
||||||
label={t("bodyshop.fields.rbac.payments.enter")}
|
label={t("bodyshop.fields.rbac.payments.enter")}
|
||||||
rules={[
|
rules={[
|
||||||
@@ -516,6 +522,7 @@ export function ShopInfoRbacComponent({ form, bodyshop }) {
|
|||||||
<InputNumber />
|
<InputNumber />
|
||||||
</Form.Item>
|
</Form.Item>
|
||||||
)}
|
)}
|
||||||
|
|
||||||
<Form.Item
|
<Form.Item
|
||||||
label={t("bodyshop.fields.rbac.production.list")}
|
label={t("bodyshop.fields.rbac.production.list")}
|
||||||
rules={[
|
rules={[
|
||||||
@@ -554,118 +561,128 @@ export function ShopInfoRbacComponent({ form, bodyshop }) {
|
|||||||
<InputNumber />
|
<InputNumber />
|
||||||
</Form.Item>
|
</Form.Item>
|
||||||
)}
|
)}
|
||||||
{...HasFeatureAccess({ featureName: "timetickets", bodyshop })
|
{...HasFeatureAccess({ featureName: "timetickets", bodyshop }) ? [
|
||||||
? [
|
<Form.Item
|
||||||
<Form.Item
|
label={t("bodyshop.fields.rbac.shiftclock.view")}
|
||||||
label={t("bodyshop.fields.rbac.shiftclock.view")}
|
rules={[
|
||||||
rules={[
|
{
|
||||||
{
|
required: true
|
||||||
required: true
|
//message: t("general.validation.required"),
|
||||||
//message: t("general.validation.required"),
|
}
|
||||||
}
|
]}
|
||||||
]}
|
name={["md_rbac", "shiftclock:view"]}
|
||||||
name={["md_rbac", "shiftclock:view"]}
|
>
|
||||||
>
|
<InputNumber />
|
||||||
<InputNumber />
|
</Form.Item>,
|
||||||
</Form.Item>,
|
<Form.Item
|
||||||
<Form.Item
|
label={t("bodyshop.fields.rbac.shop.config")}
|
||||||
label={t("bodyshop.fields.rbac.shop.config")}
|
rules={[
|
||||||
rules={[
|
{
|
||||||
{
|
required: true
|
||||||
required: true
|
//message: t("general.validation.required"),
|
||||||
//message: t("general.validation.required"),
|
}
|
||||||
}
|
]}
|
||||||
]}
|
name={["md_rbac", "shop:config"]}
|
||||||
name={["md_rbac", "shop:config"]}
|
>
|
||||||
>
|
<InputNumber />
|
||||||
<InputNumber />
|
</Form.Item>,
|
||||||
</Form.Item>,
|
<Form.Item
|
||||||
<Form.Item
|
label={t("bodyshop.fields.rbac.timetickets.edit")}
|
||||||
label={t("bodyshop.fields.rbac.timetickets.edit")}
|
rules={[
|
||||||
rules={[
|
{
|
||||||
{
|
required: true
|
||||||
required: true
|
//message: t("general.validation.required"),
|
||||||
//message: t("general.validation.required"),
|
}
|
||||||
}
|
]}
|
||||||
]}
|
name={["md_rbac", "timetickets:edit"]}
|
||||||
name={["md_rbac", "timetickets:edit"]}
|
>
|
||||||
>
|
<InputNumber />
|
||||||
<InputNumber />
|
</Form.Item>,
|
||||||
</Form.Item>,
|
<Form.Item
|
||||||
<Form.Item
|
label={t("bodyshop.fields.rbac.timetickets.shiftedit")}
|
||||||
label={t("bodyshop.fields.rbac.timetickets.shiftedit")}
|
rules={[
|
||||||
rules={[
|
{
|
||||||
{
|
required: true
|
||||||
required: true
|
//message: t("general.validation.required"),
|
||||||
//message: t("general.validation.required"),
|
}
|
||||||
}
|
]}
|
||||||
]}
|
name={["md_rbac", "timetickets:shiftedit"]}
|
||||||
name={["md_rbac", "timetickets:shiftedit"]}
|
>
|
||||||
>
|
<InputNumber />
|
||||||
<InputNumber />
|
</Form.Item>,
|
||||||
</Form.Item>,
|
<Form.Item
|
||||||
<Form.Item
|
label={t("bodyshop.fields.rbac.timetickets.editcommitted")}
|
||||||
label={t("bodyshop.fields.rbac.timetickets.editcommitted")}
|
rules={[
|
||||||
rules={[
|
{
|
||||||
{
|
required: true
|
||||||
required: true
|
//message: t("general.validation.required"),
|
||||||
//message: t("general.validation.required"),
|
}
|
||||||
}
|
]}
|
||||||
]}
|
name={["md_rbac", "timetickets:editcommitted"]}
|
||||||
name={["md_rbac", "timetickets:editcommitted"]}
|
>
|
||||||
>
|
<InputNumber />
|
||||||
<InputNumber />
|
</Form.Item>,
|
||||||
</Form.Item>,
|
<Form.Item
|
||||||
<Form.Item
|
label={t("bodyshop.fields.rbac.ttapprovals.view")}
|
||||||
label={t("bodyshop.fields.rbac.ttapprovals.view")}
|
rules={[
|
||||||
rules={[
|
{
|
||||||
{
|
required: true
|
||||||
required: true
|
//message: t("general.validation.required"),
|
||||||
//message: t("general.validation.required"),
|
}
|
||||||
}
|
]}
|
||||||
]}
|
name={["md_rbac", "ttapprovals:view"]}
|
||||||
name={["md_rbac", "ttapprovals:view"]}
|
>
|
||||||
>
|
<InputNumber />
|
||||||
<InputNumber />
|
</Form.Item>,
|
||||||
</Form.Item>,
|
<Form.Item
|
||||||
<Form.Item
|
label={t("bodyshop.fields.rbac.ttapprovals.approve")}
|
||||||
label={t("bodyshop.fields.rbac.ttapprovals.approve")}
|
rules={[
|
||||||
rules={[
|
{
|
||||||
{
|
required: true
|
||||||
required: true
|
//message: t("general.validation.required"),
|
||||||
//message: t("general.validation.required"),
|
}
|
||||||
}
|
]}
|
||||||
]}
|
name={["md_rbac", "ttapprovals:approve"]}
|
||||||
name={["md_rbac", "ttapprovals:approve"]}
|
>
|
||||||
>
|
<InputNumber />
|
||||||
<InputNumber />
|
</Form.Item>,
|
||||||
</Form.Item>,
|
<Form.Item
|
||||||
<Form.Item
|
label={t("bodyshop.fields.rbac.timetickets.enter")}
|
||||||
label={t("bodyshop.fields.rbac.timetickets.enter")}
|
rules={[
|
||||||
rules={[
|
{
|
||||||
{
|
required: true
|
||||||
required: true
|
//message: t("general.validation.required"),
|
||||||
//message: t("general.validation.required"),
|
}
|
||||||
}
|
]}
|
||||||
]}
|
name={["md_rbac", "timetickets:enter"]}
|
||||||
name={["md_rbac", "timetickets:enter"]}
|
>
|
||||||
>
|
<InputNumber />
|
||||||
<InputNumber />
|
</Form.Item>,
|
||||||
</Form.Item>,
|
<Form.Item
|
||||||
<Form.Item
|
label={t("bodyshop.fields.rbac.timetickets.list")}
|
||||||
label={t("bodyshop.fields.rbac.timetickets.list")}
|
rules={[
|
||||||
rules={[
|
{
|
||||||
{
|
required: true
|
||||||
required: true
|
//message: t("general.validation.required"),
|
||||||
//message: t("general.validation.required"),
|
}
|
||||||
}
|
]}
|
||||||
]}
|
name={["md_rbac", "timetickets:list"]}
|
||||||
name={["md_rbac", "timetickets:list"]}
|
>
|
||||||
>
|
<InputNumber />
|
||||||
<InputNumber />
|
</Form.Item>,
|
||||||
</Form.Item>
|
<Form.Item
|
||||||
]
|
label={t("bodyshop.fields.rbac.timetickets.shiftedit")}
|
||||||
: []}
|
rules={[
|
||||||
|
{
|
||||||
|
required: true
|
||||||
|
//message: t("general.validation.required"),
|
||||||
|
}
|
||||||
|
]}
|
||||||
|
name={["md_rbac", "timetickets:shiftedit"]}
|
||||||
|
>
|
||||||
|
<InputNumber />
|
||||||
|
</Form.Item>
|
||||||
|
]:[]}
|
||||||
<Form.Item
|
<Form.Item
|
||||||
label={t("bodyshop.fields.rbac.shop.vendors")}
|
label={t("bodyshop.fields.rbac.shop.vendors")}
|
||||||
rules={[
|
rules={[
|
||||||
@@ -740,6 +757,7 @@ export function ShopInfoRbacComponent({ form, bodyshop }) {
|
|||||||
<InputNumber />
|
<InputNumber />
|
||||||
</Form.Item>
|
</Form.Item>
|
||||||
)}
|
)}
|
||||||
|
|
||||||
<Form.Item
|
<Form.Item
|
||||||
label={t("bodyshop.fields.rbac.users.editaccess")}
|
label={t("bodyshop.fields.rbac.users.editaccess")}
|
||||||
rules={[
|
rules={[
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ import { DateFormatter, DateTimeFormatter } from "../../utils/DateFormatter";
|
|||||||
import { onlyUnique } from "../../utils/arrayHelper";
|
import { onlyUnique } from "../../utils/arrayHelper";
|
||||||
import dayjs from "../../utils/day";
|
import dayjs from "../../utils/day";
|
||||||
import { alphaSort, dateSort } from "../../utils/sorters";
|
import { alphaSort, dateSort } from "../../utils/sorters";
|
||||||
import { HasRbacAccess } from "../rbac-wrapper/rbac-wrapper.component";
|
import RbacWrapper, { HasRbacAccess } from "../rbac-wrapper/rbac-wrapper.component";
|
||||||
import TimeTicketEnterButton from "../time-ticket-enter-button/time-ticket-enter-button.component";
|
import TimeTicketEnterButton from "../time-ticket-enter-button/time-ticket-enter-button.component";
|
||||||
|
|
||||||
const mapStateToProps = createStructuredSelector({
|
const mapStateToProps = createStructuredSelector({
|
||||||
@@ -52,10 +52,6 @@ export function TimeTicketList({
|
|||||||
splitKey: bodyshop.imexshopid
|
splitKey: bodyshop.imexshopid
|
||||||
});
|
});
|
||||||
|
|
||||||
const canEditCommittedTimeTickets = HasRbacAccess({ bodyshop, authLevel, action: "timetickets:editcommitted" });
|
|
||||||
const canEditTimeTickets = HasRbacAccess({ bodyshop, authLevel, action: "timetickets:edit" });
|
|
||||||
const canEditShiftTickets = HasRbacAccess({ bodyshop, authLevel, action: "timetickets:shiftedit" });
|
|
||||||
|
|
||||||
const totals = useMemo(() => {
|
const totals = useMemo(() => {
|
||||||
if (timetickets)
|
if (timetickets)
|
||||||
return timetickets.reduce(
|
return timetickets.reduce(
|
||||||
@@ -69,18 +65,6 @@ export function TimeTicketList({
|
|||||||
return { productivehrs: 0, actualhrs: 0 };
|
return { productivehrs: 0, actualhrs: 0 };
|
||||||
}, [timetickets]);
|
}, [timetickets]);
|
||||||
|
|
||||||
const isDisabled = (record) => {
|
|
||||||
if (disabled === true || !record.id) return true;
|
|
||||||
|
|
||||||
const isShiftTicket = !record.ciecacode;
|
|
||||||
const isCommitted = record.committed_at;
|
|
||||||
if (isShiftTicket) {
|
|
||||||
return !(canEditShiftTickets && (!isCommitted || canEditCommittedTimeTickets));
|
|
||||||
}
|
|
||||||
|
|
||||||
return !(canEditTimeTickets && (!isCommitted || canEditCommittedTimeTickets));
|
|
||||||
};
|
|
||||||
|
|
||||||
const columns = [
|
const columns = [
|
||||||
...(Enhanced_Payroll.treatment === "on"
|
...(Enhanced_Payroll.treatment === "on"
|
||||||
? [
|
? [
|
||||||
@@ -257,16 +241,59 @@ export function TimeTicketList({
|
|||||||
</TimeTicketEnterButton>
|
</TimeTicketEnterButton>
|
||||||
)}
|
)}
|
||||||
{!techConsole && (
|
{!techConsole && (
|
||||||
<TimeTicketEnterButton
|
<RbacWrapper
|
||||||
actions={{ refetch }}
|
action="timetickets:edit"
|
||||||
context={{
|
noauth={() => {
|
||||||
id: record.id,
|
return <div />;
|
||||||
timeticket: record
|
|
||||||
}}
|
}}
|
||||||
disabled={isDisabled(record)}
|
|
||||||
>
|
>
|
||||||
<EditFilled />
|
<TimeTicketEnterButton
|
||||||
</TimeTicketEnterButton>
|
actions={{ refetch }}
|
||||||
|
context={{
|
||||||
|
id: record.id,
|
||||||
|
timeticket: record
|
||||||
|
}}
|
||||||
|
disabled={
|
||||||
|
record.ciecacode
|
||||||
|
? record.committed_at
|
||||||
|
? HasRbacAccess({
|
||||||
|
bodyshop,
|
||||||
|
authLevel: authLevel,
|
||||||
|
action: "timetickets:editcommitted"
|
||||||
|
}) &&
|
||||||
|
HasRbacAccess({
|
||||||
|
bodyshop,
|
||||||
|
authLevel: authLevel,
|
||||||
|
action: "timetickets:edit"
|
||||||
|
})
|
||||||
|
: HasRbacAccess({
|
||||||
|
bodyshop,
|
||||||
|
authLevel: authLevel,
|
||||||
|
action: "timetickets:edit"
|
||||||
|
})
|
||||||
|
: record.committed_at
|
||||||
|
? HasRbacAccess({
|
||||||
|
bodyshop,
|
||||||
|
authLevel: authLevel,
|
||||||
|
action: "timetickets:editcommitted"
|
||||||
|
}) &&
|
||||||
|
HasRbacAccess({
|
||||||
|
bodyshop,
|
||||||
|
authLevel: authLevel,
|
||||||
|
action: "timetickets:shiftedit"
|
||||||
|
})
|
||||||
|
: HasRbacAccess({
|
||||||
|
bodyshop,
|
||||||
|
authLevel: authLevel,
|
||||||
|
action: "timetickets:shiftedit"
|
||||||
|
})
|
||||||
|
? disabled
|
||||||
|
: !record.jobid
|
||||||
|
}
|
||||||
|
>
|
||||||
|
<EditFilled />
|
||||||
|
</TimeTicketEnterButton>
|
||||||
|
</RbacWrapper>
|
||||||
)}
|
)}
|
||||||
</Space>
|
</Space>
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -329,9 +329,7 @@ export function LaborAllocationContainer({ jobid, loading, lineTicketData, hideT
|
|||||||
timetickets={lineTicketData.timetickets}
|
timetickets={lineTicketData.timetickets}
|
||||||
adjustments={lineTicketData.jobs_by_pk.lbr_adjustments}
|
adjustments={lineTicketData.jobs_by_pk.lbr_adjustments}
|
||||||
/>
|
/>
|
||||||
{!hideTimeTickets && (
|
{!hideTimeTickets && <TimeTicketList loading={loading} timetickets={lineTicketData.timetickets} techConsole />}
|
||||||
<TimeTicketList loading={loading} timetickets={jobid ? lineTicketData.timetickets : []} techConsole />
|
|
||||||
)}
|
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,14 +1,13 @@
|
|||||||
import { AlertOutlined } from "@ant-design/icons";
|
import { AlertOutlined } from "@ant-design/icons";
|
||||||
import { Alert, Button, Col, notification, Row, Space } from "antd";
|
import { Alert, Button, Col, Row, Space } from "antd";
|
||||||
import i18n from "i18next";
|
import i18n from "i18next";
|
||||||
import React, { useCallback, useEffect, useState } from "react";
|
import React, { useEffect } from "react";
|
||||||
import { useTranslation } from "react-i18next";
|
import { useTranslation } from "react-i18next";
|
||||||
import { connect } from "react-redux";
|
import { connect } from "react-redux";
|
||||||
import { createStructuredSelector } from "reselect";
|
import { createStructuredSelector } from "reselect";
|
||||||
import { selectUpdateAvailable } from "../../redux/application/application.selectors";
|
import { selectUpdateAvailable } from "../../redux/application/application.selectors";
|
||||||
import { useRegisterSW } from "virtual:pwa-register/react";
|
import { useRegisterSW } from "virtual:pwa-register/react";
|
||||||
import InstanceRenderManager from "../../utils/instanceRenderMgr";
|
import InstanceRenderManager from "../../utils/instanceRenderMgr";
|
||||||
import useCountDown from "../../utils/countdownHook";
|
|
||||||
|
|
||||||
const mapStateToProps = createStructuredSelector({
|
const mapStateToProps = createStructuredSelector({
|
||||||
updateAvailable: selectUpdateAvailable
|
updateAvailable: selectUpdateAvailable
|
||||||
@@ -20,15 +19,6 @@ const mapDispatchToProps = (dispatch) => ({
|
|||||||
|
|
||||||
export function UpdateAlert({ updateAvailable }) {
|
export function UpdateAlert({ updateAvailable }) {
|
||||||
const { t } = useTranslation();
|
const { t } = useTranslation();
|
||||||
const [timerStarted, setTimerStarted] = useState(false);
|
|
||||||
const [loading, setLoading] = useState(false);
|
|
||||||
const [
|
|
||||||
timeLeft,
|
|
||||||
{
|
|
||||||
start //pause, resume, reset
|
|
||||||
}
|
|
||||||
] = useCountDown(180000, 1000);
|
|
||||||
|
|
||||||
const {
|
const {
|
||||||
offlineReady: [offlineReady],
|
offlineReady: [offlineReady],
|
||||||
needRefresh: [needRefresh],
|
needRefresh: [needRefresh],
|
||||||
@@ -41,7 +31,7 @@ export function UpdateAlert({ updateAvailable }) {
|
|||||||
() => {
|
() => {
|
||||||
r.update();
|
r.update();
|
||||||
},
|
},
|
||||||
30 * 60 * 1000
|
10 * 60 * 1000
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -50,43 +40,11 @@ export function UpdateAlert({ updateAvailable }) {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
const ReloadNewVersion = useCallback(() => {
|
|
||||||
setLoading(true);
|
|
||||||
updateServiceWorker(true);
|
|
||||||
setTimeout(() => {
|
|
||||||
window.location.reload(true);
|
|
||||||
}, 5000);
|
|
||||||
}, [updateServiceWorker]);
|
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (needRefresh) {
|
if (import.meta.env.DEV) {
|
||||||
start();
|
console.log(`SW Status => Refresh? ${needRefresh} - offlineReady? ${offlineReady}`);
|
||||||
setTimerStarted(true);
|
|
||||||
}
|
}
|
||||||
}, [start, needRefresh, offlineReady]);
|
}, [needRefresh, offlineReady]);
|
||||||
|
|
||||||
useEffect(() => {
|
|
||||||
if (needRefresh && timerStarted && timeLeft < 60000) {
|
|
||||||
notification.open({
|
|
||||||
type: "warning",
|
|
||||||
closable: false,
|
|
||||||
duration: 65000,
|
|
||||||
key: "autoupdate",
|
|
||||||
message: t("general.actions.autoupdate", {
|
|
||||||
time: (timeLeft / 1000).toFixed(0),
|
|
||||||
app: InstanceRenderManager({
|
|
||||||
imex: "$t(titles.imexonline)",
|
|
||||||
rome: "$t(titles.romeonline)",
|
|
||||||
promanager: "$t(titles.promanager)"
|
|
||||||
})
|
|
||||||
}),
|
|
||||||
placement: "bottomRight"
|
|
||||||
});
|
|
||||||
}
|
|
||||||
if (needRefresh && timerStarted && timeLeft <= 0) {
|
|
||||||
ReloadNewVersion();
|
|
||||||
}
|
|
||||||
}, [timeLeft, t, needRefresh, ReloadNewVersion, timerStarted]);
|
|
||||||
|
|
||||||
if (!needRefresh) return null;
|
if (!needRefresh) return null;
|
||||||
|
|
||||||
@@ -117,10 +75,9 @@ export function UpdateAlert({ updateAvailable }) {
|
|||||||
<Button onClick={() => window.open("https://imex-online.noticeable.news/", "_blank")}>
|
<Button onClick={() => window.open("https://imex-online.noticeable.news/", "_blank")}>
|
||||||
{i18n.t("general.actions.viewreleasenotes")}
|
{i18n.t("general.actions.viewreleasenotes")}
|
||||||
</Button>
|
</Button>
|
||||||
<Button loading={loading} type="primary" onClick={() => ReloadNewVersion()}>
|
<Button type="primary" onClick={() => updateServiceWorker(true)}>
|
||||||
{i18n.t("general.actions.refresh")} {`(${(timeLeft / 1000).toFixed(0)} s)`}
|
{i18n.t("general.actions.refresh")}
|
||||||
</Button>
|
</Button>
|
||||||
<Button onClick={() => start(300000)}>{i18n.t("general.actions.delay")}</Button>
|
|
||||||
</Space>
|
</Space>
|
||||||
</Col>
|
</Col>
|
||||||
</Row>
|
</Row>
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ import { getFirestore } from "firebase/firestore";
|
|||||||
import { getMessaging, getToken, onMessage } from "firebase/messaging";
|
import { getMessaging, getToken, onMessage } from "firebase/messaging";
|
||||||
import { store } from "../redux/store";
|
import { store } from "../redux/store";
|
||||||
import axios from "axios";
|
import axios from "axios";
|
||||||
|
import { checkBeta } from "../utils/handleBeta";
|
||||||
|
|
||||||
const config = JSON.parse(import.meta.env.VITE_APP_FIREBASE_CONFIG);
|
const config = JSON.parse(import.meta.env.VITE_APP_FIREBASE_CONFIG);
|
||||||
initializeApp(config);
|
initializeApp(config);
|
||||||
@@ -87,7 +88,7 @@ export const logImEXEvent = (eventName, additionalParams, stateProp = null) => {
|
|||||||
operationName: eventName,
|
operationName: eventName,
|
||||||
variables: additionalParams,
|
variables: additionalParams,
|
||||||
dbevent: false,
|
dbevent: false,
|
||||||
env: "master"
|
env: checkBeta() ? "beta" : "master"
|
||||||
});
|
});
|
||||||
// console.log(
|
// console.log(
|
||||||
// "%c[Analytics]",
|
// "%c[Analytics]",
|
||||||
|
|||||||
@@ -3,7 +3,6 @@ import { useTranslation } from "react-i18next";
|
|||||||
import RbacWrapperComponent from "../../components/rbac-wrapper/rbac-wrapper.component";
|
import RbacWrapperComponent from "../../components/rbac-wrapper/rbac-wrapper.component";
|
||||||
import TechLookupJobsList from "../../components/tech-lookup-jobs-list/tech-lookup-jobs-list.component";
|
import TechLookupJobsList from "../../components/tech-lookup-jobs-list/tech-lookup-jobs-list.component";
|
||||||
import InstanceRenderManager from "../../utils/instanceRenderMgr";
|
import InstanceRenderManager from "../../utils/instanceRenderMgr";
|
||||||
import TechLookupJobsDrawer from "../../components/tech-lookup-jobs-drawer/tech-lookup-jobs-drawer.component";
|
|
||||||
|
|
||||||
export default function TechLookupContainer() {
|
export default function TechLookupContainer() {
|
||||||
const { t } = useTranslation();
|
const { t } = useTranslation();
|
||||||
@@ -21,7 +20,6 @@ export default function TechLookupContainer() {
|
|||||||
return (
|
return (
|
||||||
<div>
|
<div>
|
||||||
<RbacWrapperComponent action="jobs:list-active">
|
<RbacWrapperComponent action="jobs:list-active">
|
||||||
<TechLookupJobsDrawer />
|
|
||||||
<TechLookupJobsList />
|
<TechLookupJobsList />
|
||||||
</RbacWrapperComponent>
|
</RbacWrapperComponent>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -9,6 +9,7 @@ import ErrorBoundary from "../../components/error-boundary/error-boundary.compon
|
|||||||
import FeatureWrapper from "../../components/feature-wrapper/feature-wrapper.component";
|
import FeatureWrapper from "../../components/feature-wrapper/feature-wrapper.component";
|
||||||
import LoadingSpinner from "../../components/loading-spinner/loading-spinner.component";
|
import LoadingSpinner from "../../components/loading-spinner/loading-spinner.component";
|
||||||
import TechHeader from "../../components/tech-header/tech-header.component";
|
import TechHeader from "../../components/tech-header/tech-header.component";
|
||||||
|
import TechLookupJobsDrawer from "../../components/tech-lookup-jobs-drawer/tech-lookup-jobs-drawer.component";
|
||||||
import TechSider from "../../components/tech-sider/tech-sider.component";
|
import TechSider from "../../components/tech-sider/tech-sider.component";
|
||||||
import UpdateAlert from "../../components/update-alert/update-alert.component";
|
import UpdateAlert from "../../components/update-alert/update-alert.component";
|
||||||
import { selectTechnician } from "../../redux/tech/tech.selectors";
|
import { selectTechnician } from "../../redux/tech/tech.selectors";
|
||||||
@@ -67,7 +68,7 @@ export function TechPage({ technician }) {
|
|||||||
<Layout>
|
<Layout>
|
||||||
<UpdateAlert />
|
<UpdateAlert />
|
||||||
<TechHeader />
|
<TechHeader />
|
||||||
|
<TechLookupJobsDrawer />
|
||||||
<TaskUpsertModalContainer />
|
<TaskUpsertModalContainer />
|
||||||
<Content className="tech-content-container">
|
<Content className="tech-content-container">
|
||||||
<ErrorBoundary>
|
<ErrorBoundary>
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ import {
|
|||||||
signInWithEmailAndPassword,
|
signInWithEmailAndPassword,
|
||||||
signOut
|
signOut
|
||||||
} from "firebase/auth";
|
} from "firebase/auth";
|
||||||
import { arrayUnion, doc, getDoc, setDoc, updateDoc } from "firebase/firestore";
|
import { doc, getDoc, setDoc } from "firebase/firestore";
|
||||||
import { getToken } from "firebase/messaging";
|
import { getToken } from "firebase/messaging";
|
||||||
import i18next from "i18next";
|
import i18next from "i18next";
|
||||||
import LogRocket from "logrocket";
|
import LogRocket from "logrocket";
|
||||||
@@ -48,7 +48,6 @@ import {
|
|||||||
validatePasswordResetSuccess
|
validatePasswordResetSuccess
|
||||||
} from "./user.actions";
|
} from "./user.actions";
|
||||||
import UserActionTypes from "./user.types";
|
import UserActionTypes from "./user.types";
|
||||||
import cleanAxios from "../../utils/CleanAxios";
|
|
||||||
|
|
||||||
const fpPromise = FingerprintJS.load();
|
const fpPromise = FingerprintJS.load();
|
||||||
|
|
||||||
@@ -178,24 +177,10 @@ export function* setInstanceIdSaga({ payload: uid }) {
|
|||||||
// Get the visitor identifier when you need it.
|
// Get the visitor identifier when you need it.
|
||||||
const fp = yield fpPromise;
|
const fp = yield fpPromise;
|
||||||
const result = yield fp.get();
|
const result = yield fp.get();
|
||||||
const res = yield cleanAxios.get("https://api.ipify.org/?format=json");
|
yield setDoc(userInstanceRef, {
|
||||||
const udoc = yield getDoc(userInstanceRef);
|
timestamp: new Date(),
|
||||||
|
fingerprint: result.visitorId
|
||||||
if (!udoc.data()) {
|
});
|
||||||
yield setDoc(userInstanceRef, {
|
|
||||||
timestamp: new Date(),
|
|
||||||
fingerprint: result.visitorId,
|
|
||||||
//totalFingerprint: result,
|
|
||||||
ip: [res.data.ip]
|
|
||||||
});
|
|
||||||
} else {
|
|
||||||
yield updateDoc(userInstanceRef, {
|
|
||||||
timestamp: new Date(),
|
|
||||||
fingerprint: result.visitorId,
|
|
||||||
//totalFingerprint: result,
|
|
||||||
ip: arrayUnion(res.data.ip)
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
yield put(setLocalFingerprint(result.visitorId));
|
yield put(setLocalFingerprint(result.visitorId));
|
||||||
yield delay(5 * 60 * 1000);
|
yield delay(5 * 60 * 1000);
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -1,84 +0,0 @@
|
|||||||
import React from "react";
|
|
||||||
|
|
||||||
const useCountDown = (timeToCount = 60 * 1000, interval = 1000) => {
|
|
||||||
const [timeLeft, setTimeLeft] = React.useState(0);
|
|
||||||
const timer = React.useRef({});
|
|
||||||
|
|
||||||
const run = (ts) => {
|
|
||||||
if (!timer.current.started) {
|
|
||||||
timer.current.started = ts;
|
|
||||||
timer.current.lastInterval = ts;
|
|
||||||
}
|
|
||||||
|
|
||||||
const localInterval = Math.min(interval, timer.current.timeLeft || Infinity);
|
|
||||||
if (ts - timer.current.lastInterval >= localInterval) {
|
|
||||||
timer.current.lastInterval += localInterval;
|
|
||||||
setTimeLeft((timeLeft) => {
|
|
||||||
timer.current.timeLeft = timeLeft - localInterval;
|
|
||||||
return timer.current.timeLeft;
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
if (ts - timer.current.started < timer.current.timeToCount) {
|
|
||||||
timer.current.requestId = window.requestAnimationFrame(run);
|
|
||||||
} else {
|
|
||||||
timer.current = {};
|
|
||||||
setTimeLeft(0);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
const start = React.useCallback(
|
|
||||||
(ttc) => {
|
|
||||||
window.cancelAnimationFrame(timer.current.requestId);
|
|
||||||
|
|
||||||
const newTimeToCount = ttc !== undefined ? ttc : timeToCount;
|
|
||||||
timer.current.started = null;
|
|
||||||
timer.current.lastInterval = null;
|
|
||||||
timer.current.timeToCount = newTimeToCount;
|
|
||||||
timer.current.requestId = window.requestAnimationFrame(run);
|
|
||||||
|
|
||||||
setTimeLeft(newTimeToCount);
|
|
||||||
},
|
|
||||||
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
||||||
[]
|
|
||||||
);
|
|
||||||
|
|
||||||
const pause = React.useCallback(() => {
|
|
||||||
window.cancelAnimationFrame(timer.current.requestId);
|
|
||||||
timer.current.started = null;
|
|
||||||
timer.current.lastInterval = null;
|
|
||||||
timer.current.timeToCount = timer.current.timeLeft;
|
|
||||||
}, []);
|
|
||||||
|
|
||||||
const resume = React.useCallback(
|
|
||||||
() => {
|
|
||||||
if (!timer.current.started && timer.current.timeLeft > 0) {
|
|
||||||
window.cancelAnimationFrame(timer.current.requestId);
|
|
||||||
timer.current.requestId = window.requestAnimationFrame(run);
|
|
||||||
}
|
|
||||||
},
|
|
||||||
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
||||||
[]
|
|
||||||
);
|
|
||||||
|
|
||||||
const reset = React.useCallback(() => {
|
|
||||||
if (timer.current.timeLeft) {
|
|
||||||
window.cancelAnimationFrame(timer.current.requestId);
|
|
||||||
timer.current = {};
|
|
||||||
setTimeLeft(0);
|
|
||||||
}
|
|
||||||
}, []);
|
|
||||||
|
|
||||||
const actions = React.useMemo(
|
|
||||||
() => ({ start, pause, resume, reset }), // eslint-disable-next-line react-hooks/exhaustive-deps
|
|
||||||
[]
|
|
||||||
);
|
|
||||||
|
|
||||||
React.useEffect(() => {
|
|
||||||
return () => window.cancelAnimationFrame(timer.current.requestId);
|
|
||||||
}, []);
|
|
||||||
|
|
||||||
return [timeLeft, actions];
|
|
||||||
};
|
|
||||||
|
|
||||||
export default useCountDown;
|
|
||||||
47
client/src/utils/handleBeta.js
Normal file
47
client/src/utils/handleBeta.js
Normal file
@@ -0,0 +1,47 @@
|
|||||||
|
export const BETA_KEY = "betaSwitchImex";
|
||||||
|
|
||||||
|
export const checkBeta = () => {
|
||||||
|
const cookie = document.cookie.split("; ").find((row) => row.startsWith(BETA_KEY));
|
||||||
|
return cookie ? cookie.split("=")[1] === "true" : false;
|
||||||
|
};
|
||||||
|
|
||||||
|
export const setBeta = (value) => {
|
||||||
|
const domain = window.location.hostname.split(".").slice(-2).join(".");
|
||||||
|
document.cookie = `${BETA_KEY}=${value}; path=/; domain=.${domain}`;
|
||||||
|
};
|
||||||
|
|
||||||
|
export const handleBeta = () => {
|
||||||
|
if (window.location.hostname.startsWith("localhost")) {
|
||||||
|
console.log("Not on beta or test, so no need to handle beta.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
const isBeta = checkBeta();
|
||||||
|
const currentHostName = window.location.hostname;
|
||||||
|
|
||||||
|
// Determine if the host name starts with "beta" or "www.beta"
|
||||||
|
const isBetaHost = currentHostName.startsWith("beta.");
|
||||||
|
const isBetaHostWithWWW = currentHostName.startsWith("www.beta.");
|
||||||
|
|
||||||
|
if (isBeta) {
|
||||||
|
// If beta is on and we are not on a beta domain, redirect to the beta version
|
||||||
|
if (!isBetaHost && !isBetaHostWithWWW) {
|
||||||
|
const newHostName = currentHostName.startsWith("www.")
|
||||||
|
? `www.beta.${currentHostName.replace(/^www\./, "")}`
|
||||||
|
: `beta.${currentHostName}`;
|
||||||
|
const href = `${window.location.protocol}//${newHostName}${window.location.pathname}${window.location.search}${window.location.hash}`;
|
||||||
|
window.location.replace(href);
|
||||||
|
}
|
||||||
|
// Otherwise, if beta is on and we're already on a beta domain, stay there
|
||||||
|
} else {
|
||||||
|
// If beta is off and we are on a beta domain, redirect to the non-beta version
|
||||||
|
if (isBetaHost || isBetaHostWithWWW) {
|
||||||
|
const newHostName = currentHostName.replace(/^www\.beta\./, "www.").replace(/^beta\./, "");
|
||||||
|
const href = `${window.location.protocol}//${newHostName}${window.location.pathname}${window.location.search}${window.location.hash}`;
|
||||||
|
window.location.replace(href);
|
||||||
|
}
|
||||||
|
// Otherwise, if beta is off and we're not on a beta domain, stay there
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
export default handleBeta;
|
||||||
@@ -121,7 +121,7 @@ export default defineConfig({
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
optimizeDeps: {
|
optimizeDeps: {
|
||||||
include: ["react", "react-dom", "antd", "@apollo/client", "@reduxjs/toolkit", "axios"],
|
include: ["react", "react-dom", "antd", "@apollo/client", "@reduxjs/toolkit", "axios", "react-grid-layout"],
|
||||||
esbuildOptions: {
|
esbuildOptions: {
|
||||||
loader: {
|
loader: {
|
||||||
".js": "jsx"
|
".js": "jsx"
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
version: 2
|
version: 2
|
||||||
endpoint: https://db.dev.imex.online
|
endpoint: https://db.dev.bodyshop.app
|
||||||
admin_secret: Dev-BodyShopApp!
|
admin_secret: Dev-BodyShopApp!
|
||||||
metadata_directory: metadata
|
metadata_directory: metadata
|
||||||
actions:
|
actions:
|
||||||
|
|||||||
341
package-lock.json
generated
341
package-lock.json
generated
@@ -9,17 +9,17 @@
|
|||||||
"version": "0.2.0",
|
"version": "0.2.0",
|
||||||
"license": "UNLICENSED",
|
"license": "UNLICENSED",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@aws-sdk/client-secrets-manager": "^3.629.0",
|
"@aws-sdk/client-secrets-manager": "^3.637.0",
|
||||||
"@aws-sdk/client-ses": "^3.629.0",
|
"@aws-sdk/client-ses": "^3.637.0",
|
||||||
"@aws-sdk/credential-provider-node": "^3.629.0",
|
"@aws-sdk/credential-provider-node": "^3.637.0",
|
||||||
"@opensearch-project/opensearch": "^2.11.0",
|
"@opensearch-project/opensearch": "^2.12.0",
|
||||||
"aws4": "^1.13.1",
|
"aws4": "^1.13.2",
|
||||||
"axios": "^1.7.4",
|
"axios": "^1.7.7",
|
||||||
"better-queue": "^3.8.12",
|
"better-queue": "^3.8.12",
|
||||||
"bluebird": "^3.7.2",
|
"bluebird": "^3.7.2",
|
||||||
"body-parser": "^1.20.2",
|
"body-parser": "^1.20.2",
|
||||||
"canvas": "^2.11.2",
|
"canvas": "^2.11.2",
|
||||||
"chart.js": "^4.4.3",
|
"chart.js": "^4.4.4",
|
||||||
"cloudinary": "^2.4.0",
|
"cloudinary": "^2.4.0",
|
||||||
"compression": "^1.7.4",
|
"compression": "^1.7.4",
|
||||||
"cookie-parser": "^1.4.6",
|
"cookie-parser": "^1.4.6",
|
||||||
@@ -28,7 +28,7 @@
|
|||||||
"dinero.js": "^1.9.1",
|
"dinero.js": "^1.9.1",
|
||||||
"dotenv": "^16.4.5",
|
"dotenv": "^16.4.5",
|
||||||
"express": "^4.19.2",
|
"express": "^4.19.2",
|
||||||
"firebase-admin": "^12.3.1",
|
"firebase-admin": "^12.4.0",
|
||||||
"graphql": "^16.9.0",
|
"graphql": "^16.9.0",
|
||||||
"graphql-request": "^6.1.0",
|
"graphql-request": "^6.1.0",
|
||||||
"graylog2": "^0.2.1",
|
"graylog2": "^0.2.1",
|
||||||
@@ -39,13 +39,13 @@
|
|||||||
"moment": "^2.30.1",
|
"moment": "^2.30.1",
|
||||||
"moment-timezone": "^0.5.45",
|
"moment-timezone": "^0.5.45",
|
||||||
"multer": "^1.4.5-lts.1",
|
"multer": "^1.4.5-lts.1",
|
||||||
"node-mailjet": "^6.0.5",
|
"node-mailjet": "^6.0.6",
|
||||||
"node-persist": "^4.0.3",
|
"node-persist": "^4.0.3",
|
||||||
"nodemailer": "^6.9.14",
|
"nodemailer": "^6.9.15",
|
||||||
"phone": "^3.1.49",
|
"phone": "^3.1.50",
|
||||||
"recursive-diff": "^1.0.9",
|
"recursive-diff": "^1.0.9",
|
||||||
"rimraf": "^6.0.1",
|
"rimraf": "^6.0.1",
|
||||||
"soap": "^1.1.1",
|
"soap": "^1.1.3",
|
||||||
"socket.io": "^4.7.5",
|
"socket.io": "^4.7.5",
|
||||||
"ssh2-sftp-client": "^10.0.3",
|
"ssh2-sftp-client": "^10.0.3",
|
||||||
"twilio": "^4.23.0",
|
"twilio": "^4.23.0",
|
||||||
@@ -180,47 +180,47 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@aws-sdk/client-secrets-manager": {
|
"node_modules/@aws-sdk/client-secrets-manager": {
|
||||||
"version": "3.629.0",
|
"version": "3.637.0",
|
||||||
"resolved": "https://registry.npmjs.org/@aws-sdk/client-secrets-manager/-/client-secrets-manager-3.629.0.tgz",
|
"resolved": "https://registry.npmjs.org/@aws-sdk/client-secrets-manager/-/client-secrets-manager-3.637.0.tgz",
|
||||||
"integrity": "sha512-ZZKI9uTQ3WIdbCZK6sveccalLTWgyOZeebi+Gnwl5ztKMk4OfwZKxyhry1DXB8gMrlISniREDb3ZxUZdFNwqfQ==",
|
"integrity": "sha512-4AEV+4yhaFYlnD90MbtOouqTyrPVmD8OeGotsjtWxgnVHk55Vd0/dIWVGjic0YCxH3SNdWqJJ9G8Vd93fWymVA==",
|
||||||
"license": "Apache-2.0",
|
"license": "Apache-2.0",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@aws-crypto/sha256-browser": "5.2.0",
|
"@aws-crypto/sha256-browser": "5.2.0",
|
||||||
"@aws-crypto/sha256-js": "5.2.0",
|
"@aws-crypto/sha256-js": "5.2.0",
|
||||||
"@aws-sdk/client-sso-oidc": "3.629.0",
|
"@aws-sdk/client-sso-oidc": "3.637.0",
|
||||||
"@aws-sdk/client-sts": "3.629.0",
|
"@aws-sdk/client-sts": "3.637.0",
|
||||||
"@aws-sdk/core": "3.629.0",
|
"@aws-sdk/core": "3.635.0",
|
||||||
"@aws-sdk/credential-provider-node": "3.629.0",
|
"@aws-sdk/credential-provider-node": "3.637.0",
|
||||||
"@aws-sdk/middleware-host-header": "3.620.0",
|
"@aws-sdk/middleware-host-header": "3.620.0",
|
||||||
"@aws-sdk/middleware-logger": "3.609.0",
|
"@aws-sdk/middleware-logger": "3.609.0",
|
||||||
"@aws-sdk/middleware-recursion-detection": "3.620.0",
|
"@aws-sdk/middleware-recursion-detection": "3.620.0",
|
||||||
"@aws-sdk/middleware-user-agent": "3.620.0",
|
"@aws-sdk/middleware-user-agent": "3.637.0",
|
||||||
"@aws-sdk/region-config-resolver": "3.614.0",
|
"@aws-sdk/region-config-resolver": "3.614.0",
|
||||||
"@aws-sdk/types": "3.609.0",
|
"@aws-sdk/types": "3.609.0",
|
||||||
"@aws-sdk/util-endpoints": "3.614.0",
|
"@aws-sdk/util-endpoints": "3.637.0",
|
||||||
"@aws-sdk/util-user-agent-browser": "3.609.0",
|
"@aws-sdk/util-user-agent-browser": "3.609.0",
|
||||||
"@aws-sdk/util-user-agent-node": "3.614.0",
|
"@aws-sdk/util-user-agent-node": "3.614.0",
|
||||||
"@smithy/config-resolver": "^3.0.5",
|
"@smithy/config-resolver": "^3.0.5",
|
||||||
"@smithy/core": "^2.3.2",
|
"@smithy/core": "^2.4.0",
|
||||||
"@smithy/fetch-http-handler": "^3.2.4",
|
"@smithy/fetch-http-handler": "^3.2.4",
|
||||||
"@smithy/hash-node": "^3.0.3",
|
"@smithy/hash-node": "^3.0.3",
|
||||||
"@smithy/invalid-dependency": "^3.0.3",
|
"@smithy/invalid-dependency": "^3.0.3",
|
||||||
"@smithy/middleware-content-length": "^3.0.5",
|
"@smithy/middleware-content-length": "^3.0.5",
|
||||||
"@smithy/middleware-endpoint": "^3.1.0",
|
"@smithy/middleware-endpoint": "^3.1.0",
|
||||||
"@smithy/middleware-retry": "^3.0.14",
|
"@smithy/middleware-retry": "^3.0.15",
|
||||||
"@smithy/middleware-serde": "^3.0.3",
|
"@smithy/middleware-serde": "^3.0.3",
|
||||||
"@smithy/middleware-stack": "^3.0.3",
|
"@smithy/middleware-stack": "^3.0.3",
|
||||||
"@smithy/node-config-provider": "^3.1.4",
|
"@smithy/node-config-provider": "^3.1.4",
|
||||||
"@smithy/node-http-handler": "^3.1.4",
|
"@smithy/node-http-handler": "^3.1.4",
|
||||||
"@smithy/protocol-http": "^4.1.0",
|
"@smithy/protocol-http": "^4.1.0",
|
||||||
"@smithy/smithy-client": "^3.1.12",
|
"@smithy/smithy-client": "^3.2.0",
|
||||||
"@smithy/types": "^3.3.0",
|
"@smithy/types": "^3.3.0",
|
||||||
"@smithy/url-parser": "^3.0.3",
|
"@smithy/url-parser": "^3.0.3",
|
||||||
"@smithy/util-base64": "^3.0.0",
|
"@smithy/util-base64": "^3.0.0",
|
||||||
"@smithy/util-body-length-browser": "^3.0.0",
|
"@smithy/util-body-length-browser": "^3.0.0",
|
||||||
"@smithy/util-body-length-node": "^3.0.0",
|
"@smithy/util-body-length-node": "^3.0.0",
|
||||||
"@smithy/util-defaults-mode-browser": "^3.0.14",
|
"@smithy/util-defaults-mode-browser": "^3.0.15",
|
||||||
"@smithy/util-defaults-mode-node": "^3.0.14",
|
"@smithy/util-defaults-mode-node": "^3.0.15",
|
||||||
"@smithy/util-endpoints": "^2.0.5",
|
"@smithy/util-endpoints": "^2.0.5",
|
||||||
"@smithy/util-middleware": "^3.0.3",
|
"@smithy/util-middleware": "^3.0.3",
|
||||||
"@smithy/util-retry": "^3.0.3",
|
"@smithy/util-retry": "^3.0.3",
|
||||||
@@ -245,47 +245,47 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@aws-sdk/client-ses": {
|
"node_modules/@aws-sdk/client-ses": {
|
||||||
"version": "3.629.0",
|
"version": "3.637.0",
|
||||||
"resolved": "https://registry.npmjs.org/@aws-sdk/client-ses/-/client-ses-3.629.0.tgz",
|
"resolved": "https://registry.npmjs.org/@aws-sdk/client-ses/-/client-ses-3.637.0.tgz",
|
||||||
"integrity": "sha512-KreCdUAO/gIzWCgnPV1/dGUvLDDTdXI3fZzjjHUWFa1bE4wENjenNnWGw0qZgc8xB8pgiMdgPn7N+JvxJ7c/ZQ==",
|
"integrity": "sha512-pHkI8iMxbdtNeaa0a+c0T29bRZMFu8HQtGtwPlSwvD1elDVFrlWXw74MrlaW0aRPGryF4sHxVHk3YkxhxAS5iw==",
|
||||||
"license": "Apache-2.0",
|
"license": "Apache-2.0",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@aws-crypto/sha256-browser": "5.2.0",
|
"@aws-crypto/sha256-browser": "5.2.0",
|
||||||
"@aws-crypto/sha256-js": "5.2.0",
|
"@aws-crypto/sha256-js": "5.2.0",
|
||||||
"@aws-sdk/client-sso-oidc": "3.629.0",
|
"@aws-sdk/client-sso-oidc": "3.637.0",
|
||||||
"@aws-sdk/client-sts": "3.629.0",
|
"@aws-sdk/client-sts": "3.637.0",
|
||||||
"@aws-sdk/core": "3.629.0",
|
"@aws-sdk/core": "3.635.0",
|
||||||
"@aws-sdk/credential-provider-node": "3.629.0",
|
"@aws-sdk/credential-provider-node": "3.637.0",
|
||||||
"@aws-sdk/middleware-host-header": "3.620.0",
|
"@aws-sdk/middleware-host-header": "3.620.0",
|
||||||
"@aws-sdk/middleware-logger": "3.609.0",
|
"@aws-sdk/middleware-logger": "3.609.0",
|
||||||
"@aws-sdk/middleware-recursion-detection": "3.620.0",
|
"@aws-sdk/middleware-recursion-detection": "3.620.0",
|
||||||
"@aws-sdk/middleware-user-agent": "3.620.0",
|
"@aws-sdk/middleware-user-agent": "3.637.0",
|
||||||
"@aws-sdk/region-config-resolver": "3.614.0",
|
"@aws-sdk/region-config-resolver": "3.614.0",
|
||||||
"@aws-sdk/types": "3.609.0",
|
"@aws-sdk/types": "3.609.0",
|
||||||
"@aws-sdk/util-endpoints": "3.614.0",
|
"@aws-sdk/util-endpoints": "3.637.0",
|
||||||
"@aws-sdk/util-user-agent-browser": "3.609.0",
|
"@aws-sdk/util-user-agent-browser": "3.609.0",
|
||||||
"@aws-sdk/util-user-agent-node": "3.614.0",
|
"@aws-sdk/util-user-agent-node": "3.614.0",
|
||||||
"@smithy/config-resolver": "^3.0.5",
|
"@smithy/config-resolver": "^3.0.5",
|
||||||
"@smithy/core": "^2.3.2",
|
"@smithy/core": "^2.4.0",
|
||||||
"@smithy/fetch-http-handler": "^3.2.4",
|
"@smithy/fetch-http-handler": "^3.2.4",
|
||||||
"@smithy/hash-node": "^3.0.3",
|
"@smithy/hash-node": "^3.0.3",
|
||||||
"@smithy/invalid-dependency": "^3.0.3",
|
"@smithy/invalid-dependency": "^3.0.3",
|
||||||
"@smithy/middleware-content-length": "^3.0.5",
|
"@smithy/middleware-content-length": "^3.0.5",
|
||||||
"@smithy/middleware-endpoint": "^3.1.0",
|
"@smithy/middleware-endpoint": "^3.1.0",
|
||||||
"@smithy/middleware-retry": "^3.0.14",
|
"@smithy/middleware-retry": "^3.0.15",
|
||||||
"@smithy/middleware-serde": "^3.0.3",
|
"@smithy/middleware-serde": "^3.0.3",
|
||||||
"@smithy/middleware-stack": "^3.0.3",
|
"@smithy/middleware-stack": "^3.0.3",
|
||||||
"@smithy/node-config-provider": "^3.1.4",
|
"@smithy/node-config-provider": "^3.1.4",
|
||||||
"@smithy/node-http-handler": "^3.1.4",
|
"@smithy/node-http-handler": "^3.1.4",
|
||||||
"@smithy/protocol-http": "^4.1.0",
|
"@smithy/protocol-http": "^4.1.0",
|
||||||
"@smithy/smithy-client": "^3.1.12",
|
"@smithy/smithy-client": "^3.2.0",
|
||||||
"@smithy/types": "^3.3.0",
|
"@smithy/types": "^3.3.0",
|
||||||
"@smithy/url-parser": "^3.0.3",
|
"@smithy/url-parser": "^3.0.3",
|
||||||
"@smithy/util-base64": "^3.0.0",
|
"@smithy/util-base64": "^3.0.0",
|
||||||
"@smithy/util-body-length-browser": "^3.0.0",
|
"@smithy/util-body-length-browser": "^3.0.0",
|
||||||
"@smithy/util-body-length-node": "^3.0.0",
|
"@smithy/util-body-length-node": "^3.0.0",
|
||||||
"@smithy/util-defaults-mode-browser": "^3.0.14",
|
"@smithy/util-defaults-mode-browser": "^3.0.15",
|
||||||
"@smithy/util-defaults-mode-node": "^3.0.14",
|
"@smithy/util-defaults-mode-node": "^3.0.15",
|
||||||
"@smithy/util-endpoints": "^2.0.5",
|
"@smithy/util-endpoints": "^2.0.5",
|
||||||
"@smithy/util-middleware": "^3.0.3",
|
"@smithy/util-middleware": "^3.0.3",
|
||||||
"@smithy/util-retry": "^3.0.3",
|
"@smithy/util-retry": "^3.0.3",
|
||||||
@@ -298,44 +298,44 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@aws-sdk/client-sso": {
|
"node_modules/@aws-sdk/client-sso": {
|
||||||
"version": "3.629.0",
|
"version": "3.637.0",
|
||||||
"resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.629.0.tgz",
|
"resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.637.0.tgz",
|
||||||
"integrity": "sha512-2w8xU4O0Grca5HmT2dXZ5fF0g39RxODtmoqHJDsK5DSt750LqDG4w3ktmBvQs3+SrpkkJOjlX5v/hb2PCxVbww==",
|
"integrity": "sha512-+KjLvgX5yJYROWo3TQuwBJlHCY0zz9PsLuEolmXQn0BVK1L/m9GteZHtd+rEdAoDGBpE0Xqjy1oz5+SmtsaRUw==",
|
||||||
"license": "Apache-2.0",
|
"license": "Apache-2.0",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@aws-crypto/sha256-browser": "5.2.0",
|
"@aws-crypto/sha256-browser": "5.2.0",
|
||||||
"@aws-crypto/sha256-js": "5.2.0",
|
"@aws-crypto/sha256-js": "5.2.0",
|
||||||
"@aws-sdk/core": "3.629.0",
|
"@aws-sdk/core": "3.635.0",
|
||||||
"@aws-sdk/middleware-host-header": "3.620.0",
|
"@aws-sdk/middleware-host-header": "3.620.0",
|
||||||
"@aws-sdk/middleware-logger": "3.609.0",
|
"@aws-sdk/middleware-logger": "3.609.0",
|
||||||
"@aws-sdk/middleware-recursion-detection": "3.620.0",
|
"@aws-sdk/middleware-recursion-detection": "3.620.0",
|
||||||
"@aws-sdk/middleware-user-agent": "3.620.0",
|
"@aws-sdk/middleware-user-agent": "3.637.0",
|
||||||
"@aws-sdk/region-config-resolver": "3.614.0",
|
"@aws-sdk/region-config-resolver": "3.614.0",
|
||||||
"@aws-sdk/types": "3.609.0",
|
"@aws-sdk/types": "3.609.0",
|
||||||
"@aws-sdk/util-endpoints": "3.614.0",
|
"@aws-sdk/util-endpoints": "3.637.0",
|
||||||
"@aws-sdk/util-user-agent-browser": "3.609.0",
|
"@aws-sdk/util-user-agent-browser": "3.609.0",
|
||||||
"@aws-sdk/util-user-agent-node": "3.614.0",
|
"@aws-sdk/util-user-agent-node": "3.614.0",
|
||||||
"@smithy/config-resolver": "^3.0.5",
|
"@smithy/config-resolver": "^3.0.5",
|
||||||
"@smithy/core": "^2.3.2",
|
"@smithy/core": "^2.4.0",
|
||||||
"@smithy/fetch-http-handler": "^3.2.4",
|
"@smithy/fetch-http-handler": "^3.2.4",
|
||||||
"@smithy/hash-node": "^3.0.3",
|
"@smithy/hash-node": "^3.0.3",
|
||||||
"@smithy/invalid-dependency": "^3.0.3",
|
"@smithy/invalid-dependency": "^3.0.3",
|
||||||
"@smithy/middleware-content-length": "^3.0.5",
|
"@smithy/middleware-content-length": "^3.0.5",
|
||||||
"@smithy/middleware-endpoint": "^3.1.0",
|
"@smithy/middleware-endpoint": "^3.1.0",
|
||||||
"@smithy/middleware-retry": "^3.0.14",
|
"@smithy/middleware-retry": "^3.0.15",
|
||||||
"@smithy/middleware-serde": "^3.0.3",
|
"@smithy/middleware-serde": "^3.0.3",
|
||||||
"@smithy/middleware-stack": "^3.0.3",
|
"@smithy/middleware-stack": "^3.0.3",
|
||||||
"@smithy/node-config-provider": "^3.1.4",
|
"@smithy/node-config-provider": "^3.1.4",
|
||||||
"@smithy/node-http-handler": "^3.1.4",
|
"@smithy/node-http-handler": "^3.1.4",
|
||||||
"@smithy/protocol-http": "^4.1.0",
|
"@smithy/protocol-http": "^4.1.0",
|
||||||
"@smithy/smithy-client": "^3.1.12",
|
"@smithy/smithy-client": "^3.2.0",
|
||||||
"@smithy/types": "^3.3.0",
|
"@smithy/types": "^3.3.0",
|
||||||
"@smithy/url-parser": "^3.0.3",
|
"@smithy/url-parser": "^3.0.3",
|
||||||
"@smithy/util-base64": "^3.0.0",
|
"@smithy/util-base64": "^3.0.0",
|
||||||
"@smithy/util-body-length-browser": "^3.0.0",
|
"@smithy/util-body-length-browser": "^3.0.0",
|
||||||
"@smithy/util-body-length-node": "^3.0.0",
|
"@smithy/util-body-length-node": "^3.0.0",
|
||||||
"@smithy/util-defaults-mode-browser": "^3.0.14",
|
"@smithy/util-defaults-mode-browser": "^3.0.15",
|
||||||
"@smithy/util-defaults-mode-node": "^3.0.14",
|
"@smithy/util-defaults-mode-node": "^3.0.15",
|
||||||
"@smithy/util-endpoints": "^2.0.5",
|
"@smithy/util-endpoints": "^2.0.5",
|
||||||
"@smithy/util-middleware": "^3.0.3",
|
"@smithy/util-middleware": "^3.0.3",
|
||||||
"@smithy/util-retry": "^3.0.3",
|
"@smithy/util-retry": "^3.0.3",
|
||||||
@@ -347,45 +347,45 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@aws-sdk/client-sso-oidc": {
|
"node_modules/@aws-sdk/client-sso-oidc": {
|
||||||
"version": "3.629.0",
|
"version": "3.637.0",
|
||||||
"resolved": "https://registry.npmjs.org/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.629.0.tgz",
|
"resolved": "https://registry.npmjs.org/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.637.0.tgz",
|
||||||
"integrity": "sha512-3if0LauNJPqubGYf8vnlkp+B3yAeKRuRNxfNbHlE6l510xWGcKK/ZsEmiFmfePzKKSRrDh/cxMFMScgOrXptNg==",
|
"integrity": "sha512-27bHALN6Qb6m6KZmPvRieJ/QRlj1lyac/GT2Rn5kJpre8Mpp+yxrtvp3h9PjNBty4lCeFEENfY4dGNSozBuBcw==",
|
||||||
"license": "Apache-2.0",
|
"license": "Apache-2.0",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@aws-crypto/sha256-browser": "5.2.0",
|
"@aws-crypto/sha256-browser": "5.2.0",
|
||||||
"@aws-crypto/sha256-js": "5.2.0",
|
"@aws-crypto/sha256-js": "5.2.0",
|
||||||
"@aws-sdk/core": "3.629.0",
|
"@aws-sdk/core": "3.635.0",
|
||||||
"@aws-sdk/credential-provider-node": "3.629.0",
|
"@aws-sdk/credential-provider-node": "3.637.0",
|
||||||
"@aws-sdk/middleware-host-header": "3.620.0",
|
"@aws-sdk/middleware-host-header": "3.620.0",
|
||||||
"@aws-sdk/middleware-logger": "3.609.0",
|
"@aws-sdk/middleware-logger": "3.609.0",
|
||||||
"@aws-sdk/middleware-recursion-detection": "3.620.0",
|
"@aws-sdk/middleware-recursion-detection": "3.620.0",
|
||||||
"@aws-sdk/middleware-user-agent": "3.620.0",
|
"@aws-sdk/middleware-user-agent": "3.637.0",
|
||||||
"@aws-sdk/region-config-resolver": "3.614.0",
|
"@aws-sdk/region-config-resolver": "3.614.0",
|
||||||
"@aws-sdk/types": "3.609.0",
|
"@aws-sdk/types": "3.609.0",
|
||||||
"@aws-sdk/util-endpoints": "3.614.0",
|
"@aws-sdk/util-endpoints": "3.637.0",
|
||||||
"@aws-sdk/util-user-agent-browser": "3.609.0",
|
"@aws-sdk/util-user-agent-browser": "3.609.0",
|
||||||
"@aws-sdk/util-user-agent-node": "3.614.0",
|
"@aws-sdk/util-user-agent-node": "3.614.0",
|
||||||
"@smithy/config-resolver": "^3.0.5",
|
"@smithy/config-resolver": "^3.0.5",
|
||||||
"@smithy/core": "^2.3.2",
|
"@smithy/core": "^2.4.0",
|
||||||
"@smithy/fetch-http-handler": "^3.2.4",
|
"@smithy/fetch-http-handler": "^3.2.4",
|
||||||
"@smithy/hash-node": "^3.0.3",
|
"@smithy/hash-node": "^3.0.3",
|
||||||
"@smithy/invalid-dependency": "^3.0.3",
|
"@smithy/invalid-dependency": "^3.0.3",
|
||||||
"@smithy/middleware-content-length": "^3.0.5",
|
"@smithy/middleware-content-length": "^3.0.5",
|
||||||
"@smithy/middleware-endpoint": "^3.1.0",
|
"@smithy/middleware-endpoint": "^3.1.0",
|
||||||
"@smithy/middleware-retry": "^3.0.14",
|
"@smithy/middleware-retry": "^3.0.15",
|
||||||
"@smithy/middleware-serde": "^3.0.3",
|
"@smithy/middleware-serde": "^3.0.3",
|
||||||
"@smithy/middleware-stack": "^3.0.3",
|
"@smithy/middleware-stack": "^3.0.3",
|
||||||
"@smithy/node-config-provider": "^3.1.4",
|
"@smithy/node-config-provider": "^3.1.4",
|
||||||
"@smithy/node-http-handler": "^3.1.4",
|
"@smithy/node-http-handler": "^3.1.4",
|
||||||
"@smithy/protocol-http": "^4.1.0",
|
"@smithy/protocol-http": "^4.1.0",
|
||||||
"@smithy/smithy-client": "^3.1.12",
|
"@smithy/smithy-client": "^3.2.0",
|
||||||
"@smithy/types": "^3.3.0",
|
"@smithy/types": "^3.3.0",
|
||||||
"@smithy/url-parser": "^3.0.3",
|
"@smithy/url-parser": "^3.0.3",
|
||||||
"@smithy/util-base64": "^3.0.0",
|
"@smithy/util-base64": "^3.0.0",
|
||||||
"@smithy/util-body-length-browser": "^3.0.0",
|
"@smithy/util-body-length-browser": "^3.0.0",
|
||||||
"@smithy/util-body-length-node": "^3.0.0",
|
"@smithy/util-body-length-node": "^3.0.0",
|
||||||
"@smithy/util-defaults-mode-browser": "^3.0.14",
|
"@smithy/util-defaults-mode-browser": "^3.0.15",
|
||||||
"@smithy/util-defaults-mode-node": "^3.0.14",
|
"@smithy/util-defaults-mode-node": "^3.0.15",
|
||||||
"@smithy/util-endpoints": "^2.0.5",
|
"@smithy/util-endpoints": "^2.0.5",
|
||||||
"@smithy/util-middleware": "^3.0.3",
|
"@smithy/util-middleware": "^3.0.3",
|
||||||
"@smithy/util-retry": "^3.0.3",
|
"@smithy/util-retry": "^3.0.3",
|
||||||
@@ -396,50 +396,50 @@
|
|||||||
"node": ">=16.0.0"
|
"node": ">=16.0.0"
|
||||||
},
|
},
|
||||||
"peerDependencies": {
|
"peerDependencies": {
|
||||||
"@aws-sdk/client-sts": "^3.629.0"
|
"@aws-sdk/client-sts": "^3.637.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@aws-sdk/client-sts": {
|
"node_modules/@aws-sdk/client-sts": {
|
||||||
"version": "3.629.0",
|
"version": "3.637.0",
|
||||||
"resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.629.0.tgz",
|
"resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.637.0.tgz",
|
||||||
"integrity": "sha512-RjOs371YwnSVGxhPjuluJKaxl4gcPYTAky0nPjwBime0i9/iS9nI8R8l5j7k7ec9tpFWjBPvNnThCU07pvjdzw==",
|
"integrity": "sha512-xUi7x4qDubtA8QREtlblPuAcn91GS/09YVEY/RwU7xCY0aqGuFwgszAANlha4OUIqva8oVj2WO4gJuG+iaSnhw==",
|
||||||
"license": "Apache-2.0",
|
"license": "Apache-2.0",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@aws-crypto/sha256-browser": "5.2.0",
|
"@aws-crypto/sha256-browser": "5.2.0",
|
||||||
"@aws-crypto/sha256-js": "5.2.0",
|
"@aws-crypto/sha256-js": "5.2.0",
|
||||||
"@aws-sdk/client-sso-oidc": "3.629.0",
|
"@aws-sdk/client-sso-oidc": "3.637.0",
|
||||||
"@aws-sdk/core": "3.629.0",
|
"@aws-sdk/core": "3.635.0",
|
||||||
"@aws-sdk/credential-provider-node": "3.629.0",
|
"@aws-sdk/credential-provider-node": "3.637.0",
|
||||||
"@aws-sdk/middleware-host-header": "3.620.0",
|
"@aws-sdk/middleware-host-header": "3.620.0",
|
||||||
"@aws-sdk/middleware-logger": "3.609.0",
|
"@aws-sdk/middleware-logger": "3.609.0",
|
||||||
"@aws-sdk/middleware-recursion-detection": "3.620.0",
|
"@aws-sdk/middleware-recursion-detection": "3.620.0",
|
||||||
"@aws-sdk/middleware-user-agent": "3.620.0",
|
"@aws-sdk/middleware-user-agent": "3.637.0",
|
||||||
"@aws-sdk/region-config-resolver": "3.614.0",
|
"@aws-sdk/region-config-resolver": "3.614.0",
|
||||||
"@aws-sdk/types": "3.609.0",
|
"@aws-sdk/types": "3.609.0",
|
||||||
"@aws-sdk/util-endpoints": "3.614.0",
|
"@aws-sdk/util-endpoints": "3.637.0",
|
||||||
"@aws-sdk/util-user-agent-browser": "3.609.0",
|
"@aws-sdk/util-user-agent-browser": "3.609.0",
|
||||||
"@aws-sdk/util-user-agent-node": "3.614.0",
|
"@aws-sdk/util-user-agent-node": "3.614.0",
|
||||||
"@smithy/config-resolver": "^3.0.5",
|
"@smithy/config-resolver": "^3.0.5",
|
||||||
"@smithy/core": "^2.3.2",
|
"@smithy/core": "^2.4.0",
|
||||||
"@smithy/fetch-http-handler": "^3.2.4",
|
"@smithy/fetch-http-handler": "^3.2.4",
|
||||||
"@smithy/hash-node": "^3.0.3",
|
"@smithy/hash-node": "^3.0.3",
|
||||||
"@smithy/invalid-dependency": "^3.0.3",
|
"@smithy/invalid-dependency": "^3.0.3",
|
||||||
"@smithy/middleware-content-length": "^3.0.5",
|
"@smithy/middleware-content-length": "^3.0.5",
|
||||||
"@smithy/middleware-endpoint": "^3.1.0",
|
"@smithy/middleware-endpoint": "^3.1.0",
|
||||||
"@smithy/middleware-retry": "^3.0.14",
|
"@smithy/middleware-retry": "^3.0.15",
|
||||||
"@smithy/middleware-serde": "^3.0.3",
|
"@smithy/middleware-serde": "^3.0.3",
|
||||||
"@smithy/middleware-stack": "^3.0.3",
|
"@smithy/middleware-stack": "^3.0.3",
|
||||||
"@smithy/node-config-provider": "^3.1.4",
|
"@smithy/node-config-provider": "^3.1.4",
|
||||||
"@smithy/node-http-handler": "^3.1.4",
|
"@smithy/node-http-handler": "^3.1.4",
|
||||||
"@smithy/protocol-http": "^4.1.0",
|
"@smithy/protocol-http": "^4.1.0",
|
||||||
"@smithy/smithy-client": "^3.1.12",
|
"@smithy/smithy-client": "^3.2.0",
|
||||||
"@smithy/types": "^3.3.0",
|
"@smithy/types": "^3.3.0",
|
||||||
"@smithy/url-parser": "^3.0.3",
|
"@smithy/url-parser": "^3.0.3",
|
||||||
"@smithy/util-base64": "^3.0.0",
|
"@smithy/util-base64": "^3.0.0",
|
||||||
"@smithy/util-body-length-browser": "^3.0.0",
|
"@smithy/util-body-length-browser": "^3.0.0",
|
||||||
"@smithy/util-body-length-node": "^3.0.0",
|
"@smithy/util-body-length-node": "^3.0.0",
|
||||||
"@smithy/util-defaults-mode-browser": "^3.0.14",
|
"@smithy/util-defaults-mode-browser": "^3.0.15",
|
||||||
"@smithy/util-defaults-mode-node": "^3.0.14",
|
"@smithy/util-defaults-mode-node": "^3.0.15",
|
||||||
"@smithy/util-endpoints": "^2.0.5",
|
"@smithy/util-endpoints": "^2.0.5",
|
||||||
"@smithy/util-middleware": "^3.0.3",
|
"@smithy/util-middleware": "^3.0.3",
|
||||||
"@smithy/util-retry": "^3.0.3",
|
"@smithy/util-retry": "^3.0.3",
|
||||||
@@ -451,17 +451,17 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@aws-sdk/core": {
|
"node_modules/@aws-sdk/core": {
|
||||||
"version": "3.629.0",
|
"version": "3.635.0",
|
||||||
"resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.629.0.tgz",
|
"resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.635.0.tgz",
|
||||||
"integrity": "sha512-+/ShPU/tyIBM3oY1cnjgNA/tFyHtlWq+wXF9xEKRv19NOpYbWQ+xzNwVjGq8vR07cCRqy/sDQLWPhxjtuV/FiQ==",
|
"integrity": "sha512-i1x/E/sgA+liUE1XJ7rj1dhyXpAKO1UKFUcTTHXok2ARjWTvszHnSXMOsB77aPbmn0fUp1JTx2kHUAZ1LVt5Bg==",
|
||||||
"license": "Apache-2.0",
|
"license": "Apache-2.0",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@smithy/core": "^2.3.2",
|
"@smithy/core": "^2.4.0",
|
||||||
"@smithy/node-config-provider": "^3.1.4",
|
"@smithy/node-config-provider": "^3.1.4",
|
||||||
"@smithy/property-provider": "^3.1.3",
|
"@smithy/property-provider": "^3.1.3",
|
||||||
"@smithy/protocol-http": "^4.1.0",
|
"@smithy/protocol-http": "^4.1.0",
|
||||||
"@smithy/signature-v4": "^4.1.0",
|
"@smithy/signature-v4": "^4.1.0",
|
||||||
"@smithy/smithy-client": "^3.1.12",
|
"@smithy/smithy-client": "^3.2.0",
|
||||||
"@smithy/types": "^3.3.0",
|
"@smithy/types": "^3.3.0",
|
||||||
"@smithy/util-middleware": "^3.0.3",
|
"@smithy/util-middleware": "^3.0.3",
|
||||||
"fast-xml-parser": "4.4.1",
|
"fast-xml-parser": "4.4.1",
|
||||||
@@ -487,9 +487,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@aws-sdk/credential-provider-http": {
|
"node_modules/@aws-sdk/credential-provider-http": {
|
||||||
"version": "3.622.0",
|
"version": "3.635.0",
|
||||||
"resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.622.0.tgz",
|
"resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.635.0.tgz",
|
||||||
"integrity": "sha512-VUHbr24Oll1RK3WR8XLUugLpgK9ZuxEm/NVeVqyFts1Ck9gsKpRg1x4eH7L7tW3SJ4TDEQNMbD7/7J+eoL2svg==",
|
"integrity": "sha512-iJyRgEjOCQlBMXqtwPLIKYc7Bsc6nqjrZybdMDenPDa+kmLg7xh8LxHsu9088e+2/wtLicE34FsJJIfzu3L82g==",
|
||||||
"license": "Apache-2.0",
|
"license": "Apache-2.0",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@aws-sdk/types": "3.609.0",
|
"@aws-sdk/types": "3.609.0",
|
||||||
@@ -497,7 +497,7 @@
|
|||||||
"@smithy/node-http-handler": "^3.1.4",
|
"@smithy/node-http-handler": "^3.1.4",
|
||||||
"@smithy/property-provider": "^3.1.3",
|
"@smithy/property-provider": "^3.1.3",
|
||||||
"@smithy/protocol-http": "^4.1.0",
|
"@smithy/protocol-http": "^4.1.0",
|
||||||
"@smithy/smithy-client": "^3.1.12",
|
"@smithy/smithy-client": "^3.2.0",
|
||||||
"@smithy/types": "^3.3.0",
|
"@smithy/types": "^3.3.0",
|
||||||
"@smithy/util-stream": "^3.1.3",
|
"@smithy/util-stream": "^3.1.3",
|
||||||
"tslib": "^2.6.2"
|
"tslib": "^2.6.2"
|
||||||
@@ -507,15 +507,15 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@aws-sdk/credential-provider-ini": {
|
"node_modules/@aws-sdk/credential-provider-ini": {
|
||||||
"version": "3.629.0",
|
"version": "3.637.0",
|
||||||
"resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.629.0.tgz",
|
"resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.637.0.tgz",
|
||||||
"integrity": "sha512-r9fI7BABARvVDp77DBUImQzYdvarAIdhbvpCEZib0rlpvfWu3zxE9KZcapCAAi0MPjxeDfb7RMehFQIkAP7mYw==",
|
"integrity": "sha512-h+PFCWfZ0Q3Dx84SppET/TFpcQHmxFW8/oV9ArEvMilw4EBN+IlxgbL0CnHwjHW64szcmrM0mbebjEfHf4FXmw==",
|
||||||
"license": "Apache-2.0",
|
"license": "Apache-2.0",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@aws-sdk/credential-provider-env": "3.620.1",
|
"@aws-sdk/credential-provider-env": "3.620.1",
|
||||||
"@aws-sdk/credential-provider-http": "3.622.0",
|
"@aws-sdk/credential-provider-http": "3.635.0",
|
||||||
"@aws-sdk/credential-provider-process": "3.620.1",
|
"@aws-sdk/credential-provider-process": "3.620.1",
|
||||||
"@aws-sdk/credential-provider-sso": "3.629.0",
|
"@aws-sdk/credential-provider-sso": "3.637.0",
|
||||||
"@aws-sdk/credential-provider-web-identity": "3.621.0",
|
"@aws-sdk/credential-provider-web-identity": "3.621.0",
|
||||||
"@aws-sdk/types": "3.609.0",
|
"@aws-sdk/types": "3.609.0",
|
||||||
"@smithy/credential-provider-imds": "^3.2.0",
|
"@smithy/credential-provider-imds": "^3.2.0",
|
||||||
@@ -528,20 +528,20 @@
|
|||||||
"node": ">=16.0.0"
|
"node": ">=16.0.0"
|
||||||
},
|
},
|
||||||
"peerDependencies": {
|
"peerDependencies": {
|
||||||
"@aws-sdk/client-sts": "^3.629.0"
|
"@aws-sdk/client-sts": "^3.637.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@aws-sdk/credential-provider-node": {
|
"node_modules/@aws-sdk/credential-provider-node": {
|
||||||
"version": "3.629.0",
|
"version": "3.637.0",
|
||||||
"resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.629.0.tgz",
|
"resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.637.0.tgz",
|
||||||
"integrity": "sha512-868hnVOLlXOBHk91Rl0jZIRgr/M4WJCa0nOrW9A9yidsQxuZp9P0vshDmm4hMvNZadmPIfo0Rra2MpA4RELoCw==",
|
"integrity": "sha512-yoEhoxJJfs7sPVQ6Is939BDQJZpZCoUgKr/ySse4YKOZ24t4VqgHA6+wV7rYh+7IW24Rd91UTvEzSuHYTlxlNA==",
|
||||||
"license": "Apache-2.0",
|
"license": "Apache-2.0",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@aws-sdk/credential-provider-env": "3.620.1",
|
"@aws-sdk/credential-provider-env": "3.620.1",
|
||||||
"@aws-sdk/credential-provider-http": "3.622.0",
|
"@aws-sdk/credential-provider-http": "3.635.0",
|
||||||
"@aws-sdk/credential-provider-ini": "3.629.0",
|
"@aws-sdk/credential-provider-ini": "3.637.0",
|
||||||
"@aws-sdk/credential-provider-process": "3.620.1",
|
"@aws-sdk/credential-provider-process": "3.620.1",
|
||||||
"@aws-sdk/credential-provider-sso": "3.629.0",
|
"@aws-sdk/credential-provider-sso": "3.637.0",
|
||||||
"@aws-sdk/credential-provider-web-identity": "3.621.0",
|
"@aws-sdk/credential-provider-web-identity": "3.621.0",
|
||||||
"@aws-sdk/types": "3.609.0",
|
"@aws-sdk/types": "3.609.0",
|
||||||
"@smithy/credential-provider-imds": "^3.2.0",
|
"@smithy/credential-provider-imds": "^3.2.0",
|
||||||
@@ -571,12 +571,12 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@aws-sdk/credential-provider-sso": {
|
"node_modules/@aws-sdk/credential-provider-sso": {
|
||||||
"version": "3.629.0",
|
"version": "3.637.0",
|
||||||
"resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.629.0.tgz",
|
"resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.637.0.tgz",
|
||||||
"integrity": "sha512-Lf4XOuj6jamxgGZGrVojERh5S+NS2t2S4CUOnAu6tJ5U0GPlpjhINUKlcVxJBpsIXudMGW1nkumAd3+kazCPig==",
|
"integrity": "sha512-Mvz+h+e62/tl+dVikLafhv+qkZJ9RUb8l2YN/LeKMWkxQylPT83CPk9aimVhCV89zth1zpREArl97+3xsfgQvA==",
|
||||||
"license": "Apache-2.0",
|
"license": "Apache-2.0",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@aws-sdk/client-sso": "3.629.0",
|
"@aws-sdk/client-sso": "3.637.0",
|
||||||
"@aws-sdk/token-providers": "3.614.0",
|
"@aws-sdk/token-providers": "3.614.0",
|
||||||
"@aws-sdk/types": "3.609.0",
|
"@aws-sdk/types": "3.609.0",
|
||||||
"@smithy/property-provider": "^3.1.3",
|
"@smithy/property-provider": "^3.1.3",
|
||||||
@@ -650,13 +650,13 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@aws-sdk/middleware-user-agent": {
|
"node_modules/@aws-sdk/middleware-user-agent": {
|
||||||
"version": "3.620.0",
|
"version": "3.637.0",
|
||||||
"resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.620.0.tgz",
|
"resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.637.0.tgz",
|
||||||
"integrity": "sha512-bvS6etn+KsuL32ubY5D3xNof1qkenpbJXf/ugGXbg0n98DvDFQ/F+SMLxHgbnER5dsKYchNnhmtI6/FC3HFu/A==",
|
"integrity": "sha512-EYo0NE9/da/OY8STDsK2LvM4kNa79DBsf4YVtaG4P5pZ615IeFsD8xOHZeuJmUrSMlVQ8ywPRX7WMucUybsKug==",
|
||||||
"license": "Apache-2.0",
|
"license": "Apache-2.0",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@aws-sdk/types": "3.609.0",
|
"@aws-sdk/types": "3.609.0",
|
||||||
"@aws-sdk/util-endpoints": "3.614.0",
|
"@aws-sdk/util-endpoints": "3.637.0",
|
||||||
"@smithy/protocol-http": "^4.1.0",
|
"@smithy/protocol-http": "^4.1.0",
|
||||||
"@smithy/types": "^3.3.0",
|
"@smithy/types": "^3.3.0",
|
||||||
"tslib": "^2.6.2"
|
"tslib": "^2.6.2"
|
||||||
@@ -713,9 +713,10 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@aws-sdk/util-endpoints": {
|
"node_modules/@aws-sdk/util-endpoints": {
|
||||||
"version": "3.614.0",
|
"version": "3.637.0",
|
||||||
"resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.614.0.tgz",
|
"resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.637.0.tgz",
|
||||||
"integrity": "sha512-wK2cdrXHH4oz4IomV/yrGkftU9A+ITB6nFL+rxxyO78is2ifHJpFdV4aqk4LSkXYPi6CXWNru/Dqc7yiKXgJPw==",
|
"integrity": "sha512-pAqOKUHeVWHEXXDIp/qoMk/6jyxIb6GGjnK1/f8dKHtKIEs4tKsnnL563gceEvdad53OPXIt86uoevCcCzmBnw==",
|
||||||
|
"license": "Apache-2.0",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@aws-sdk/types": "3.609.0",
|
"@aws-sdk/types": "3.609.0",
|
||||||
"@smithy/types": "^3.3.0",
|
"@smithy/types": "^3.3.0",
|
||||||
@@ -1663,9 +1664,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@opensearch-project/opensearch": {
|
"node_modules/@opensearch-project/opensearch": {
|
||||||
"version": "2.11.0",
|
"version": "2.12.0",
|
||||||
"resolved": "https://registry.npmjs.org/@opensearch-project/opensearch/-/opensearch-2.11.0.tgz",
|
"resolved": "https://registry.npmjs.org/@opensearch-project/opensearch/-/opensearch-2.12.0.tgz",
|
||||||
"integrity": "sha512-G+SZwtWRDv90IrtTSNnCt0MQjHVyqrcIXcpwN68vjHnfbun2+RHn+ux4K7dnG+s/KwWzVKIpPFoRjg2gfFX0Mw==",
|
"integrity": "sha512-FNGWbWjvpWIZHVvAbv0FkSgvc1PnWnYEHnOTeIY08vMDp9QpXumGNDjNc1tZthJ3OEeoooqH0miGFORjWnRYsQ==",
|
||||||
"license": "Apache-2.0",
|
"license": "Apache-2.0",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"aws4": "^1.11.0",
|
"aws4": "^1.11.0",
|
||||||
@@ -1781,18 +1782,20 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@smithy/core": {
|
"node_modules/@smithy/core": {
|
||||||
"version": "2.3.2",
|
"version": "2.4.0",
|
||||||
"resolved": "https://registry.npmjs.org/@smithy/core/-/core-2.3.2.tgz",
|
"resolved": "https://registry.npmjs.org/@smithy/core/-/core-2.4.0.tgz",
|
||||||
"integrity": "sha512-in5wwt6chDBcUv1Lw1+QzZxN9fBffi+qOixfb65yK4sDuKG7zAUO9HAFqmVzsZM3N+3tTyvZjtnDXePpvp007Q==",
|
"integrity": "sha512-cHXq+FneIF/KJbt4q4pjN186+Jf4ZB0ZOqEaZMBhT79srEyGDDBV31NqBRBjazz8ppQ1bJbDJMY9ba5wKFV36w==",
|
||||||
"license": "Apache-2.0",
|
"license": "Apache-2.0",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@smithy/middleware-endpoint": "^3.1.0",
|
"@smithy/middleware-endpoint": "^3.1.0",
|
||||||
"@smithy/middleware-retry": "^3.0.14",
|
"@smithy/middleware-retry": "^3.0.15",
|
||||||
"@smithy/middleware-serde": "^3.0.3",
|
"@smithy/middleware-serde": "^3.0.3",
|
||||||
"@smithy/protocol-http": "^4.1.0",
|
"@smithy/protocol-http": "^4.1.0",
|
||||||
"@smithy/smithy-client": "^3.1.12",
|
"@smithy/smithy-client": "^3.2.0",
|
||||||
"@smithy/types": "^3.3.0",
|
"@smithy/types": "^3.3.0",
|
||||||
|
"@smithy/util-body-length-browser": "^3.0.0",
|
||||||
"@smithy/util-middleware": "^3.0.3",
|
"@smithy/util-middleware": "^3.0.3",
|
||||||
|
"@smithy/util-utf8": "^3.0.0",
|
||||||
"tslib": "^2.6.2"
|
"tslib": "^2.6.2"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
@@ -1895,15 +1898,15 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@smithy/middleware-retry": {
|
"node_modules/@smithy/middleware-retry": {
|
||||||
"version": "3.0.14",
|
"version": "3.0.15",
|
||||||
"resolved": "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-3.0.14.tgz",
|
"resolved": "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-3.0.15.tgz",
|
||||||
"integrity": "sha512-7ZaWZJOjUxa5hgmuMspyt8v/zVsh0GXYuF7OvCmdcbVa/xbnKQoYC+uYKunAqRGTkxjOyuOCw9rmFUFOqqC0eQ==",
|
"integrity": "sha512-iTMedvNt1ApdvkaoE8aSDuwaoc+BhvHqttbA/FO4Ty+y/S5hW6Ci/CTScG7vam4RYJWZxdTElc3MEfHRVH6cgQ==",
|
||||||
"license": "Apache-2.0",
|
"license": "Apache-2.0",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@smithy/node-config-provider": "^3.1.4",
|
"@smithy/node-config-provider": "^3.1.4",
|
||||||
"@smithy/protocol-http": "^4.1.0",
|
"@smithy/protocol-http": "^4.1.0",
|
||||||
"@smithy/service-error-classification": "^3.0.3",
|
"@smithy/service-error-classification": "^3.0.3",
|
||||||
"@smithy/smithy-client": "^3.1.12",
|
"@smithy/smithy-client": "^3.2.0",
|
||||||
"@smithy/types": "^3.3.0",
|
"@smithy/types": "^3.3.0",
|
||||||
"@smithy/util-middleware": "^3.0.3",
|
"@smithy/util-middleware": "^3.0.3",
|
||||||
"@smithy/util-retry": "^3.0.3",
|
"@smithy/util-retry": "^3.0.3",
|
||||||
@@ -2075,9 +2078,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@smithy/smithy-client": {
|
"node_modules/@smithy/smithy-client": {
|
||||||
"version": "3.1.12",
|
"version": "3.2.0",
|
||||||
"resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-3.1.12.tgz",
|
"resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-3.2.0.tgz",
|
||||||
"integrity": "sha512-wtm8JtsycthkHy1YA4zjIh2thJgIQ9vGkoR639DBx5lLlLNU0v4GARpQZkr2WjXue74nZ7MiTSWfVrLkyD8RkA==",
|
"integrity": "sha512-pDbtxs8WOhJLJSeaF/eAbPgXg4VVYFlRcL/zoNYA5WbG3wBL06CHtBSg53ppkttDpAJ/hdiede+xApip1CwSLw==",
|
||||||
"license": "Apache-2.0",
|
"license": "Apache-2.0",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@smithy/middleware-endpoint": "^3.1.0",
|
"@smithy/middleware-endpoint": "^3.1.0",
|
||||||
@@ -2168,13 +2171,13 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@smithy/util-defaults-mode-browser": {
|
"node_modules/@smithy/util-defaults-mode-browser": {
|
||||||
"version": "3.0.14",
|
"version": "3.0.15",
|
||||||
"resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-3.0.14.tgz",
|
"resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-3.0.15.tgz",
|
||||||
"integrity": "sha512-0iwTgKKmAIf+vFLV8fji21Jb2px11ktKVxbX6LIDPAUJyWQqGqBVfwba7xwa1f2FZUoolYQgLvxQEpJycXuQ5w==",
|
"integrity": "sha512-FZ4Psa3vjp8kOXcd3HJOiDPBCWtiilLl57r0cnNtq/Ga9RSDrM5ERL6xt+tO43+2af6Pn5Yp92x2n5vPuduNfg==",
|
||||||
"license": "Apache-2.0",
|
"license": "Apache-2.0",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@smithy/property-provider": "^3.1.3",
|
"@smithy/property-provider": "^3.1.3",
|
||||||
"@smithy/smithy-client": "^3.1.12",
|
"@smithy/smithy-client": "^3.2.0",
|
||||||
"@smithy/types": "^3.3.0",
|
"@smithy/types": "^3.3.0",
|
||||||
"bowser": "^2.11.0",
|
"bowser": "^2.11.0",
|
||||||
"tslib": "^2.6.2"
|
"tslib": "^2.6.2"
|
||||||
@@ -2184,16 +2187,16 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@smithy/util-defaults-mode-node": {
|
"node_modules/@smithy/util-defaults-mode-node": {
|
||||||
"version": "3.0.14",
|
"version": "3.0.15",
|
||||||
"resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-3.0.14.tgz",
|
"resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-3.0.15.tgz",
|
||||||
"integrity": "sha512-e9uQarJKfXApkTMMruIdxHprhcXivH1flYCe8JRDTzkkLx8dA3V5J8GZlST9yfDiRWkJpZJlUXGN9Rc9Ade3OQ==",
|
"integrity": "sha512-KSyAAx2q6d0t6f/S4XB2+3+6aQacm3aLMhs9aLMqn18uYGUepbdssfogW5JQZpc6lXNBnp0tEnR5e9CEKmEd7A==",
|
||||||
"license": "Apache-2.0",
|
"license": "Apache-2.0",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@smithy/config-resolver": "^3.0.5",
|
"@smithy/config-resolver": "^3.0.5",
|
||||||
"@smithy/credential-provider-imds": "^3.2.0",
|
"@smithy/credential-provider-imds": "^3.2.0",
|
||||||
"@smithy/node-config-provider": "^3.1.4",
|
"@smithy/node-config-provider": "^3.1.4",
|
||||||
"@smithy/property-provider": "^3.1.3",
|
"@smithy/property-provider": "^3.1.3",
|
||||||
"@smithy/smithy-client": "^3.1.12",
|
"@smithy/smithy-client": "^3.2.0",
|
||||||
"@smithy/types": "^3.3.0",
|
"@smithy/types": "^3.3.0",
|
||||||
"tslib": "^2.6.2"
|
"tslib": "^2.6.2"
|
||||||
},
|
},
|
||||||
@@ -2689,15 +2692,15 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/aws4": {
|
"node_modules/aws4": {
|
||||||
"version": "1.13.1",
|
"version": "1.13.2",
|
||||||
"resolved": "https://registry.npmjs.org/aws4/-/aws4-1.13.1.tgz",
|
"resolved": "https://registry.npmjs.org/aws4/-/aws4-1.13.2.tgz",
|
||||||
"integrity": "sha512-u5w79Rd7SU4JaIlA/zFqG+gOiuq25q5VLyZ8E+ijJeILuTxVzZgp2CaGw/UTw6pXYN9XMO9yiqj/nEHmhTG5CA==",
|
"integrity": "sha512-lHe62zvbTB5eEABUVi/AwVh0ZKY9rMMDhmm+eeyuuUQbQ3+J+fONVQOZyj+DdrvD4BY33uYniyRJ4UJIaSKAfw==",
|
||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
"node_modules/axios": {
|
"node_modules/axios": {
|
||||||
"version": "1.7.4",
|
"version": "1.7.7",
|
||||||
"resolved": "https://registry.npmjs.org/axios/-/axios-1.7.4.tgz",
|
"resolved": "https://registry.npmjs.org/axios/-/axios-1.7.7.tgz",
|
||||||
"integrity": "sha512-DukmaFRnY6AzAALSH4J2M3k6PkaC+MfaAGdEERRWcC9q3/TWQwLpHR8ZRLKTdQ3aBDL64EdluRDjJqKw+BPZEw==",
|
"integrity": "sha512-S4kL7XrjgBmvdGut0sN3yJxqYzrDOnivkBiN0OFs6hLiUam3UPvswUo0kqGyhqUZGEOytHyumEdXsAkgCOUf3Q==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"follow-redirects": "^1.15.6",
|
"follow-redirects": "^1.15.6",
|
||||||
@@ -2962,9 +2965,10 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/chart.js": {
|
"node_modules/chart.js": {
|
||||||
"version": "4.4.3",
|
"version": "4.4.4",
|
||||||
"resolved": "https://registry.npmjs.org/chart.js/-/chart.js-4.4.3.tgz",
|
"resolved": "https://registry.npmjs.org/chart.js/-/chart.js-4.4.4.tgz",
|
||||||
"integrity": "sha512-qK1gkGSRYcJzqrrzdR6a+I0vQ4/R+SoODXyAjscQ/4mzuNzySaMCd+hyVxitSY1+L2fjPD1Gbn+ibNqRmwQeLw==",
|
"integrity": "sha512-emICKGBABnxhMjUjlYRR12PmOXhJ2eJjEHL2/dZlWjxRAZT1D8xplLFq5M0tMQK8ja+wBS/tuVEJB5C6r7VxJA==",
|
||||||
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@kurkle/color": "^0.3.0"
|
"@kurkle/color": "^0.3.0"
|
||||||
},
|
},
|
||||||
@@ -3456,9 +3460,10 @@
|
|||||||
"integrity": "sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ=="
|
"integrity": "sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ=="
|
||||||
},
|
},
|
||||||
"node_modules/debug": {
|
"node_modules/debug": {
|
||||||
"version": "4.3.5",
|
"version": "4.3.6",
|
||||||
"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz",
|
"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz",
|
||||||
"integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==",
|
"integrity": "sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==",
|
||||||
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"ms": "2.1.2"
|
"ms": "2.1.2"
|
||||||
},
|
},
|
||||||
@@ -4107,9 +4112,9 @@
|
|||||||
"integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
|
"integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
|
||||||
},
|
},
|
||||||
"node_modules/firebase-admin": {
|
"node_modules/firebase-admin": {
|
||||||
"version": "12.3.1",
|
"version": "12.4.0",
|
||||||
"resolved": "https://registry.npmjs.org/firebase-admin/-/firebase-admin-12.3.1.tgz",
|
"resolved": "https://registry.npmjs.org/firebase-admin/-/firebase-admin-12.4.0.tgz",
|
||||||
"integrity": "sha512-vEr3s3esl8nPIA9r/feDT4nzIXCfov1CyyCSpMQWp6x63Q104qke0MEGZlrHUZVROtl8FLus6niP/M9I1s4VBA==",
|
"integrity": "sha512-3HOHqJxNmFv0JgK3voyMQgmcibhJN4LQfZfhnZGb6pcONnZxejki4nQ1twsoJlGaIvgQWBtO7rc5mh/cqlOJNA==",
|
||||||
"license": "Apache-2.0",
|
"license": "Apache-2.0",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@fastify/busboy": "^3.0.0",
|
"@fastify/busboy": "^3.0.0",
|
||||||
@@ -5500,11 +5505,12 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/node-mailjet": {
|
"node_modules/node-mailjet": {
|
||||||
"version": "6.0.5",
|
"version": "6.0.6",
|
||||||
"resolved": "https://registry.npmjs.org/node-mailjet/-/node-mailjet-6.0.5.tgz",
|
"resolved": "https://registry.npmjs.org/node-mailjet/-/node-mailjet-6.0.6.tgz",
|
||||||
"integrity": "sha512-upufsTkMyrDF7Z6OiJ4M4Yw4L6MkB0vOQB27W1V9q0CxxSA6e2xOJif3koPwwwgDELpbJNG7asZjKFdghtxUCw==",
|
"integrity": "sha512-cr8ciqtHuxyFd3+3bpDy+oKuNzctZfRQZtwRjurVAzE+DZLTfyxjgD+GTqQ1kr0ClAjDjSh3ERlZvd5MV0fKHg==",
|
||||||
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"axios": "1.6.2",
|
"axios": "1.7.4",
|
||||||
"json-bigint": "^1.0.0",
|
"json-bigint": "^1.0.0",
|
||||||
"url-join": "^4.0.0"
|
"url-join": "^4.0.0"
|
||||||
},
|
},
|
||||||
@@ -5514,11 +5520,12 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/node-mailjet/node_modules/axios": {
|
"node_modules/node-mailjet/node_modules/axios": {
|
||||||
"version": "1.6.2",
|
"version": "1.7.4",
|
||||||
"resolved": "https://registry.npmjs.org/axios/-/axios-1.6.2.tgz",
|
"resolved": "https://registry.npmjs.org/axios/-/axios-1.7.4.tgz",
|
||||||
"integrity": "sha512-7i24Ri4pmDRfJTR7LDBhsOTtcm+9kjX5WiY1X3wIisx6G9So3pfMkEiU7emUBe46oceVImccTEM3k6C5dbVW8A==",
|
"integrity": "sha512-DukmaFRnY6AzAALSH4J2M3k6PkaC+MfaAGdEERRWcC9q3/TWQwLpHR8ZRLKTdQ3aBDL64EdluRDjJqKw+BPZEw==",
|
||||||
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"follow-redirects": "^1.15.0",
|
"follow-redirects": "^1.15.6",
|
||||||
"form-data": "^4.0.0",
|
"form-data": "^4.0.0",
|
||||||
"proxy-from-env": "^1.1.0"
|
"proxy-from-env": "^1.1.0"
|
||||||
}
|
}
|
||||||
@@ -5533,9 +5540,10 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/nodemailer": {
|
"node_modules/nodemailer": {
|
||||||
"version": "6.9.14",
|
"version": "6.9.15",
|
||||||
"resolved": "https://registry.npmjs.org/nodemailer/-/nodemailer-6.9.14.tgz",
|
"resolved": "https://registry.npmjs.org/nodemailer/-/nodemailer-6.9.15.tgz",
|
||||||
"integrity": "sha512-Dobp/ebDKBvz91sbtRKhcznLThrKxKt97GI2FAlAyy+fk19j73Uz3sBXolVtmcXjaorivqsbbbjDY+Jkt4/bQA==",
|
"integrity": "sha512-AHf04ySLC6CIfuRtRiEYtGEXgRfa6INgWGluDhnxTZhHSKvrBu7lc1VVchQ0d8nPc4cFaZoPq8vkyNoZr0TpGQ==",
|
||||||
|
"license": "MIT-0",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=6.0.0"
|
"node": ">=6.0.0"
|
||||||
}
|
}
|
||||||
@@ -5797,9 +5805,10 @@
|
|||||||
"integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ=="
|
"integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ=="
|
||||||
},
|
},
|
||||||
"node_modules/phone": {
|
"node_modules/phone": {
|
||||||
"version": "3.1.49",
|
"version": "3.1.50",
|
||||||
"resolved": "https://registry.npmjs.org/phone/-/phone-3.1.49.tgz",
|
"resolved": "https://registry.npmjs.org/phone/-/phone-3.1.50.tgz",
|
||||||
"integrity": "sha512-S+rHWXSQrllK5eQwz0sDbwfxQ2PzennWPgsP/jdpEPH3k7P5IBJZYjvYfU8e/RF5AwKCgOtzbTGTGJcBSLJVVw==",
|
"integrity": "sha512-TRmb2bX3sX+rrOrc8FRd8hmy4exoH2Lu3vjBP/dLgwwci1lv7DbjJ2iHMe7X4Hm8Pa0rJcfqTbq/O1vjU4NgxQ==",
|
||||||
|
"license": "MIT",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=12"
|
"node": ">=12"
|
||||||
}
|
}
|
||||||
@@ -6371,14 +6380,14 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/soap": {
|
"node_modules/soap": {
|
||||||
"version": "1.1.1",
|
"version": "1.1.3",
|
||||||
"resolved": "https://registry.npmjs.org/soap/-/soap-1.1.1.tgz",
|
"resolved": "https://registry.npmjs.org/soap/-/soap-1.1.3.tgz",
|
||||||
"integrity": "sha512-Mxj/nQ9oO+zYiVZqk9AiXgeHkX/xj8EAnbri9BkxGoMrWw3fKtQulaquSbIO+kgoZfm7g08xddtmpOG2H+Z0zQ==",
|
"integrity": "sha512-yaVQ/a3uAJZesW4CFuU7reF3ip3xQDaGMm2VnMfZoVPOEws4jbg/CQJ3+kZ7WOICMH6vt4Mu+Ra04dZjJEXxww==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"axios": "^1.7.2",
|
"axios": "^1.7.7",
|
||||||
"axios-ntlm": "^1.4.2",
|
"axios-ntlm": "^1.4.2",
|
||||||
"debug": "^4.3.5",
|
"debug": "^4.3.6",
|
||||||
"formidable": "^3.5.1",
|
"formidable": "^3.5.1",
|
||||||
"get-stream": "^6.0.1",
|
"get-stream": "^6.0.1",
|
||||||
"lodash": "^4.17.21",
|
"lodash": "^4.17.21",
|
||||||
|
|||||||
24
package.json
24
package.json
@@ -19,17 +19,17 @@
|
|||||||
"makeitpretty": "prettier --write \"**/*.{css,js,json,jsx,scss}\""
|
"makeitpretty": "prettier --write \"**/*.{css,js,json,jsx,scss}\""
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@aws-sdk/client-secrets-manager": "^3.629.0",
|
"@aws-sdk/client-secrets-manager": "^3.637.0",
|
||||||
"@aws-sdk/client-ses": "^3.629.0",
|
"@aws-sdk/client-ses": "^3.637.0",
|
||||||
"@aws-sdk/credential-provider-node": "^3.629.0",
|
"@aws-sdk/credential-provider-node": "^3.637.0",
|
||||||
"@opensearch-project/opensearch": "^2.11.0",
|
"@opensearch-project/opensearch": "^2.12.0",
|
||||||
"aws4": "^1.13.1",
|
"aws4": "^1.13.2",
|
||||||
"axios": "^1.7.4",
|
"axios": "^1.7.7",
|
||||||
"better-queue": "^3.8.12",
|
"better-queue": "^3.8.12",
|
||||||
"bluebird": "^3.7.2",
|
"bluebird": "^3.7.2",
|
||||||
"body-parser": "^1.20.2",
|
"body-parser": "^1.20.2",
|
||||||
"canvas": "^2.11.2",
|
"canvas": "^2.11.2",
|
||||||
"chart.js": "^4.4.3",
|
"chart.js": "^4.4.4",
|
||||||
"cloudinary": "^2.4.0",
|
"cloudinary": "^2.4.0",
|
||||||
"compression": "^1.7.4",
|
"compression": "^1.7.4",
|
||||||
"cookie-parser": "^1.4.6",
|
"cookie-parser": "^1.4.6",
|
||||||
@@ -38,7 +38,7 @@
|
|||||||
"dinero.js": "^1.9.1",
|
"dinero.js": "^1.9.1",
|
||||||
"dotenv": "^16.4.5",
|
"dotenv": "^16.4.5",
|
||||||
"express": "^4.19.2",
|
"express": "^4.19.2",
|
||||||
"firebase-admin": "^12.3.1",
|
"firebase-admin": "^12.4.0",
|
||||||
"graphql": "^16.9.0",
|
"graphql": "^16.9.0",
|
||||||
"graphql-request": "^6.1.0",
|
"graphql-request": "^6.1.0",
|
||||||
"graylog2": "^0.2.1",
|
"graylog2": "^0.2.1",
|
||||||
@@ -49,13 +49,13 @@
|
|||||||
"moment": "^2.30.1",
|
"moment": "^2.30.1",
|
||||||
"moment-timezone": "^0.5.45",
|
"moment-timezone": "^0.5.45",
|
||||||
"multer": "^1.4.5-lts.1",
|
"multer": "^1.4.5-lts.1",
|
||||||
"node-mailjet": "^6.0.5",
|
"node-mailjet": "^6.0.6",
|
||||||
"node-persist": "^4.0.3",
|
"node-persist": "^4.0.3",
|
||||||
"nodemailer": "^6.9.14",
|
"nodemailer": "^6.9.15",
|
||||||
"phone": "^3.1.49",
|
"phone": "^3.1.50",
|
||||||
"recursive-diff": "^1.0.9",
|
"recursive-diff": "^1.0.9",
|
||||||
"rimraf": "^6.0.1",
|
"rimraf": "^6.0.1",
|
||||||
"soap": "^1.1.1",
|
"soap": "^1.1.3",
|
||||||
"socket.io": "^4.7.5",
|
"socket.io": "^4.7.5",
|
||||||
"ssh2-sftp-client": "^10.0.3",
|
"ssh2-sftp-client": "^10.0.3",
|
||||||
"twilio": "^4.23.0",
|
"twilio": "^4.23.0",
|
||||||
|
|||||||
Reference in New Issue
Block a user