diff --git a/.github/workflows/merge-main.yml b/.github/workflows/merge-main.yml
index 11f1c5399d..6b2c8e7943 100644
--- a/.github/workflows/merge-main.yml
+++ b/.github/workflows/merge-main.yml
@@ -117,9 +117,6 @@ jobs:
parameters:
-p ZONE=${{ env.ZONE }} -p NAME=${{ github.event.repository.name }}
-p PROMOTE=${{ github.repository }}/backend:${{ env.ZONE }}
- -p NODE_ENV='development'
- -p API_URL='https://nrfc-api-test.api.gov.bc.ca'
- -p X_API_KEY=${{ secrets.GWA_X_API_KEY }}
-p CHES_CLIENT_ID=${{ secrets.CHES_CLIENT_ID }}
-p CHES_CLIENT_SECRET=${{ secrets.CHES_CLIENT_SECRET }}
-p CHES_TOKEN_URL='https://test.loginproxy.gov.bc.ca/auth/realms/comsvcauth/protocol/openid-connect/token'
@@ -227,9 +224,6 @@ jobs:
parameters:
-p ZONE=${{ env.ZONE }} -p NAME=${{ github.event.repository.name }}
-p PROMOTE=${{ github.repository }}/backend:${{ env.PREV }}
- -p NODE_ENV='production'
- -p API_URL='https://nrfc-api-prod.api.gov.bc.ca'
- -p X_API_KEY=${{ secrets.GWA_X_API_KEY }}
-p CHES_CLIENT_ID=${{ secrets.CHES_CLIENT_ID }}
-p CHES_CLIENT_SECRET=${{ secrets.CHES_CLIENT_SECRET }}
-p CHES_TOKEN_URL='https://loginproxy.gov.bc.ca/auth/realms/comsvcauth/protocol/openid-connect/token'
diff --git a/.github/workflows/pr-open.yml b/.github/workflows/pr-open.yml
index b4805a392b..0121d51ca2 100644
--- a/.github/workflows/pr-open.yml
+++ b/.github/workflows/pr-open.yml
@@ -120,6 +120,7 @@ jobs:
name: Deploy Init
needs:
- builds
+ environment: dev
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v3
@@ -137,6 +138,7 @@ jobs:
name: Deploy Database
needs:
- builds
+ environment: dev
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v3
@@ -156,6 +158,7 @@ jobs:
name: Deploy Backend
needs:
- builds
+ environment: dev
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v3
@@ -171,9 +174,6 @@ jobs:
parameters:
-p ZONE=${{ github.event.number }} -p NAME=${{ github.event.repository.name }}
-p PROMOTE=${{ github.repository }}/backend:${{ github.event.number }}
- -p NODE_ENV='development'
- -p API_URL='https://nrfc-api-test.api.gov.bc.ca'
- -p X_API_KEY=${{ secrets.GWA_X_API_KEY }}
-p CHES_CLIENT_ID=${{ secrets.CHES_CLIENT_ID }}
-p CHES_CLIENT_SECRET=${{ secrets.CHES_CLIENT_SECRET }}
-p CHES_TOKEN_URL='https://dev.loginproxy.gov.bc.ca/auth/realms/comsvcauth/protocol/openid-connect/token'
@@ -183,6 +183,7 @@ jobs:
name: Deploy Frontend
needs:
- builds
+ environment: dev
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v3
diff --git a/backend/openshift.deploy.yml b/backend/openshift.deploy.yml
index e5ca034451..aee56a9a86 100644
--- a/backend/openshift.deploy.yml
+++ b/backend/openshift.deploy.yml
@@ -24,12 +24,6 @@ parameters:
- name: PROMOTE
description: Image (namespace/name:tag) to promote/import
value: bcgov/nr-old-growth:prod-backend
- - name: API_URL
- description: URL for the forest client api
- required: true
- - name: X_API_KEY
- description: Key to access to the forest client api
- required: true
- name: CHES_CLIENT_ID
description: CHES service client id
required: true
@@ -42,9 +36,6 @@ parameters:
- name: CHES_API_URL
description: CHES service api url
required: true
- - name: NODE_ENV
- description: environment mode
- required: true
- name: CPU_REQUEST
value: 75m
- name: CPU_LIMIT
@@ -113,19 +104,10 @@ objects:
imagePullPolicy: Always
name: ${NAME}
env:
- - name: NODE_ENV
- value: ${NODE_ENV}
- name: FRONTEND_URL
value: https://${NAME}-${ZONE}-frontend.${DOMAIN}
- name: BACKEND_URL
value: https://${NAME}-${ZONE}-backend.${DOMAIN}
- - name: X_API_KEY
- valueFrom:
- secretKeyRef:
- name: ${NAME}-${ZONE}-${COMPONENT}
- key: x-api-key
- - name: API_URL
- value: ${API_URL}
- name: CHES_CLIENT_ID
valueFrom:
secretKeyRef:
diff --git a/frontend/package-lock.json b/frontend/package-lock.json
index d6859d09db..44ef25e98a 100644
--- a/frontend/package-lock.json
+++ b/frontend/package-lock.json
@@ -21,6 +21,7 @@
"bootstrap-vue-3": "^0.5.1",
"core-js": "^3.27.2",
"dotenv": "^16.0.0",
+ "lodash": "^4.17.21",
"serve": "^14.1.2",
"unplugin-icons": "^0.15.1",
"unplugin-vue-components": "^0.22.11",
@@ -32,6 +33,7 @@
"devDependencies": {
"@rushstack/eslint-patch": "^1.1.0",
"@types/jsdom": "^20.0.1",
+ "@types/lodash": "^4.14.191",
"@types/node": "^18.11.18",
"@typescript-eslint/eslint-plugin": "^5.48.2",
"@typescript-eslint/parser": "^5.48.2",
@@ -529,9 +531,9 @@
}
},
"node_modules/@cypress/request": {
- "version": "2.88.10",
- "resolved": "https://registry.npmjs.org/@cypress/request/-/request-2.88.10.tgz",
- "integrity": "sha512-Zp7F+R93N0yZyG34GutyTNr+okam7s/Fzc1+i3kcqOP8vk6OuajuE9qZJ6Rs+10/1JFtXFYMdyarnU1rZuJesg==",
+ "version": "2.88.11",
+ "resolved": "https://registry.npmjs.org/@cypress/request/-/request-2.88.11.tgz",
+ "integrity": "sha512-M83/wfQ1EkspjkE2lNWNV5ui2Cv7UCv1swW1DqljahbzLVWltcsexQh8jYtuS/vzFXP+HySntGM83ZXA9fn17w==",
"dev": true,
"dependencies": {
"aws-sign2": "~0.7.0",
@@ -547,7 +549,7 @@
"json-stringify-safe": "~5.0.1",
"mime-types": "~2.1.19",
"performance-now": "^2.1.0",
- "qs": "~6.5.2",
+ "qs": "~6.10.3",
"safe-buffer": "^5.1.2",
"tough-cookie": "~2.5.0",
"tunnel-agent": "^0.6.0",
@@ -752,9 +754,9 @@
}
},
"node_modules/@esbuild/linux-loong64": {
- "version": "0.16.17",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.16.17.tgz",
- "integrity": "sha512-dTzNnQwembNDhd654cA4QhbS9uDdXC3TKqMJjgOWsC0yNCbpzfWoXdZvp0mY7HU6nzk5E0zpRGGx3qoQg8T2DQ==",
+ "version": "0.14.54",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.14.54.tgz",
+ "integrity": "sha512-bZBrLAIX1kpWelV0XemxBZllyRmM6vgFQQG2GdNb+r3Fkp0FOh1NJSvekXDs7jq70k4euu1cryLMfU+mTXlEpw==",
"cpu": [
"loong64"
],
@@ -827,9 +829,9 @@
}
},
"node_modules/@esbuild/linux-x64": {
- "version": "0.16.16",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.16.16.tgz",
- "integrity": "sha512-G1+09TopOzo59/55lk5Q0UokghYLyHTKKzD5lXsAOOlGDbieGEFJpJBr3BLDbf7cz89KX04sBeExAR/pL/26sA==",
+ "version": "0.16.17",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.16.17.tgz",
+ "integrity": "sha512-mdPjPxfnmoqhgpiEArqi4egmBAMYvaObgn4poorpUaqmvzzbvqbowRllQ+ZgzGVMGKaPkqUmPDOOFQRUFDmeUw==",
"cpu": [
"x64"
],
@@ -1016,9 +1018,9 @@
"integrity": "sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg=="
},
"node_modules/@iconify/utils": {
- "version": "2.0.11",
- "resolved": "https://registry.npmjs.org/@iconify/utils/-/utils-2.0.11.tgz",
- "integrity": "sha512-oEBZkHpkgySHcMZi80ycoJ+ZdLoJhmbN0+gUK8qNPY79ndus8fBHKPyjjwz5kIvr5U9yiym+xBTTnZOB3m5/Pw==",
+ "version": "2.0.12",
+ "resolved": "https://registry.npmjs.org/@iconify/utils/-/utils-2.0.12.tgz",
+ "integrity": "sha512-hhUyt1/k5RRhfcW/PRRdBw8e1ACehJT5QEZJRm7HnkCiUx11/0ccLr7K0OMlPSwjnfYcBS2gAUD3EpmL0iJCkQ==",
"dependencies": {
"@antfu/install-pkg": "^0.1.1",
"@antfu/utils": "^0.7.2",
@@ -1317,6 +1319,12 @@
"integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==",
"dev": true
},
+ "node_modules/@types/lodash": {
+ "version": "4.14.191",
+ "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.191.tgz",
+ "integrity": "sha512-BdZ5BCCvho3EIXw6wUCXHe7rS53AIDPLE+JzwgT+OsJk53oBfbSmZZ7CX4VaRoN78N+TJpFi9QPlfIVNmJYWxQ==",
+ "dev": true
+ },
"node_modules/@types/node": {
"version": "18.11.18",
"resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.18.tgz",
@@ -1621,9 +1629,9 @@
}
},
"node_modules/@volar/vue-language-core/node_modules/minimatch": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.2.tgz",
- "integrity": "sha512-bNH9mmM9qsJ2X4r2Nat1B//1dJVcn3+iBLa3IgqJ7EbGaDNepL9QSHOxN4ng33s52VMMhhIfgCYDk3C4ZmlDAg==",
+ "version": "5.1.6",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz",
+ "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==",
"dependencies": {
"brace-expansion": "^2.0.1"
},
@@ -1828,13 +1836,13 @@
}
},
"node_modules/@vueuse/core": {
- "version": "9.10.0",
- "resolved": "https://registry.npmjs.org/@vueuse/core/-/core-9.10.0.tgz",
- "integrity": "sha512-CxMewME07qeuzuT/AOIQGv0EhhDoojniqU6pC3F8m5VC76L47UT18DcX88kWlP3I7d3qMJ4u/PD8iSRsy3bmNA==",
+ "version": "9.11.0",
+ "resolved": "https://registry.npmjs.org/@vueuse/core/-/core-9.11.0.tgz",
+ "integrity": "sha512-7yZJ8LNOssA8ZmeSjd4F+wbFBA4csiP4TiaXgruqg1H4PAtzSkv93PPwFLvQkSnfo3Bar+e+6QoRvWjhz7l2Xg==",
"dependencies": {
"@types/web-bluetooth": "^0.0.16",
- "@vueuse/metadata": "9.10.0",
- "@vueuse/shared": "9.10.0",
+ "@vueuse/metadata": "9.11.0",
+ "@vueuse/shared": "9.11.0",
"vue-demi": "*"
},
"funding": {
@@ -1867,17 +1875,17 @@
}
},
"node_modules/@vueuse/metadata": {
- "version": "9.10.0",
- "resolved": "https://registry.npmjs.org/@vueuse/metadata/-/metadata-9.10.0.tgz",
- "integrity": "sha512-G5VZhgTCapzU9rv0Iq2HBrVOSGzOKb+OE668NxhXNcTjUjwYxULkEhAw70FtRLMZc+hxcFAzDZlKYA0xcwNMuw==",
+ "version": "9.11.0",
+ "resolved": "https://registry.npmjs.org/@vueuse/metadata/-/metadata-9.11.0.tgz",
+ "integrity": "sha512-HhtG2SWkcfZBLbamHdvLn7jKOCFpw/ifXjVTd5ilFkj98WVUk/3UTQ03wF1XIkuhSO4+b45hD2lfG9/GdKCF7w==",
"funding": {
"url": "https://github.com/sponsors/antfu"
}
},
"node_modules/@vueuse/shared": {
- "version": "9.10.0",
- "resolved": "https://registry.npmjs.org/@vueuse/shared/-/shared-9.10.0.tgz",
- "integrity": "sha512-vakHJ2ZRklAzqmcVBL38RS7BxdBA4+5poG9NsSyqJxrt9kz0zX3P5CXMy0Hm6LFbZXUgvKdqAS3pUH1zX/5qTQ==",
+ "version": "9.11.0",
+ "resolved": "https://registry.npmjs.org/@vueuse/shared/-/shared-9.11.0.tgz",
+ "integrity": "sha512-8lO7wD5abYxupKy2KynH1pSgP715ky6iCrWYb8aX2AuAVi9uHXj7qE1dw6BnmArSaLHci4x9iuzWPCpAzUkC/A==",
"dependencies": {
"vue-demi": "*"
},
@@ -2303,6 +2311,7 @@
"version": "0.5.1",
"resolved": "https://registry.npmjs.org/bootstrap-vue-3/-/bootstrap-vue-3-0.5.1.tgz",
"integrity": "sha512-azgy+97Ih+TJvI1vJnqt4mptQ8Wvm3P8eKDvL9ZMGBWN/9k2ikU4Wx1OM0KNOZDcC4kyaWmC08n9cbaaShrkJg==",
+ "deprecated": "This package is deprecated and the repo was moved to bootstrap-vue organization. For updates on this project go to bootstrap-vue. The new package is called bootstrap-vue-next. Thanks for your support!",
"dependencies": {
"@nuxt/kit": "3.0.0",
"@vueuse/core": "^9.6.0"
@@ -2633,6 +2642,19 @@
"node": ">=6"
}
},
+ "node_modules/call-bind": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz",
+ "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==",
+ "dev": true,
+ "dependencies": {
+ "function-bind": "^1.1.1",
+ "get-intrinsic": "^1.0.2"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
"node_modules/callsites": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
@@ -2654,9 +2676,9 @@
}
},
"node_modules/caniuse-lite": {
- "version": "1.0.30001442",
- "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001442.tgz",
- "integrity": "sha512-239m03Pqy0hwxYPYR5JwOIxRJfLTWtle9FV8zosfV5pHg+/51uD4nxcUlM8+mWWGfwKtt8lJNHnD3cWw9VZ6ow==",
+ "version": "1.0.30001445",
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001445.tgz",
+ "integrity": "sha512-8sdQIdMztYmzfTMO6KfLny878Ln9c2M0fc7EH60IjlP4Dc4PiCy7K2Vl3ITmWgOyPgVQKa5x+UP/KqFsxj4mBg==",
"funding": [
{
"type": "opencollective",
@@ -3772,21 +3794,6 @@
"node": ">=12"
}
},
- "node_modules/esbuild/node_modules/@esbuild/linux-loong64": {
- "version": "0.14.54",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.14.54.tgz",
- "integrity": "sha512-bZBrLAIX1kpWelV0XemxBZllyRmM6vgFQQG2GdNb+r3Fkp0FOh1NJSvekXDs7jq70k4euu1cryLMfU+mTXlEpw==",
- "cpu": [
- "loong64"
- ],
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
- }
- },
"node_modules/escalade": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz",
@@ -4582,6 +4589,20 @@
"node": "*"
}
},
+ "node_modules/get-intrinsic": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.3.tgz",
+ "integrity": "sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==",
+ "dev": true,
+ "dependencies": {
+ "function-bind": "^1.1.1",
+ "has": "^1.0.3",
+ "has-symbols": "^1.0.3"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
"node_modules/get-stream": {
"version": "5.2.0",
"resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz",
@@ -4743,6 +4764,18 @@
"node": ">=8"
}
},
+ "node_modules/has-symbols": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz",
+ "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
"node_modules/hash-sum": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/hash-sum/-/hash-sum-2.0.0.tgz",
@@ -5134,9 +5167,9 @@
}
},
"node_modules/jiti": {
- "version": "1.16.1",
- "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.16.1.tgz",
- "integrity": "sha512-kJUp4Bj44uTaZAwG6R2/GjbodOWHULn8Swue0B7tY8v5BpTkUvDR+zBM5tsbC4x/jCeYDZ+mAdrUIScwIo4oPw==",
+ "version": "1.16.2",
+ "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.16.2.tgz",
+ "integrity": "sha512-OKBOVWmU3FxDt/UH4zSwiKPuc1nihFZiOD722FuJlngvLz2glX1v2/TJIgoA4+mrpnXxHV6dSAoCvPcYQtoG5A==",
"bin": {
"jiti": "bin/jiti.js"
}
@@ -5244,9 +5277,9 @@
}
},
"node_modules/jsdom/node_modules/punycode": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
- "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.2.0.tgz",
+ "integrity": "sha512-LN6QV1IJ9ZhxWTNdktaPClrNfp8xdSAYS0Zk2ddX7XsXZAxckMHPCBcHRo0cTcEIgYPRiGEkmji3Idkh2yFtYw==",
"devOptional": true,
"engines": {
"node": ">=6"
@@ -5455,8 +5488,7 @@
"node_modules/lodash": {
"version": "4.17.21",
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
- "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
- "dev": true
+ "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
},
"node_modules/lodash._reinterpolate": {
"version": "3.0.0",
@@ -5804,9 +5836,9 @@
}
},
"node_modules/node-fetch": {
- "version": "2.6.7",
- "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz",
- "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==",
+ "version": "2.6.8",
+ "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.8.tgz",
+ "integrity": "sha512-RZ6dBYuj8dRSfxpUSu+NsdF1dpPpluJxwOp+6IoDp/sH2QNDSvurYsAa+F1WxY2RjA1iP93xhcsUoYbF2XBqVg==",
"dependencies": {
"whatwg-url": "^5.0.0"
},
@@ -5888,6 +5920,15 @@
"integrity": "sha512-90yv+6538zuvUMnN+zCr8LuV6bPFdq50304114vJYJ8RDyK8D5O9Phpbd6SZWgI7PwzmmfN1upeOJlvybDSgCw==",
"devOptional": true
},
+ "node_modules/object-inspect": {
+ "version": "1.12.3",
+ "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz",
+ "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==",
+ "dev": true,
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
"node_modules/on-headers": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz",
@@ -6278,12 +6319,18 @@
"integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ=="
},
"node_modules/qs": {
- "version": "6.5.3",
- "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz",
- "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==",
+ "version": "6.10.4",
+ "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.4.tgz",
+ "integrity": "sha512-OQiU+C+Ds5qiH91qh/mg0w+8nwQuLjM4F4M/PbmhDOoYehPh+Fb0bDjtR1sOvy7YKxvj28Y/M0PhP5uVX0kB+g==",
"dev": true,
+ "dependencies": {
+ "side-channel": "^1.0.4"
+ },
"engines": {
"node": ">=0.6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/querystringify": {
@@ -6725,6 +6772,20 @@
"node": ">=8"
}
},
+ "node_modules/side-channel": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz",
+ "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.0",
+ "get-intrinsic": "^1.0.2",
+ "object-inspect": "^1.9.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
"node_modules/siginfo": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/siginfo/-/siginfo-2.0.0.tgz",
@@ -7130,9 +7191,9 @@
}
},
"node_modules/tough-cookie/node_modules/punycode": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
- "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.2.0.tgz",
+ "integrity": "sha512-LN6QV1IJ9ZhxWTNdktaPClrNfp8xdSAYS0Zk2ddX7XsXZAxckMHPCBcHRo0cTcEIgYPRiGEkmji3Idkh2yFtYw==",
"dev": true,
"engines": {
"node": ">=6"
@@ -7151,9 +7212,9 @@
}
},
"node_modules/tr46/node_modules/punycode": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
- "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.2.0.tgz",
+ "integrity": "sha512-LN6QV1IJ9ZhxWTNdktaPClrNfp8xdSAYS0Zk2ddX7XsXZAxckMHPCBcHRo0cTcEIgYPRiGEkmji3Idkh2yFtYw==",
"devOptional": true,
"engines": {
"node": ">=6"
@@ -7413,9 +7474,9 @@
}
},
"node_modules/unplugin-vue-components/node_modules/minimatch": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.2.tgz",
- "integrity": "sha512-bNH9mmM9qsJ2X4r2Nat1B//1dJVcn3+iBLa3IgqJ7EbGaDNepL9QSHOxN4ng33s52VMMhhIfgCYDk3C4ZmlDAg==",
+ "version": "5.1.6",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz",
+ "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==",
"dependencies": {
"brace-expansion": "^2.0.1"
},
@@ -7433,12 +7494,12 @@
}
},
"node_modules/untyped": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/untyped/-/untyped-1.2.1.tgz",
- "integrity": "sha512-hEtBC6MvqXLEEpx5ItPhnpgHIf3hRP310IYHj7N3D5zjdLJnmJNsGRDFbovk6DM2dekF/OBWuxDr0b6479eUkA==",
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/untyped/-/untyped-1.2.2.tgz",
+ "integrity": "sha512-EANYd5L6AdpgfldlgMcmvOOnj092nWhy0ybhc7uhEH12ipytDYz89EOegBQKj8qWL3u1wgYnmFjADhsuCJs5Aw==",
"dependencies": {
- "@babel/core": "^7.20.7",
- "@babel/standalone": "^7.20.11",
+ "@babel/core": "^7.20.12",
+ "@babel/standalone": "^7.20.12",
"@babel/types": "^7.20.7",
"scule": "^1.0.0"
}
@@ -7486,9 +7547,9 @@
}
},
"node_modules/uri-js/node_modules/punycode": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
- "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.2.0.tgz",
+ "integrity": "sha512-LN6QV1IJ9ZhxWTNdktaPClrNfp8xdSAYS0Zk2ddX7XsXZAxckMHPCBcHRo0cTcEIgYPRiGEkmji3Idkh2yFtYw==",
"engines": {
"node": ">=6"
}
@@ -7618,12 +7679,12 @@
"url": "https://github.com/sponsors/antfu"
}
},
- "node_modules/vite-node/node_modules/@esbuild/linux-x64": {
+ "node_modules/vite-node/node_modules/@esbuild/linux-loong64": {
"version": "0.16.17",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.16.17.tgz",
- "integrity": "sha512-mdPjPxfnmoqhgpiEArqi4egmBAMYvaObgn4poorpUaqmvzzbvqbowRllQ+ZgzGVMGKaPkqUmPDOOFQRUFDmeUw==",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.16.17.tgz",
+ "integrity": "sha512-dTzNnQwembNDhd654cA4QhbS9uDdXC3TKqMJjgOWsC0yNCbpzfWoXdZvp0mY7HU6nzk5E0zpRGGx3qoQg8T2DQ==",
"cpu": [
- "x64"
+ "loong64"
],
"optional": true,
"os": [
@@ -7795,160 +7856,10 @@
}
}
},
- "node_modules/vitest/node_modules/@esbuild/android-arm": {
- "version": "0.16.16",
- "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.16.16.tgz",
- "integrity": "sha512-BUuWMlt4WSXod1HSl7aGK8fJOsi+Tab/M0IDK1V1/GstzoOpqc/v3DqmN8MkuapPKQ9Br1WtLAN4uEgWR8x64A==",
- "cpu": [
- "arm"
- ],
- "optional": true,
- "os": [
- "android"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/vitest/node_modules/@esbuild/android-arm64": {
- "version": "0.16.16",
- "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.16.16.tgz",
- "integrity": "sha512-hFHVAzUKp9Tf8psGq+bDVv+6hTy1bAOoV/jJMUWwhUnIHsh6WbFMhw0ZTkqDuh7TdpffFoHOiIOIxmHc7oYRBQ==",
- "cpu": [
- "arm64"
- ],
- "optional": true,
- "os": [
- "android"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/vitest/node_modules/@esbuild/android-x64": {
- "version": "0.16.16",
- "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.16.16.tgz",
- "integrity": "sha512-9WhxJpeb6XumlfivldxqmkJepEcELekmSw3NkGrs+Edq6sS5KRxtUBQuKYDD7KqP59dDkxVbaoPIQFKWQG0KLg==",
- "cpu": [
- "x64"
- ],
- "optional": true,
- "os": [
- "android"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/vitest/node_modules/@esbuild/darwin-arm64": {
- "version": "0.16.16",
- "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.16.16.tgz",
- "integrity": "sha512-8Z+wld+vr/prHPi2O0X7o1zQOfMbXWGAw9hT0jEyU/l/Yrg+0Z3FO9pjPho72dVkZs4ewZk0bDOFLdZHm8jEfw==",
- "cpu": [
- "arm64"
- ],
- "optional": true,
- "os": [
- "darwin"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/vitest/node_modules/@esbuild/darwin-x64": {
- "version": "0.16.16",
- "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.16.16.tgz",
- "integrity": "sha512-CYkxVvkZzGCqFrt7EgjFxQKhlUPyDkuR9P0Y5wEcmJqVI8ncerOIY5Kej52MhZyzOBXkYrJgZeVZC9xXXoEg9A==",
- "cpu": [
- "x64"
- ],
- "optional": true,
- "os": [
- "darwin"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/vitest/node_modules/@esbuild/freebsd-arm64": {
- "version": "0.16.16",
- "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.16.16.tgz",
- "integrity": "sha512-fxrw4BYqQ39z/3Ja9xj/a1gMsVq0xEjhSyI4a9MjfvDDD8fUV8IYliac96i7tzZc3+VytyXX+XNsnpEk5sw5Wg==",
- "cpu": [
- "arm64"
- ],
- "optional": true,
- "os": [
- "freebsd"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/vitest/node_modules/@esbuild/freebsd-x64": {
- "version": "0.16.16",
- "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.16.16.tgz",
- "integrity": "sha512-8p3v1D+du2jiDvSoNVimHhj7leSfST9YlKsAEO7etBfuqjaBMndo0fmjNLp0JCMld+XIx9L80tooOkyUv1a1PQ==",
- "cpu": [
- "x64"
- ],
- "optional": true,
- "os": [
- "freebsd"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/vitest/node_modules/@esbuild/linux-arm": {
- "version": "0.16.16",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.16.16.tgz",
- "integrity": "sha512-bYaocE1/PTMRmkgSckZ0D0Xn2nox8v2qlk+MVVqm+VECNKDdZvghVZtH41dNtBbwADSvA6qkCHGYeWm9LrNCBw==",
- "cpu": [
- "arm"
- ],
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/vitest/node_modules/@esbuild/linux-arm64": {
- "version": "0.16.16",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.16.16.tgz",
- "integrity": "sha512-N3u6BBbCVY3xeP2D8Db7QY8I+nZ+2AgOopUIqk+5yCoLnsWkcVxD2ay5E9iIdvApFi1Vg1lZiiwaVp8bOpAc4A==",
- "cpu": [
- "arm64"
- ],
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/vitest/node_modules/@esbuild/linux-ia32": {
- "version": "0.16.16",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.16.16.tgz",
- "integrity": "sha512-dxjqLKUW8GqGemoRT9v8IgHk+T4tRm1rn1gUcArsp26W9EkK/27VSjBVUXhEG5NInHZ92JaQ3SSMdTwv/r9a2A==",
- "cpu": [
- "ia32"
- ],
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
- }
- },
"node_modules/vitest/node_modules/@esbuild/linux-loong64": {
- "version": "0.16.16",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.16.16.tgz",
- "integrity": "sha512-MdUFggHjRiCCwNE9+1AibewoNq6wf94GLB9Q9aXwl+a75UlRmbRK3h6WJyrSGA6ZstDJgaD2wiTSP7tQNUYxwA==",
+ "version": "0.16.17",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.16.17.tgz",
+ "integrity": "sha512-dTzNnQwembNDhd654cA4QhbS9uDdXC3TKqMJjgOWsC0yNCbpzfWoXdZvp0mY7HU6nzk5E0zpRGGx3qoQg8T2DQ==",
"cpu": [
"loong64"
],
@@ -7960,160 +7871,10 @@
"node": ">=12"
}
},
- "node_modules/vitest/node_modules/@esbuild/linux-mips64el": {
- "version": "0.16.16",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.16.16.tgz",
- "integrity": "sha512-CO3YmO7jYMlGqGoeFeKzdwx/bx8Vtq/SZaMAi+ZLDUnDUdfC7GmGwXzIwDJ70Sg+P9pAemjJyJ1icKJ9R3q/Fg==",
- "cpu": [
- "mips64el"
- ],
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/vitest/node_modules/@esbuild/linux-ppc64": {
- "version": "0.16.16",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.16.16.tgz",
- "integrity": "sha512-DSl5Czh5hCy/7azX0Wl9IdzPHX2H8clC6G87tBnZnzUpNgRxPFhfmArbaHoAysu4JfqCqbB/33u/GL9dUgCBAw==",
- "cpu": [
- "ppc64"
- ],
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/vitest/node_modules/@esbuild/linux-riscv64": {
- "version": "0.16.16",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.16.16.tgz",
- "integrity": "sha512-sSVVMEXsqf1fQu0j7kkhXMViroixU5XoaJXl1u/u+jbXvvhhCt9YvA/B6VM3aM/77HuRQ94neS5bcisijGnKFQ==",
- "cpu": [
- "riscv64"
- ],
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/vitest/node_modules/@esbuild/linux-s390x": {
- "version": "0.16.16",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.16.16.tgz",
- "integrity": "sha512-jRqBCre9gZGoCdCN/UWCCMwCMsOg65IpY9Pyj56mKCF5zXy9d60kkNRdDN6YXGjr3rzcC4DXnS/kQVCGcC4yPQ==",
- "cpu": [
- "s390x"
- ],
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/vitest/node_modules/@esbuild/netbsd-x64": {
- "version": "0.16.16",
- "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.16.16.tgz",
- "integrity": "sha512-xwjGJB5wwDEujLaJIrSMRqWkbigALpBNcsF9SqszoNKc+wY4kPTdKrSxiY5ik3IatojePP+WV108MvF6q6np4w==",
- "cpu": [
- "x64"
- ],
- "optional": true,
- "os": [
- "netbsd"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/vitest/node_modules/@esbuild/openbsd-x64": {
- "version": "0.16.16",
- "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.16.16.tgz",
- "integrity": "sha512-yeERkoxG2nR2oxO5n+Ms7MsCeNk23zrby2GXCqnfCpPp7KNc0vxaaacIxb21wPMfXXRhGBrNP4YLIupUBrWdlg==",
- "cpu": [
- "x64"
- ],
- "optional": true,
- "os": [
- "openbsd"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/vitest/node_modules/@esbuild/sunos-x64": {
- "version": "0.16.16",
- "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.16.16.tgz",
- "integrity": "sha512-nHfbEym0IObXPhtX6Va3H5GaKBty2kdhlAhKmyCj9u255ktAj0b1YACUs9j5H88NRn9cJCthD1Ik/k9wn8YKVg==",
- "cpu": [
- "x64"
- ],
- "optional": true,
- "os": [
- "sunos"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/vitest/node_modules/@esbuild/win32-arm64": {
- "version": "0.16.16",
- "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.16.16.tgz",
- "integrity": "sha512-pdD+M1ZOFy4hE15ZyPX09fd5g4DqbbL1wXGY90YmleVS6Y5YlraW4BvHjim/X/4yuCpTsAFvsT4Nca2lbyDH/A==",
- "cpu": [
- "arm64"
- ],
- "optional": true,
- "os": [
- "win32"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/vitest/node_modules/@esbuild/win32-ia32": {
- "version": "0.16.16",
- "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.16.16.tgz",
- "integrity": "sha512-IPEMfU9p0c3Vb8PqxaPX6BM9rYwlTZGYOf9u+kMdhoILZkVKEjq6PKZO0lB+isojWwAnAqh4ZxshD96njTXajg==",
- "cpu": [
- "ia32"
- ],
- "optional": true,
- "os": [
- "win32"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/vitest/node_modules/@esbuild/win32-x64": {
- "version": "0.16.16",
- "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.16.16.tgz",
- "integrity": "sha512-1YYpoJ39WV/2bnShPwgdzJklc+XS0bysN6Tpnt1cWPdeoKOG4RMEY1g7i534QxXX/rPvNx/NLJQTTCeORYzipg==",
- "cpu": [
- "x64"
- ],
- "optional": true,
- "os": [
- "win32"
- ],
- "engines": {
- "node": ">=12"
- }
- },
"node_modules/vitest/node_modules/esbuild": {
- "version": "0.16.16",
- "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.16.16.tgz",
- "integrity": "sha512-24JyKq10KXM5EBIgPotYIJ2fInNWVVqflv3gicIyQqfmUqi4HvDW1VR790cBgLJHCl96Syy7lhoz7tLFcmuRmg==",
+ "version": "0.16.17",
+ "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.16.17.tgz",
+ "integrity": "sha512-G8LEkV0XzDMNwXKgM0Jwu3nY3lSTwSGY6XbxM9cr9+s0T/qSV1q1JVPBGzm3dcjhCic9+emZDmMffkwgPeOeLg==",
"hasInstallScript": true,
"bin": {
"esbuild": "bin/esbuild"
@@ -8122,34 +7883,34 @@
"node": ">=12"
},
"optionalDependencies": {
- "@esbuild/android-arm": "0.16.16",
- "@esbuild/android-arm64": "0.16.16",
- "@esbuild/android-x64": "0.16.16",
- "@esbuild/darwin-arm64": "0.16.16",
- "@esbuild/darwin-x64": "0.16.16",
- "@esbuild/freebsd-arm64": "0.16.16",
- "@esbuild/freebsd-x64": "0.16.16",
- "@esbuild/linux-arm": "0.16.16",
- "@esbuild/linux-arm64": "0.16.16",
- "@esbuild/linux-ia32": "0.16.16",
- "@esbuild/linux-loong64": "0.16.16",
- "@esbuild/linux-mips64el": "0.16.16",
- "@esbuild/linux-ppc64": "0.16.16",
- "@esbuild/linux-riscv64": "0.16.16",
- "@esbuild/linux-s390x": "0.16.16",
- "@esbuild/linux-x64": "0.16.16",
- "@esbuild/netbsd-x64": "0.16.16",
- "@esbuild/openbsd-x64": "0.16.16",
- "@esbuild/sunos-x64": "0.16.16",
- "@esbuild/win32-arm64": "0.16.16",
- "@esbuild/win32-ia32": "0.16.16",
- "@esbuild/win32-x64": "0.16.16"
+ "@esbuild/android-arm": "0.16.17",
+ "@esbuild/android-arm64": "0.16.17",
+ "@esbuild/android-x64": "0.16.17",
+ "@esbuild/darwin-arm64": "0.16.17",
+ "@esbuild/darwin-x64": "0.16.17",
+ "@esbuild/freebsd-arm64": "0.16.17",
+ "@esbuild/freebsd-x64": "0.16.17",
+ "@esbuild/linux-arm": "0.16.17",
+ "@esbuild/linux-arm64": "0.16.17",
+ "@esbuild/linux-ia32": "0.16.17",
+ "@esbuild/linux-loong64": "0.16.17",
+ "@esbuild/linux-mips64el": "0.16.17",
+ "@esbuild/linux-ppc64": "0.16.17",
+ "@esbuild/linux-riscv64": "0.16.17",
+ "@esbuild/linux-s390x": "0.16.17",
+ "@esbuild/linux-x64": "0.16.17",
+ "@esbuild/netbsd-x64": "0.16.17",
+ "@esbuild/openbsd-x64": "0.16.17",
+ "@esbuild/sunos-x64": "0.16.17",
+ "@esbuild/win32-arm64": "0.16.17",
+ "@esbuild/win32-ia32": "0.16.17",
+ "@esbuild/win32-x64": "0.16.17"
}
},
"node_modules/vitest/node_modules/rollup": {
- "version": "3.9.1",
- "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.9.1.tgz",
- "integrity": "sha512-GswCYHXftN8ZKGVgQhTFUJB/NBXxrRGgO2NCy6E8s1rwEJ4Q9/VttNqcYfEvx4dTo4j58YqdC3OVztPzlKSX8w==",
+ "version": "3.10.0",
+ "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.10.0.tgz",
+ "integrity": "sha512-JmRYz44NjC1MjVF2VKxc0M1a97vn+cDxeqWmnwyAF4FvpjK8YFdHpaqvQB+3IxCvX05vJxKZkoMDU8TShhmJVA==",
"bin": {
"rollup": "dist/bin/rollup"
},
@@ -8978,9 +8739,9 @@
"optional": true
},
"@cypress/request": {
- "version": "2.88.10",
- "resolved": "https://registry.npmjs.org/@cypress/request/-/request-2.88.10.tgz",
- "integrity": "sha512-Zp7F+R93N0yZyG34GutyTNr+okam7s/Fzc1+i3kcqOP8vk6OuajuE9qZJ6Rs+10/1JFtXFYMdyarnU1rZuJesg==",
+ "version": "2.88.11",
+ "resolved": "https://registry.npmjs.org/@cypress/request/-/request-2.88.11.tgz",
+ "integrity": "sha512-M83/wfQ1EkspjkE2lNWNV5ui2Cv7UCv1swW1DqljahbzLVWltcsexQh8jYtuS/vzFXP+HySntGM83ZXA9fn17w==",
"dev": true,
"requires": {
"aws-sign2": "~0.7.0",
@@ -8996,7 +8757,7 @@
"json-stringify-safe": "~5.0.1",
"mime-types": "~2.1.19",
"performance-now": "^2.1.0",
- "qs": "~6.5.2",
+ "qs": "~6.10.3",
"safe-buffer": "^5.1.2",
"tough-cookie": "~2.5.0",
"tunnel-agent": "^0.6.0",
@@ -9106,9 +8867,9 @@
"optional": true
},
"@esbuild/linux-loong64": {
- "version": "0.16.17",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.16.17.tgz",
- "integrity": "sha512-dTzNnQwembNDhd654cA4QhbS9uDdXC3TKqMJjgOWsC0yNCbpzfWoXdZvp0mY7HU6nzk5E0zpRGGx3qoQg8T2DQ==",
+ "version": "0.14.54",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.14.54.tgz",
+ "integrity": "sha512-bZBrLAIX1kpWelV0XemxBZllyRmM6vgFQQG2GdNb+r3Fkp0FOh1NJSvekXDs7jq70k4euu1cryLMfU+mTXlEpw==",
"optional": true
},
"@esbuild/linux-mips64el": {
@@ -9136,9 +8897,9 @@
"optional": true
},
"@esbuild/linux-x64": {
- "version": "0.16.16",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.16.16.tgz",
- "integrity": "sha512-G1+09TopOzo59/55lk5Q0UokghYLyHTKKzD5lXsAOOlGDbieGEFJpJBr3BLDbf7cz89KX04sBeExAR/pL/26sA==",
+ "version": "0.16.17",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.16.17.tgz",
+ "integrity": "sha512-mdPjPxfnmoqhgpiEArqi4egmBAMYvaObgn4poorpUaqmvzzbvqbowRllQ+ZgzGVMGKaPkqUmPDOOFQRUFDmeUw==",
"optional": true
},
"@esbuild/netbsd-x64": {
@@ -9246,9 +9007,9 @@
"integrity": "sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg=="
},
"@iconify/utils": {
- "version": "2.0.11",
- "resolved": "https://registry.npmjs.org/@iconify/utils/-/utils-2.0.11.tgz",
- "integrity": "sha512-oEBZkHpkgySHcMZi80ycoJ+ZdLoJhmbN0+gUK8qNPY79ndus8fBHKPyjjwz5kIvr5U9yiym+xBTTnZOB3m5/Pw==",
+ "version": "2.0.12",
+ "resolved": "https://registry.npmjs.org/@iconify/utils/-/utils-2.0.12.tgz",
+ "integrity": "sha512-hhUyt1/k5RRhfcW/PRRdBw8e1ACehJT5QEZJRm7HnkCiUx11/0ccLr7K0OMlPSwjnfYcBS2gAUD3EpmL0iJCkQ==",
"requires": {
"@antfu/install-pkg": "^0.1.1",
"@antfu/utils": "^0.7.2",
@@ -9487,6 +9248,12 @@
"integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==",
"dev": true
},
+ "@types/lodash": {
+ "version": "4.14.191",
+ "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.191.tgz",
+ "integrity": "sha512-BdZ5BCCvho3EIXw6wUCXHe7rS53AIDPLE+JzwgT+OsJk53oBfbSmZZ7CX4VaRoN78N+TJpFi9QPlfIVNmJYWxQ==",
+ "dev": true
+ },
"@types/node": {
"version": "18.11.18",
"resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.18.tgz",
@@ -9693,9 +9460,9 @@
}
},
"minimatch": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.2.tgz",
- "integrity": "sha512-bNH9mmM9qsJ2X4r2Nat1B//1dJVcn3+iBLa3IgqJ7EbGaDNepL9QSHOxN4ng33s52VMMhhIfgCYDk3C4ZmlDAg==",
+ "version": "5.1.6",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz",
+ "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==",
"requires": {
"brace-expansion": "^2.0.1"
}
@@ -9882,13 +9649,13 @@
"requires": {}
},
"@vueuse/core": {
- "version": "9.10.0",
- "resolved": "https://registry.npmjs.org/@vueuse/core/-/core-9.10.0.tgz",
- "integrity": "sha512-CxMewME07qeuzuT/AOIQGv0EhhDoojniqU6pC3F8m5VC76L47UT18DcX88kWlP3I7d3qMJ4u/PD8iSRsy3bmNA==",
+ "version": "9.11.0",
+ "resolved": "https://registry.npmjs.org/@vueuse/core/-/core-9.11.0.tgz",
+ "integrity": "sha512-7yZJ8LNOssA8ZmeSjd4F+wbFBA4csiP4TiaXgruqg1H4PAtzSkv93PPwFLvQkSnfo3Bar+e+6QoRvWjhz7l2Xg==",
"requires": {
"@types/web-bluetooth": "^0.0.16",
- "@vueuse/metadata": "9.10.0",
- "@vueuse/shared": "9.10.0",
+ "@vueuse/metadata": "9.11.0",
+ "@vueuse/shared": "9.11.0",
"vue-demi": "*"
},
"dependencies": {
@@ -9901,14 +9668,14 @@
}
},
"@vueuse/metadata": {
- "version": "9.10.0",
- "resolved": "https://registry.npmjs.org/@vueuse/metadata/-/metadata-9.10.0.tgz",
- "integrity": "sha512-G5VZhgTCapzU9rv0Iq2HBrVOSGzOKb+OE668NxhXNcTjUjwYxULkEhAw70FtRLMZc+hxcFAzDZlKYA0xcwNMuw=="
+ "version": "9.11.0",
+ "resolved": "https://registry.npmjs.org/@vueuse/metadata/-/metadata-9.11.0.tgz",
+ "integrity": "sha512-HhtG2SWkcfZBLbamHdvLn7jKOCFpw/ifXjVTd5ilFkj98WVUk/3UTQ03wF1XIkuhSO4+b45hD2lfG9/GdKCF7w=="
},
"@vueuse/shared": {
- "version": "9.10.0",
- "resolved": "https://registry.npmjs.org/@vueuse/shared/-/shared-9.10.0.tgz",
- "integrity": "sha512-vakHJ2ZRklAzqmcVBL38RS7BxdBA4+5poG9NsSyqJxrt9kz0zX3P5CXMy0Hm6LFbZXUgvKdqAS3pUH1zX/5qTQ==",
+ "version": "9.11.0",
+ "resolved": "https://registry.npmjs.org/@vueuse/shared/-/shared-9.11.0.tgz",
+ "integrity": "sha512-8lO7wD5abYxupKy2KynH1pSgP715ky6iCrWYb8aX2AuAVi9uHXj7qE1dw6BnmArSaLHci4x9iuzWPCpAzUkC/A==",
"requires": {
"vue-demi": "*"
},
@@ -10418,6 +10185,16 @@
"integrity": "sha512-A+Fezp4zxnit6FanDmv9EqXNAi3vt9DWp51/71UEhXukb7QUuvtv9344h91dyAxuTLoSYJFU299qzR3tzwPAhw==",
"dev": true
},
+ "call-bind": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz",
+ "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==",
+ "dev": true,
+ "requires": {
+ "function-bind": "^1.1.1",
+ "get-intrinsic": "^1.0.2"
+ }
+ },
"callsites": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
@@ -10430,9 +10207,9 @@
"integrity": "sha512-xlx1yCK2Oc1APsPXDL2LdlNP6+uu8OCDdhOBSVT279M/S+y75O30C2VuD8T2ogdePBBl7PfPF4504tnLgX3zfw=="
},
"caniuse-lite": {
- "version": "1.0.30001442",
- "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001442.tgz",
- "integrity": "sha512-239m03Pqy0hwxYPYR5JwOIxRJfLTWtle9FV8zosfV5pHg+/51uD4nxcUlM8+mWWGfwKtt8lJNHnD3cWw9VZ6ow=="
+ "version": "1.0.30001445",
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001445.tgz",
+ "integrity": "sha512-8sdQIdMztYmzfTMO6KfLny878Ln9c2M0fc7EH60IjlP4Dc4PiCy7K2Vl3ITmWgOyPgVQKa5x+UP/KqFsxj4mBg=="
},
"caseless": {
"version": "0.12.0",
@@ -11047,14 +10824,6 @@
"esbuild-windows-32": "0.14.54",
"esbuild-windows-64": "0.14.54",
"esbuild-windows-arm64": "0.14.54"
- },
- "dependencies": {
- "@esbuild/linux-loong64": {
- "version": "0.14.54",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.14.54.tgz",
- "integrity": "sha512-bZBrLAIX1kpWelV0XemxBZllyRmM6vgFQQG2GdNb+r3Fkp0FOh1NJSvekXDs7jq70k4euu1cryLMfU+mTXlEpw==",
- "optional": true
- }
}
},
"esbuild-android-64": {
@@ -11763,6 +11532,17 @@
"resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz",
"integrity": "sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig=="
},
+ "get-intrinsic": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.3.tgz",
+ "integrity": "sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==",
+ "dev": true,
+ "requires": {
+ "function-bind": "^1.1.1",
+ "has": "^1.0.3",
+ "has-symbols": "^1.0.3"
+ }
+ },
"get-stream": {
"version": "5.2.0",
"resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz",
@@ -11882,6 +11662,12 @@
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
"integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="
},
+ "has-symbols": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz",
+ "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==",
+ "dev": true
+ },
"hash-sum": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/hash-sum/-/hash-sum-2.0.0.tgz",
@@ -12151,9 +11937,9 @@
}
},
"jiti": {
- "version": "1.16.1",
- "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.16.1.tgz",
- "integrity": "sha512-kJUp4Bj44uTaZAwG6R2/GjbodOWHULn8Swue0B7tY8v5BpTkUvDR+zBM5tsbC4x/jCeYDZ+mAdrUIScwIo4oPw=="
+ "version": "1.16.2",
+ "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.16.2.tgz",
+ "integrity": "sha512-OKBOVWmU3FxDt/UH4zSwiKPuc1nihFZiOD722FuJlngvLz2glX1v2/TJIgoA4+mrpnXxHV6dSAoCvPcYQtoG5A=="
},
"joi": {
"version": "17.7.0",
@@ -12240,9 +12026,9 @@
},
"dependencies": {
"punycode": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
- "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.2.0.tgz",
+ "integrity": "sha512-LN6QV1IJ9ZhxWTNdktaPClrNfp8xdSAYS0Zk2ddX7XsXZAxckMHPCBcHRo0cTcEIgYPRiGEkmji3Idkh2yFtYw==",
"devOptional": true
},
"tough-cookie": {
@@ -12400,8 +12186,7 @@
"lodash": {
"version": "4.17.21",
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
- "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
- "dev": true
+ "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
},
"lodash._reinterpolate": {
"version": "3.0.0",
@@ -12668,9 +12453,9 @@
"integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg=="
},
"node-fetch": {
- "version": "2.6.7",
- "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz",
- "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==",
+ "version": "2.6.8",
+ "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.8.tgz",
+ "integrity": "sha512-RZ6dBYuj8dRSfxpUSu+NsdF1dpPpluJxwOp+6IoDp/sH2QNDSvurYsAa+F1WxY2RjA1iP93xhcsUoYbF2XBqVg==",
"requires": {
"whatwg-url": "^5.0.0"
},
@@ -12734,6 +12519,12 @@
"integrity": "sha512-90yv+6538zuvUMnN+zCr8LuV6bPFdq50304114vJYJ8RDyK8D5O9Phpbd6SZWgI7PwzmmfN1upeOJlvybDSgCw==",
"devOptional": true
},
+ "object-inspect": {
+ "version": "1.12.3",
+ "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz",
+ "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==",
+ "dev": true
+ },
"on-headers": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz",
@@ -13016,10 +12807,13 @@
"integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ=="
},
"qs": {
- "version": "6.5.3",
- "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz",
- "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==",
- "dev": true
+ "version": "6.10.4",
+ "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.4.tgz",
+ "integrity": "sha512-OQiU+C+Ds5qiH91qh/mg0w+8nwQuLjM4F4M/PbmhDOoYehPh+Fb0bDjtR1sOvy7YKxvj28Y/M0PhP5uVX0kB+g==",
+ "dev": true,
+ "requires": {
+ "side-channel": "^1.0.4"
+ }
},
"querystringify": {
"version": "2.2.0",
@@ -13334,6 +13128,17 @@
"resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
"integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A=="
},
+ "side-channel": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz",
+ "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==",
+ "dev": true,
+ "requires": {
+ "call-bind": "^1.0.0",
+ "get-intrinsic": "^1.0.2",
+ "object-inspect": "^1.9.0"
+ }
+ },
"siginfo": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/siginfo/-/siginfo-2.0.0.tgz",
@@ -13642,9 +13447,9 @@
},
"dependencies": {
"punycode": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
- "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.2.0.tgz",
+ "integrity": "sha512-LN6QV1IJ9ZhxWTNdktaPClrNfp8xdSAYS0Zk2ddX7XsXZAxckMHPCBcHRo0cTcEIgYPRiGEkmji3Idkh2yFtYw==",
"dev": true
}
}
@@ -13659,9 +13464,9 @@
},
"dependencies": {
"punycode": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
- "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.2.0.tgz",
+ "integrity": "sha512-LN6QV1IJ9ZhxWTNdktaPClrNfp8xdSAYS0Zk2ddX7XsXZAxckMHPCBcHRo0cTcEIgYPRiGEkmji3Idkh2yFtYw==",
"devOptional": true
}
}
@@ -13843,9 +13648,9 @@
}
},
"minimatch": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.2.tgz",
- "integrity": "sha512-bNH9mmM9qsJ2X4r2Nat1B//1dJVcn3+iBLa3IgqJ7EbGaDNepL9QSHOxN4ng33s52VMMhhIfgCYDk3C4ZmlDAg==",
+ "version": "5.1.6",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz",
+ "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==",
"requires": {
"brace-expansion": "^2.0.1"
}
@@ -13859,12 +13664,12 @@
"dev": true
},
"untyped": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/untyped/-/untyped-1.2.1.tgz",
- "integrity": "sha512-hEtBC6MvqXLEEpx5ItPhnpgHIf3hRP310IYHj7N3D5zjdLJnmJNsGRDFbovk6DM2dekF/OBWuxDr0b6479eUkA==",
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/untyped/-/untyped-1.2.2.tgz",
+ "integrity": "sha512-EANYd5L6AdpgfldlgMcmvOOnj092nWhy0ybhc7uhEH12ipytDYz89EOegBQKj8qWL3u1wgYnmFjADhsuCJs5Aw==",
"requires": {
- "@babel/core": "^7.20.7",
- "@babel/standalone": "^7.20.11",
+ "@babel/core": "^7.20.12",
+ "@babel/standalone": "^7.20.12",
"@babel/types": "^7.20.7",
"scule": "^1.0.0"
}
@@ -13896,9 +13701,9 @@
},
"dependencies": {
"punycode": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
- "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A=="
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.2.0.tgz",
+ "integrity": "sha512-LN6QV1IJ9ZhxWTNdktaPClrNfp8xdSAYS0Zk2ddX7XsXZAxckMHPCBcHRo0cTcEIgYPRiGEkmji3Idkh2yFtYw=="
}
}
},
@@ -13984,10 +13789,10 @@
"vite": "^3.0.0 || ^4.0.0"
},
"dependencies": {
- "@esbuild/linux-x64": {
+ "@esbuild/linux-loong64": {
"version": "0.16.17",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.16.17.tgz",
- "integrity": "sha512-mdPjPxfnmoqhgpiEArqi4egmBAMYvaObgn4poorpUaqmvzzbvqbowRllQ+ZgzGVMGKaPkqUmPDOOFQRUFDmeUw==",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.16.17.tgz",
+ "integrity": "sha512-dTzNnQwembNDhd654cA4QhbS9uDdXC3TKqMJjgOWsC0yNCbpzfWoXdZvp0mY7HU6nzk5E0zpRGGx3qoQg8T2DQ==",
"optional": true
},
"esbuild": {
@@ -14071,165 +13876,45 @@
"why-is-node-running": "^2.2.2"
},
"dependencies": {
- "@esbuild/android-arm": {
- "version": "0.16.16",
- "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.16.16.tgz",
- "integrity": "sha512-BUuWMlt4WSXod1HSl7aGK8fJOsi+Tab/M0IDK1V1/GstzoOpqc/v3DqmN8MkuapPKQ9Br1WtLAN4uEgWR8x64A==",
- "optional": true
- },
- "@esbuild/android-arm64": {
- "version": "0.16.16",
- "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.16.16.tgz",
- "integrity": "sha512-hFHVAzUKp9Tf8psGq+bDVv+6hTy1bAOoV/jJMUWwhUnIHsh6WbFMhw0ZTkqDuh7TdpffFoHOiIOIxmHc7oYRBQ==",
- "optional": true
- },
- "@esbuild/android-x64": {
- "version": "0.16.16",
- "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.16.16.tgz",
- "integrity": "sha512-9WhxJpeb6XumlfivldxqmkJepEcELekmSw3NkGrs+Edq6sS5KRxtUBQuKYDD7KqP59dDkxVbaoPIQFKWQG0KLg==",
- "optional": true
- },
- "@esbuild/darwin-arm64": {
- "version": "0.16.16",
- "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.16.16.tgz",
- "integrity": "sha512-8Z+wld+vr/prHPi2O0X7o1zQOfMbXWGAw9hT0jEyU/l/Yrg+0Z3FO9pjPho72dVkZs4ewZk0bDOFLdZHm8jEfw==",
- "optional": true
- },
- "@esbuild/darwin-x64": {
- "version": "0.16.16",
- "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.16.16.tgz",
- "integrity": "sha512-CYkxVvkZzGCqFrt7EgjFxQKhlUPyDkuR9P0Y5wEcmJqVI8ncerOIY5Kej52MhZyzOBXkYrJgZeVZC9xXXoEg9A==",
- "optional": true
- },
- "@esbuild/freebsd-arm64": {
- "version": "0.16.16",
- "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.16.16.tgz",
- "integrity": "sha512-fxrw4BYqQ39z/3Ja9xj/a1gMsVq0xEjhSyI4a9MjfvDDD8fUV8IYliac96i7tzZc3+VytyXX+XNsnpEk5sw5Wg==",
- "optional": true
- },
- "@esbuild/freebsd-x64": {
- "version": "0.16.16",
- "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.16.16.tgz",
- "integrity": "sha512-8p3v1D+du2jiDvSoNVimHhj7leSfST9YlKsAEO7etBfuqjaBMndo0fmjNLp0JCMld+XIx9L80tooOkyUv1a1PQ==",
- "optional": true
- },
- "@esbuild/linux-arm": {
- "version": "0.16.16",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.16.16.tgz",
- "integrity": "sha512-bYaocE1/PTMRmkgSckZ0D0Xn2nox8v2qlk+MVVqm+VECNKDdZvghVZtH41dNtBbwADSvA6qkCHGYeWm9LrNCBw==",
- "optional": true
- },
- "@esbuild/linux-arm64": {
- "version": "0.16.16",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.16.16.tgz",
- "integrity": "sha512-N3u6BBbCVY3xeP2D8Db7QY8I+nZ+2AgOopUIqk+5yCoLnsWkcVxD2ay5E9iIdvApFi1Vg1lZiiwaVp8bOpAc4A==",
- "optional": true
- },
- "@esbuild/linux-ia32": {
- "version": "0.16.16",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.16.16.tgz",
- "integrity": "sha512-dxjqLKUW8GqGemoRT9v8IgHk+T4tRm1rn1gUcArsp26W9EkK/27VSjBVUXhEG5NInHZ92JaQ3SSMdTwv/r9a2A==",
- "optional": true
- },
"@esbuild/linux-loong64": {
- "version": "0.16.16",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.16.16.tgz",
- "integrity": "sha512-MdUFggHjRiCCwNE9+1AibewoNq6wf94GLB9Q9aXwl+a75UlRmbRK3h6WJyrSGA6ZstDJgaD2wiTSP7tQNUYxwA==",
- "optional": true
- },
- "@esbuild/linux-mips64el": {
- "version": "0.16.16",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.16.16.tgz",
- "integrity": "sha512-CO3YmO7jYMlGqGoeFeKzdwx/bx8Vtq/SZaMAi+ZLDUnDUdfC7GmGwXzIwDJ70Sg+P9pAemjJyJ1icKJ9R3q/Fg==",
- "optional": true
- },
- "@esbuild/linux-ppc64": {
- "version": "0.16.16",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.16.16.tgz",
- "integrity": "sha512-DSl5Czh5hCy/7azX0Wl9IdzPHX2H8clC6G87tBnZnzUpNgRxPFhfmArbaHoAysu4JfqCqbB/33u/GL9dUgCBAw==",
- "optional": true
- },
- "@esbuild/linux-riscv64": {
- "version": "0.16.16",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.16.16.tgz",
- "integrity": "sha512-sSVVMEXsqf1fQu0j7kkhXMViroixU5XoaJXl1u/u+jbXvvhhCt9YvA/B6VM3aM/77HuRQ94neS5bcisijGnKFQ==",
- "optional": true
- },
- "@esbuild/linux-s390x": {
- "version": "0.16.16",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.16.16.tgz",
- "integrity": "sha512-jRqBCre9gZGoCdCN/UWCCMwCMsOg65IpY9Pyj56mKCF5zXy9d60kkNRdDN6YXGjr3rzcC4DXnS/kQVCGcC4yPQ==",
- "optional": true
- },
- "@esbuild/netbsd-x64": {
- "version": "0.16.16",
- "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.16.16.tgz",
- "integrity": "sha512-xwjGJB5wwDEujLaJIrSMRqWkbigALpBNcsF9SqszoNKc+wY4kPTdKrSxiY5ik3IatojePP+WV108MvF6q6np4w==",
- "optional": true
- },
- "@esbuild/openbsd-x64": {
- "version": "0.16.16",
- "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.16.16.tgz",
- "integrity": "sha512-yeERkoxG2nR2oxO5n+Ms7MsCeNk23zrby2GXCqnfCpPp7KNc0vxaaacIxb21wPMfXXRhGBrNP4YLIupUBrWdlg==",
- "optional": true
- },
- "@esbuild/sunos-x64": {
- "version": "0.16.16",
- "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.16.16.tgz",
- "integrity": "sha512-nHfbEym0IObXPhtX6Va3H5GaKBty2kdhlAhKmyCj9u255ktAj0b1YACUs9j5H88NRn9cJCthD1Ik/k9wn8YKVg==",
- "optional": true
- },
- "@esbuild/win32-arm64": {
- "version": "0.16.16",
- "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.16.16.tgz",
- "integrity": "sha512-pdD+M1ZOFy4hE15ZyPX09fd5g4DqbbL1wXGY90YmleVS6Y5YlraW4BvHjim/X/4yuCpTsAFvsT4Nca2lbyDH/A==",
- "optional": true
- },
- "@esbuild/win32-ia32": {
- "version": "0.16.16",
- "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.16.16.tgz",
- "integrity": "sha512-IPEMfU9p0c3Vb8PqxaPX6BM9rYwlTZGYOf9u+kMdhoILZkVKEjq6PKZO0lB+isojWwAnAqh4ZxshD96njTXajg==",
- "optional": true
- },
- "@esbuild/win32-x64": {
- "version": "0.16.16",
- "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.16.16.tgz",
- "integrity": "sha512-1YYpoJ39WV/2bnShPwgdzJklc+XS0bysN6Tpnt1cWPdeoKOG4RMEY1g7i534QxXX/rPvNx/NLJQTTCeORYzipg==",
+ "version": "0.16.17",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.16.17.tgz",
+ "integrity": "sha512-dTzNnQwembNDhd654cA4QhbS9uDdXC3TKqMJjgOWsC0yNCbpzfWoXdZvp0mY7HU6nzk5E0zpRGGx3qoQg8T2DQ==",
"optional": true
},
"esbuild": {
- "version": "0.16.16",
- "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.16.16.tgz",
- "integrity": "sha512-24JyKq10KXM5EBIgPotYIJ2fInNWVVqflv3gicIyQqfmUqi4HvDW1VR790cBgLJHCl96Syy7lhoz7tLFcmuRmg==",
+ "version": "0.16.17",
+ "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.16.17.tgz",
+ "integrity": "sha512-G8LEkV0XzDMNwXKgM0Jwu3nY3lSTwSGY6XbxM9cr9+s0T/qSV1q1JVPBGzm3dcjhCic9+emZDmMffkwgPeOeLg==",
"requires": {
- "@esbuild/android-arm": "0.16.16",
- "@esbuild/android-arm64": "0.16.16",
- "@esbuild/android-x64": "0.16.16",
- "@esbuild/darwin-arm64": "0.16.16",
- "@esbuild/darwin-x64": "0.16.16",
- "@esbuild/freebsd-arm64": "0.16.16",
- "@esbuild/freebsd-x64": "0.16.16",
- "@esbuild/linux-arm": "0.16.16",
- "@esbuild/linux-arm64": "0.16.16",
- "@esbuild/linux-ia32": "0.16.16",
- "@esbuild/linux-loong64": "0.16.16",
- "@esbuild/linux-mips64el": "0.16.16",
- "@esbuild/linux-ppc64": "0.16.16",
- "@esbuild/linux-riscv64": "0.16.16",
- "@esbuild/linux-s390x": "0.16.16",
- "@esbuild/linux-x64": "0.16.16",
- "@esbuild/netbsd-x64": "0.16.16",
- "@esbuild/openbsd-x64": "0.16.16",
- "@esbuild/sunos-x64": "0.16.16",
- "@esbuild/win32-arm64": "0.16.16",
- "@esbuild/win32-ia32": "0.16.16",
- "@esbuild/win32-x64": "0.16.16"
+ "@esbuild/android-arm": "0.16.17",
+ "@esbuild/android-arm64": "0.16.17",
+ "@esbuild/android-x64": "0.16.17",
+ "@esbuild/darwin-arm64": "0.16.17",
+ "@esbuild/darwin-x64": "0.16.17",
+ "@esbuild/freebsd-arm64": "0.16.17",
+ "@esbuild/freebsd-x64": "0.16.17",
+ "@esbuild/linux-arm": "0.16.17",
+ "@esbuild/linux-arm64": "0.16.17",
+ "@esbuild/linux-ia32": "0.16.17",
+ "@esbuild/linux-loong64": "0.16.17",
+ "@esbuild/linux-mips64el": "0.16.17",
+ "@esbuild/linux-ppc64": "0.16.17",
+ "@esbuild/linux-riscv64": "0.16.17",
+ "@esbuild/linux-s390x": "0.16.17",
+ "@esbuild/linux-x64": "0.16.17",
+ "@esbuild/netbsd-x64": "0.16.17",
+ "@esbuild/openbsd-x64": "0.16.17",
+ "@esbuild/sunos-x64": "0.16.17",
+ "@esbuild/win32-arm64": "0.16.17",
+ "@esbuild/win32-ia32": "0.16.17",
+ "@esbuild/win32-x64": "0.16.17"
}
},
"rollup": {
- "version": "3.9.1",
- "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.9.1.tgz",
- "integrity": "sha512-GswCYHXftN8ZKGVgQhTFUJB/NBXxrRGgO2NCy6E8s1rwEJ4Q9/VttNqcYfEvx4dTo4j58YqdC3OVztPzlKSX8w==",
+ "version": "3.10.0",
+ "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.10.0.tgz",
+ "integrity": "sha512-JmRYz44NjC1MjVF2VKxc0M1a97vn+cDxeqWmnwyAF4FvpjK8YFdHpaqvQB+3IxCvX05vJxKZkoMDU8TShhmJVA==",
"requires": {
"fsevents": "~2.3.2"
}
diff --git a/frontend/package.json b/frontend/package.json
index 0b92cbdef4..72cb6c18d6 100644
--- a/frontend/package.json
+++ b/frontend/package.json
@@ -44,6 +44,7 @@
"bootstrap-vue-3": "^0.5.1",
"core-js": "^3.27.2",
"dotenv": "^16.0.0",
+ "lodash": "^4.17.21",
"serve": "^14.1.2",
"unplugin-icons": "^0.15.1",
"unplugin-vue-components": "^0.22.11",
@@ -55,6 +56,7 @@
"devDependencies": {
"@rushstack/eslint-patch": "^1.1.0",
"@types/jsdom": "^20.0.1",
+ "@types/lodash": "^4.14.191",
"@types/node": "^18.11.18",
"@typescript-eslint/eslint-plugin": "^5.48.2",
"@typescript-eslint/parser": "^5.48.2",
diff --git a/frontend/src/App.vue b/frontend/src/App.vue
index dbb6de93c3..4f3c6c66fd 100644
--- a/frontend/src/App.vue
+++ b/frontend/src/App.vue
@@ -18,9 +18,7 @@
diff --git a/frontend/src/common/CollapseCard.vue b/frontend/src/common/CollapseCard.vue
index 7a9808d243..02e42bc5b8 100644
--- a/frontend/src/common/CollapseCard.vue
+++ b/frontend/src/common/CollapseCard.vue
@@ -37,7 +37,7 @@
@@ -46,11 +46,10 @@
diff --git a/frontend/src/common/FormCheckboxGroup.vue b/frontend/src/common/FormCheckboxGroup.vue
index ab9500add0..54c8bfa0ea 100644
--- a/frontend/src/common/FormCheckboxGroup.vue
+++ b/frontend/src/common/FormCheckboxGroup.vue
@@ -21,7 +21,7 @@ import FormFieldTemplate from "./FormFieldTemplate.vue";
import type {
FormFieldTemplateType,
FormCheckBoxGroupOptionType,
-} from "../core/AppType";
+} from "../core/FormType";
const props = defineProps({
// form field template props (optional): label, required, tooltip, note, id, errorMsg
@@ -46,7 +46,7 @@ const computedValue = computed({
return props.value;
},
set(newValue: Array) {
- emit("updateValue", props.fieldProps.id, newValue);
+ emit("updateValue", newValue, props.fieldProps.id);
},
});
diff --git a/frontend/src/common/FormComponentOptions.vue b/frontend/src/common/FormComponentOptions.vue
index 759cc9b89f..89876458a9 100644
--- a/frontend/src/common/FormComponentOptions.vue
+++ b/frontend/src/common/FormComponentOptions.vue
@@ -2,40 +2,40 @@
diff --git a/frontend/src/common/FormFieldTemplate.vue b/frontend/src/common/FormFieldTemplate.vue
index 744454d383..110af4165f 100644
--- a/frontend/src/common/FormFieldTemplate.vue
+++ b/frontend/src/common/FormFieldTemplate.vue
@@ -20,7 +20,7 @@
diff --git a/frontend/src/common/FormInput.vue b/frontend/src/common/FormInput.vue
index f9e3999719..b81d2a79c6 100644
--- a/frontend/src/common/FormInput.vue
+++ b/frontend/src/common/FormInput.vue
@@ -9,7 +9,7 @@
import { computed } from "vue";
import type { PropType } from "vue";
import FormFieldTemplate from "./FormFieldTemplate.vue";
-import type { FormFieldTemplateType } from "../core/AppType";
+import type { FormFieldTemplateType } from "../core/FormType";
const props = defineProps({
// form field template props (optional): label, required, tooltip, note, id, errorMsg
@@ -29,7 +29,7 @@ const computedValue = computed({
return props.value;
},
set(newValue: string | number) {
- emit("updateValue", props.fieldProps.id, newValue);
+ emit("updateValue", newValue, props.fieldProps.id);
},
});
diff --git a/frontend/src/common/FormRadioGroup.vue b/frontend/src/common/FormRadioGroup.vue
index b83de953de..4ef81dbb6a 100644
--- a/frontend/src/common/FormRadioGroup.vue
+++ b/frontend/src/common/FormRadioGroup.vue
@@ -21,7 +21,7 @@ import FormFieldTemplate from "./FormFieldTemplate.vue";
import type {
FormFieldTemplateType,
FormRadioGroupOptionType,
-} from "../core/AppType";
+} from "../core/FormType";
const props = defineProps({
// form field template props (optional): label, required, tooltip, note, id, errorMsg
@@ -45,7 +45,7 @@ const computedValue = computed({
return props.value;
},
set(newValue: Array) {
- emit("updateValue", props.fieldProps.id, newValue);
+ emit("updateValue", newValue, props.fieldProps.id);
},
});
diff --git a/frontend/src/common/FormSelect.vue b/frontend/src/common/FormSelect.vue
index ec41054fbf..380d00c80a 100644
--- a/frontend/src/common/FormSelect.vue
+++ b/frontend/src/common/FormSelect.vue
@@ -19,7 +19,7 @@ import type {
CommonObjectType,
FormFieldTemplateType,
FromSelectOptionType,
-} from "../core/AppType";
+} from "../core/FormType";
const props = defineProps({
// form field template props (optional): label, required, tooltip, note, id, errorMsg
@@ -44,7 +44,7 @@ const computedValue = computed({
return props.value;
},
set(newValue: CommonObjectType | string) {
- emit("updateValue", props.fieldProps.id, newValue);
+ emit("updateValue", newValue, props.fieldProps.id);
},
});
diff --git a/frontend/src/common/FormTable.vue b/frontend/src/common/FormTable.vue
index ab6b068cc8..f301847511 100644
--- a/frontend/src/common/FormTable.vue
+++ b/frontend/src/common/FormTable.vue
@@ -13,8 +13,38 @@
updateFormArrayValue(id, newValue, rowIndex)
+ (newValue, path) =>
+ updateFormArrayValue(newValue, `${rowIndex}.${path}`)
+ "
+ @updateFormArrayValue="
+ (newValue, path) =>
+ updateFormArrayValue(
+ newValue,
+ `${rowIndex}.${column.fieldProps.id}.${path}`
+ )
+ "
+ @addRow="
+ (path = '') =>
+ addRow(
+ path != ''
+ ? `${rowIndex}.${column.fieldProps.id}.${path}`
+ : `${rowIndex}.${column.fieldProps.id}`
+ )
+ "
+ @deleteRow="
+ (subRowIndex, path = '') =>
+ deleteRow(
+ subRowIndex,
+ path != ''
+ ? `${rowIndex}.${column.fieldProps.id}.${path}`
+ : `${rowIndex}.${column.fieldProps.id}`
+ )
"
/>
@@ -38,7 +68,8 @@
diff --git a/frontend/src/common/examples/FormJsonSchemaExample.vue b/frontend/src/common/examples/FormJsonSchemaExample.vue
index c6d4773765..9a07254237 100644
--- a/frontend/src/common/examples/FormJsonSchemaExample.vue
+++ b/frontend/src/common/examples/FormJsonSchemaExample.vue
@@ -27,12 +27,6 @@
import { ref } from "vue";
import FormComponentOptions from "../FormComponentOptions.vue";
import CollapseCard from "../CollapseCard.vue";
-import type {
- FormFieldTemplateType,
- FromSelectOptionType,
- FormCheckBoxGroupOptionType,
- FormRadioGroupOptionType,
-} from "../../core/AppType";
/* ------- container props ----------*/
const containerProps = {
diff --git a/frontend/src/common/examples/SingleFormComponentExample.vue b/frontend/src/common/examples/SingleFormComponentExample.vue
index 8fb92194ae..6b41062cca 100644
--- a/frontend/src/common/examples/SingleFormComponentExample.vue
+++ b/frontend/src/common/examples/SingleFormComponentExample.vue
@@ -58,7 +58,7 @@ import type {
FromSelectOptionType,
FormCheckBoxGroupOptionType,
FormRadioGroupOptionType,
-} from "../../core/AppType";
+} from "../../core/FormType";
/* ------- form data ----------- */
const form = ref({
diff --git a/frontend/src/core/AppType.ts b/frontend/src/core/FormType.ts
similarity index 82%
rename from frontend/src/core/AppType.ts
rename to frontend/src/core/FormType.ts
index 597c1fec18..7edf38cb24 100644
--- a/frontend/src/core/AppType.ts
+++ b/frontend/src/core/FormType.ts
@@ -46,7 +46,6 @@ export interface FormSectionSchemaType {
export interface FormComponentSchemaType {
fieldProps: FormFieldTemplateType;
type: string;
- disabled?: boolean;
state?: boolean;
depend?: {
fieldId: string;
@@ -61,15 +60,22 @@ export interface FormComponentSchemaType {
subfields?: Array; // for table and group
}
-export interface FormValidationRequiredField {
- containerId: string;
- fieldId: string;
+/* ---------------- form validation type -------------- */
+export interface FormValidationRequiredFieldType {
+ path: string;
+ subPath?: string;
subFieldId?: string;
}
-export interface FormValidationResultType {
- containerId: string;
- fieldId: string;
- subFieldId?: string;
+export interface FormFieldValidationResultType {
+ path: string;
errorMsg: string;
}
+
+export interface FormValidationResultType {
+ [key: string]: Array;
+}
+
+export interface FormDisableType {
+ [key: string]: Array;
+}
diff --git a/frontend/src/helpers/AppState.ts b/frontend/src/helpers/AppState.ts
deleted file mode 100644
index 75008140cd..0000000000
--- a/frontend/src/helpers/AppState.ts
+++ /dev/null
@@ -1,12 +0,0 @@
-import { reactive } from "vue";
-import type { FormValidationResultType } from "../core/AppType";
-
-// global app states
-
-// vue3 is hard to detect array or object change, so we make them as global state, so the change can be detected by the component is using the value
-export const validationResult = reactive({
- value: [] as Array,
- setValue(result: Array) {
- this.value = result;
- },
-});
diff --git a/frontend/src/helpers/formvalidation/MissingFieldCheck.ts b/frontend/src/helpers/formvalidation/MissingFieldCheck.ts
new file mode 100644
index 0000000000..70b2859eed
--- /dev/null
+++ b/frontend/src/helpers/formvalidation/MissingFieldCheck.ts
@@ -0,0 +1,55 @@
+import _ from "lodash";
+import type {
+ FormValidationRequiredFieldType,
+ CommonObjectType,
+} from "../../core/FormType";
+
+export const checkMissingRequireField = (
+ requireList: Array,
+ formData: CommonObjectType
+) => {
+ // todo: so far it supports at most 2 level in-depth array, if the depth increase, need to redesign the structure
+
+ let missingRequire = false;
+
+ for (let i = 0; i < requireList.length; i++) {
+ const require = requireList[i];
+ if (!require.subFieldId) {
+ if (_.get(formData, require.path) == "") {
+ missingRequire = true;
+ break;
+ }
+ } else if (_.get(formData, require.path)) {
+ // check table and group, to see if each row got all required fields
+ for (let j = 0; j < _.get(formData, require.path).length; j++) {
+ if (!require.subPath) {
+ if (
+ _.get(formData, `${require.path}.${j}.${require.subFieldId}`) == ""
+ ) {
+ missingRequire = true;
+ break;
+ }
+ } else {
+ const subArray = _.get(
+ formData,
+ `${require.path}.${j}.${require.subPath}`
+ );
+ if (Array.isArray(subArray)) {
+ for (let k = 0; k < subArray.length; k++) {
+ if (
+ _.get(
+ formData,
+ `${require.path}.${j}.${require.subPath}.${k}.${require.subFieldId}`
+ ) == ""
+ ) {
+ missingRequire = true;
+ break;
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ return missingRequire;
+};
diff --git a/frontend/src/pages/MyApplicationPage.vue b/frontend/src/pages/MyApplicationPage.vue
deleted file mode 100644
index 09637efd4e..0000000000
--- a/frontend/src/pages/MyApplicationPage.vue
+++ /dev/null
@@ -1,14 +0,0 @@
-
- My application list
-
-
-
-
-
-
-
diff --git a/frontend/src/pages/applynewclient/ApplyNewClientPage.vue b/frontend/src/pages/applynewclient/ApplyNewClientPage.vue
index bed4dc2d33..319966a267 100644
--- a/frontend/src/pages/applynewclient/ApplyNewClientPage.vue
+++ b/frontend/src/pages/applynewclient/ApplyNewClientPage.vue
@@ -7,13 +7,7 @@
-
+
import { ref, computed } from "vue";
+import ConfirmModal from "../../common/ConfirmModal.vue";
+import PrimarySquareButton from "../../common/buttons/PrimarySquareButton.vue";
import FormSections from "./formsections/FormSections.vue";
import SubmitFailText from "./SubmitFailText.vue";
import SubmitSucessText from "./SubmitSucessText.vue";
-import ConfirmModal from "../../common/ConfirmModal.vue";
-import PrimarySquareButton from "../../common/buttons/PrimarySquareButton.vue";
-import { validationResult } from "../../helpers/AppState";
+import { checkMissingRequireField } from "../../helpers/formvalidation/MissingFieldCheck";
import {
- newClientData,
commonRequiredFields,
businessRequiredFields,
individualRequiredFields,
-} from "./NewClient";
+} from "./formvalidationrules/RequiredFields";
+import { formData } from "../../store/newclientform/FormData";
+import { validationResult } from "../../store/newclientform/FormValidation";
import { primary } from "../../utils/color";
-import type { FormValidationRequiredField } from "../../core/AppType";
-
-const data = ref(JSON.parse(JSON.stringify(newClientData)));
-
-/* --------------- update form value functions --------------------- */
-const updateFormValue = (
- containerId: string,
- fieldId: string,
- newValue: any
-) => {
- console.log(
- "containerId",
- containerId,
- "fieldId",
- fieldId,
- "newValue",
- newValue
- );
- data.value[containerId][fieldId] = newValue;
- console.log("data", data.value);
- // todo: this is where to check if each field meets its validation rules
-
- // an example to remove hardcode validation error
- if (data.value.begin.client_type == "individual")
- validationResult.setValue([]);
-};
-const updateFormArrayValue = (
- containerId: string,
- fieldId: string,
- subFieldId: string,
- newValue: any,
- rowIndex: number
-) => {
- data.value[containerId][fieldId][rowIndex][subFieldId] = newValue;
- // todo: this is where to check if each sub field meets its validation rules
-};
-const addRow = (containerId: string, fieldId: string) => {
- const newContainer = newClientData[containerId as keyof typeof newClientData];
- const defaultNew = JSON.parse(
- JSON.stringify(newContainer[fieldId as keyof typeof newContainer][0])
- );
- data.value[containerId][fieldId].push({
- ...defaultNew,
- index: Math.floor(Math.random() * 10000000),
- });
-};
-const deleteRow = (containerId: string, fieldId: string, rowIndex: number) => {
- data.value[containerId][fieldId].splice(rowIndex, 1);
-};
/* -------------- check when to enable submit button ------------------- */
-const checkMissingRequireField = (
- requireList: Array,
- formData: any
-) => {
- let missingRequire = false;
- for (let i = 0; i < requireList.length; i++) {
- const require = requireList[i];
- if (!require.subFieldId) {
- if (formData[require.containerId][require.fieldId] == "") {
- missingRequire = true;
- break;
- }
- } else {
- // check table and group, to see if each row got all required fields
- for (
- let j = 0;
- j < formData[require.containerId][require.fieldId].length;
- j++
- ) {
- const row = formData[require.containerId][require.fieldId][j];
- if (row[require.subFieldId] == "") {
- missingRequire = true;
- break;
- }
- }
- }
- }
- return missingRequire;
-};
const computedButtonDisable = computed(() => {
// check when to enable the submit button
// enable the submit button when got all required fields
- // create required lists, and then check the data for those required ones
+ // checkMissingRequireField returns true if has a missing field
if (
- data.value.begin["client_type"] == "individual" ||
- data.value.begin["client_type"] == "soleProprietorship"
+ formData.state.begin["client_type"] == "individual" ||
+ formData.state.begin["client_type"] == "soleProprietorship"
)
return (
- checkMissingRequireField(commonRequiredFields, data.value) ||
- checkMissingRequireField(individualRequiredFields, data.value)
+ checkMissingRequireField(commonRequiredFields, formData.state) ||
+ checkMissingRequireField(individualRequiredFields, formData.state)
);
return (
- checkMissingRequireField(commonRequiredFields, data.value) ||
- checkMissingRequireField(businessRequiredFields, data.value)
+ checkMissingRequireField(commonRequiredFields, formData.state) ||
+ checkMissingRequireField(businessRequiredFields, formData.state)
);
});
-/* -------------------- data validation check --------------------------- */
-
/* ---------- modal placehoder to confirm submit ----------- */
const success = ref(false);
const error = ref(false);
@@ -153,15 +68,33 @@ const loading = ref(false);
const modalShow = ref(false);
const openModal = () => {
modalShow.value = true;
+ console.log("formdata", formData.state);
};
const onModalOkay = () => {
modalShow.value = false;
- // todo: call the data validatio api and receive the result from backend and pass it to form sections
+ /* -------------------- data validation check --------------------------- */
+ validationResult.actions.setValidationResult({
+ begin: [
+ {
+ path: "begin.client_type",
+ errorMsg: "WrongType, select inidividual to get rid of this error",
+ },
+ ],
+ location: [
+ {
+ path: "location.address.0.country",
+ errorMsg: "Must be Canada",
+ },
+ {
+ path: "location.address.0.contact.0.cell_phone",
+ errorMsg: "Can not be empty",
+ },
+ ],
+ });
- // a hardcode example to pass validationResult
- validationResult.setValue([
- { containerId: "begin", fieldId: "client_type", errorMsg: "WrongType" },
- ]);
+ /* ------------ return confirmation Id -------------- */
+ // todo: if all validation rules pass, call backend api to write form data into tables, and return a confirmation id
+ // set success to be true, and display success text message to the user
};
const onModalCancel = () => {
modalShow.value = false;
diff --git a/frontend/src/pages/applynewclient/NewClient.ts b/frontend/src/pages/applynewclient/NewClient.ts
deleted file mode 100644
index 17cdc6b1c5..0000000000
--- a/frontend/src/pages/applynewclient/NewClient.ts
+++ /dev/null
@@ -1,323 +0,0 @@
-import type {
- FormSectionSchemaType,
- FormComponentSchemaType,
- FormRadioGroupOptionType,
- FormValidationRequiredField,
-} from "../../core/AppType";
-
-const formApplyReason: Array = [
- { code: "never_had", text: "I've never had a client number" },
- {
- code: "need_new",
- text: "I need a new client number because of an amalgamation",
- },
- { code: "joint_venture", text: "I'm entering into a joint venture" },
-];
-
-const formTenureType: Array = [
- { code: "forest", text: "Forest" },
- { code: "range", text: "Range" },
- { code: "oilgas", text: "Oil & gas" },
-];
-
-export const newClientData = {
- begin: {
- reason: [""],
- tenure_type: [""],
- client_type: "",
- },
- information: {
- first_name: "",
- last_name: "",
- birthdate: "",
- registration_number: "",
- doing_business_as_check: false,
- doing_business_as: "",
- business_name: "",
- worksafebc_number: "",
- },
- contact: {
- address: [
- {
- stree_address: "",
- country: "",
- province: "",
- city: "",
- postal_code: "",
- index: 0, // any array data need to have this index, as an auto generated random number to be as unique identity
- },
- ],
- },
- authorized: {
- individuals: [
- {
- contact_type: "",
- firsname_or_company: "",
- last_name: "",
- phone: "",
- email: "",
- index: 0, // need use this index to be unique identity when display data in form tables
- },
- ],
- },
-};
-
-// each id is aligned with the newClientData
-export const beginSectionSchema: FormSectionSchemaType = {
- container: { title: "Let's begin", id: "begin" }, // property for CollapseCard when use it
- content: [
- // form content for each CollapseCard
- {
- fieldProps: { label: "Why are you applying?", id: "reason" },
- type: "radiogroup",
- options: formApplyReason,
- },
- {
- fieldProps: { label: "Select your tenure type", id: "tenure_type" },
- type: "radiogroup",
- options: formTenureType,
- },
- {
- fieldProps: {
- label: "What type of business are you?",
- required: true,
- id: "client_type",
- },
- type: "select",
- options: [
- { value: "individual", text: "Individual" },
- { value: "company", text: "Company" },
- ],
- },
- ],
-};
-
-const informationSectionCommonSchema: Array = [
- {
- fieldProps: { label: "First name", required: true, id: "first_name" },
- type: "input",
- },
- {
- fieldProps: { label: "Last name", id: "last_name" },
- type: "input",
- },
- {
- fieldProps: {
- label: "Please select your birthdate",
- required: true,
- id: "birthdate",
- },
- type: "input", // todo: change to date
- },
-];
-
-export const informationSectionSchema: {
- individual: FormSectionSchemaType;
- soleProprietorship: FormSectionSchemaType;
- company: FormSectionSchemaType;
-} = {
- individual: {
- container: { title: "Individual information", id: "information" },
- content: informationSectionCommonSchema,
- },
- soleProprietorship: {
- container: { title: "Individual information", id: "information" },
- content: [
- ...informationSectionCommonSchema,
- {
- fieldProps: { label: "Registration number", id: "registration_number" },
- type: "input",
- },
- {
- fieldProps: {
- label: "Are you 'doing business as'?",
- id: "doing_business_as_check",
- },
- type: "checkbox",
- },
- {
- fieldProps: {
- label: "Doing business as",
- id: "doing_business_as",
- },
- type: "input",
- depend: {
- fieldId: "doing_business_as_check",
- value: true,
- },
- },
- ],
- },
- company: {
- container: { title: "Company information", id: "information" },
- content: [
- {
- fieldProps: {
- label: "Registered business name",
- id: "business_name",
- required: true,
- note: "Start typing to search BC registered businesses database",
- },
- type: "input",
- },
- {
- fieldProps: {
- label: "Incorporation or registration number",
- id: "registration_number",
- required: true,
- },
- type: "input",
- },
- {
- fieldProps: {
- label: "WorkSafe BC number",
- id: "worksafebc_number",
- },
- type: "input",
- },
- {
- fieldProps: {
- label: "Are you 'doing business as'?",
- id: "doing_business_as_check",
- required: true,
- },
- type: "checkbox",
- },
- {
- fieldProps: {
- label: "Doing business as",
- id: "doing_business_as",
- },
- type: "input",
- depend: {
- fieldId: "doing_business_as_check",
- value: true,
- },
- },
- ],
- },
-};
-
-export const contactSectionSchema: FormSectionSchemaType = {
- container: { title: "Contact Information", id: "contact" },
- content: [
- {
- fieldProps: {
- id: "address",
- },
- type: "group",
- addButtonText: "+ Add another address",
- deleteButtonText: "- Remove this address",
- subfields: [
- {
- fieldProps: {
- label: "Street address",
- id: "stree_address",
- required: true,
- },
- type: "input",
- },
- {
- fieldProps: {
- label: "Country",
- id: "country",
- required: true,
- },
- type: "input",
- },
- {
- fieldProps: {
- label: "Province",
- id: "province",
- required: true,
- },
- type: "input",
- },
- {
- fieldProps: {
- label: "City",
- id: "city",
- required: true,
- },
- type: "input",
- },
- {
- fieldProps: {
- label: "Postal code",
- id: "postal_code",
- required: true,
- },
- type: "input",
- },
- ],
- },
- ],
-};
-
-export const authorizedSectionSchema: FormSectionSchemaType = {
- container: { title: "Add authorized individuals", id: "authorized" },
- content: [
- {
- fieldProps: {
- id: "individuals",
- },
- type: "table",
- addButtonText: "+ Add another authorized person",
- subfields: [
- {
- fieldProps: { label: "Contact Type", id: "contact_type" },
- type: "select",
- options: [],
- },
- {
- fieldProps: {
- label: "First name or company",
- id: "firsname_or_company",
- },
- type: "input",
- },
- {
- fieldProps: {
- label: "Last name",
- id: "last_name",
- },
- type: "input",
- },
- {
- fieldProps: {
- label: "Phone number",
- id: "phone",
- },
- type: "input",
- },
- {
- fieldProps: {
- label: "Email",
- id: "email",
- },
- type: "input",
- },
- ],
- },
- ],
-};
-
-/* --------------- Required Fields --------------------- */
-export const commonRequiredFields: Array = [
- { containerId: "begin", fieldId: "client_type" },
- { containerId: "contact", fieldId: "address", subFieldId: "stree_address" },
- { containerId: "contact", fieldId: "address", subFieldId: "country" },
- { containerId: "contact", fieldId: "address", subFieldId: "province" },
- { containerId: "contact", fieldId: "address", subFieldId: "city" },
- { containerId: "contact", fieldId: "address", subFieldId: "postal_code" },
-];
-
-export const businessRequiredFields: Array = [
- { containerId: "information", fieldId: "business_name" },
- { containerId: "information", fieldId: "registration_number" },
-];
-
-export const individualRequiredFields: Array = [
- { containerId: "information", fieldId: "first_name" },
- { containerId: "information", fieldId: "birthdate" },
-];
diff --git a/frontend/src/pages/applynewclient/formsections/FormSectionTemplate.vue b/frontend/src/pages/applynewclient/formsections/FormSectionTemplate.vue
index 6e543e568c..08ec9d3d08 100644
--- a/frontend/src/pages/applynewclient/formsections/FormSectionTemplate.vue
+++ b/frontend/src/pages/applynewclient/formsections/FormSectionTemplate.vue
@@ -8,27 +8,66 @@
updateFormValue(id, newValue)"
+ @updateFormValue="
+ (newValue, path = '') =>
+ formData.actions.updateFormValue(
+ newValue,
+ path != ''
+ ? `${sectionProps.container.id}.${path}`
+ : `${sectionProps.container.id}`
+ )
+ "
@updateFormArrayValue="
- (id, newValue, rowIndex) =>
- updateFormArrayValue(row.fieldProps.id, id, newValue, rowIndex)
+ (newValue, path = '') =>
+ formData.actions.updateFormValue(
+ newValue,
+ path != ''
+ ? `${sectionProps.container.id}.${row.fieldProps.id}.${path}`
+ : `${sectionProps.container.id}.${row.fieldProps.id}`
+ )
+ "
+ @addRow="
+ (path = '') =>
+ formData.actions.addRow(
+ path != ''
+ ? `${sectionProps.container.id}.${row.fieldProps.id}.${path}`
+ : `${sectionProps.container.id}.${row.fieldProps.id}`
+ )
+ "
+ @deleteRow="
+ (rowIndex, path = '') =>
+ formData.actions.deleteRow(
+ rowIndex,
+ path != ''
+ ? `${sectionProps.container.id}.${row.fieldProps.id}.${path}`
+ : `${sectionProps.container.id}.${row.fieldProps.id}`
+ )
"
- @addRow="() => addRow(row.fieldProps.id)"
- @deleteRow="(rowIndex) => deleteRow(row.fieldProps.id, rowIndex)"
/>