Merge remote-tracking branch 'origin/develop' into feature/INSR-7771
This commit is contained in:
commit
88eb468616
13 changed files with 874 additions and 232 deletions
534
package-lock.json
generated
534
package-lock.json
generated
|
|
@ -63,7 +63,7 @@
|
|||
"typescript-eslint": "^8.11.0",
|
||||
"vite": "^6.4.1",
|
||||
"vitest": "^3.2.4",
|
||||
"volar-service-vetur": "latest",
|
||||
"volar-service-vetur": "*",
|
||||
"wait-on": "^8.0.2"
|
||||
}
|
||||
},
|
||||
|
|
@ -4419,6 +4419,28 @@
|
|||
"node": ">=10"
|
||||
}
|
||||
},
|
||||
"node_modules/@types/eslint": {
|
||||
"version": "9.6.1",
|
||||
"resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-9.6.1.tgz",
|
||||
"integrity": "sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@types/estree": "*",
|
||||
"@types/json-schema": "*"
|
||||
}
|
||||
},
|
||||
"node_modules/@types/eslint-scope": {
|
||||
"version": "3.7.7",
|
||||
"resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz",
|
||||
"integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@types/eslint": "*",
|
||||
"@types/estree": "*"
|
||||
}
|
||||
},
|
||||
"node_modules/@types/estree": {
|
||||
"version": "1.0.8",
|
||||
"resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz",
|
||||
|
|
@ -5999,148 +6021,163 @@
|
|||
"dev": true
|
||||
},
|
||||
"node_modules/@webassemblyjs/ast": {
|
||||
"version": "1.12.1",
|
||||
"resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.12.1.tgz",
|
||||
"integrity": "sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg==",
|
||||
"version": "1.14.1",
|
||||
"resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.14.1.tgz",
|
||||
"integrity": "sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@webassemblyjs/helper-numbers": "1.11.6",
|
||||
"@webassemblyjs/helper-wasm-bytecode": "1.11.6"
|
||||
"@webassemblyjs/helper-numbers": "1.13.2",
|
||||
"@webassemblyjs/helper-wasm-bytecode": "1.13.2"
|
||||
}
|
||||
},
|
||||
"node_modules/@webassemblyjs/floating-point-hex-parser": {
|
||||
"version": "1.11.6",
|
||||
"resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz",
|
||||
"integrity": "sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==",
|
||||
"dev": true
|
||||
"version": "1.13.2",
|
||||
"resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.13.2.tgz",
|
||||
"integrity": "sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA==",
|
||||
"dev": true,
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/@webassemblyjs/helper-api-error": {
|
||||
"version": "1.11.6",
|
||||
"resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz",
|
||||
"integrity": "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==",
|
||||
"dev": true
|
||||
"version": "1.13.2",
|
||||
"resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.13.2.tgz",
|
||||
"integrity": "sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ==",
|
||||
"dev": true,
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/@webassemblyjs/helper-buffer": {
|
||||
"version": "1.12.1",
|
||||
"resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.12.1.tgz",
|
||||
"integrity": "sha512-nzJwQw99DNDKr9BVCOZcLuJJUlqkJh+kVzVl6Fmq/tI5ZtEyWT1KZMyOXltXLZJmDtvLCDgwsyrkohEtopTXCw==",
|
||||
"dev": true
|
||||
"version": "1.14.1",
|
||||
"resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.14.1.tgz",
|
||||
"integrity": "sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA==",
|
||||
"dev": true,
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/@webassemblyjs/helper-numbers": {
|
||||
"version": "1.11.6",
|
||||
"resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz",
|
||||
"integrity": "sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==",
|
||||
"version": "1.13.2",
|
||||
"resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.13.2.tgz",
|
||||
"integrity": "sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@webassemblyjs/floating-point-hex-parser": "1.11.6",
|
||||
"@webassemblyjs/helper-api-error": "1.11.6",
|
||||
"@webassemblyjs/floating-point-hex-parser": "1.13.2",
|
||||
"@webassemblyjs/helper-api-error": "1.13.2",
|
||||
"@xtuc/long": "4.2.2"
|
||||
}
|
||||
},
|
||||
"node_modules/@webassemblyjs/helper-wasm-bytecode": {
|
||||
"version": "1.11.6",
|
||||
"resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz",
|
||||
"integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==",
|
||||
"dev": true
|
||||
"version": "1.13.2",
|
||||
"resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.13.2.tgz",
|
||||
"integrity": "sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA==",
|
||||
"dev": true,
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/@webassemblyjs/helper-wasm-section": {
|
||||
"version": "1.12.1",
|
||||
"resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.12.1.tgz",
|
||||
"integrity": "sha512-Jif4vfB6FJlUlSbgEMHUyk1j234GTNG9dBJ4XJdOySoj518Xj0oGsNi59cUQF4RRMS9ouBUxDDdyBVfPTypa5g==",
|
||||
"version": "1.14.1",
|
||||
"resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.14.1.tgz",
|
||||
"integrity": "sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@webassemblyjs/ast": "1.12.1",
|
||||
"@webassemblyjs/helper-buffer": "1.12.1",
|
||||
"@webassemblyjs/helper-wasm-bytecode": "1.11.6",
|
||||
"@webassemblyjs/wasm-gen": "1.12.1"
|
||||
"@webassemblyjs/ast": "1.14.1",
|
||||
"@webassemblyjs/helper-buffer": "1.14.1",
|
||||
"@webassemblyjs/helper-wasm-bytecode": "1.13.2",
|
||||
"@webassemblyjs/wasm-gen": "1.14.1"
|
||||
}
|
||||
},
|
||||
"node_modules/@webassemblyjs/ieee754": {
|
||||
"version": "1.11.6",
|
||||
"resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz",
|
||||
"integrity": "sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==",
|
||||
"version": "1.13.2",
|
||||
"resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.13.2.tgz",
|
||||
"integrity": "sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@xtuc/ieee754": "^1.2.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@webassemblyjs/leb128": {
|
||||
"version": "1.11.6",
|
||||
"resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.6.tgz",
|
||||
"integrity": "sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==",
|
||||
"version": "1.13.2",
|
||||
"resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.13.2.tgz",
|
||||
"integrity": "sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw==",
|
||||
"dev": true,
|
||||
"license": "Apache-2.0",
|
||||
"dependencies": {
|
||||
"@xtuc/long": "4.2.2"
|
||||
}
|
||||
},
|
||||
"node_modules/@webassemblyjs/utf8": {
|
||||
"version": "1.11.6",
|
||||
"resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.6.tgz",
|
||||
"integrity": "sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==",
|
||||
"dev": true
|
||||
"version": "1.13.2",
|
||||
"resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.13.2.tgz",
|
||||
"integrity": "sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ==",
|
||||
"dev": true,
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/@webassemblyjs/wasm-edit": {
|
||||
"version": "1.12.1",
|
||||
"resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.12.1.tgz",
|
||||
"integrity": "sha512-1DuwbVvADvS5mGnXbE+c9NfA8QRcZ6iKquqjjmR10k6o+zzsRVesil54DKexiowcFCPdr/Q0qaMgB01+SQ1u6g==",
|
||||
"version": "1.14.1",
|
||||
"resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.14.1.tgz",
|
||||
"integrity": "sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@webassemblyjs/ast": "1.12.1",
|
||||
"@webassemblyjs/helper-buffer": "1.12.1",
|
||||
"@webassemblyjs/helper-wasm-bytecode": "1.11.6",
|
||||
"@webassemblyjs/helper-wasm-section": "1.12.1",
|
||||
"@webassemblyjs/wasm-gen": "1.12.1",
|
||||
"@webassemblyjs/wasm-opt": "1.12.1",
|
||||
"@webassemblyjs/wasm-parser": "1.12.1",
|
||||
"@webassemblyjs/wast-printer": "1.12.1"
|
||||
"@webassemblyjs/ast": "1.14.1",
|
||||
"@webassemblyjs/helper-buffer": "1.14.1",
|
||||
"@webassemblyjs/helper-wasm-bytecode": "1.13.2",
|
||||
"@webassemblyjs/helper-wasm-section": "1.14.1",
|
||||
"@webassemblyjs/wasm-gen": "1.14.1",
|
||||
"@webassemblyjs/wasm-opt": "1.14.1",
|
||||
"@webassemblyjs/wasm-parser": "1.14.1",
|
||||
"@webassemblyjs/wast-printer": "1.14.1"
|
||||
}
|
||||
},
|
||||
"node_modules/@webassemblyjs/wasm-gen": {
|
||||
"version": "1.12.1",
|
||||
"resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.12.1.tgz",
|
||||
"integrity": "sha512-TDq4Ojh9fcohAw6OIMXqiIcTq5KUXTGRkVxbSo1hQnSy6lAM5GSdfwWeSxpAo0YzgsgF182E/U0mDNhuA0tW7w==",
|
||||
"version": "1.14.1",
|
||||
"resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.14.1.tgz",
|
||||
"integrity": "sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@webassemblyjs/ast": "1.12.1",
|
||||
"@webassemblyjs/helper-wasm-bytecode": "1.11.6",
|
||||
"@webassemblyjs/ieee754": "1.11.6",
|
||||
"@webassemblyjs/leb128": "1.11.6",
|
||||
"@webassemblyjs/utf8": "1.11.6"
|
||||
"@webassemblyjs/ast": "1.14.1",
|
||||
"@webassemblyjs/helper-wasm-bytecode": "1.13.2",
|
||||
"@webassemblyjs/ieee754": "1.13.2",
|
||||
"@webassemblyjs/leb128": "1.13.2",
|
||||
"@webassemblyjs/utf8": "1.13.2"
|
||||
}
|
||||
},
|
||||
"node_modules/@webassemblyjs/wasm-opt": {
|
||||
"version": "1.12.1",
|
||||
"resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.12.1.tgz",
|
||||
"integrity": "sha512-Jg99j/2gG2iaz3hijw857AVYekZe2SAskcqlWIZXjji5WStnOpVoat3gQfT/Q5tb2djnCjBtMocY/Su1GfxPBg==",
|
||||
"version": "1.14.1",
|
||||
"resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.14.1.tgz",
|
||||
"integrity": "sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@webassemblyjs/ast": "1.12.1",
|
||||
"@webassemblyjs/helper-buffer": "1.12.1",
|
||||
"@webassemblyjs/wasm-gen": "1.12.1",
|
||||
"@webassemblyjs/wasm-parser": "1.12.1"
|
||||
"@webassemblyjs/ast": "1.14.1",
|
||||
"@webassemblyjs/helper-buffer": "1.14.1",
|
||||
"@webassemblyjs/wasm-gen": "1.14.1",
|
||||
"@webassemblyjs/wasm-parser": "1.14.1"
|
||||
}
|
||||
},
|
||||
"node_modules/@webassemblyjs/wasm-parser": {
|
||||
"version": "1.12.1",
|
||||
"resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.12.1.tgz",
|
||||
"integrity": "sha512-xikIi7c2FHXysxXe3COrVUPSheuBtpcfhbpFj4gmu7KRLYOzANztwUU0IbsqvMqzuNK2+glRGWCEqZo1WCLyAQ==",
|
||||
"version": "1.14.1",
|
||||
"resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.14.1.tgz",
|
||||
"integrity": "sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@webassemblyjs/ast": "1.12.1",
|
||||
"@webassemblyjs/helper-api-error": "1.11.6",
|
||||
"@webassemblyjs/helper-wasm-bytecode": "1.11.6",
|
||||
"@webassemblyjs/ieee754": "1.11.6",
|
||||
"@webassemblyjs/leb128": "1.11.6",
|
||||
"@webassemblyjs/utf8": "1.11.6"
|
||||
"@webassemblyjs/ast": "1.14.1",
|
||||
"@webassemblyjs/helper-api-error": "1.13.2",
|
||||
"@webassemblyjs/helper-wasm-bytecode": "1.13.2",
|
||||
"@webassemblyjs/ieee754": "1.13.2",
|
||||
"@webassemblyjs/leb128": "1.13.2",
|
||||
"@webassemblyjs/utf8": "1.13.2"
|
||||
}
|
||||
},
|
||||
"node_modules/@webassemblyjs/wast-printer": {
|
||||
"version": "1.12.1",
|
||||
"resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.12.1.tgz",
|
||||
"integrity": "sha512-+X4WAlOisVWQMikjbcvY2e0rwPsKQ9F688lksZhBcPycBBuii3O7m8FACbDMWDojpAqvjIncrG8J0XHKyQfVeA==",
|
||||
"version": "1.14.1",
|
||||
"resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.14.1.tgz",
|
||||
"integrity": "sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@webassemblyjs/ast": "1.12.1",
|
||||
"@webassemblyjs/ast": "1.14.1",
|
||||
"@xtuc/long": "4.2.2"
|
||||
}
|
||||
},
|
||||
|
|
@ -6148,13 +6185,15 @@
|
|||
"version": "1.2.0",
|
||||
"resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz",
|
||||
"integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==",
|
||||
"dev": true
|
||||
"dev": true,
|
||||
"license": "BSD-3-Clause"
|
||||
},
|
||||
"node_modules/@xtuc/long": {
|
||||
"version": "4.2.2",
|
||||
"resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz",
|
||||
"integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==",
|
||||
"dev": true
|
||||
"dev": true,
|
||||
"license": "Apache-2.0"
|
||||
},
|
||||
"node_modules/abab": {
|
||||
"version": "2.0.6",
|
||||
|
|
@ -6225,13 +6264,17 @@
|
|||
"node": ">=0.4.0"
|
||||
}
|
||||
},
|
||||
"node_modules/acorn-import-attributes": {
|
||||
"version": "1.9.5",
|
||||
"resolved": "https://registry.npmjs.org/acorn-import-attributes/-/acorn-import-attributes-1.9.5.tgz",
|
||||
"integrity": "sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==",
|
||||
"node_modules/acorn-import-phases": {
|
||||
"version": "1.0.4",
|
||||
"resolved": "https://registry.npmjs.org/acorn-import-phases/-/acorn-import-phases-1.0.4.tgz",
|
||||
"integrity": "sha512-wKmbr/DDiIXzEOiWrTTUcDm24kQ2vGfZQvM2fwg2vXqR5uW6aapr7ObPtj1th32b9u90/Pf4AItvdTh42fBmVQ==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
"node": ">=10.13.0"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"acorn": "^8"
|
||||
"acorn": "^8.14.0"
|
||||
}
|
||||
},
|
||||
"node_modules/acorn-jsx": {
|
||||
|
|
@ -6999,6 +7042,16 @@
|
|||
}
|
||||
]
|
||||
},
|
||||
"node_modules/baseline-browser-mapping": {
|
||||
"version": "2.9.19",
|
||||
"resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.9.19.tgz",
|
||||
"integrity": "sha512-ipDqC8FrAl/76p2SSWKSI+H9tFwm7vYqXQrItCuiVPt26Km0jS+NzSsBWAaBusvSbQcfJG+JitdMm+wZAgTYqg==",
|
||||
"dev": true,
|
||||
"license": "Apache-2.0",
|
||||
"bin": {
|
||||
"baseline-browser-mapping": "dist/cli.js"
|
||||
}
|
||||
},
|
||||
"node_modules/batch": {
|
||||
"version": "0.6.1",
|
||||
"resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz",
|
||||
|
|
@ -7156,9 +7209,9 @@
|
|||
"dev": true
|
||||
},
|
||||
"node_modules/browserslist": {
|
||||
"version": "4.23.3",
|
||||
"resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.3.tgz",
|
||||
"integrity": "sha512-btwCFJVjI4YWDNfau8RhZ+B1Q/VLoUITrm3RlP6y1tYGWIOa+InuYiRGXUBXo8nA1qKmHMyLB/iVQg5TT4eFoA==",
|
||||
"version": "4.28.1",
|
||||
"resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.1.tgz",
|
||||
"integrity": "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA==",
|
||||
"dev": true,
|
||||
"funding": [
|
||||
{
|
||||
|
|
@ -7174,11 +7227,13 @@
|
|||
"url": "https://github.com/sponsors/ai"
|
||||
}
|
||||
],
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"caniuse-lite": "^1.0.30001646",
|
||||
"electron-to-chromium": "^1.5.4",
|
||||
"node-releases": "^2.0.18",
|
||||
"update-browserslist-db": "^1.1.0"
|
||||
"baseline-browser-mapping": "^2.9.0",
|
||||
"caniuse-lite": "^1.0.30001759",
|
||||
"electron-to-chromium": "^1.5.263",
|
||||
"node-releases": "^2.0.27",
|
||||
"update-browserslist-db": "^1.2.0"
|
||||
},
|
||||
"bin": {
|
||||
"browserslist": "cli.js"
|
||||
|
|
@ -7393,9 +7448,9 @@
|
|||
}
|
||||
},
|
||||
"node_modules/caniuse-lite": {
|
||||
"version": "1.0.30001653",
|
||||
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001653.tgz",
|
||||
"integrity": "sha512-XGWQVB8wFQ2+9NZwZ10GxTYC5hk0Fa+q8cSkr0tgvMhYhMHP/QC+WTgrePMDBWiWc/pV+1ik82Al20XOK25Gcw==",
|
||||
"version": "1.0.30001768",
|
||||
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001768.tgz",
|
||||
"integrity": "sha512-qY3aDRZC5nWPgHUgIB84WL+nySuo19wk0VJpp/XI9T34lrvkyhRvNVOFJOp2kxClQhiFBu+TaUSudf6oa3vkSA==",
|
||||
"dev": true,
|
||||
"funding": [
|
||||
{
|
||||
|
|
@ -7410,7 +7465,8 @@
|
|||
"type": "github",
|
||||
"url": "https://github.com/sponsors/ai"
|
||||
}
|
||||
]
|
||||
],
|
||||
"license": "CC-BY-4.0"
|
||||
},
|
||||
"node_modules/case-sensitive-paths-webpack-plugin": {
|
||||
"version": "2.4.0",
|
||||
|
|
@ -9295,10 +9351,11 @@
|
|||
"dev": true
|
||||
},
|
||||
"node_modules/electron-to-chromium": {
|
||||
"version": "1.5.13",
|
||||
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.13.tgz",
|
||||
"integrity": "sha512-lbBcvtIJ4J6sS4tb5TLp1b4LyfCdMkwStzXPyAgVgTRAsep4bvrAGaBOP7ZJtQMNJpSQ9SqG4brWOroNaQtm7Q==",
|
||||
"dev": true
|
||||
"version": "1.5.286",
|
||||
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.286.tgz",
|
||||
"integrity": "sha512-9tfDXhJ4RKFNerfjdCcZfufu49vg620741MNs26a9+bhLThdB+plgMeou98CAaHu/WATj2iHOOHTp1hWtABj2A==",
|
||||
"dev": true,
|
||||
"license": "ISC"
|
||||
},
|
||||
"node_modules/emittery": {
|
||||
"version": "0.8.1",
|
||||
|
|
@ -9373,13 +9430,14 @@
|
|||
}
|
||||
},
|
||||
"node_modules/enhanced-resolve": {
|
||||
"version": "5.17.1",
|
||||
"resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.17.1.tgz",
|
||||
"integrity": "sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==",
|
||||
"version": "5.19.0",
|
||||
"resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.19.0.tgz",
|
||||
"integrity": "sha512-phv3E1Xl4tQOShqSte26C7Fl84EwUdZsyOuSSk9qtAGyyQs2s3jJzComh+Abf4g187lUUAvH+H26omrqia2aGg==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"graceful-fs": "^4.2.4",
|
||||
"tapable": "^2.2.0"
|
||||
"tapable": "^2.3.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=10.13.0"
|
||||
|
|
@ -9556,10 +9614,11 @@
|
|||
}
|
||||
},
|
||||
"node_modules/escalade": {
|
||||
"version": "3.1.2",
|
||||
"resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz",
|
||||
"integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==",
|
||||
"version": "3.2.0",
|
||||
"resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz",
|
||||
"integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
"node": ">=6"
|
||||
}
|
||||
|
|
@ -10355,6 +10414,23 @@
|
|||
"integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/fast-uri": {
|
||||
"version": "3.1.0",
|
||||
"resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.0.tgz",
|
||||
"integrity": "sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==",
|
||||
"dev": true,
|
||||
"funding": [
|
||||
{
|
||||
"type": "github",
|
||||
"url": "https://github.com/sponsors/fastify"
|
||||
},
|
||||
{
|
||||
"type": "opencollective",
|
||||
"url": "https://opencollective.com/fastify"
|
||||
}
|
||||
],
|
||||
"license": "BSD-3-Clause"
|
||||
},
|
||||
"node_modules/fastq": {
|
||||
"version": "1.13.0",
|
||||
"resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz",
|
||||
|
|
@ -10904,7 +10980,8 @@
|
|||
"version": "0.4.1",
|
||||
"resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz",
|
||||
"integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==",
|
||||
"dev": true
|
||||
"dev": true,
|
||||
"license": "BSD-2-Clause"
|
||||
},
|
||||
"node_modules/globals": {
|
||||
"version": "11.12.0",
|
||||
|
|
@ -15186,12 +15263,17 @@
|
|||
}
|
||||
},
|
||||
"node_modules/loader-runner": {
|
||||
"version": "4.3.0",
|
||||
"resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz",
|
||||
"integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==",
|
||||
"version": "4.3.1",
|
||||
"resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.1.tgz",
|
||||
"integrity": "sha512-IWqP2SCPhyVFTBtRcgMHdzlf9ul25NwaFx4wCEH/KjAXuuHY4yNjvPXsBokp8jCB936PyWRaPKUNh8NvylLp2Q==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
"node": ">=6.11.5"
|
||||
},
|
||||
"funding": {
|
||||
"type": "opencollective",
|
||||
"url": "https://opencollective.com/webpack"
|
||||
}
|
||||
},
|
||||
"node_modules/loader-utils": {
|
||||
|
|
@ -16372,10 +16454,11 @@
|
|||
"dev": true
|
||||
},
|
||||
"node_modules/node-releases": {
|
||||
"version": "2.0.18",
|
||||
"resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.18.tgz",
|
||||
"integrity": "sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==",
|
||||
"dev": true
|
||||
"version": "2.0.27",
|
||||
"resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.27.tgz",
|
||||
"integrity": "sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==",
|
||||
"dev": true,
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/nopt": {
|
||||
"version": "6.0.0",
|
||||
|
|
@ -19604,12 +19687,17 @@
|
|||
"dev": true
|
||||
},
|
||||
"node_modules/tapable": {
|
||||
"version": "2.2.1",
|
||||
"resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz",
|
||||
"integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==",
|
||||
"version": "2.3.0",
|
||||
"resolved": "https://registry.npmjs.org/tapable/-/tapable-2.3.0.tgz",
|
||||
"integrity": "sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
"node": ">=6"
|
||||
},
|
||||
"funding": {
|
||||
"type": "opencollective",
|
||||
"url": "https://opencollective.com/webpack"
|
||||
}
|
||||
},
|
||||
"node_modules/tar": {
|
||||
|
|
@ -19743,16 +19831,17 @@
|
|||
}
|
||||
},
|
||||
"node_modules/terser-webpack-plugin": {
|
||||
"version": "5.3.10",
|
||||
"resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.10.tgz",
|
||||
"integrity": "sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==",
|
||||
"version": "5.3.16",
|
||||
"resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.16.tgz",
|
||||
"integrity": "sha512-h9oBFCWrq78NyWWVcSwZarJkZ01c2AyGrzs1crmHZO3QUg9D61Wu4NPjBy69n7JqylFF5y+CsUZYmYEIZ3mR+Q==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@jridgewell/trace-mapping": "^0.3.20",
|
||||
"@jridgewell/trace-mapping": "^0.3.25",
|
||||
"jest-worker": "^27.4.5",
|
||||
"schema-utils": "^3.1.1",
|
||||
"serialize-javascript": "^6.0.1",
|
||||
"terser": "^5.26.0"
|
||||
"schema-utils": "^4.3.0",
|
||||
"serialize-javascript": "^6.0.2",
|
||||
"terser": "^5.31.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 10.13.0"
|
||||
|
|
@ -19776,6 +19865,63 @@
|
|||
}
|
||||
}
|
||||
},
|
||||
"node_modules/terser-webpack-plugin/node_modules/ajv": {
|
||||
"version": "8.17.1",
|
||||
"resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz",
|
||||
"integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"fast-deep-equal": "^3.1.3",
|
||||
"fast-uri": "^3.0.1",
|
||||
"json-schema-traverse": "^1.0.0",
|
||||
"require-from-string": "^2.0.2"
|
||||
},
|
||||
"funding": {
|
||||
"type": "github",
|
||||
"url": "https://github.com/sponsors/epoberezkin"
|
||||
}
|
||||
},
|
||||
"node_modules/terser-webpack-plugin/node_modules/ajv-keywords": {
|
||||
"version": "5.1.0",
|
||||
"resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz",
|
||||
"integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"fast-deep-equal": "^3.1.3"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"ajv": "^8.8.2"
|
||||
}
|
||||
},
|
||||
"node_modules/terser-webpack-plugin/node_modules/json-schema-traverse": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
|
||||
"integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==",
|
||||
"dev": true,
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/terser-webpack-plugin/node_modules/schema-utils": {
|
||||
"version": "4.3.3",
|
||||
"resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.3.tgz",
|
||||
"integrity": "sha512-eflK8wEtyOE6+hsaRVPxvUKYCpRgzLqDTb8krvAsRIwOGlHoSgYLgBXoubGgLd2fT41/OUYdb48v4k4WWHQurA==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@types/json-schema": "^7.0.9",
|
||||
"ajv": "^8.9.0",
|
||||
"ajv-formats": "^2.1.1",
|
||||
"ajv-keywords": "^5.1.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 10.13.0"
|
||||
},
|
||||
"funding": {
|
||||
"type": "opencollective",
|
||||
"url": "https://opencollective.com/webpack"
|
||||
}
|
||||
},
|
||||
"node_modules/terser/node_modules/commander": {
|
||||
"version": "2.20.3",
|
||||
"resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
|
||||
|
|
@ -20411,9 +20557,9 @@
|
|||
}
|
||||
},
|
||||
"node_modules/update-browserslist-db": {
|
||||
"version": "1.1.0",
|
||||
"resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.0.tgz",
|
||||
"integrity": "sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==",
|
||||
"version": "1.2.3",
|
||||
"resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz",
|
||||
"integrity": "sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==",
|
||||
"dev": true,
|
||||
"funding": [
|
||||
{
|
||||
|
|
@ -20429,9 +20575,10 @@
|
|||
"url": "https://github.com/sponsors/ai"
|
||||
}
|
||||
],
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"escalade": "^3.1.2",
|
||||
"picocolors": "^1.0.1"
|
||||
"escalade": "^3.2.0",
|
||||
"picocolors": "^1.1.1"
|
||||
},
|
||||
"bin": {
|
||||
"update-browserslist-db": "cli.js"
|
||||
|
|
@ -21516,10 +21663,11 @@
|
|||
}
|
||||
},
|
||||
"node_modules/watchpack": {
|
||||
"version": "2.4.2",
|
||||
"resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.2.tgz",
|
||||
"integrity": "sha512-TnbFSbcOCcDgjZ4piURLCbJ3nJhznVh9kw6F6iokjiFPl8ONxe9A6nMDVXDiNbrSfLILs6vB07F7wLBrwPYzJw==",
|
||||
"version": "2.5.1",
|
||||
"resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.5.1.tgz",
|
||||
"integrity": "sha512-Zn5uXdcFNIA1+1Ei5McRd+iRzfhENPCe7LeABkJtNulSxjma+l7ltNx55BWZkRlwRnpOgHqxnjyaDgJnNXnqzg==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"glob-to-regexp": "^0.4.1",
|
||||
"graceful-fs": "^4.1.2"
|
||||
|
|
@ -21556,34 +21704,37 @@
|
|||
}
|
||||
},
|
||||
"node_modules/webpack": {
|
||||
"version": "5.94.0",
|
||||
"resolved": "https://registry.npmjs.org/webpack/-/webpack-5.94.0.tgz",
|
||||
"integrity": "sha512-KcsGn50VT+06JH/iunZJedYGUJS5FGjow8wb9c0v5n1Om8O1g4L6LjtfxwlXIATopoQu+vOXXa7gYisWxCoPyg==",
|
||||
"version": "5.105.0",
|
||||
"resolved": "https://registry.npmjs.org/webpack/-/webpack-5.105.0.tgz",
|
||||
"integrity": "sha512-gX/dMkRQc7QOMzgTe6KsYFM7DxeIONQSui1s0n/0xht36HvrgbxtM1xBlgx596NbpHuQU8P7QpKwrZYwUX48nw==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@types/estree": "^1.0.5",
|
||||
"@webassemblyjs/ast": "^1.12.1",
|
||||
"@webassemblyjs/wasm-edit": "^1.12.1",
|
||||
"@webassemblyjs/wasm-parser": "^1.12.1",
|
||||
"acorn": "^8.7.1",
|
||||
"acorn-import-attributes": "^1.9.5",
|
||||
"browserslist": "^4.21.10",
|
||||
"@types/eslint-scope": "^3.7.7",
|
||||
"@types/estree": "^1.0.8",
|
||||
"@types/json-schema": "^7.0.15",
|
||||
"@webassemblyjs/ast": "^1.14.1",
|
||||
"@webassemblyjs/wasm-edit": "^1.14.1",
|
||||
"@webassemblyjs/wasm-parser": "^1.14.1",
|
||||
"acorn": "^8.15.0",
|
||||
"acorn-import-phases": "^1.0.3",
|
||||
"browserslist": "^4.28.1",
|
||||
"chrome-trace-event": "^1.0.2",
|
||||
"enhanced-resolve": "^5.17.1",
|
||||
"es-module-lexer": "^1.2.1",
|
||||
"enhanced-resolve": "^5.19.0",
|
||||
"es-module-lexer": "^2.0.0",
|
||||
"eslint-scope": "5.1.1",
|
||||
"events": "^3.2.0",
|
||||
"glob-to-regexp": "^0.4.1",
|
||||
"graceful-fs": "^4.2.11",
|
||||
"json-parse-even-better-errors": "^2.3.1",
|
||||
"loader-runner": "^4.2.0",
|
||||
"loader-runner": "^4.3.1",
|
||||
"mime-types": "^2.1.27",
|
||||
"neo-async": "^2.6.2",
|
||||
"schema-utils": "^3.2.0",
|
||||
"tapable": "^2.1.1",
|
||||
"terser-webpack-plugin": "^5.3.10",
|
||||
"watchpack": "^2.4.1",
|
||||
"webpack-sources": "^3.2.3"
|
||||
"schema-utils": "^4.3.3",
|
||||
"tapable": "^2.3.0",
|
||||
"terser-webpack-plugin": "^5.3.16",
|
||||
"watchpack": "^2.5.1",
|
||||
"webpack-sources": "^3.3.3"
|
||||
},
|
||||
"bin": {
|
||||
"webpack": "bin/webpack.js"
|
||||
|
|
@ -21945,10 +22096,11 @@
|
|||
}
|
||||
},
|
||||
"node_modules/webpack-sources": {
|
||||
"version": "3.2.3",
|
||||
"resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz",
|
||||
"integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==",
|
||||
"version": "3.3.3",
|
||||
"resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.3.3.tgz",
|
||||
"integrity": "sha512-yd1RBzSGanHkitROoPFd6qsrxt+oFhg/129YzheDGqeustzX0vTZJZsSsQjVQC4yzBQ56K55XU8gaNCtIzOnTg==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
"node": ">=10.13.0"
|
||||
}
|
||||
|
|
@ -21959,6 +22111,70 @@
|
|||
"integrity": "sha512-h9atBP/bsZohWpHnr+2sic8Iecb60GxftXsWNLLLSqewgIsGzByd2gcIID4nXcG+3tNe4GQG3dLcff3kXupdRA==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/webpack/node_modules/ajv": {
|
||||
"version": "8.17.1",
|
||||
"resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz",
|
||||
"integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"fast-deep-equal": "^3.1.3",
|
||||
"fast-uri": "^3.0.1",
|
||||
"json-schema-traverse": "^1.0.0",
|
||||
"require-from-string": "^2.0.2"
|
||||
},
|
||||
"funding": {
|
||||
"type": "github",
|
||||
"url": "https://github.com/sponsors/epoberezkin"
|
||||
}
|
||||
},
|
||||
"node_modules/webpack/node_modules/ajv-keywords": {
|
||||
"version": "5.1.0",
|
||||
"resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz",
|
||||
"integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"fast-deep-equal": "^3.1.3"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"ajv": "^8.8.2"
|
||||
}
|
||||
},
|
||||
"node_modules/webpack/node_modules/es-module-lexer": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-2.0.0.tgz",
|
||||
"integrity": "sha512-5POEcUuZybH7IdmGsD8wlf0AI55wMecM9rVBTI/qEAy2c1kTOm3DjFYjrBdI2K3BaJjJYfYFeRtM0t9ssnRuxw==",
|
||||
"dev": true,
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/webpack/node_modules/json-schema-traverse": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
|
||||
"integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==",
|
||||
"dev": true,
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/webpack/node_modules/schema-utils": {
|
||||
"version": "4.3.3",
|
||||
"resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.3.tgz",
|
||||
"integrity": "sha512-eflK8wEtyOE6+hsaRVPxvUKYCpRgzLqDTb8krvAsRIwOGlHoSgYLgBXoubGgLd2fT41/OUYdb48v4k4WWHQurA==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@types/json-schema": "^7.0.9",
|
||||
"ajv": "^8.9.0",
|
||||
"ajv-formats": "^2.1.1",
|
||||
"ajv-keywords": "^5.1.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 10.13.0"
|
||||
},
|
||||
"funding": {
|
||||
"type": "opencollective",
|
||||
"url": "https://opencollective.com/webpack"
|
||||
}
|
||||
},
|
||||
"node_modules/websocket-driver": {
|
||||
"version": "0.7.4",
|
||||
"resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz",
|
||||
|
|
|
|||
|
|
@ -559,6 +559,7 @@ export default {
|
|||
this.selectTimeSlotForDay(timeSlot);
|
||||
},
|
||||
async setCalendarData(config = {}) {
|
||||
// set selectable dates data
|
||||
config.initialShopTimeSlotsResponse.days.forEach((selectableDate) => {
|
||||
const dateObjectToPush = {
|
||||
date: selectableDate.date,
|
||||
|
|
|
|||
|
|
@ -10,7 +10,9 @@
|
|||
:aria-label="buttonLabel"
|
||||
class="button-content list-button-content d-flex flex-column justify-content-center py-3 px-4">
|
||||
<div class="row-one">
|
||||
<div class="availability-indicator-spacer"></div>
|
||||
<div
|
||||
v-if="displayAvailabilityIndicators"
|
||||
class="availability-indicator-spacer"></div>
|
||||
<span
|
||||
id="buttonLabelSpan"
|
||||
class="m-0 button-label-copy"
|
||||
|
|
@ -22,9 +24,10 @@
|
|||
class="m-0 button-label-sub-copy"
|
||||
:class="textPosition">{{ buttonLabelSubCopy }}
|
||||
</span>
|
||||
<div class="availability-indicator-container">
|
||||
<div
|
||||
v-if="displayAvailabilityIndicators"
|
||||
class="availability-indicator-container">
|
||||
<div
|
||||
v-if="displayAvailabilityIndicators"
|
||||
id="availabilityIndicatorBlock"
|
||||
class="availability-indicator rounded-pill"
|
||||
:class="availabilityRatingClass">
|
||||
|
|
|
|||
|
|
@ -89,13 +89,12 @@
|
|||
class="mt-5 mb-5"
|
||||
:customText="disclaimerText"
|
||||
typeStyle="caption" />
|
||||
<div :class="getVariant + ' mb-5'">
|
||||
<textLink
|
||||
linkType="navigation"
|
||||
text="Back"
|
||||
href="#"
|
||||
@clickEvent="navigateBackByVehicleQuestions" />
|
||||
</div>
|
||||
<siteFooter
|
||||
ref="siteFooter"
|
||||
:class="backButtonClass + ' mb-5'"
|
||||
cmsWidgetName="SiteFooterWidget"
|
||||
:isForwardButtonHidden="true"
|
||||
@backClicked="navigateBackByVehicleQuestions" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -114,6 +113,7 @@ import contentGroupModal from '@/iss-components/content-group-modal/content-grou
|
|||
import textBlock from '@/digital-components/text-block/text-block.vue';
|
||||
import textLink from '@/ux-components/text-link/text-link.vue';
|
||||
import buttonMain from '@/ux-components/button-main/button-main.vue';
|
||||
import siteFooter from '@/iss-components/site-footer/site-footer.vue';
|
||||
// Import Supporting Files
|
||||
import {
|
||||
fetchCmsContentForPage,
|
||||
|
|
@ -146,7 +146,8 @@ export default {
|
|||
contentGroupModal,
|
||||
buttonMain,
|
||||
textBlock,
|
||||
textLink
|
||||
textLink,
|
||||
siteFooter
|
||||
},
|
||||
mixins: [baseFormMixin, vehicleQuestionsMixin],
|
||||
async beforeRouteEnter(to, from, next) {
|
||||
|
|
@ -326,11 +327,11 @@ export default {
|
|||
buttonText() {
|
||||
return (this.isITACQuoteVisible || this.isNoCompQuoteVisible) ? 'Continue scheduling' : 'Continue';
|
||||
},
|
||||
getVariant() {
|
||||
backButtonClass() {
|
||||
if (this.isITACQuoteVisible || this.isNoCompQuoteVisible) {
|
||||
return 'text-center';
|
||||
return 'centered-back-button';
|
||||
}
|
||||
return 'text-left';
|
||||
return '';
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
|
|
@ -595,6 +596,16 @@ export default {
|
|||
margin-top: 20px;
|
||||
display: block;
|
||||
}
|
||||
:deep(.centered-back-button) {
|
||||
footer {
|
||||
> div {
|
||||
justify-content: center;
|
||||
#stacked {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.modal {
|
||||
|
|
|
|||
|
|
@ -67,6 +67,7 @@ import {
|
|||
repairWaivedForSelectedVehicle
|
||||
} from '@/helpers/policy-vehicle-helper';
|
||||
import coverageType from '@/constants/coverage-type';
|
||||
import coverageStatuses from '@/constants/coverage-statuses';
|
||||
import alert from '@/ux-components/alert/alert.vue';
|
||||
import siteSubHeader from '@/iss-components/site-sub-header/site-sub-header.vue';
|
||||
import buttonMain from '@/ux-components/button-main/button-main.vue';
|
||||
|
|
@ -237,6 +238,7 @@ export default {
|
|||
});
|
||||
} else {
|
||||
useMainStore().updateCoverageType(coverageType.NONE);
|
||||
useMainStore().updateCoverageStatus(coverageStatuses.NO_COVERAGE);
|
||||
}
|
||||
return this.navigateForward();
|
||||
},
|
||||
|
|
|
|||
|
|
@ -20,6 +20,7 @@
|
|||
ref="serviceLocation"
|
||||
@appointmentTypeChanged="appointmentTypeChangedFromServiceLocation"
|
||||
@cityUpdated="cityUpdatedFromServiceLocation"
|
||||
@inShopZipUpdated="inShopZipUpdatedFromServiceLocation"
|
||||
@mobileZipUpdated="mobileZipUpdatedFromServiceLocation"
|
||||
@providerChanged="providerChangedFromServiceLocation" />
|
||||
</div>
|
||||
|
|
@ -182,7 +183,8 @@ const getAvailableDates = async (
|
|||
storeAction.payload.endDate,
|
||||
storeAction.payload.zipCodeOverride
|
||||
).catch((error) => {
|
||||
console.log('Error fetching mobile time slots:', error);
|
||||
// eslint-disable-next-line no-console
|
||||
console.warn('Error fetching mobile time slots:', error);
|
||||
});
|
||||
}
|
||||
|
||||
|
|
@ -224,6 +226,8 @@ export default {
|
|||
const cmsContentPromise = fetchCmsContentForPage(to.query.issPage);
|
||||
const storeServiceLocation = useMainStore().order.serviceLocation;
|
||||
const storeSelectedAppointmentType = storeServiceLocation?.appointmentType;
|
||||
const isMobileAppointment = storeSelectedAppointmentType === AppointmentTypeStrings.MOBILE
|
||||
|| storeSelectedAppointmentType === AppointmentTypeStrings.MOBILE_NOT_ITAC_AND_NOT_NOCOMP;
|
||||
const storeSelectedProvider = storeServiceLocation?.provider;
|
||||
const serviceZipCode = storeServiceLocation?.zipCode || useMainStore().order.customer.address.zipCode;
|
||||
const zipCodeData = getZipCodeData(serviceZipCode);
|
||||
|
|
@ -275,6 +279,9 @@ export default {
|
|||
// use resultMap to populate layout content.
|
||||
const resultMap = await settleAllPromises(promiseResultMap);
|
||||
const serviceLocationData = {
|
||||
defaultMobileZipCode: isMobileAppointment
|
||||
? storeServiceLocation?.zipCode
|
||||
: '',
|
||||
glassFees: resultMap.glassFees,
|
||||
mobileFeePart: resultMap.mobileFeePart,
|
||||
providers: resultMap.providers,
|
||||
|
|
@ -285,8 +292,6 @@ export default {
|
|||
next(async (vm) => {
|
||||
const providerToUse = resultMap.providers?.shopProviders
|
||||
.find((provider) => provider.providerNumber === storeSelectedProvider?.providerNumber) || resultMap.providers?.shopProviders[0];
|
||||
const isMobileAppointment = storeSelectedAppointmentType === AppointmentTypeStrings.MOBILE
|
||||
|| storeSelectedAppointmentType === AppointmentTypeStrings.MOBILE_NOT_ITAC_AND_NOT_NOCOMP;
|
||||
const initialServiceLocationObj = {
|
||||
mobileProviderNumber: isMobileAppointment
|
||||
? storeSelectedProvider?.providerNumber
|
||||
|
|
@ -314,10 +319,10 @@ export default {
|
|||
mobileFeePart: null,
|
||||
mobilePremiumAppointmentFee: null,
|
||||
mobileProviderNumber: null,
|
||||
mobileZipCodeOverride: null,
|
||||
selectableDatesData: [],
|
||||
selectedAppointmentType: this.getAppointmentType(),
|
||||
selectedDate: this.getSelectedDate(),
|
||||
selectedMobileZipCode: null,
|
||||
selectedProvider: this.getSelectedProvider(),
|
||||
selectedServiceLocation: this.getServiceLocation(),
|
||||
selectedServiceLocationCity: this.getServiceLocationCity(),
|
||||
|
|
@ -401,6 +406,7 @@ export default {
|
|||
});
|
||||
} else {
|
||||
this.mobileProviderNumber = initialServiceLocationObj.mobileProviderNumber;
|
||||
this.selectedMobileZipCode = initialServiceLocationObj.zipCode;
|
||||
await this.getDatePickerInitialData().then((initialData) => {
|
||||
this.selectableDatesData = initialData.initialShopTimeSlotsResponse;
|
||||
this.$refs.datePicker.setCalendarData(initialData);
|
||||
|
|
@ -430,11 +436,18 @@ export default {
|
|||
return this.mainStore.order?.serviceLocation?.appointmentType;
|
||||
},
|
||||
async getAvailableDatesMethod(startDate, endDate) {
|
||||
let mobileProviderNumberToUse = this.mobileProviderNumber;
|
||||
if (this.selectedAppointmentType === AppointmentTypeStrings.MOBILE
|
||||
|| this.selectedAppointmentType === AppointmentTypeStrings.MOBILE_NOT_ITAC_AND_NOT_NOCOMP) {
|
||||
mobileProviderNumberToUse = this.selectedServiceLocation.mobileProviderNumber;
|
||||
}
|
||||
|
||||
const newShopTimeSlots = await getAvailableDates(
|
||||
startDate,
|
||||
endDate,
|
||||
this.selectedAppointmentType,
|
||||
this.selectedProvider.providerNumber
|
||||
this.selectedProvider.providerNumber || mobileProviderNumberToUse,
|
||||
this.selectedMobileZipCode
|
||||
);
|
||||
// ADD API CALL RESULTS TO EXISTING DATE DATA
|
||||
this.selectableDatesData.days =
|
||||
|
|
@ -590,9 +603,17 @@ export default {
|
|||
handleMqlChange(e) {
|
||||
this.isMobileView = !e.matches;
|
||||
},
|
||||
inShopZipUpdatedFromServiceLocation(inShopZipServiceLocation) {
|
||||
if (inShopZipServiceLocation) {
|
||||
this.mobileProviderNumber = null;
|
||||
this.selectedMobileZipCode = null;
|
||||
this.selectedServiceLocation = inShopZipServiceLocation;
|
||||
}
|
||||
},
|
||||
mobileZipUpdatedFromServiceLocation(mobileZipServiceLocation) {
|
||||
if (mobileZipServiceLocation) {
|
||||
this.mobileProviderNumber = mobileZipServiceLocation.mobileProviderNumber;
|
||||
this.selectedMobileZipCode = mobileZipServiceLocation.zipCode;
|
||||
this.selectedServiceLocation = mobileZipServiceLocation;
|
||||
|
||||
if (mobileZipServiceLocation.refreshDatePicker) {
|
||||
|
|
|
|||
|
|
@ -159,7 +159,7 @@ export default {
|
|||
serviceZipQuestion
|
||||
},
|
||||
mixins: [baseFormMixin],
|
||||
emits: ['appointment-type-changed', 'city-updated', 'mobile-zip-updated', 'provider-changed'],
|
||||
emits: ['appointment-type-changed', 'city-updated', 'in-shop-zip-updated', 'mobile-zip-updated', 'provider-changed'],
|
||||
setup() {
|
||||
const mainStore = useMainStore();
|
||||
return { mainStore };
|
||||
|
|
@ -171,6 +171,7 @@ export default {
|
|||
city: this.getServiceCityFromStore(),
|
||||
state: this.getServiceStateFromStore(),
|
||||
zipCode: this.getServiceZipCodeFromStore(),
|
||||
initializingData: false,
|
||||
isGlassServiceableInshop: null,
|
||||
isRecalibrationServiceableInshop: null,
|
||||
isGlassServiceableMobile: null,
|
||||
|
|
@ -289,7 +290,7 @@ export default {
|
|||
}
|
||||
},
|
||||
async mobileZipCode(newZip, oldZip) {
|
||||
if (newZip !== '' && newZip !== oldZip) {
|
||||
if (newZip !== '' && newZip !== oldZip && !this.initializingData) {
|
||||
showIssLoadingModal(true);
|
||||
await this.updateMobileZip();
|
||||
const updateMobileZipServiceLocationObj = {
|
||||
|
|
@ -348,8 +349,10 @@ export default {
|
|||
}
|
||||
},
|
||||
methods: {
|
||||
initializeComponent(initialData) {
|
||||
this.setData(initialData);
|
||||
async initializeComponent(initialData) {
|
||||
this.initializingData = true;
|
||||
await this.setData(initialData);
|
||||
this.initializingData = false;
|
||||
},
|
||||
async forwardButtonAction() {
|
||||
let provider = this.selectedProvider;
|
||||
|
|
@ -424,6 +427,17 @@ export default {
|
|||
if (details) {
|
||||
this.setServiceabilityDetails(details);
|
||||
}
|
||||
|
||||
const inShopZipServiceLocationObj = {
|
||||
appointmentType: AppointmentTypeStrings.IN_SHOP,
|
||||
mobileProviderNumber: null,
|
||||
provider: this.selectedProvider,
|
||||
refreshDatePicker: false,
|
||||
resetDatePicker: false,
|
||||
zipCode: newZip,
|
||||
zipCodeCtu: zipCodeData.zipCodeCtu
|
||||
};
|
||||
this.$emit('in-shop-zip-updated', inShopZipServiceLocationObj);
|
||||
});
|
||||
},
|
||||
refreshAvailabilityRating() {
|
||||
|
|
@ -447,7 +461,11 @@ export default {
|
|||
setCtuForMobile(val) {
|
||||
this.zipCodeCtu = val;
|
||||
},
|
||||
setData(initialData) {
|
||||
async setData(initialData) {
|
||||
if (initialData.defaultMobileZipCode) {
|
||||
this.mobileZipCode = initialData.defaultMobileZipCode;
|
||||
}
|
||||
|
||||
if (initialData.zipCodeData) {
|
||||
this.zipContainsMilitaryBase = initialData.zipCodeData.containsMilitaryBase;
|
||||
this.zipCodeCtu = initialData.zipCodeData.zipCodeCtu;
|
||||
|
|
|
|||
|
|
@ -105,6 +105,7 @@ import googleMap from '@/iss-components/google-map/google-map.vue';
|
|||
|
||||
// Supporting files
|
||||
import baseMixin from '@/mixins/base-mixin.js';
|
||||
import showIssLoadingModal from '@/helpers/loading-modal-helper.js';
|
||||
import { toTitleCase } from '@/helpers/text-helper.js';
|
||||
import { markRaw } from 'vue';
|
||||
import { getAvailabilityRating } from '@/helpers/service-location-helper';
|
||||
|
|
@ -194,7 +195,7 @@ export default {
|
|||
const formattedEndDate = endDate.toISOString().split('T')[0];
|
||||
|
||||
return {
|
||||
displayAvailabilityIndicators: true,
|
||||
displayAvailabilityIndicators: false,
|
||||
availabilityRatingCallback: getAvailabilityRating,
|
||||
startDate: formattedStartDate,
|
||||
endDate: formattedEndDate,
|
||||
|
|
@ -243,7 +244,9 @@ export default {
|
|||
if (this.openingModal) {
|
||||
return;
|
||||
}
|
||||
showIssLoadingModal(true);
|
||||
const shopsUpdated = await this.updateShops();
|
||||
showIssLoadingModal(false);
|
||||
if (shopsUpdated) {
|
||||
await this.$nextTick();
|
||||
this.$refs[SERVICE_ZIP_QUESTION_REF_NAME].internalZipcode = '';
|
||||
|
|
@ -253,7 +256,9 @@ export default {
|
|||
if (this.openingModal) {
|
||||
return;
|
||||
}
|
||||
showIssLoadingModal(true);
|
||||
await this.updateShops();
|
||||
showIssLoadingModal(false);
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
|
|
|
|||
|
|
@ -3,15 +3,20 @@
|
|||
id="vin-lookup-alerts-wrapper"
|
||||
:class="wrapperCssClass">
|
||||
<vehicleNotFoundAlert
|
||||
v-if="isVehicleNotFoundVisible" />
|
||||
v-if="isVehicleNotFoundVisible"
|
||||
class="mt-5" />
|
||||
<twoIdenticalYMMVehicleAlert
|
||||
v-if="isTwoIdenticalYMMVehicleFoundVisible" />
|
||||
v-if="isTwoIdenticalYMMVehicleFoundVisible"
|
||||
class="mt-5" />
|
||||
<vehicleNotMatchedAlert
|
||||
v-else-if="isVehicleNotMatchedVisible" />
|
||||
v-else-if="isVehicleNotMatchedVisible"
|
||||
class="mt-5" />
|
||||
<perfectMatchAlert
|
||||
v-else-if="isPerfectMatchVisible" />
|
||||
v-else-if="isPerfectMatchVisible"
|
||||
class="mt-5" />
|
||||
<noServiceAlert
|
||||
v-else-if="isNoServiceVisible" />
|
||||
v-else-if="isNoServiceVisible"
|
||||
class="mt-5" />
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
|
|
@ -66,3 +71,9 @@ export default {
|
|||
}
|
||||
};
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
div.alert {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
</style>
|
||||
|
|
|
|||
|
|
@ -13,13 +13,12 @@
|
|||
<div class="select-car-form rounded">
|
||||
<siteSubHeader
|
||||
cmsWidgetName="SiteSubHeaderWidget"
|
||||
class="mt-4"
|
||||
subHeaderMarginClasses="mt-1" />
|
||||
class="mt-4" />
|
||||
<vinLookupAlerts
|
||||
class="mt-5"
|
||||
:activeAlertType="activeVehicleLookupAlertType" />
|
||||
<vinQuestion
|
||||
v-model="vin"
|
||||
class="mt-4"
|
||||
:mask="vinMask"
|
||||
:isDisabled="vinPopulatedOnPageLoad"
|
||||
textPosition="left" />
|
||||
|
|
@ -48,6 +47,7 @@ import { isGlassAvailableForCarId } from '@/helpers/damage-helper';
|
|||
import settleAllPromises from '@/helpers/layout-helper';
|
||||
import routerParams from '@/router/router-constants/router-params';
|
||||
import { useMainStore } from '@/store';
|
||||
import showIssLoadingModal from '@/helpers/loading-modal-helper.js';
|
||||
|
||||
// Import Component
|
||||
import baseFormMixin from '@/mixins/base-form-mixin';
|
||||
|
|
@ -140,7 +140,9 @@ export default {
|
|||
// TODO: Side effects in computed.
|
||||
if (this.vinPopulatedOnPageLoad) {
|
||||
// TODO: Modify to remove side effects in computed
|
||||
// eslint-disable-next-line vue/no-side-effects-in-computed-properties
|
||||
this.activeVehicleLookupAlertType = vehicleLookupAlertTypes.PERFECT_MATCH;
|
||||
// eslint-disable-next-line vue/no-side-effects-in-computed-properties
|
||||
this.needToLookupVehicle = false;
|
||||
const lastSixChars = this.vin.substring(11, this.vin.length);
|
||||
return `!X!X!X!X!X!X!X!X!X!X!X${lastSixChars}`;
|
||||
|
|
@ -174,6 +176,7 @@ export default {
|
|||
this.resetActiveAlert();
|
||||
// Temp solution to reset the 'disabled' style on the Continue button
|
||||
this.$refs.siteFooter.enableForwardAction();
|
||||
showIssLoadingModal(true);
|
||||
|
||||
if (this.needToLookupVehicle) {
|
||||
const vehicleLookupResponse = await this.lookupVehicleByVin(this.vin);
|
||||
|
|
@ -186,6 +189,7 @@ export default {
|
|||
// because the form itself actually passes its client-side validation.
|
||||
// SSR-189 Scenario #4.
|
||||
this.$refs.siteFooter.enableForwardAction();
|
||||
showIssLoadingModal(false);
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
@ -193,6 +197,7 @@ export default {
|
|||
this.activeVehicleLookupAlertType = vehicleLookupAlertTypes.NO_SERVICE;
|
||||
this.resetVehicleFromLookup();
|
||||
this.$refs.siteFooter.disableForwardButton();
|
||||
showIssLoadingModal(false);
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
@ -220,8 +225,8 @@ export default {
|
|||
`${this.vehicleFromLookup.year} ${this.vehicleFromLookup.make} ${this.vehicleFromLookup.model} ${this.forwardButtonCarStyle}`;
|
||||
this.$refs.siteFooter.updateButtonText(`Continue with ${vehicleYearMakeModelStyle}`);
|
||||
this.needToLookupVehicle = false;
|
||||
|
||||
return null;
|
||||
showIssLoadingModal(false);
|
||||
return;
|
||||
}
|
||||
|
||||
let isSelectedGlassAvailableForVehicle = true;
|
||||
|
|
@ -242,7 +247,7 @@ export default {
|
|||
);
|
||||
|
||||
// navigate() doesn't stop the processing flow
|
||||
return null;
|
||||
return;
|
||||
}
|
||||
|
||||
// save vehicle to store if it hasn't already been saved
|
||||
|
|
@ -255,7 +260,7 @@ export default {
|
|||
this.navigationScenarios.CORRECTED_VIN_FROM_POLICY_VEHICLE,
|
||||
this.$route
|
||||
);
|
||||
return null;
|
||||
return;
|
||||
}
|
||||
|
||||
const partsOrQuestionsResponse = await this.getPartsOrQuestions();
|
||||
|
|
|
|||
|
|
@ -509,7 +509,6 @@ form {
|
|||
:deep(.input-wrapper) {
|
||||
input[type="date"]::-webkit-calendar-picker-indicator {
|
||||
background-color: $svg-calendar-error-fill-color;
|
||||
// eslint-disable-next-line max-len
|
||||
background-image: url($svg-error-calendar-graphic);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1584,7 +1584,7 @@ export const useMainStore = defineStore({
|
|||
endpoint: endpoints.LoadSession.url,
|
||||
payload: {
|
||||
referralNumber: duplicate.referralNumber,
|
||||
referralDate: duplicate.responseDate,
|
||||
referralDate: duplicate.referralDate,
|
||||
parentAccountNumber: order.parentAccountNumber,
|
||||
referralCorrelationId: duplicate.correlationId
|
||||
}
|
||||
|
|
@ -1594,22 +1594,35 @@ export const useMainStore = defineStore({
|
|||
return;
|
||||
}
|
||||
|
||||
if (this.isPolicyLookupSuccessful) {
|
||||
order.customer.address.streetAddress = data.customer?.address?.streetAddress;
|
||||
order.customer.address.streetAddress2 = data.customer?.address?.streetAddress2;
|
||||
order.customer.address.city = data.customer?.address?.city;
|
||||
order.customer.address.state = data.customer?.address?.state;
|
||||
order.customer.address.zipCode = data.customer?.address?.zipCode;
|
||||
if (data?.customer) {
|
||||
order.customer.firstName = data?.customer?.firstName;
|
||||
order.customer.lastName = data?.customer?.lastName;
|
||||
order.customer.emailAddress = data?.customer?.emailAddress;
|
||||
|
||||
|
||||
order.contactInfo.extension = data?.customer?.homePhone?.slice(10);
|
||||
order.contactInfo.homePhone = data?.customer?.homePhone?.slice(0, 10);
|
||||
order.contactInfo.servicePhone = data?.customer?.servicePhone;
|
||||
order.contactInfo.alternativePhone = data?.customer?.alternativePhone;
|
||||
order.contactInfo.requestTextUpdates = data?.customer?.isSmsOptIn;
|
||||
|
||||
|
||||
if (data?.customer?.address) {
|
||||
order.customer.address.streetAddress = data.customer?.address?.streetAddress;
|
||||
order.customer.address.streetAddress2 = data.customer?.address?.streetAddress2;
|
||||
order.customer.address.city = data.customer?.address?.city;
|
||||
order.customer.address.state = data.customer?.address?.state;
|
||||
order.customer.address.zipCode = data.customer?.address?.zipCode;
|
||||
}
|
||||
}
|
||||
|
||||
if (data?.vehicle) {
|
||||
order.vehicle.year = data?.vehicle?.year;
|
||||
order.vehicle.make = data?.vehicle?.make;
|
||||
order.vehicle.model = data?.vehicle?.model;
|
||||
order.vehicle.style = data?.vehicle?.style;
|
||||
}
|
||||
|
||||
if (this.isPolicyLookupSuccessful) {
|
||||
if (data.insuranceCoverage) {
|
||||
order.insuranceCoverage.coverageType = data?.insuranceCoverage?.coverageType;
|
||||
order.insuranceCoverage.coverageStatus = data?.insuranceCoverage?.coverageStatus;
|
||||
|
|
@ -1642,11 +1655,6 @@ export const useMainStore = defineStore({
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
order.vehicle.year = data.vehicle.year;
|
||||
order.vehicle.make = data.vehicle.make;
|
||||
order.vehicle.model = data.vehicle.model;
|
||||
order.vehicle.style = data.vehicle.style;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -14,6 +14,7 @@ import endpoints from '@/constants/endpoints';
|
|||
import { AppointmentTypeStrings } from '@/constants/schedule-constants';
|
||||
import coverageType from '@/constants/coverage-type';
|
||||
import { getEnumName } from '@/helpers/unit-test-helper';
|
||||
import { strictEqual } from 'assert';
|
||||
|
||||
describe('Store', () => {
|
||||
let store;
|
||||
|
|
@ -1071,28 +1072,29 @@ describe('Store', () => {
|
|||
experiments: getRandomString(6, 6)
|
||||
};
|
||||
const vehicle = {
|
||||
year: getRandomString(6, 6),
|
||||
make: getRandomString(6, 6),
|
||||
model: getRandomString(6, 6),
|
||||
style: getRandomString(6, 6),
|
||||
vin: getRandomString(6, 6),
|
||||
carId: getRandomString(6, 6),
|
||||
licensePlateNumber: getRandomString(6, 6)
|
||||
year: getRandomInt(2000, 2024).toString(),
|
||||
make: getRandomString(5, 15),
|
||||
model: getRandomString(5, 15),
|
||||
style: getRandomString(5, 15),
|
||||
carId: getRandomInt(1000, 9999),
|
||||
vin: getRandomString(17, 17),
|
||||
licensePlateNumber: getRandomString(7, 7)
|
||||
};
|
||||
const customer = {
|
||||
firstName: getRandomString(6, 6),
|
||||
lastName: getRandomString(6, 6),
|
||||
emailAddress: getRandomString(6, 6),
|
||||
phoneNumber: getRandomString(6, 6),
|
||||
isSmsOptIn: getRandomString(6, 6),
|
||||
const customer= {
|
||||
address: {
|
||||
streetAddress: getRandomString(6, 6),
|
||||
streetAddress2: getRandomString(6, 6),
|
||||
city: getRandomString(6, 6),
|
||||
state: getRandomString(6, 6),
|
||||
zipCode: getRandomString(6, 6),
|
||||
zipCodeCtu: getRandomString(6, 6)
|
||||
}
|
||||
streetAddress: getRandomString(10, 50),
|
||||
streetAddress2: getRandomString(5, 20),
|
||||
city: getRandomString(5, 20),
|
||||
state: getRandomString(2, 2),
|
||||
zipCode: getRandomString(5, 5)
|
||||
},
|
||||
firstName: getRandomString(5, 15),
|
||||
lastName: getRandomString(5, 15),
|
||||
emailAddress: `${getRandomString(5, 10)}@test.com`,
|
||||
homePhone: getRandomString(10, 10),
|
||||
servicePhone: getRandomString(10, 10),
|
||||
alternativePhone: getRandomString(10, 10),
|
||||
isSmsOptIn: getRandomBoolean()
|
||||
};
|
||||
const fullApiResponse = {
|
||||
data: {
|
||||
|
|
@ -1140,7 +1142,7 @@ describe('Store', () => {
|
|||
};
|
||||
|
||||
store.order.insuranceCoverage.coverageType = coverageType.Deductible;
|
||||
store.policy.vehicles = [{ vin: vehicle.vin }];
|
||||
store.policy.vehicles = [{ vehicle }];
|
||||
|
||||
// Act
|
||||
await store.loadSession(duplicate);
|
||||
|
|
@ -1150,7 +1152,7 @@ describe('Store', () => {
|
|||
expect(store.vehicle.make).toBe(vehicle.make);
|
||||
expect(store.vehicle.model).toBe(vehicle.model);
|
||||
expect(store.vehicle.style).toBe(vehicle.style);
|
||||
expect(store.vehicle.vin).toBe(vehicle.vin);
|
||||
// vin is not set directly by loadSession, it's set by updateVehicle after lookupVehicleByVin
|
||||
expect(store.vehicle.registration.licensePlate).toBe(vehicle.licensePlateNumber);
|
||||
});
|
||||
it('sets expected customer data', async () => {
|
||||
|
|
@ -2135,4 +2137,344 @@ describe('Store', () => {
|
|||
expect(result).toBe(expected);
|
||||
});
|
||||
});
|
||||
|
||||
describe('loadSession method', () => {
|
||||
let mockDuplicate;
|
||||
let mockResponse;
|
||||
|
||||
beforeEach(() => {
|
||||
mockDuplicate = {
|
||||
referralNumber: getRandomString(10, 10),
|
||||
referralDate: new Date().toISOString(),
|
||||
correlationId: getRandomGuid()
|
||||
};
|
||||
|
||||
mockResponse = {
|
||||
data: {
|
||||
customer: {
|
||||
address: {
|
||||
streetAddress: getRandomString(10, 50),
|
||||
streetAddress2: getRandomString(5, 20),
|
||||
city: getRandomString(5, 20),
|
||||
state: getRandomString(2, 2),
|
||||
zipCode: getRandomString(5, 5)
|
||||
},
|
||||
firstName: getRandomString(5, 15),
|
||||
lastName: getRandomString(5, 15),
|
||||
emailAddress: `${getRandomString(5, 10)}@test.com`,
|
||||
homePhone: getRandomString(10, 10),
|
||||
servicePhone: getRandomString(10, 10),
|
||||
alternativePhone: getRandomString(10, 10),
|
||||
isSmsOptIn: getRandomBoolean()
|
||||
},
|
||||
vehicle: {
|
||||
year: getRandomInt(2000, 2024).toString(),
|
||||
make: getRandomString(5, 15),
|
||||
model: getRandomString(5, 15),
|
||||
style: getRandomString(5, 15),
|
||||
carId: getRandomInt(1000, 9999),
|
||||
vin: getRandomString(17, 17),
|
||||
licensePlateNumber: getRandomString(7, 7)
|
||||
},
|
||||
insuranceCoverage: {
|
||||
coverageType: getRandomEnum(coverageType),
|
||||
coverageStatus: getRandomEnum(coverageStatuses),
|
||||
claimNumber: getRandomString(10, 10)
|
||||
},
|
||||
referralNumber: getRandomString(10, 10),
|
||||
referralDate: new Date().toISOString(),
|
||||
referralCorrelationId: getRandomGuid(),
|
||||
referralSequenceNumber: getRandomInt(1, 100),
|
||||
eon: getRandomString(10, 10)
|
||||
}
|
||||
};
|
||||
|
||||
store.order.parentAccountNumber = getRandomString(6, 6);
|
||||
store.order.insuranceCoverage.coverageType = coverageType.Deductible;
|
||||
});
|
||||
|
||||
it('should call callHttpClient with correct parameters', async () => {
|
||||
// Arrange
|
||||
globalMethods.callHttpClient = jest.fn().mockReturnValue(Promise.resolve(mockResponse));
|
||||
|
||||
// Act
|
||||
await store.loadSession(mockDuplicate);
|
||||
|
||||
// Assert
|
||||
expect(globalMethods.callHttpClient).toHaveBeenCalledWith({
|
||||
method: endpoints.LoadSession.method,
|
||||
endpoint: endpoints.LoadSession.url,
|
||||
payload: {
|
||||
referralNumber: mockDuplicate.referralNumber,
|
||||
referralDate: mockDuplicate.referralDate,
|
||||
parentAccountNumber: store.order.parentAccountNumber,
|
||||
referralCorrelationId: mockDuplicate.correlationId
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
it('should return early when response data is null/undefined', async () => {
|
||||
// Arrange
|
||||
globalMethods.callHttpClient = jest.fn().mockReturnValue(Promise.resolve({ data: null }));
|
||||
const originalStreetAddress = store.order.customer.address.streetAddress;
|
||||
const originalLoadedFromDupeCheck = store.order.loadedFromDupeCheck;
|
||||
|
||||
// Act
|
||||
await store.loadSession(mockDuplicate);
|
||||
// Assert
|
||||
expect(store.order.customer.address.streetAddress).toBe(originalStreetAddress);
|
||||
expect(store.order.loadedFromDupeCheck).toBe(originalLoadedFromDupeCheck);
|
||||
});
|
||||
|
||||
it('should update customer address fields from response data', async () => {
|
||||
// Arrange
|
||||
globalMethods.callHttpClient = jest.fn().mockReturnValue(Promise.resolve(mockResponse));
|
||||
|
||||
// Act
|
||||
await store.loadSession(mockDuplicate);
|
||||
|
||||
// Assert
|
||||
expect(store.order.customer.address.streetAddress).toBe(mockResponse.data.customer.address.streetAddress);
|
||||
expect(store.order.customer.address.streetAddress2).toBe(mockResponse.data.customer.address.streetAddress2);
|
||||
expect(store.order.customer.address.city).toBe(mockResponse.data.customer.address.city);
|
||||
expect(store.order.customer.address.state).toBe(mockResponse.data.customer.address.state);
|
||||
expect(store.order.customer.address.zipCode).toBe(mockResponse.data.customer.address.zipCode);
|
||||
});
|
||||
|
||||
it('should update contact information from response data', async () => {
|
||||
// Arrange
|
||||
globalMethods.callHttpClient = jest.fn().mockReturnValue(Promise.resolve(mockResponse));
|
||||
|
||||
// Act
|
||||
await store.loadSession(mockDuplicate);
|
||||
|
||||
// Assert
|
||||
expect(store.order.customer.firstName).toBe(mockResponse.data.customer.firstName);
|
||||
expect(store.order.customer.lastName).toBe(mockResponse.data.customer.lastName);
|
||||
expect(store.order.customer.emailAddress).toBe(mockResponse.data.customer.emailAddress);
|
||||
expect(store.order.contactInfo.servicePhone).toBe(mockResponse.data.customer.servicePhone);
|
||||
expect(store.order.contactInfo.alternativePhone).toBe(mockResponse.data.customer.alternativePhone);
|
||||
expect(store.order.contactInfo.requestTextUpdates).toBe(mockResponse.data.customer.isSmsOptIn);
|
||||
});
|
||||
|
||||
it('should extract extension from homePhone correctly', async () => {
|
||||
// Arrange
|
||||
mockResponse.data.customer.homePhone = '12345678901234';
|
||||
globalMethods.callHttpClient = jest.fn().mockReturnValue(Promise.resolve(mockResponse));
|
||||
|
||||
// Act
|
||||
await store.loadSession(mockDuplicate);
|
||||
|
||||
// Assert
|
||||
expect(store.order.contactInfo.homePhone).toBe('1234567890');
|
||||
expect(store.order.contactInfo.extension).toBe('1234');
|
||||
});
|
||||
|
||||
it('should update vehicle information from response data', async () => {
|
||||
// Arrange
|
||||
globalMethods.callHttpClient = jest.fn().mockReturnValue(Promise.resolve(mockResponse));
|
||||
|
||||
// Act
|
||||
await store.loadSession(mockDuplicate);
|
||||
|
||||
// Assert
|
||||
expect(store.order.vehicle.year).toBe(mockResponse.data.vehicle.year);
|
||||
expect(store.order.vehicle.make).toBe(mockResponse.data.vehicle.make);
|
||||
expect(store.order.vehicle.model).toBe(mockResponse.data.vehicle.model);
|
||||
expect(store.order.vehicle.style).toBe(mockResponse.data.vehicle.style);
|
||||
});
|
||||
|
||||
it('should update insurance coverage when isPolicyLookupSuccessful is true and insuranceCoverage exists in response', async () => {
|
||||
// Arrange
|
||||
store.order.insuranceCoverage.coverageType = coverageType.Deductible; // Make isPolicyLookupSuccessful true
|
||||
globalMethods.callHttpClient = jest.fn().mockReturnValue(Promise.resolve(mockResponse));
|
||||
|
||||
// Act
|
||||
await store.loadSession(mockDuplicate);
|
||||
|
||||
// Assert
|
||||
expect(store.order.insuranceCoverage.coverageType).toBe(mockResponse.data.insuranceCoverage.coverageType);
|
||||
expect(store.order.insuranceCoverage.coverageStatus).toBe(mockResponse.data.insuranceCoverage.coverageStatus);
|
||||
expect(store.order.insuranceCoverage.claimNumber).toBe(mockResponse.data.insuranceCoverage.claimNumber);
|
||||
});
|
||||
|
||||
it('should update insurance coverage from payment.insuranceCoverage when main insuranceCoverage does not exist', async () => {
|
||||
// Arrange
|
||||
store.order.insuranceCoverage.coverageType = coverageType.Deductible;
|
||||
mockResponse.data.insuranceCoverage = null;
|
||||
mockResponse.data.payment = {
|
||||
insuranceCoverage: {
|
||||
isVerified: true,
|
||||
claimNumber: getRandomString(10, 10)
|
||||
}
|
||||
};
|
||||
globalMethods.callHttpClient = jest.fn().mockReturnValue(Promise.resolve(mockResponse));
|
||||
|
||||
// Act
|
||||
await store.loadSession(mockDuplicate);
|
||||
|
||||
// Assert
|
||||
expect(store.order.insuranceCoverage.coverageStatus).toBe(coverageStatuses.VERIFIED);
|
||||
expect(store.order.insuranceCoverage.claimNumber).toBe(mockResponse.data.payment.insuranceCoverage.claimNumber);
|
||||
});
|
||||
|
||||
it('should update vehicle registration license plate when policy vehicles exist and carId is present', async () => {
|
||||
// Arrange
|
||||
store.order.insuranceCoverage.coverageType = coverageType.Deductible;
|
||||
store.order.policy.vehicles = [
|
||||
{ id: 1, vin: mockResponse.data.vehicle.vin }
|
||||
];
|
||||
globalMethods.callHttpClient = jest.fn().mockReturnValue(Promise.resolve(mockResponse));
|
||||
|
||||
// Act
|
||||
await store.loadSession(mockDuplicate);
|
||||
|
||||
// Assert
|
||||
expect(store.order.vehicle.registration.licensePlate).toBe(mockResponse.data.vehicle.licensePlateNumber);
|
||||
});
|
||||
|
||||
it('should call lookupVehicleByVin and update vehicle when vin matches policy vehicle', async () => {
|
||||
// Arrange
|
||||
const mockVehicleLookupResponse = {
|
||||
data: {
|
||||
carId: getRandomInt(1000, 9999),
|
||||
year: getRandomInt(2000, 2024).toString()
|
||||
}
|
||||
};
|
||||
const policyVehicle = {
|
||||
id: getRandomInt(1, 100),
|
||||
vin: mockResponse.data.vehicle.vin,
|
||||
deductible: 100,
|
||||
repairWaived: false,
|
||||
endorsements: ['OEM Approved']
|
||||
};
|
||||
|
||||
store.order.insuranceCoverage.coverageType = coverageType.Deductible;
|
||||
store.order.policy.vehicles = [policyVehicle];
|
||||
|
||||
globalMethods.callHttpClient = jest.fn().mockReturnValue(Promise.resolve(mockResponse));
|
||||
store.lookupVehicleByVin = jest.fn().mockReturnValue(Promise.resolve(mockVehicleLookupResponse));
|
||||
store.updateVehicle = jest.fn();
|
||||
store.updateVehicleCoverage = jest.fn();
|
||||
|
||||
// Act
|
||||
await store.loadSession(mockDuplicate);
|
||||
|
||||
// Assert
|
||||
expect(store.lookupVehicleByVin).toHaveBeenCalledWith(mockResponse.data.vehicle.vin);
|
||||
expect(store.updateVehicle).toHaveBeenCalledWith({
|
||||
...mockVehicleLookupResponse.data,
|
||||
policyVehicleId: policyVehicle.id,
|
||||
vin: policyVehicle.vin
|
||||
});
|
||||
expect(store.updateVehicleCoverage).toHaveBeenCalled();
|
||||
});
|
||||
|
||||
it('should not call lookupVehicleByVin when policy vehicles array is empty', async () => {
|
||||
// Arrange
|
||||
store.order.insuranceCoverage.coverageType = coverageType.Deductible;
|
||||
store.order.policy.vehicles = [];
|
||||
globalMethods.callHttpClient = jest.fn().mockReturnValue(Promise.resolve(mockResponse));
|
||||
store.lookupVehicleByVin = jest.fn();
|
||||
|
||||
// Act
|
||||
await store.loadSession(mockDuplicate);
|
||||
|
||||
// Assert
|
||||
expect(store.lookupVehicleByVin).not.toHaveBeenCalled();
|
||||
});
|
||||
|
||||
it('should not call lookupVehicleByVin when carId is not present', async () => {
|
||||
// Arrange
|
||||
store.order.insuranceCoverage.coverageType = coverageType.Deductible;
|
||||
store.order.policy.vehicles = [{ id: 1, vin: 'TEST123456789' }];
|
||||
mockResponse.data.vehicle.carId = null;
|
||||
globalMethods.callHttpClient = jest.fn().mockReturnValue(Promise.resolve(mockResponse));
|
||||
store.lookupVehicleByVin = jest.fn();
|
||||
|
||||
// Act
|
||||
await store.loadSession(mockDuplicate);
|
||||
|
||||
// Assert
|
||||
expect(store.lookupVehicleByVin).not.toHaveBeenCalled();
|
||||
});
|
||||
|
||||
it('should not call lookupVehicleByVin when vin is not present', async () => {
|
||||
// Arrange
|
||||
store.order.insuranceCoverage.coverageType = coverageType.Deductible;
|
||||
store.order.policy.vehicles = [{ id: 1, vin: 'TEST123456789' }];
|
||||
mockResponse.data.vehicle.vin = null;
|
||||
globalMethods.callHttpClient = jest.fn().mockReturnValue(Promise.resolve(mockResponse));
|
||||
store.lookupVehicleByVin = jest.fn();
|
||||
|
||||
// Act
|
||||
await store.loadSession(mockDuplicate);
|
||||
|
||||
// Assert
|
||||
expect(store.lookupVehicleByVin).not.toHaveBeenCalled();
|
||||
});
|
||||
|
||||
it('should not update insurance coverage when isPolicyLookupSuccessful is false', async () => {
|
||||
// Arrange
|
||||
store.order.insuranceCoverage.coverageType = coverageType.NONE; // Make isPolicyLookupSuccessful false
|
||||
const originalCoverageStatus = store.order.insuranceCoverage.coverageStatus;
|
||||
globalMethods.callHttpClient = jest.fn().mockReturnValue(Promise.resolve(mockResponse));
|
||||
|
||||
// Act
|
||||
await store.loadSession(mockDuplicate);
|
||||
|
||||
// Assert
|
||||
expect(store.order.insuranceCoverage.coverageStatus).toBe(originalCoverageStatus);
|
||||
});
|
||||
|
||||
it('should update referral information from response data', async () => {
|
||||
// Arrange
|
||||
globalMethods.callHttpClient = jest.fn().mockReturnValue(Promise.resolve(mockResponse));
|
||||
|
||||
// Act
|
||||
await store.loadSession(mockDuplicate);
|
||||
|
||||
// Assert
|
||||
expect(store.order.referralNumber).toBe(mockResponse.data.referralNumber);
|
||||
expect(store.order.referralDate).toBe(mockResponse.data.referralDate);
|
||||
expect(store.order.referralCorrelationId).toBe(mockResponse.data.referralCorrelationId);
|
||||
expect(store.order.referralSequenceNumber).toBe(mockResponse.data.referralSequenceNumber);
|
||||
expect(store.order.eon).toBe(mockResponse.data.eon);
|
||||
});
|
||||
|
||||
it('should set loadedFromDupeCheck and loadedSessionClearedPreviousData flags', async () => {
|
||||
// Arrange
|
||||
globalMethods.callHttpClient = jest.fn().mockReturnValue(Promise.resolve(mockResponse));
|
||||
|
||||
// Act
|
||||
await store.loadSession(mockDuplicate);
|
||||
|
||||
// Assert
|
||||
expect(store.order.loadedFromDupeCheck).toBe(true);
|
||||
expect(store.order.loadedSessionClearedPreviousData).toBe(false);
|
||||
});
|
||||
|
||||
it('should handle API error gracefully', async () => {
|
||||
// Arrange
|
||||
const error = new Error('API Error');
|
||||
globalMethods.callHttpClient = jest.fn().mockReturnValue(Promise.reject(error));
|
||||
|
||||
// Act & Assert
|
||||
await expect(store.loadSession(mockDuplicate)).rejects.toThrow('API Error');
|
||||
});
|
||||
|
||||
it('should handle missing optional fields in response data', async () => {
|
||||
// Arrange
|
||||
mockResponse.data.customer.address.streetAddress2 = undefined;
|
||||
mockResponse.data.customer.alternativePhone = undefined;
|
||||
globalMethods.callHttpClient = jest.fn().mockReturnValue(Promise.resolve(mockResponse));
|
||||
|
||||
// Act
|
||||
await store.loadSession(mockDuplicate);
|
||||
|
||||
// Assert
|
||||
expect(store.order.customer.address.streetAddress2).toBeUndefined();
|
||||
expect(store.order.contactInfo.alternativePhone).toBeUndefined();
|
||||
});
|
||||
});
|
||||
});
|
||||
|
|
|
|||
Loading…
Reference in a new issue