From edfc585d5259e7601dd50e8931e17463e334e387 Mon Sep 17 00:00:00 2001 From: OxSaitama Date: Mon, 17 Apr 2023 18:35:19 +0200 Subject: [PATCH] add include query parameter to findOneByUid --- init-data.sh | 3 +- package-lock.json | 3948 +---------------- package.json | 12 +- .../api/super-admin/CustomersController.ts | 13 +- .../api/super-admin/DeedTypesController.ts | 15 +- src/app/api/super-admin/DeedsController.ts | 2 +- .../super-admin/DocumentTypesController.ts | 17 +- .../api/super-admin/DocumentsController.ts | 17 +- .../super-admin/OfficeFoldersController.ts | 19 +- src/app/api/super-admin/OfficesController.ts | 15 +- src/app/api/super-admin/UsersController.ts | 24 +- .../20230321102005_v0/migration.sql | 413 -- .../migration.sql | 92 - .../20230324130335_20230324_v2/migration.sql | 2 - .../20230324171729_v3/migration.sql | 119 - .../20230328095747_v4/migration.sql | 8 - .../20230329084446_v5/migration.sql | 8 - .../20230329145139_v6/migration.sql | 15 - .../20230330150236_v8/migration.sql | 24 - .../20230417100704_v9/migration.sql | 20 - .../20230421130524_v10/migration.sql | 2 - .../20230426144239_init/migration.sql | 445 ++ src/common/databases/schema.prisma | 158 +- src/common/databases/seeders/seeder.ts | 276 +- src/common/helpers/ObjectHydrate.ts | 4 +- .../repositories/AddressesRepository.ts | 2 +- src/common/repositories/ContactsRepository.ts | 2 +- .../repositories/CustomersRepository.ts | 16 +- .../DeedTypesHasDocumentTypesRepository.ts | 2 +- .../repositories/DeedTypesRepository.ts | 29 +- .../DeedsHasDocumentTypesRepository.ts | 2 +- src/common/repositories/DeedsRepository.ts | 14 +- .../repositories/DocumentTypesRepository.ts | 24 +- .../repositories/DocumentsRepository.ts | 35 +- src/common/repositories/FilesRepository.ts | 8 +- .../OfficeFoldersHasCustomerRepository.ts | 2 +- .../OfficeFoldersHasStakeholderRepository.ts | 2 +- .../repositories/OfficeFoldersRepository.ts | 34 +- src/common/repositories/OfficesRepository.ts | 21 +- src/common/repositories/UsersRepository.ts | 16 +- .../AddressesService/AddressesService.ts | 4 +- .../ContactsService/ContactsService.ts | 4 +- .../CustomersService/CustomersService.ts | 4 +- .../DeedTypesService/DeedTypesService.ts | 4 +- .../super-admin/DeedsService/DeedsService.ts | 4 +- .../DocumentTypesService.ts | 4 +- .../DocumentsService/DocumentsService.ts | 4 +- .../OfficeFoldersService.ts | 8 +- .../OfficesService/OfficesService.ts | 4 +- .../super-admin/UsersService/UsersService.ts | 8 +- src/test/config/Init.ts | 6 +- .../super-admin/CustomersService.test.ts | 18 +- .../services/super-admin/DeedService.test.ts | 34 +- .../super-admin/DeedTypesService.test.ts | 80 +- .../super-admin/DocumentTypesService.test.ts | 68 +- .../super-admin/OfficeFolderService.test.ts | 130 +- .../services/super-admin/UsersService.test.ts | 34 +- 57 files changed, 1143 insertions(+), 5155 deletions(-) mode change 100644 => 100755 init-data.sh delete mode 100644 src/common/databases/migrations/20230321102005_v0/migration.sql delete mode 100644 src/common/databases/migrations/20230324125436_20230324102005_v1/migration.sql delete mode 100644 src/common/databases/migrations/20230324130335_20230324_v2/migration.sql delete mode 100644 src/common/databases/migrations/20230324171729_v3/migration.sql delete mode 100644 src/common/databases/migrations/20230328095747_v4/migration.sql delete mode 100644 src/common/databases/migrations/20230329084446_v5/migration.sql delete mode 100644 src/common/databases/migrations/20230329145139_v6/migration.sql delete mode 100644 src/common/databases/migrations/20230330150236_v8/migration.sql delete mode 100644 src/common/databases/migrations/20230417100704_v9/migration.sql delete mode 100644 src/common/databases/migrations/20230421130524_v10/migration.sql create mode 100644 src/common/databases/migrations/20230426144239_init/migration.sql diff --git a/init-data.sh b/init-data.sh old mode 100644 new mode 100755 index 337cb03f..552a9078 --- a/init-data.sh +++ b/init-data.sh @@ -8,9 +8,8 @@ set -e; if [ -n "${DATABASE_USERNAME:-}" ] && [ -n "${DATABASE_PASSWORD:-}" ]; then psql -v ON_ERROR_STOP=1 --username "$POSTGRES_USER" --dbname "$POSTGRES_DB" <<-EOSQL - CREATE DATABASE ${DATABASE_NAME}; CREATE USER ${DATABASE_USERNAME} WITH PASSWORD '${DATABASE_PASSWORD}'; - GRANT ALL PRIVILEGES ON DATABASE ${DATABASE_NAME} TO ${DATABASE_USERNAME}; + ALTER USER ${DATABASE_USERNAME} CREATEDB; EOSQL else echo "SETUP INFO: No Environment variables given!" diff --git a/package-lock.json b/package-lock.json index 936d360e..f20818b1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,7 +1,7 @@ { "name": "lecoffre-back", "version": "1.0.0", - "lockfileVersion": 2, + "lockfileVersion": 3, "requires": true, "packages": { "": { @@ -14,10 +14,9 @@ "class-validator": "^0.14.0", "classnames": "^2.3.2", "cors": "^2.8.5", - "dotenv": "^16.0.3", "express": "^4.18.2", "jsonwebtoken": "^9.0.0", - "le-coffre-resources": "git@github.com:smart-chain-fr/leCoffre-resources.git#v2.21", + "le-coffre-resources": "git@github.com:smart-chain-fr/leCoffre-resources.git#v2.24", "module-alias": "^2.2.2", "next": "^13.1.5", "node-cache": "^5.1.2", @@ -38,6 +37,7 @@ "@types/node": "^18.11.18", "@types/node-schedule": "^2.1.0", "@types/uuid": "^9.0.0", + "dotenv": "^16.0.3", "jest": "^29.5.0", "nodemon": "^2.0.20", "prettier": "2.8.4", @@ -1295,9 +1295,9 @@ } }, "node_modules/@types/babel__traverse": { - "version": "7.18.3", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.18.3.tgz", - "integrity": "sha512-1kbcJ40lLB7MHsj39U4Sh1uTd2E7rLEa79kmDpI6cy+XiXsteB3POdQomoq4FxszMrO3ZYchkhYJw7A2862b3w==", + "version": "7.18.4", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.18.4.tgz", + "integrity": "sha512-TLG7CsGZZmX9aDF78UuJxnNTfQyRUFU0OYIVyIblr0/wd/HvsIo8wmuB90CszeD2MtLLAE9Tt4cWvk+KVkyGIw==", "dev": true, "dependencies": { "@babel/types": "^7.3.0" @@ -1344,14 +1344,15 @@ } }, "node_modules/@types/express-serve-static-core": { - "version": "4.17.33", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.33.tgz", - "integrity": "sha512-TPBqmR/HRYI3eC2E5hmiivIzv+bidAfXofM+sbonAGvyDhySGw9/PQZFt2BLOrjUUR++4eJVpx6KnLQK1Fk9tA==", + "version": "4.17.34", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.34.tgz", + "integrity": "sha512-fvr49XlCGoUj2Pp730AItckfjat4WNb0lb3kfrLWffd+RLeoGAMsq7UOy04PAPtoL01uKwcp6u8nhzpgpDYr3w==", "dev": true, "dependencies": { "@types/node": "*", "@types/qs": "*", - "@types/range-parser": "*" + "@types/range-parser": "*", + "@types/send": "*" } }, "node_modules/@types/graceful-fs": { @@ -1407,15 +1408,15 @@ } }, "node_modules/@types/mime": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@types/mime/-/mime-3.0.1.tgz", - "integrity": "sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA==", + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz", + "integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==", "dev": true }, "node_modules/@types/node": { - "version": "18.16.0", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.16.0.tgz", - "integrity": "sha512-BsAaKhB+7X+H4GnSjGhJG9Qi8Tw+inU9nJDwmD5CgOmBLEI6ArdhikpLX7DjbjDRDTbqZzU2LSQNZg8WGPiSZQ==" + "version": "18.16.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.16.1.tgz", + "integrity": "sha512-DZxSZWXxFfOlx7k7Rv4LAyiMroaxa3Ly/7OOzZO8cBNho0YzAi4qlbrx8W27JGqG57IgR/6J7r+nOJWw6kcvZA==" }, "node_modules/@types/node-schedule": { "version": "2.1.0", @@ -1444,6 +1445,16 @@ "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==", "dev": true }, + "node_modules/@types/send": { + "version": "0.17.1", + "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.1.tgz", + "integrity": "sha512-Cwo8LE/0rnvX7kIIa3QHCkcuF21c05Ayb0ZfxPiv0W8VRiZiNW/WuRupHKpqqGVGf7SUA44QSOUKaEd9lIrd/Q==", + "dev": true, + "dependencies": { + "@types/mime": "^1", + "@types/node": "*" + } + }, "node_modules/@types/serve-static": { "version": "1.15.1", "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.1.tgz", @@ -2183,6 +2194,7 @@ "version": "16.0.3", "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.0.3.tgz", "integrity": "sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ==", + "dev": true, "engines": { "node": ">=12" } @@ -2201,9 +2213,9 @@ "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" }, "node_modules/electron-to-chromium": { - "version": "1.4.371", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.371.tgz", - "integrity": "sha512-jlBzY4tFcJaiUjzhRTCWAqRvTO/fWzjA3Bls0mykzGZ7zvcMP7h05W6UcgzfT9Ca1SW2xyKDOFRyI0pQeRNZGw==", + "version": "1.4.372", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.372.tgz", + "integrity": "sha512-MrlFq/j+TYHOjeWsWGYfzevc25HNeJdsF6qaLFrqBTRWZQtWkb1myq/Q2veLWezVaa5OcSZ99CFwTT4aF4Mung==", "dev": true }, "node_modules/emittery": { @@ -3603,7 +3615,7 @@ } }, "node_modules/le-coffre-resources": { - "resolved": "git+ssh://git@github.com/smart-chain-fr/leCoffre-resources.git#7f6d31080e8903998f6e5a687ead5635999d52eb", + "resolved": "git+ssh://git@github.com/smart-chain-fr/leCoffre-resources.git#0e3dfd0c6e4bfdf2ef78ba13c79ac213c34ab174", "license": "MIT", "dependencies": { "class-transformer": "^0.5.1", @@ -5325,3901 +5337,5 @@ "url": "https://github.com/sponsors/sindresorhus" } } - }, - "dependencies": { - "@ampproject/remapping": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz", - "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==", - "dev": true, - "requires": { - "@jridgewell/gen-mapping": "^0.3.0", - "@jridgewell/trace-mapping": "^0.3.9" - } - }, - "@babel/code-frame": { - "version": "7.21.4", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.21.4.tgz", - "integrity": "sha512-LYvhNKfwWSPpocw8GI7gpK2nq3HSDuEPC/uSYaALSJu9xjsalaaYFOq0Pwt5KmVqwEbZlDu81aLXwBOmD/Fv9g==", - "dev": true, - "requires": { - "@babel/highlight": "^7.18.6" - } - }, - "@babel/compat-data": { - "version": "7.21.4", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.21.4.tgz", - "integrity": "sha512-/DYyDpeCfaVinT40FPGdkkb+lYSKvsVuMjDAG7jPOWWiM1ibOaB9CXJAlc4d1QpP/U2q2P9jbrSlClKSErd55g==", - "dev": true - }, - "@babel/core": { - "version": "7.21.4", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.21.4.tgz", - "integrity": "sha512-qt/YV149Jman/6AfmlxJ04LMIu8bMoyl3RB91yTFrxQmgbrSvQMy7cI8Q62FHx1t8wJ8B5fu0UDoLwHAhUo1QA==", - "dev": true, - "requires": { - "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.21.4", - "@babel/generator": "^7.21.4", - "@babel/helper-compilation-targets": "^7.21.4", - "@babel/helper-module-transforms": "^7.21.2", - "@babel/helpers": "^7.21.0", - "@babel/parser": "^7.21.4", - "@babel/template": "^7.20.7", - "@babel/traverse": "^7.21.4", - "@babel/types": "^7.21.4", - "convert-source-map": "^1.7.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.2", - "semver": "^6.3.0" - }, - "dependencies": { - "convert-source-map": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", - "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", - "dev": true - }, - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - } - } - }, - "@babel/generator": { - "version": "7.21.4", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.21.4.tgz", - "integrity": "sha512-NieM3pVIYW2SwGzKoqfPrQsf4xGs9M9AIG3ThppsSRmO+m7eQhmI6amajKMUeIO37wFfsvnvcxQFx6x6iqxDnA==", - "dev": true, - "requires": { - "@babel/types": "^7.21.4", - "@jridgewell/gen-mapping": "^0.3.2", - "@jridgewell/trace-mapping": "^0.3.17", - "jsesc": "^2.5.1" - } - }, - "@babel/helper-compilation-targets": { - "version": "7.21.4", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.21.4.tgz", - "integrity": "sha512-Fa0tTuOXZ1iL8IeDFUWCzjZcn+sJGd9RZdH9esYVjEejGmzf+FFYQpMi/kZUk2kPy/q1H3/GPw7np8qar/stfg==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.21.4", - "@babel/helper-validator-option": "^7.21.0", - "browserslist": "^4.21.3", - "lru-cache": "^5.1.1", - "semver": "^6.3.0" - } - }, - "@babel/helper-environment-visitor": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz", - "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==", - "dev": true - }, - "@babel/helper-function-name": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.21.0.tgz", - "integrity": "sha512-HfK1aMRanKHpxemaY2gqBmL04iAPOPRj7DxtNbiDOrJK+gdwkiNRVpCpUJYbUT+aZyemKN8brqTOxzCaG6ExRg==", - "dev": true, - "requires": { - "@babel/template": "^7.20.7", - "@babel/types": "^7.21.0" - } - }, - "@babel/helper-hoist-variables": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz", - "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==", - "dev": true, - "requires": { - "@babel/types": "^7.18.6" - } - }, - "@babel/helper-module-imports": { - "version": "7.21.4", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.21.4.tgz", - "integrity": "sha512-orajc5T2PsRYUN3ZryCEFeMDYwyw09c/pZeaQEZPH0MpKzSvn3e0uXsDBu3k03VI+9DBiRo+l22BfKTpKwa/Wg==", - "dev": true, - "requires": { - "@babel/types": "^7.21.4" - } - }, - "@babel/helper-module-transforms": { - "version": "7.21.2", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.21.2.tgz", - "integrity": "sha512-79yj2AR4U/Oqq/WOV7Lx6hUjau1Zfo4cI+JLAVYeMV5XIlbOhmjEk5ulbTc9fMpmlojzZHkUUxAiK+UKn+hNQQ==", - "dev": true, - "requires": { - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-module-imports": "^7.18.6", - "@babel/helper-simple-access": "^7.20.2", - "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/helper-validator-identifier": "^7.19.1", - "@babel/template": "^7.20.7", - "@babel/traverse": "^7.21.2", - "@babel/types": "^7.21.2" - } - }, - "@babel/helper-plugin-utils": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz", - "integrity": "sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==", - "dev": true - }, - "@babel/helper-simple-access": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz", - "integrity": "sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==", - "dev": true, - "requires": { - "@babel/types": "^7.20.2" - } - }, - "@babel/helper-split-export-declaration": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz", - "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==", - "dev": true, - "requires": { - "@babel/types": "^7.18.6" - } - }, - "@babel/helper-string-parser": { - "version": "7.19.4", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz", - "integrity": "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==", - "dev": true - }, - "@babel/helper-validator-identifier": { - "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", - "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", - "dev": true - }, - "@babel/helper-validator-option": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.21.0.tgz", - "integrity": "sha512-rmL/B8/f0mKS2baE9ZpyTcTavvEuWhTTW8amjzXNvYG4AwBsqTLikfXsEofsJEfKHf+HQVQbFOHy6o+4cnC/fQ==", - "dev": true - }, - "@babel/helpers": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.21.0.tgz", - "integrity": "sha512-XXve0CBtOW0pd7MRzzmoyuSj0e3SEzj8pgyFxnTT1NJZL38BD1MK7yYrm8yefRPIDvNNe14xR4FdbHwpInD4rA==", - "dev": true, - "requires": { - "@babel/template": "^7.20.7", - "@babel/traverse": "^7.21.0", - "@babel/types": "^7.21.0" - } - }, - "@babel/highlight": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", - "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.18.6", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "@babel/parser": { - "version": "7.21.4", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.21.4.tgz", - "integrity": "sha512-alVJj7k7zIxqBZ7BTRhz0IqJFxW1VJbm6N8JbcYhQ186df9ZBPbZBmWSqAMXwHGsCJdYks7z/voa3ibiS5bCIw==", - "dev": true - }, - "@babel/plugin-syntax-async-generators": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", - "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-bigint": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", - "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-class-properties": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", - "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.12.13" - } - }, - "@babel/plugin-syntax-import-meta": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", - "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-syntax-json-strings": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", - "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-jsx": { - "version": "7.21.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.21.4.tgz", - "integrity": "sha512-5hewiLct5OKyh6PLKEYaFclcqtIgCb6bmELouxjF6up5q3Sov7rOayW4RwhbaBL0dit8rA80GNfY+UuDp2mBbQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.20.2" - } - }, - "@babel/plugin-syntax-logical-assignment-operators": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", - "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-syntax-nullish-coalescing-operator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", - "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-numeric-separator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", - "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-syntax-object-rest-spread": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", - "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-optional-catch-binding": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", - "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-optional-chaining": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", - "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-top-level-await": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", - "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-syntax-typescript": { - "version": "7.21.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.21.4.tgz", - "integrity": "sha512-xz0D39NvhQn4t4RNsHmDnnsaQizIlUkdtYvLs8La1BlfjQ6JEwxkJGeqJMW2tAXx+q6H+WFuUTXNdYVpEya0YA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.20.2" - } - }, - "@babel/template": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.20.7.tgz", - "integrity": "sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.18.6", - "@babel/parser": "^7.20.7", - "@babel/types": "^7.20.7" - } - }, - "@babel/traverse": { - "version": "7.21.4", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.21.4.tgz", - "integrity": "sha512-eyKrRHKdyZxqDm+fV1iqL9UAHMoIg0nDaGqfIOd8rKH17m5snv7Gn4qgjBoFfLz9APvjFU/ICT00NVCv1Epp8Q==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.21.4", - "@babel/generator": "^7.21.4", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.21.0", - "@babel/helper-hoist-variables": "^7.18.6", - "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/parser": "^7.21.4", - "@babel/types": "^7.21.4", - "debug": "^4.1.0", - "globals": "^11.1.0" - }, - "dependencies": { - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - } - } - }, - "@babel/types": { - "version": "7.21.4", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.21.4.tgz", - "integrity": "sha512-rU2oY501qDxE8Pyo7i/Orqma4ziCOrby0/9mvbDUGEfvZjb279Nk9k19e2fiCxHbRRpY2ZyrgW1eq22mvmOIzA==", - "dev": true, - "requires": { - "@babel/helper-string-parser": "^7.19.4", - "@babel/helper-validator-identifier": "^7.19.1", - "to-fast-properties": "^2.0.0" - } - }, - "@bcoe/v8-coverage": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", - "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", - "dev": true - }, - "@cspotcode/source-map-support": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", - "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", - "requires": { - "@jridgewell/trace-mapping": "0.3.9" - }, - "dependencies": { - "@jridgewell/trace-mapping": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", - "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", - "requires": { - "@jridgewell/resolve-uri": "^3.0.3", - "@jridgewell/sourcemap-codec": "^1.4.10" - } - } - } - }, - "@istanbuljs/load-nyc-config": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", - "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", - "dev": true, - "requires": { - "camelcase": "^5.3.1", - "find-up": "^4.1.0", - "get-package-type": "^0.1.0", - "js-yaml": "^3.13.1", - "resolve-from": "^5.0.0" - } - }, - "@istanbuljs/schema": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", - "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", - "dev": true - }, - "@jest/console": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.5.0.tgz", - "integrity": "sha512-NEpkObxPwyw/XxZVLPmAGKE89IQRp4puc6IQRPru6JKd1M3fW9v1xM1AnzIJE65hbCkzQAdnL8P47e9hzhiYLQ==", - "dev": true, - "requires": { - "@jest/types": "^29.5.0", - "@types/node": "*", - "chalk": "^4.0.0", - "jest-message-util": "^29.5.0", - "jest-util": "^29.5.0", - "slash": "^3.0.0" - } - }, - "@jest/core": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.5.0.tgz", - "integrity": "sha512-28UzQc7ulUrOQw1IsN/kv1QES3q2kkbl/wGslyhAclqZ/8cMdB5M68BffkIdSJgKBUt50d3hbwJ92XESlE7LiQ==", - "dev": true, - "requires": { - "@jest/console": "^29.5.0", - "@jest/reporters": "^29.5.0", - "@jest/test-result": "^29.5.0", - "@jest/transform": "^29.5.0", - "@jest/types": "^29.5.0", - "@types/node": "*", - "ansi-escapes": "^4.2.1", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "exit": "^0.1.2", - "graceful-fs": "^4.2.9", - "jest-changed-files": "^29.5.0", - "jest-config": "^29.5.0", - "jest-haste-map": "^29.5.0", - "jest-message-util": "^29.5.0", - "jest-regex-util": "^29.4.3", - "jest-resolve": "^29.5.0", - "jest-resolve-dependencies": "^29.5.0", - "jest-runner": "^29.5.0", - "jest-runtime": "^29.5.0", - "jest-snapshot": "^29.5.0", - "jest-util": "^29.5.0", - "jest-validate": "^29.5.0", - "jest-watcher": "^29.5.0", - "micromatch": "^4.0.4", - "pretty-format": "^29.5.0", - "slash": "^3.0.0", - "strip-ansi": "^6.0.0" - } - }, - "@jest/environment": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.5.0.tgz", - "integrity": "sha512-5FXw2+wD29YU1d4I2htpRX7jYnAyTRjP2CsXQdo9SAM8g3ifxWPSV0HnClSn71xwctr0U3oZIIH+dtbfmnbXVQ==", - "dev": true, - "requires": { - "@jest/fake-timers": "^29.5.0", - "@jest/types": "^29.5.0", - "@types/node": "*", - "jest-mock": "^29.5.0" - } - }, - "@jest/expect": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.5.0.tgz", - "integrity": "sha512-PueDR2HGihN3ciUNGr4uelropW7rqUfTiOn+8u0leg/42UhblPxHkfoh0Ruu3I9Y1962P3u2DY4+h7GVTSVU6g==", - "dev": true, - "requires": { - "expect": "^29.5.0", - "jest-snapshot": "^29.5.0" - } - }, - "@jest/expect-utils": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.5.0.tgz", - "integrity": "sha512-fmKzsidoXQT2KwnrwE0SQq3uj8Z763vzR8LnLBwC2qYWEFpjX8daRsk6rHUM1QvNlEW/UJXNXm59ztmJJWs2Mg==", - "dev": true, - "requires": { - "jest-get-type": "^29.4.3" - } - }, - "@jest/fake-timers": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.5.0.tgz", - "integrity": "sha512-9ARvuAAQcBwDAqOnglWq2zwNIRUDtk/SCkp/ToGEhFv5r86K21l+VEs0qNTaXtyiY0lEePl3kylijSYJQqdbDg==", - "dev": true, - "requires": { - "@jest/types": "^29.5.0", - "@sinonjs/fake-timers": "^10.0.2", - "@types/node": "*", - "jest-message-util": "^29.5.0", - "jest-mock": "^29.5.0", - "jest-util": "^29.5.0" - } - }, - "@jest/globals": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.5.0.tgz", - "integrity": "sha512-S02y0qMWGihdzNbUiqSAiKSpSozSuHX5UYc7QbnHP+D9Lyw8DgGGCinrN9uSuHPeKgSSzvPom2q1nAtBvUsvPQ==", - "dev": true, - "requires": { - "@jest/environment": "^29.5.0", - "@jest/expect": "^29.5.0", - "@jest/types": "^29.5.0", - "jest-mock": "^29.5.0" - } - }, - "@jest/reporters": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.5.0.tgz", - "integrity": "sha512-D05STXqj/M8bP9hQNSICtPqz97u7ffGzZu+9XLucXhkOFBqKcXe04JLZOgIekOxdb73MAoBUFnqvf7MCpKk5OA==", - "dev": true, - "requires": { - "@bcoe/v8-coverage": "^0.2.3", - "@jest/console": "^29.5.0", - "@jest/test-result": "^29.5.0", - "@jest/transform": "^29.5.0", - "@jest/types": "^29.5.0", - "@jridgewell/trace-mapping": "^0.3.15", - "@types/node": "*", - "chalk": "^4.0.0", - "collect-v8-coverage": "^1.0.0", - "exit": "^0.1.2", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "istanbul-lib-coverage": "^3.0.0", - "istanbul-lib-instrument": "^5.1.0", - "istanbul-lib-report": "^3.0.0", - "istanbul-lib-source-maps": "^4.0.0", - "istanbul-reports": "^3.1.3", - "jest-message-util": "^29.5.0", - "jest-util": "^29.5.0", - "jest-worker": "^29.5.0", - "slash": "^3.0.0", - "string-length": "^4.0.1", - "strip-ansi": "^6.0.0", - "v8-to-istanbul": "^9.0.1" - } - }, - "@jest/schemas": { - "version": "29.4.3", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.4.3.tgz", - "integrity": "sha512-VLYKXQmtmuEz6IxJsrZwzG9NvtkQsWNnWMsKxqWNu3+CnfzJQhp0WDDKWLVV9hLKr0l3SLLFRqcYHjhtyuDVxg==", - "dev": true, - "requires": { - "@sinclair/typebox": "^0.25.16" - } - }, - "@jest/source-map": { - "version": "29.4.3", - "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-29.4.3.tgz", - "integrity": "sha512-qyt/mb6rLyd9j1jUts4EQncvS6Yy3PM9HghnNv86QBlV+zdL2inCdK1tuVlL+J+lpiw2BI67qXOrX3UurBqQ1w==", - "dev": true, - "requires": { - "@jridgewell/trace-mapping": "^0.3.15", - "callsites": "^3.0.0", - "graceful-fs": "^4.2.9" - } - }, - "@jest/test-result": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.5.0.tgz", - "integrity": "sha512-fGl4rfitnbfLsrfx1uUpDEESS7zM8JdgZgOCQuxQvL1Sn/I6ijeAVQWGfXI9zb1i9Mzo495cIpVZhA0yr60PkQ==", - "dev": true, - "requires": { - "@jest/console": "^29.5.0", - "@jest/types": "^29.5.0", - "@types/istanbul-lib-coverage": "^2.0.0", - "collect-v8-coverage": "^1.0.0" - } - }, - "@jest/test-sequencer": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.5.0.tgz", - "integrity": "sha512-yPafQEcKjkSfDXyvtgiV4pevSeyuA6MQr6ZIdVkWJly9vkqjnFfcfhRQqpD5whjoU8EORki752xQmjaqoFjzMQ==", - "dev": true, - "requires": { - "@jest/test-result": "^29.5.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.5.0", - "slash": "^3.0.0" - } - }, - "@jest/transform": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.5.0.tgz", - "integrity": "sha512-8vbeZWqLJOvHaDfeMuoHITGKSz5qWc9u04lnWrQE3VyuSw604PzQM824ZeX9XSjUCeDiE3GuxZe5UKa8J61NQw==", - "dev": true, - "requires": { - "@babel/core": "^7.11.6", - "@jest/types": "^29.5.0", - "@jridgewell/trace-mapping": "^0.3.15", - "babel-plugin-istanbul": "^6.1.1", - "chalk": "^4.0.0", - "convert-source-map": "^2.0.0", - "fast-json-stable-stringify": "^2.1.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.5.0", - "jest-regex-util": "^29.4.3", - "jest-util": "^29.5.0", - "micromatch": "^4.0.4", - "pirates": "^4.0.4", - "slash": "^3.0.0", - "write-file-atomic": "^4.0.2" - } - }, - "@jest/types": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.5.0.tgz", - "integrity": "sha512-qbu7kN6czmVRc3xWFQcAN03RAUamgppVUdXrvl1Wr3jlNF93o9mJbGcDWrwGB6ht44u7efB1qCFgVQmca24Uog==", - "dev": true, - "requires": { - "@jest/schemas": "^29.4.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^17.0.8", - "chalk": "^4.0.0" - } - }, - "@jridgewell/gen-mapping": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", - "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", - "dev": true, - "requires": { - "@jridgewell/set-array": "^1.0.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" - } - }, - "@jridgewell/resolve-uri": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", - "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==" - }, - "@jridgewell/set-array": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", - "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", - "dev": true - }, - "@jridgewell/sourcemap-codec": { - "version": "1.4.15", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", - "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==" - }, - "@jridgewell/trace-mapping": { - "version": "0.3.18", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz", - "integrity": "sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==", - "dev": true, - "requires": { - "@jridgewell/resolve-uri": "3.1.0", - "@jridgewell/sourcemap-codec": "1.4.14" - }, - "dependencies": { - "@jridgewell/sourcemap-codec": { - "version": "1.4.14", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", - "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", - "dev": true - } - } - }, - "@next/env": { - "version": "13.3.1", - "resolved": "https://registry.npmjs.org/@next/env/-/env-13.3.1.tgz", - "integrity": "sha512-EDtCoedIZC7JlUQ3uaQpSc4aVmyhbLHmQVALg7pFfQgOTjgSnn7mKtA0DiCMkYvvsx6aFb5octGMtWrOtGXW9A==" - }, - "@next/swc-darwin-arm64": { - "version": "13.3.1", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-13.3.1.tgz", - "integrity": "sha512-UXPtriEc/pBP8luSLSCZBcbzPeVv+SSjs9cH/KygTbhmACye8/OOXRZO13Z2Wq1G0gLmEAIHQAOuF+vafPd2lw==", - "optional": true - }, - "@next/swc-darwin-x64": { - "version": "13.3.1", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-13.3.1.tgz", - "integrity": "sha512-lT36yYxosCfLtplFzJWgo0hrPu6/do8+msgM7oQkPeohDNdhjtjFUgOOwdSnPublLR6Mo2Ym4P/wl5OANuD2bw==", - "optional": true - }, - "@next/swc-linux-arm64-gnu": { - "version": "13.3.1", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-13.3.1.tgz", - "integrity": "sha512-wRb76nLWJhonH8s3kxC/1tFguEkeOPayIwe9mkaz1G/yeS3OrjeyKMJsb4+Kdg0zbTo53bNCOl59NNtDM7yyyw==", - "optional": true - }, - "@next/swc-linux-arm64-musl": { - "version": "13.3.1", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-13.3.1.tgz", - "integrity": "sha512-qz3BzjJRZ16Iq/jrp+pjiYOc0jTjHlfmxQmZk9x/+5uhRP6/eWQSTAPVJ33BMo6oK5O5N4644OgTAbzXzorecg==", - "optional": true - }, - "@next/swc-linux-x64-gnu": { - "version": "13.3.1", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-13.3.1.tgz", - "integrity": "sha512-6mgkLmwlyWlomQmpl21I3hxgqE5INoW4owTlcLpNsd1V4wP+J46BlI/5zV5KWWbzjfncIqzXoeGs5Eg+1GHODA==", - "optional": true - }, - "@next/swc-linux-x64-musl": { - "version": "13.3.1", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-13.3.1.tgz", - "integrity": "sha512-uqm5sielhQmKJM+qayIhgZv1KlS5pqTdQ99b+Z7hMWryXS96qE0DftTmMZowBcUL6x7s2vSXyH5wPtO1ON7LBg==", - "optional": true - }, - "@next/swc-win32-arm64-msvc": { - "version": "13.3.1", - "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-13.3.1.tgz", - "integrity": "sha512-WomIiTj/v3LevltlibNQKmvrOymNRYL+a0dp5R73IwPWN5FvXWwSELN/kiNALig/+T3luc4qHNTyvMCp9L6U5Q==", - "optional": true - }, - "@next/swc-win32-ia32-msvc": { - "version": "13.3.1", - "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-13.3.1.tgz", - "integrity": "sha512-M+PoH+0+q658wRUbs285RIaSTYnGBSTdweH/0CdzDgA6Q4rBM0sQs4DHmO3BPP0ltCO/vViIoyG7ks66XmCA5g==", - "optional": true - }, - "@next/swc-win32-x64-msvc": { - "version": "13.3.1", - "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-13.3.1.tgz", - "integrity": "sha512-Sl1F4Vp5Z1rNXWZYqJwMuWRRol4bqOB6+/d7KqkgQ4AcafKPN1PZmpkCoxv4UFHtFNIB7EotnuIhtXu3zScicQ==", - "optional": true - }, - "@prisma/client": { - "version": "4.13.0", - "resolved": "https://registry.npmjs.org/@prisma/client/-/client-4.13.0.tgz", - "integrity": "sha512-YaiiICcRB2hatxsbnfB66uWXjcRw3jsZdlAVxmx0cFcTc/Ad/sKdHCcWSnqyDX47vAewkjRFwiLwrOUjswVvmA==", - "requires": { - "@prisma/engines-version": "4.13.0-50.1e7af066ee9cb95cf3a403c78d9aab3e6b04f37a" - } - }, - "@prisma/engines": { - "version": "4.13.0", - "resolved": "https://registry.npmjs.org/@prisma/engines/-/engines-4.13.0.tgz", - "integrity": "sha512-HrniowHRZXHuGT9XRgoXEaP2gJLXM5RMoItaY2PkjvuZ+iHc0Zjbm/302MB8YsPdWozAPHHn+jpFEcEn71OgPw==", - "devOptional": true - }, - "@prisma/engines-version": { - "version": "4.13.0-50.1e7af066ee9cb95cf3a403c78d9aab3e6b04f37a", - "resolved": "https://registry.npmjs.org/@prisma/engines-version/-/engines-version-4.13.0-50.1e7af066ee9cb95cf3a403c78d9aab3e6b04f37a.tgz", - "integrity": "sha512-fsQlbkhPJf08JOzKoyoD9atdUijuGBekwoOPZC3YOygXEml1MTtgXVpnUNchQlRSY82OQ6pSGQ9PxUe4arcSLQ==" - }, - "@sinclair/typebox": { - "version": "0.25.24", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.25.24.tgz", - "integrity": "sha512-XJfwUVUKDHF5ugKwIcxEgc9k8b7HbznCp6eUfWgu710hMPNIO4aw4/zB5RogDQz8nd6gyCDpU9O/m6qYEWY6yQ==", - "dev": true - }, - "@sinonjs/commons": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-2.0.0.tgz", - "integrity": "sha512-uLa0j859mMrg2slwQYdO/AkrOfmH+X6LTVmNTS9CqexuE2IvVORIkSpJLqePAbEnKJ77aMmCwr1NUZ57120Xcg==", - "dev": true, - "requires": { - "type-detect": "4.0.8" - } - }, - "@sinonjs/fake-timers": { - "version": "10.0.2", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.0.2.tgz", - "integrity": "sha512-SwUDyjWnah1AaNl7kxsa7cfLhlTYoiyhDAIgyh+El30YvXs/o7OLXpYH88Zdhyx9JExKrmHDJ+10bwIcY80Jmw==", - "dev": true, - "requires": { - "@sinonjs/commons": "^2.0.0" - } - }, - "@swc/helpers": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.0.tgz", - "integrity": "sha512-SjY/p4MmECVVEWspzSRpQEM3sjR17sP8PbGxELWrT+YZMBfiUyt1MRUNjMV23zohwlG2HYtCQOsCwsTHguXkyg==", - "requires": { - "tslib": "^2.4.0" - } - }, - "@tsconfig/node10": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", - "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==" - }, - "@tsconfig/node12": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", - "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==" - }, - "@tsconfig/node14": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", - "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==" - }, - "@tsconfig/node16": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.3.tgz", - "integrity": "sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ==" - }, - "@types/babel__core": { - "version": "7.20.0", - "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.0.tgz", - "integrity": "sha512-+n8dL/9GWblDO0iU6eZAwEIJVr5DWigtle+Q6HLOrh/pdbXOhOtqzq8VPPE2zvNJzSKY4vH/z3iT3tn0A3ypiQ==", - "dev": true, - "requires": { - "@babel/parser": "^7.20.7", - "@babel/types": "^7.20.7", - "@types/babel__generator": "*", - "@types/babel__template": "*", - "@types/babel__traverse": "*" - } - }, - "@types/babel__generator": { - "version": "7.6.4", - "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.4.tgz", - "integrity": "sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==", - "dev": true, - "requires": { - "@babel/types": "^7.0.0" - } - }, - "@types/babel__template": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.1.tgz", - "integrity": "sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==", - "dev": true, - "requires": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0" - } - }, - "@types/babel__traverse": { - "version": "7.18.3", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.18.3.tgz", - "integrity": "sha512-1kbcJ40lLB7MHsj39U4Sh1uTd2E7rLEa79kmDpI6cy+XiXsteB3POdQomoq4FxszMrO3ZYchkhYJw7A2862b3w==", - "dev": true, - "requires": { - "@babel/types": "^7.3.0" - } - }, - "@types/body-parser": { - "version": "1.19.2", - "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz", - "integrity": "sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==", - "dev": true, - "requires": { - "@types/connect": "*", - "@types/node": "*" - } - }, - "@types/connect": { - "version": "3.4.35", - "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", - "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==", - "dev": true, - "requires": { - "@types/node": "*" - } - }, - "@types/cors": { - "version": "2.8.13", - "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.13.tgz", - "integrity": "sha512-RG8AStHlUiV5ysZQKq97copd2UmVYw3/pRMLefISZ3S1hK104Cwm7iLQ3fTKx+lsUH2CE8FlLaYeEA2LSeqYUA==", - "dev": true, - "requires": { - "@types/node": "*" - } - }, - "@types/express": { - "version": "4.17.17", - "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.17.tgz", - "integrity": "sha512-Q4FmmuLGBG58btUnfS1c1r/NQdlp3DMfGDGig8WhfpA2YRUtEkxAjkZb0yvplJGYdF1fsQ81iMDcH24sSCNC/Q==", - "dev": true, - "requires": { - "@types/body-parser": "*", - "@types/express-serve-static-core": "^4.17.33", - "@types/qs": "*", - "@types/serve-static": "*" - } - }, - "@types/express-serve-static-core": { - "version": "4.17.33", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.33.tgz", - "integrity": "sha512-TPBqmR/HRYI3eC2E5hmiivIzv+bidAfXofM+sbonAGvyDhySGw9/PQZFt2BLOrjUUR++4eJVpx6KnLQK1Fk9tA==", - "dev": true, - "requires": { - "@types/node": "*", - "@types/qs": "*", - "@types/range-parser": "*" - } - }, - "@types/graceful-fs": { - "version": "4.1.6", - "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.6.tgz", - "integrity": "sha512-Sig0SNORX9fdW+bQuTEovKj3uHcUL6LQKbCrrqb1X7J6/ReAbhCXRAhc+SMejhLELFj2QcyuxmUooZ4bt5ReSw==", - "dev": true, - "requires": { - "@types/node": "*" - } - }, - "@types/istanbul-lib-coverage": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", - "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==", - "dev": true - }, - "@types/istanbul-lib-report": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", - "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "*" - } - }, - "@types/istanbul-reports": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", - "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", - "dev": true, - "requires": { - "@types/istanbul-lib-report": "*" - } - }, - "@types/jest": { - "version": "29.5.1", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.1.tgz", - "integrity": "sha512-tEuVcHrpaixS36w7hpsfLBLpjtMRJUE09/MHXn923LOVojDwyC14cWcfc0rDs0VEfUyYmt/+iX1kxxp+gZMcaQ==", - "dev": true, - "requires": { - "expect": "^29.0.0", - "pretty-format": "^29.0.0" - } - }, - "@types/jsonwebtoken": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/@types/jsonwebtoken/-/jsonwebtoken-9.0.1.tgz", - "integrity": "sha512-c5ltxazpWabia/4UzhIoaDcIza4KViOQhdbjRlfcIGVnsE3c3brkz9Z+F/EeJIECOQP7W7US2hNE930cWWkPiw==", - "dev": true, - "requires": { - "@types/node": "*" - } - }, - "@types/mime": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@types/mime/-/mime-3.0.1.tgz", - "integrity": "sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA==", - "dev": true - }, - "@types/node": { - "version": "18.16.0", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.16.0.tgz", - "integrity": "sha512-BsAaKhB+7X+H4GnSjGhJG9Qi8Tw+inU9nJDwmD5CgOmBLEI6ArdhikpLX7DjbjDRDTbqZzU2LSQNZg8WGPiSZQ==" - }, - "@types/node-schedule": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@types/node-schedule/-/node-schedule-2.1.0.tgz", - "integrity": "sha512-NiTwl8YN3v/1YCKrDFSmCTkVxFDylueEqsOFdgF+vPsm+AlyJKGAo5yzX1FiOxPsZiN6/r8gJitYx2EaSuBmmg==", - "dev": true, - "requires": { - "@types/node": "*" - } - }, - "@types/prettier": { - "version": "2.7.2", - "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.2.tgz", - "integrity": "sha512-KufADq8uQqo1pYKVIYzfKbJfBAc0sOeXqGbFaSpv8MRmC/zXgowNZmFcbngndGk922QDmOASEXUZCaY48gs4cg==", - "dev": true - }, - "@types/qs": { - "version": "6.9.7", - "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", - "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==", - "dev": true - }, - "@types/range-parser": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz", - "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==", - "dev": true - }, - "@types/serve-static": { - "version": "1.15.1", - "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.1.tgz", - "integrity": "sha512-NUo5XNiAdULrJENtJXZZ3fHtfMolzZwczzBbnAeBbqBwG+LaG6YaJtuwzwGSQZ2wsCrxjEhNNjAkKigy3n8teQ==", - "dev": true, - "requires": { - "@types/mime": "*", - "@types/node": "*" - } - }, - "@types/stack-utils": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz", - "integrity": "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==", - "dev": true - }, - "@types/uuid": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-9.0.1.tgz", - "integrity": "sha512-rFT3ak0/2trgvp4yYZo5iKFEPsET7vKydKF+VRCxlQ9bpheehyAJH89dAkaLEq/j/RZXJIqcgsmPJKUP1Z28HA==", - "dev": true - }, - "@types/validator": { - "version": "13.7.15", - "resolved": "https://registry.npmjs.org/@types/validator/-/validator-13.7.15.tgz", - "integrity": "sha512-yeinDVQunb03AEP8luErFcyf/7Lf7AzKCD0NXfgVoGCCQDNpZET8Jgq74oBgqKld3hafLbfzt/3inUdQvaFeXQ==" - }, - "@types/yargs": { - "version": "17.0.24", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz", - "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==", - "dev": true, - "requires": { - "@types/yargs-parser": "*" - } - }, - "@types/yargs-parser": { - "version": "21.0.0", - "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz", - "integrity": "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==", - "dev": true - }, - "abbrev": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", - "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", - "dev": true - }, - "accepts": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", - "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", - "requires": { - "mime-types": "~2.1.34", - "negotiator": "0.6.3" - } - }, - "acorn": { - "version": "8.8.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz", - "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==" - }, - "acorn-walk": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", - "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==" - }, - "ansi-escapes": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", - "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", - "dev": true, - "requires": { - "type-fest": "^0.21.3" - } - }, - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true - }, - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "anymatch": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", - "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", - "dev": true, - "requires": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - } - }, - "arg": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", - "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==" - }, - "argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "requires": { - "sprintf-js": "~1.0.2" - } - }, - "array-flatten": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" - }, - "babel-jest": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.5.0.tgz", - "integrity": "sha512-mA4eCDh5mSo2EcA9xQjVTpmbbNk32Zb3Q3QFQsNhaK56Q+yoXowzFodLux30HRgyOho5rsQ6B0P9QpMkvvnJ0Q==", - "dev": true, - "requires": { - "@jest/transform": "^29.5.0", - "@types/babel__core": "^7.1.14", - "babel-plugin-istanbul": "^6.1.1", - "babel-preset-jest": "^29.5.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "slash": "^3.0.0" - } - }, - "babel-plugin-istanbul": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", - "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@istanbuljs/load-nyc-config": "^1.0.0", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-instrument": "^5.0.4", - "test-exclude": "^6.0.0" - } - }, - "babel-plugin-jest-hoist": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.5.0.tgz", - "integrity": "sha512-zSuuuAlTMT4mzLj2nPnUm6fsE6270vdOfnpbJ+RmruU75UhLFvL0N2NgI7xpeS7NaB6hGqmd5pVpGTDYvi4Q3w==", - "dev": true, - "requires": { - "@babel/template": "^7.3.3", - "@babel/types": "^7.3.3", - "@types/babel__core": "^7.1.14", - "@types/babel__traverse": "^7.0.6" - } - }, - "babel-preset-current-node-syntax": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz", - "integrity": "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==", - "dev": true, - "requires": { - "@babel/plugin-syntax-async-generators": "^7.8.4", - "@babel/plugin-syntax-bigint": "^7.8.3", - "@babel/plugin-syntax-class-properties": "^7.8.3", - "@babel/plugin-syntax-import-meta": "^7.8.3", - "@babel/plugin-syntax-json-strings": "^7.8.3", - "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.8.3", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", - "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-syntax-top-level-await": "^7.8.3" - } - }, - "babel-preset-jest": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.5.0.tgz", - "integrity": "sha512-JOMloxOqdiBSxMAzjRaH023/vvcaSaec49zvg+2LmNsktC7ei39LTJGw02J+9uUtTZUq6xbLyJ4dxe9sSmIuAg==", - "dev": true, - "requires": { - "babel-plugin-jest-hoist": "^29.5.0", - "babel-preset-current-node-syntax": "^1.0.0" - } - }, - "balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true - }, - "binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", - "dev": true - }, - "body-parser": { - "version": "1.20.1", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", - "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", - "requires": { - "bytes": "3.1.2", - "content-type": "~1.0.4", - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "on-finished": "2.4.1", - "qs": "6.11.0", - "raw-body": "2.5.1", - "type-is": "~1.6.18", - "unpipe": "1.0.0" - } - }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "requires": { - "fill-range": "^7.0.1" - } - }, - "browserslist": { - "version": "4.21.5", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.5.tgz", - "integrity": "sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w==", - "dev": true, - "requires": { - "caniuse-lite": "^1.0.30001449", - "electron-to-chromium": "^1.4.284", - "node-releases": "^2.0.8", - "update-browserslist-db": "^1.0.10" - } - }, - "bs-logger": { - "version": "0.2.6", - "resolved": "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz", - "integrity": "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==", - "dev": true, - "requires": { - "fast-json-stable-stringify": "2.x" - } - }, - "bser": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", - "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", - "dev": true, - "requires": { - "node-int64": "^0.4.0" - } - }, - "buffer-equal-constant-time": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", - "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==" - }, - "buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "dev": true - }, - "busboy": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", - "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==", - "requires": { - "streamsearch": "^1.1.0" - } - }, - "bytes": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", - "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==" - }, - "call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", - "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", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true - }, - "camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true - }, - "caniuse-lite": { - "version": "1.0.30001481", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001481.tgz", - "integrity": "sha512-KCqHwRnaa1InZBtqXzP98LPg0ajCVujMKjqKDhZEthIpAsJl/YEIa3YvXjGXPVqzZVguccuu7ga9KOE1J9rKPQ==" - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "char-regex": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", - "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", - "dev": true - }, - "chokidar": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", - "dev": true, - "requires": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "fsevents": "~2.3.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - } - }, - "ci-info": { - "version": "3.8.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.8.0.tgz", - "integrity": "sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==", - "dev": true - }, - "cjs-module-lexer": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz", - "integrity": "sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==", - "dev": true - }, - "class-transformer": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/class-transformer/-/class-transformer-0.5.1.tgz", - "integrity": "sha512-SQa1Ws6hUbfC98vKGxZH3KFY0Y1lm5Zm0SY8XX9zbK7FJCyVEac3ATW0RIpwzW+oOfmHE5PMPufDG9hCfoEOMw==" - }, - "class-validator": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/class-validator/-/class-validator-0.14.0.tgz", - "integrity": "sha512-ct3ltplN8I9fOwUd8GrP8UQixwff129BkEtuWDKL5W45cQuLd19xqmTLu5ge78YDm/fdje6FMt0hGOhl0lii3A==", - "requires": { - "@types/validator": "^13.7.10", - "libphonenumber-js": "^1.10.14", - "validator": "^13.7.0" - } - }, - "classnames": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.3.2.tgz", - "integrity": "sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw==" - }, - "client-only": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz", - "integrity": "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==" - }, - "cliui": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", - "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", - "dev": true, - "requires": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^7.0.0" - } - }, - "clone": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", - "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==" - }, - "co": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", - "dev": true - }, - "collect-v8-coverage": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz", - "integrity": "sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==", - "dev": true - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true - }, - "content-disposition": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", - "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", - "requires": { - "safe-buffer": "5.2.1" - } - }, - "content-type": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", - "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==" - }, - "convert-source-map": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", - "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", - "dev": true - }, - "cookie": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", - "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==" - }, - "cookie-signature": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" - }, - "cors": { - "version": "2.8.5", - "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", - "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", - "requires": { - "object-assign": "^4", - "vary": "^1" - } - }, - "create-require": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", - "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==" - }, - "cron-parser": { - "version": "4.8.1", - "resolved": "https://registry.npmjs.org/cron-parser/-/cron-parser-4.8.1.tgz", - "integrity": "sha512-jbokKWGcyU4gl6jAfX97E1gDpY12DJ1cLJZmoDzaAln/shZ+S3KBFBuA2Q6WeUN4gJf/8klnV1EfvhA2lK5IRQ==", - "requires": { - "luxon": "^3.2.1" - } - }, - "cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - } - }, - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - }, - "dedent": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", - "integrity": "sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==", - "dev": true - }, - "deepmerge": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", - "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", - "dev": true - }, - "depd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", - "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==" - }, - "destroy": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", - "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==" - }, - "detect-newline": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", - "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", - "dev": true - }, - "diff": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", - "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==" - }, - "diff-sequences": { - "version": "29.4.3", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.4.3.tgz", - "integrity": "sha512-ofrBgwpPhCD85kMKtE9RYFFq6OC1A89oW2vvgWZNCwxrUpRUILopY7lsYyMDSjc8g6U6aiO0Qubg6r4Wgt5ZnA==", - "dev": true - }, - "dotenv": { - "version": "16.0.3", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.0.3.tgz", - "integrity": "sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ==" - }, - "ecdsa-sig-formatter": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", - "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", - "requires": { - "safe-buffer": "^5.0.1" - } - }, - "ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" - }, - "electron-to-chromium": { - "version": "1.4.371", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.371.tgz", - "integrity": "sha512-jlBzY4tFcJaiUjzhRTCWAqRvTO/fWzjA3Bls0mykzGZ7zvcMP7h05W6UcgzfT9Ca1SW2xyKDOFRyI0pQeRNZGw==", - "dev": true - }, - "emittery": { - "version": "0.13.1", - "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz", - "integrity": "sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==", - "dev": true - }, - "emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==" - }, - "error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dev": true, - "requires": { - "is-arrayish": "^0.2.1" - } - }, - "escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "dev": true - }, - "escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" - }, - "escape-string-regexp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", - "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", - "dev": true - }, - "esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true - }, - "etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==" - }, - "execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", - "dev": true, - "requires": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" - } - }, - "exit": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", - "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", - "dev": true - }, - "expect": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/expect/-/expect-29.5.0.tgz", - "integrity": "sha512-yM7xqUrCO2JdpFo4XpM82t+PJBFybdqoQuJLDGeDX2ij8NZzqRHyu3Hp188/JX7SWqud+7t4MUdvcgGBICMHZg==", - "dev": true, - "requires": { - "@jest/expect-utils": "^29.5.0", - "jest-get-type": "^29.4.3", - "jest-matcher-utils": "^29.5.0", - "jest-message-util": "^29.5.0", - "jest-util": "^29.5.0" - } - }, - "express": { - "version": "4.18.2", - "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", - "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==", - "requires": { - "accepts": "~1.3.8", - "array-flatten": "1.1.1", - "body-parser": "1.20.1", - "content-disposition": "0.5.4", - "content-type": "~1.0.4", - "cookie": "0.5.0", - "cookie-signature": "1.0.6", - "debug": "2.6.9", - "depd": "2.0.0", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "finalhandler": "1.2.0", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "merge-descriptors": "1.0.1", - "methods": "~1.1.2", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "path-to-regexp": "0.1.7", - "proxy-addr": "~2.0.7", - "qs": "6.11.0", - "range-parser": "~1.2.1", - "safe-buffer": "5.2.1", - "send": "0.18.0", - "serve-static": "1.15.0", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "type-is": "~1.6.18", - "utils-merge": "1.0.1", - "vary": "~1.1.2" - } - }, - "fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true - }, - "fb-watchman": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", - "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", - "dev": true, - "requires": { - "bser": "2.1.1" - } - }, - "fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "requires": { - "to-regex-range": "^5.0.1" - } - }, - "finalhandler": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", - "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", - "requires": { - "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "statuses": "2.0.1", - "unpipe": "~1.0.0" - } - }, - "find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - } - }, - "forwarded": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", - "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==" - }, - "fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==" - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "dev": true - }, - "fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "dev": true, - "optional": true - }, - "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" - }, - "gensync": { - "version": "1.0.0-beta.2", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", - "dev": true - }, - "get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true - }, - "get-intrinsic": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.0.tgz", - "integrity": "sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==", - "requires": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.3" - } - }, - "get-package-type": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", - "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", - "dev": true - }, - "get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "dev": true - }, - "glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "requires": { - "is-glob": "^4.0.1" - } - }, - "globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true - }, - "graceful-fs": { - "version": "4.2.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", - "dev": true - }, - "has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "requires": { - "function-bind": "^1.1.1" - } - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==" - }, - "html-escaper": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", - "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", - "dev": true - }, - "http-errors": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", - "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", - "requires": { - "depd": "2.0.0", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "toidentifier": "1.0.1" - } - }, - "human-signals": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", - "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", - "dev": true - }, - "iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } - }, - "ignore-by-default": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz", - "integrity": "sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA==", - "dev": true - }, - "import-local": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", - "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", - "dev": true, - "requires": { - "pkg-dir": "^4.2.0", - "resolve-cwd": "^3.0.0" - } - }, - "imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "dev": true - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "dev": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "ipaddr.js": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", - "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==" - }, - "is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", - "dev": true - }, - "is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dev": true, - "requires": { - "binary-extensions": "^2.0.0" - } - }, - "is-core-module": { - "version": "2.12.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.12.0.tgz", - "integrity": "sha512-RECHCBCd/viahWmwj6enj19sKbHfJrddi/6cBDsNTKbNq0f7VeaUkBo60BqzvPqo/W54ChS62Z5qyun7cfOMqQ==", - "dev": true, - "requires": { - "has": "^1.0.3" - } - }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true - }, - "is-generator-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", - "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", - "dev": true - }, - "is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, - "requires": { - "is-extglob": "^2.1.1" - } - }, - "is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true - }, - "is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", - "dev": true - }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true - }, - "istanbul-lib-coverage": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", - "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", - "dev": true - }, - "istanbul-lib-instrument": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", - "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", - "dev": true, - "requires": { - "@babel/core": "^7.12.3", - "@babel/parser": "^7.14.7", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-coverage": "^3.2.0", - "semver": "^6.3.0" - } - }, - "istanbul-lib-report": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", - "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", - "dev": true, - "requires": { - "istanbul-lib-coverage": "^3.0.0", - "make-dir": "^3.0.0", - "supports-color": "^7.1.0" - } - }, - "istanbul-lib-source-maps": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", - "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", - "dev": true, - "requires": { - "debug": "^4.1.1", - "istanbul-lib-coverage": "^3.0.0", - "source-map": "^0.6.1" - }, - "dependencies": { - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - } - } - }, - "istanbul-reports": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.5.tgz", - "integrity": "sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==", - "dev": true, - "requires": { - "html-escaper": "^2.0.0", - "istanbul-lib-report": "^3.0.0" - } - }, - "jest": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest/-/jest-29.5.0.tgz", - "integrity": "sha512-juMg3he2uru1QoXX078zTa7pO85QyB9xajZc6bU+d9yEGwrKX6+vGmJQ3UdVZsvTEUARIdObzH68QItim6OSSQ==", - "dev": true, - "requires": { - "@jest/core": "^29.5.0", - "@jest/types": "^29.5.0", - "import-local": "^3.0.2", - "jest-cli": "^29.5.0" - } - }, - "jest-changed-files": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.5.0.tgz", - "integrity": "sha512-IFG34IUMUaNBIxjQXF/iu7g6EcdMrGRRxaUSw92I/2g2YC6vCdTltl4nHvt7Ci5nSJwXIkCu8Ka1DKF+X7Z1Ag==", - "dev": true, - "requires": { - "execa": "^5.0.0", - "p-limit": "^3.1.0" - } - }, - "jest-circus": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.5.0.tgz", - "integrity": "sha512-gq/ongqeQKAplVxqJmbeUOJJKkW3dDNPY8PjhJ5G0lBRvu0e3EWGxGy5cI4LAGA7gV2UHCtWBI4EMXK8c9nQKA==", - "dev": true, - "requires": { - "@jest/environment": "^29.5.0", - "@jest/expect": "^29.5.0", - "@jest/test-result": "^29.5.0", - "@jest/types": "^29.5.0", - "@types/node": "*", - "chalk": "^4.0.0", - "co": "^4.6.0", - "dedent": "^0.7.0", - "is-generator-fn": "^2.0.0", - "jest-each": "^29.5.0", - "jest-matcher-utils": "^29.5.0", - "jest-message-util": "^29.5.0", - "jest-runtime": "^29.5.0", - "jest-snapshot": "^29.5.0", - "jest-util": "^29.5.0", - "p-limit": "^3.1.0", - "pretty-format": "^29.5.0", - "pure-rand": "^6.0.0", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" - } - }, - "jest-cli": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.5.0.tgz", - "integrity": "sha512-L1KcP1l4HtfwdxXNFCL5bmUbLQiKrakMUriBEcc1Vfz6gx31ORKdreuWvmQVBit+1ss9NNR3yxjwfwzZNdQXJw==", - "dev": true, - "requires": { - "@jest/core": "^29.5.0", - "@jest/test-result": "^29.5.0", - "@jest/types": "^29.5.0", - "chalk": "^4.0.0", - "exit": "^0.1.2", - "graceful-fs": "^4.2.9", - "import-local": "^3.0.2", - "jest-config": "^29.5.0", - "jest-util": "^29.5.0", - "jest-validate": "^29.5.0", - "prompts": "^2.0.1", - "yargs": "^17.3.1" - } - }, - "jest-config": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.5.0.tgz", - "integrity": "sha512-kvDUKBnNJPNBmFFOhDbm59iu1Fii1Q6SxyhXfvylq3UTHbg6o7j/g8k2dZyXWLvfdKB1vAPxNZnMgtKJcmu3kA==", - "dev": true, - "requires": { - "@babel/core": "^7.11.6", - "@jest/test-sequencer": "^29.5.0", - "@jest/types": "^29.5.0", - "babel-jest": "^29.5.0", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "deepmerge": "^4.2.2", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "jest-circus": "^29.5.0", - "jest-environment-node": "^29.5.0", - "jest-get-type": "^29.4.3", - "jest-regex-util": "^29.4.3", - "jest-resolve": "^29.5.0", - "jest-runner": "^29.5.0", - "jest-util": "^29.5.0", - "jest-validate": "^29.5.0", - "micromatch": "^4.0.4", - "parse-json": "^5.2.0", - "pretty-format": "^29.5.0", - "slash": "^3.0.0", - "strip-json-comments": "^3.1.1" - } - }, - "jest-diff": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.5.0.tgz", - "integrity": "sha512-LtxijLLZBduXnHSniy0WMdaHjmQnt3g5sa16W4p0HqukYTTsyTW3GD1q41TyGl5YFXj/5B2U6dlh5FM1LIMgxw==", - "dev": true, - "requires": { - "chalk": "^4.0.0", - "diff-sequences": "^29.4.3", - "jest-get-type": "^29.4.3", - "pretty-format": "^29.5.0" - } - }, - "jest-docblock": { - "version": "29.4.3", - "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.4.3.tgz", - "integrity": "sha512-fzdTftThczeSD9nZ3fzA/4KkHtnmllawWrXO69vtI+L9WjEIuXWs4AmyME7lN5hU7dB0sHhuPfcKofRsUb/2Fg==", - "dev": true, - "requires": { - "detect-newline": "^3.0.0" - } - }, - "jest-each": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.5.0.tgz", - "integrity": "sha512-HM5kIJ1BTnVt+DQZ2ALp3rzXEl+g726csObrW/jpEGl+CDSSQpOJJX2KE/vEg8cxcMXdyEPu6U4QX5eruQv5hA==", - "dev": true, - "requires": { - "@jest/types": "^29.5.0", - "chalk": "^4.0.0", - "jest-get-type": "^29.4.3", - "jest-util": "^29.5.0", - "pretty-format": "^29.5.0" - } - }, - "jest-environment-node": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.5.0.tgz", - "integrity": "sha512-ExxuIK/+yQ+6PRGaHkKewYtg6hto2uGCgvKdb2nfJfKXgZ17DfXjvbZ+jA1Qt9A8EQSfPnt5FKIfnOO3u1h9qw==", - "dev": true, - "requires": { - "@jest/environment": "^29.5.0", - "@jest/fake-timers": "^29.5.0", - "@jest/types": "^29.5.0", - "@types/node": "*", - "jest-mock": "^29.5.0", - "jest-util": "^29.5.0" - } - }, - "jest-get-type": { - "version": "29.4.3", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.4.3.tgz", - "integrity": "sha512-J5Xez4nRRMjk8emnTpWrlkyb9pfRQQanDrvWHhsR1+VUfbwxi30eVcZFlcdGInRibU4G5LwHXpI7IRHU0CY+gg==", - "dev": true - }, - "jest-haste-map": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.5.0.tgz", - "integrity": "sha512-IspOPnnBro8YfVYSw6yDRKh/TiCdRngjxeacCps1cQ9cgVN6+10JUcuJ1EabrgYLOATsIAigxA0rLR9x/YlrSA==", - "dev": true, - "requires": { - "@jest/types": "^29.5.0", - "@types/graceful-fs": "^4.1.3", - "@types/node": "*", - "anymatch": "^3.0.3", - "fb-watchman": "^2.0.0", - "fsevents": "^2.3.2", - "graceful-fs": "^4.2.9", - "jest-regex-util": "^29.4.3", - "jest-util": "^29.5.0", - "jest-worker": "^29.5.0", - "micromatch": "^4.0.4", - "walker": "^1.0.8" - } - }, - "jest-leak-detector": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.5.0.tgz", - "integrity": "sha512-u9YdeeVnghBUtpN5mVxjID7KbkKE1QU4f6uUwuxiY0vYRi9BUCLKlPEZfDGR67ofdFmDz9oPAy2G92Ujrntmow==", - "dev": true, - "requires": { - "jest-get-type": "^29.4.3", - "pretty-format": "^29.5.0" - } - }, - "jest-matcher-utils": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.5.0.tgz", - "integrity": "sha512-lecRtgm/rjIK0CQ7LPQwzCs2VwW6WAahA55YBuI+xqmhm7LAaxokSB8C97yJeYyT+HvQkH741StzpU41wohhWw==", - "dev": true, - "requires": { - "chalk": "^4.0.0", - "jest-diff": "^29.5.0", - "jest-get-type": "^29.4.3", - "pretty-format": "^29.5.0" - } - }, - "jest-message-util": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.5.0.tgz", - "integrity": "sha512-Kijeg9Dag6CKtIDA7O21zNTACqD5MD/8HfIV8pdD94vFyFuer52SigdC3IQMhab3vACxXMiFk+yMHNdbqtyTGA==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.12.13", - "@jest/types": "^29.5.0", - "@types/stack-utils": "^2.0.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "micromatch": "^4.0.4", - "pretty-format": "^29.5.0", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" - } - }, - "jest-mock": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.5.0.tgz", - "integrity": "sha512-GqOzvdWDE4fAV2bWQLQCkujxYWL7RxjCnj71b5VhDAGOevB3qj3Ovg26A5NI84ZpODxyzaozXLOh2NCgkbvyaw==", - "dev": true, - "requires": { - "@jest/types": "^29.5.0", - "@types/node": "*", - "jest-util": "^29.5.0" - } - }, - "jest-pnp-resolver": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", - "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", - "dev": true, - "requires": {} - }, - "jest-regex-util": { - "version": "29.4.3", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.4.3.tgz", - "integrity": "sha512-O4FglZaMmWXbGHSQInfXewIsd1LMn9p3ZXB/6r4FOkyhX2/iP/soMG98jGvk/A3HAN78+5VWcBGO0BJAPRh4kg==", - "dev": true - }, - "jest-resolve": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.5.0.tgz", - "integrity": "sha512-1TzxJ37FQq7J10jPtQjcc+MkCkE3GBpBecsSUWJ0qZNJpmg6m0D9/7II03yJulm3H/fvVjgqLh/k2eYg+ui52w==", - "dev": true, - "requires": { - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.5.0", - "jest-pnp-resolver": "^1.2.2", - "jest-util": "^29.5.0", - "jest-validate": "^29.5.0", - "resolve": "^1.20.0", - "resolve.exports": "^2.0.0", - "slash": "^3.0.0" - } - }, - "jest-resolve-dependencies": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.5.0.tgz", - "integrity": "sha512-sjV3GFr0hDJMBpYeUuGduP+YeCRbd7S/ck6IvL3kQ9cpySYKqcqhdLLC2rFwrcL7tz5vYibomBrsFYWkIGGjOg==", - "dev": true, - "requires": { - "jest-regex-util": "^29.4.3", - "jest-snapshot": "^29.5.0" - } - }, - "jest-runner": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.5.0.tgz", - "integrity": "sha512-m7b6ypERhFghJsslMLhydaXBiLf7+jXy8FwGRHO3BGV1mcQpPbwiqiKUR2zU2NJuNeMenJmlFZCsIqzJCTeGLQ==", - "dev": true, - "requires": { - "@jest/console": "^29.5.0", - "@jest/environment": "^29.5.0", - "@jest/test-result": "^29.5.0", - "@jest/transform": "^29.5.0", - "@jest/types": "^29.5.0", - "@types/node": "*", - "chalk": "^4.0.0", - "emittery": "^0.13.1", - "graceful-fs": "^4.2.9", - "jest-docblock": "^29.4.3", - "jest-environment-node": "^29.5.0", - "jest-haste-map": "^29.5.0", - "jest-leak-detector": "^29.5.0", - "jest-message-util": "^29.5.0", - "jest-resolve": "^29.5.0", - "jest-runtime": "^29.5.0", - "jest-util": "^29.5.0", - "jest-watcher": "^29.5.0", - "jest-worker": "^29.5.0", - "p-limit": "^3.1.0", - "source-map-support": "0.5.13" - } - }, - "jest-runtime": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.5.0.tgz", - "integrity": "sha512-1Hr6Hh7bAgXQP+pln3homOiEZtCDZFqwmle7Ew2j8OlbkIu6uE3Y/etJQG8MLQs3Zy90xrp2C0BRrtPHG4zryw==", - "dev": true, - "requires": { - "@jest/environment": "^29.5.0", - "@jest/fake-timers": "^29.5.0", - "@jest/globals": "^29.5.0", - "@jest/source-map": "^29.4.3", - "@jest/test-result": "^29.5.0", - "@jest/transform": "^29.5.0", - "@jest/types": "^29.5.0", - "@types/node": "*", - "chalk": "^4.0.0", - "cjs-module-lexer": "^1.0.0", - "collect-v8-coverage": "^1.0.0", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.5.0", - "jest-message-util": "^29.5.0", - "jest-mock": "^29.5.0", - "jest-regex-util": "^29.4.3", - "jest-resolve": "^29.5.0", - "jest-snapshot": "^29.5.0", - "jest-util": "^29.5.0", - "slash": "^3.0.0", - "strip-bom": "^4.0.0" - } - }, - "jest-snapshot": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.5.0.tgz", - "integrity": "sha512-x7Wolra5V0tt3wRs3/ts3S6ciSQVypgGQlJpz2rsdQYoUKxMxPNaoHMGJN6qAuPJqS+2iQ1ZUn5kl7HCyls84g==", - "dev": true, - "requires": { - "@babel/core": "^7.11.6", - "@babel/generator": "^7.7.2", - "@babel/plugin-syntax-jsx": "^7.7.2", - "@babel/plugin-syntax-typescript": "^7.7.2", - "@babel/traverse": "^7.7.2", - "@babel/types": "^7.3.3", - "@jest/expect-utils": "^29.5.0", - "@jest/transform": "^29.5.0", - "@jest/types": "^29.5.0", - "@types/babel__traverse": "^7.0.6", - "@types/prettier": "^2.1.5", - "babel-preset-current-node-syntax": "^1.0.0", - "chalk": "^4.0.0", - "expect": "^29.5.0", - "graceful-fs": "^4.2.9", - "jest-diff": "^29.5.0", - "jest-get-type": "^29.4.3", - "jest-matcher-utils": "^29.5.0", - "jest-message-util": "^29.5.0", - "jest-util": "^29.5.0", - "natural-compare": "^1.4.0", - "pretty-format": "^29.5.0", - "semver": "^7.3.5" - }, - "dependencies": { - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "semver": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.0.tgz", - "integrity": "sha512-+XC0AD/R7Q2mPSRuy2Id0+CGTZ98+8f+KvwirxOKIEyid+XSx6HbC63p+O4IndTHuX5Z+JxQ0TghCkO5Cg/2HA==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - } - } - }, - "jest-util": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.5.0.tgz", - "integrity": "sha512-RYMgG/MTadOr5t8KdhejfvUU82MxsCu5MF6KuDUHl+NuwzUt+Sm6jJWxTJVrDR1j5M/gJVCPKQEpWXY+yIQ6lQ==", - "dev": true, - "requires": { - "@jest/types": "^29.5.0", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" - } - }, - "jest-validate": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.5.0.tgz", - "integrity": "sha512-pC26etNIi+y3HV8A+tUGr/lph9B18GnzSRAkPaaZJIE1eFdiYm6/CewuiJQ8/RlfHd1u/8Ioi8/sJ+CmbA+zAQ==", - "dev": true, - "requires": { - "@jest/types": "^29.5.0", - "camelcase": "^6.2.0", - "chalk": "^4.0.0", - "jest-get-type": "^29.4.3", - "leven": "^3.1.0", - "pretty-format": "^29.5.0" - }, - "dependencies": { - "camelcase": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", - "dev": true - } - } - }, - "jest-watcher": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.5.0.tgz", - "integrity": "sha512-KmTojKcapuqYrKDpRwfqcQ3zjMlwu27SYext9pt4GlF5FUgB+7XE1mcCnSm6a4uUpFyQIkb6ZhzZvHl+jiBCiA==", - "dev": true, - "requires": { - "@jest/test-result": "^29.5.0", - "@jest/types": "^29.5.0", - "@types/node": "*", - "ansi-escapes": "^4.2.1", - "chalk": "^4.0.0", - "emittery": "^0.13.1", - "jest-util": "^29.5.0", - "string-length": "^4.0.1" - } - }, - "jest-worker": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.5.0.tgz", - "integrity": "sha512-NcrQnevGoSp4b5kg+akIpthoAFHxPBcb5P6mYPY0fUNT+sSvmtu6jlkEle3anczUKIKEbMxFimk9oTP/tpIPgA==", - "dev": true, - "requires": { - "@types/node": "*", - "jest-util": "^29.5.0", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, - "dependencies": { - "supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" - }, - "js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "dev": true, - "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - } - }, - "jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "dev": true - }, - "json-parse-even-better-errors": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "dev": true - }, - "json5": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", - "dev": true - }, - "jsonwebtoken": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.0.tgz", - "integrity": "sha512-tuGfYXxkQGDPnLJ7SibiQgVgeDgfbPq2k2ICcbgqW8WxWLBAxKQM/ZCu/IT8SOSwmaYl4dpTFCW5xZv7YbbWUw==", - "requires": { - "jws": "^3.2.2", - "lodash": "^4.17.21", - "ms": "^2.1.1", - "semver": "^7.3.8" - }, - "dependencies": { - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "requires": { - "yallist": "^4.0.0" - } - }, - "ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" - }, - "semver": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.0.tgz", - "integrity": "sha512-+XC0AD/R7Q2mPSRuy2Id0+CGTZ98+8f+KvwirxOKIEyid+XSx6HbC63p+O4IndTHuX5Z+JxQ0TghCkO5Cg/2HA==", - "requires": { - "lru-cache": "^6.0.0" - } - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - } - } - }, - "jwa": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz", - "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==", - "requires": { - "buffer-equal-constant-time": "1.0.1", - "ecdsa-sig-formatter": "1.0.11", - "safe-buffer": "^5.0.1" - } - }, - "jws": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz", - "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==", - "requires": { - "jwa": "^1.4.1", - "safe-buffer": "^5.0.1" - } - }, - "kleur": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", - "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", - "dev": true - }, - "le-coffre-resources": { - "version": "git+ssh://git@github.com/smart-chain-fr/leCoffre-resources.git#7f6d31080e8903998f6e5a687ead5635999d52eb", - "from": "le-coffre-resources@git@github.com:smart-chain-fr/leCoffre-resources.git#v2.21", - "requires": { - "class-transformer": "^0.5.1", - "class-validator": "^0.14.0" - } - }, - "leven": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", - "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", - "dev": true - }, - "libphonenumber-js": { - "version": "1.10.28", - "resolved": "https://registry.npmjs.org/libphonenumber-js/-/libphonenumber-js-1.10.28.tgz", - "integrity": "sha512-1eAgjLrZA0+2Wgw4hs+4Q/kEBycxQo8ZLYnmOvZ3AlM8ImAVAJgDPlZtISLEzD1vunc2q8s2Pn7XwB7I8U3Kzw==" - }, - "lines-and-columns": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", - "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", - "dev": true - }, - "locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "requires": { - "p-locate": "^4.1.0" - } - }, - "lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" - }, - "lodash.memoize": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", - "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==", - "dev": true - }, - "long-timeout": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/long-timeout/-/long-timeout-0.1.1.tgz", - "integrity": "sha512-BFRuQUqc7x2NWxfJBCyUrN8iYUYznzL9JROmRz1gZ6KlOIgmoD+njPVbb+VNn2nGMKggMsK79iUNErillsrx7w==" - }, - "loose-envify": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", - "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", - "peer": true, - "requires": { - "js-tokens": "^3.0.0 || ^4.0.0" - } - }, - "lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "dev": true, - "requires": { - "yallist": "^3.0.2" - } - }, - "luxon": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/luxon/-/luxon-3.3.0.tgz", - "integrity": "sha512-An0UCfG/rSiqtAIiBPO0Y9/zAnHUZxAMiCpTd5h2smgsj7GGmcenvrvww2cqNA8/4A5ZrD1gJpHN2mIHZQF+Mg==" - }, - "make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", - "dev": true, - "requires": { - "semver": "^6.0.0" - } - }, - "make-error": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", - "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==" - }, - "makeerror": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", - "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", - "dev": true, - "requires": { - "tmpl": "1.0.5" - } - }, - "media-typer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==" - }, - "merge-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==" - }, - "merge-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "dev": true - }, - "methods": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==" - }, - "micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", - "dev": true, - "requires": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" - } - }, - "mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" - }, - "mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==" - }, - "mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "requires": { - "mime-db": "1.52.0" - } - }, - "mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true - }, - "minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "module-alias": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/module-alias/-/module-alias-2.2.2.tgz", - "integrity": "sha512-A/78XjoX2EmNvppVWEhM2oGk3x4lLxnkEA4jTbaK97QKSDjkIoOsKQlfylt/d3kKKi596Qy3NP5XrXJ6fZIC9Q==" - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - }, - "nanoid": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz", - "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==" - }, - "natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", - "dev": true - }, - "negotiator": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", - "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==" - }, - "next": { - "version": "13.3.1", - "resolved": "https://registry.npmjs.org/next/-/next-13.3.1.tgz", - "integrity": "sha512-eByWRxPzKHs2oQz1yE41LX35umhz86ZSZ+mYyXBqn2IBi2hyUqxBA88avywdr4uyH+hCJczegGsDGWbzQA5Rqw==", - "requires": { - "@next/env": "13.3.1", - "@next/swc-darwin-arm64": "13.3.1", - "@next/swc-darwin-x64": "13.3.1", - "@next/swc-linux-arm64-gnu": "13.3.1", - "@next/swc-linux-arm64-musl": "13.3.1", - "@next/swc-linux-x64-gnu": "13.3.1", - "@next/swc-linux-x64-musl": "13.3.1", - "@next/swc-win32-arm64-msvc": "13.3.1", - "@next/swc-win32-ia32-msvc": "13.3.1", - "@next/swc-win32-x64-msvc": "13.3.1", - "@swc/helpers": "0.5.0", - "busboy": "1.6.0", - "caniuse-lite": "^1.0.30001406", - "postcss": "8.4.14", - "styled-jsx": "5.1.1" - } - }, - "node-cache": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/node-cache/-/node-cache-5.1.2.tgz", - "integrity": "sha512-t1QzWwnk4sjLWaQAS8CHgOJ+RAfmHpxFWmc36IWTiWHQfs0w5JDMBS1b1ZxQteo0vVVuWJvIUKHDkkeK7vIGCg==", - "requires": { - "clone": "2.x" - } - }, - "node-int64": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", - "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", - "dev": true - }, - "node-releases": { - "version": "2.0.10", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.10.tgz", - "integrity": "sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w==", - "dev": true - }, - "node-schedule": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/node-schedule/-/node-schedule-2.1.1.tgz", - "integrity": "sha512-OXdegQq03OmXEjt2hZP33W2YPs/E5BcFQks46+G2gAxs4gHOIVD1u7EqlYLYSKsaIpyKCK9Gbk0ta1/gjRSMRQ==", - "requires": { - "cron-parser": "^4.2.0", - "long-timeout": "0.1.1", - "sorted-array-functions": "^1.3.0" - } - }, - "nodemon": { - "version": "2.0.22", - "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-2.0.22.tgz", - "integrity": "sha512-B8YqaKMmyuCO7BowF1Z1/mkPqLk6cs/l63Ojtd6otKjMx47Dq1utxfRxcavH1I7VSaL8n5BUaoutadnsX3AAVQ==", - "dev": true, - "requires": { - "chokidar": "^3.5.2", - "debug": "^3.2.7", - "ignore-by-default": "^1.0.1", - "minimatch": "^3.1.2", - "pstree.remy": "^1.1.8", - "semver": "^5.7.1", - "simple-update-notifier": "^1.0.7", - "supports-color": "^5.5.0", - "touch": "^3.1.0", - "undefsafe": "^2.0.5" - }, - "dependencies": { - "debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true - }, - "ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true - }, - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "nopt": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz", - "integrity": "sha512-NWmpvLSqUrgrAC9HCuxEvb+PSloHpqVu+FqcO4eeF2h5qYRhA7ev6KvelyQAKtegUbC6RypJnlEOhd8vloNKYg==", - "dev": true, - "requires": { - "abbrev": "1" - } - }, - "normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true - }, - "npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", - "dev": true, - "requires": { - "path-key": "^3.0.0" - } - }, - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==" - }, - "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==" - }, - "on-finished": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", - "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", - "requires": { - "ee-first": "1.1.1" - } - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dev": true, - "requires": { - "wrappy": "1" - } - }, - "onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dev": true, - "requires": { - "mimic-fn": "^2.1.0" - } - }, - "p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "requires": { - "yocto-queue": "^0.1.0" - } - }, - "p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "requires": { - "p-limit": "^2.2.0" - }, - "dependencies": { - "p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "requires": { - "p-try": "^2.0.0" - } - } - } - }, - "p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true - }, - "parse-json": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" - } - }, - "parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" - }, - "path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true - }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "dev": true - }, - "path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true - }, - "path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true - }, - "path-to-regexp": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==" - }, - "picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" - }, - "picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true - }, - "pirates": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.5.tgz", - "integrity": "sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==", - "dev": true - }, - "pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", - "dev": true, - "requires": { - "find-up": "^4.0.0" - } - }, - "postcss": { - "version": "8.4.14", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.14.tgz", - "integrity": "sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig==", - "requires": { - "nanoid": "^3.3.4", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" - } - }, - "prettier": { - "version": "2.8.4", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.4.tgz", - "integrity": "sha512-vIS4Rlc2FNh0BySk3Wkd6xmwxB0FpOndW5fisM5H8hsZSxU2VWVB5CWIkIjWvrHjIhxk2g3bfMKM87zNTrZddw==", - "dev": true - }, - "pretty-format": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.5.0.tgz", - "integrity": "sha512-V2mGkI31qdttvTFX7Mt4efOqHXqJWMu4/r66Xh3Z3BwZaPfPJgp6/gbwoujRpPUtfEF6AUUWx3Jim3GCw5g/Qw==", - "dev": true, - "requires": { - "@jest/schemas": "^29.4.3", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true - } - } - }, - "prisma": { - "version": "4.13.0", - "resolved": "https://registry.npmjs.org/prisma/-/prisma-4.13.0.tgz", - "integrity": "sha512-L9mqjnSmvWIRCYJ9mQkwCtj4+JDYYTdhoyo8hlsHNDXaZLh/b4hR0IoKIBbTKxZuyHQzLopb/+0Rvb69uGV7uA==", - "devOptional": true, - "requires": { - "@prisma/engines": "4.13.0" - } - }, - "prisma-query": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/prisma-query/-/prisma-query-2.0.0.tgz", - "integrity": "sha512-+5eneJrgTFxW48j4JaWJ8iBwFSH+YQRtA1N+QEzqsREnTEAbs1Bq85xoZP7ZNEXDsoLOoIo4rYfCYRozuVOB9Q==" - }, - "prompts": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", - "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", - "dev": true, - "requires": { - "kleur": "^3.0.3", - "sisteransi": "^1.0.5" - } - }, - "proxy-addr": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", - "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", - "requires": { - "forwarded": "0.2.0", - "ipaddr.js": "1.9.1" - } - }, - "pstree.remy": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz", - "integrity": "sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==", - "dev": true - }, - "pure-rand": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.0.2.tgz", - "integrity": "sha512-6Yg0ekpKICSjPswYOuC5sku/TSWaRYlA0qsXqJgM/d/4pLPHPuTxK7Nbf7jFKzAeedUhR8C7K9Uv63FBsSo8xQ==", - "dev": true - }, - "qs": { - "version": "6.11.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", - "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", - "requires": { - "side-channel": "^1.0.4" - } - }, - "range-parser": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", - "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" - }, - "raw-body": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", - "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", - "requires": { - "bytes": "3.1.2", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" - } - }, - "react": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", - "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==", - "peer": true, - "requires": { - "loose-envify": "^1.1.0" - } - }, - "react-dom": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz", - "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==", - "peer": true, - "requires": { - "loose-envify": "^1.1.0", - "scheduler": "^0.23.0" - } - }, - "react-is": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", - "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", - "dev": true - }, - "readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "dev": true, - "requires": { - "picomatch": "^2.2.1" - } - }, - "reflect-metadata": { - "version": "0.1.13", - "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz", - "integrity": "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==" - }, - "require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", - "dev": true - }, - "resolve": { - "version": "1.22.2", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.2.tgz", - "integrity": "sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==", - "dev": true, - "requires": { - "is-core-module": "^2.11.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - } - }, - "resolve-cwd": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", - "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", - "dev": true, - "requires": { - "resolve-from": "^5.0.0" - } - }, - "resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true - }, - "resolve.exports": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.2.tgz", - "integrity": "sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==", - "dev": true - }, - "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" - }, - "safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" - }, - "scheduler": { - "version": "0.23.0", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz", - "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==", - "peer": true, - "requires": { - "loose-envify": "^1.1.0" - } - }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - }, - "send": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", - "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", - "requires": { - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "mime": "1.6.0", - "ms": "2.1.3", - "on-finished": "2.4.1", - "range-parser": "~1.2.1", - "statuses": "2.0.1" - }, - "dependencies": { - "ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" - } - } - }, - "serve-static": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", - "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", - "requires": { - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", - "send": "0.18.0" - } - }, - "setprototypeof": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", - "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" - }, - "shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "requires": { - "shebang-regex": "^3.0.0" - } - }, - "shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true - }, - "side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", - "requires": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" - } - }, - "signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true - }, - "simple-update-notifier": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-1.1.0.tgz", - "integrity": "sha512-VpsrsJSUcJEseSbMHkrsrAVSdvVS5I96Qo1QAQ4FxQ9wXFcB+pjj7FB7/us9+GcgfW4ziHtYMc1J0PLczb55mg==", - "dev": true, - "requires": { - "semver": "~7.0.0" - }, - "dependencies": { - "semver": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", - "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", - "dev": true - } - } - }, - "sisteransi": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", - "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", - "dev": true - }, - "slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true - }, - "sorted-array-functions": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/sorted-array-functions/-/sorted-array-functions-1.3.0.tgz", - "integrity": "sha512-2sqgzeFlid6N4Z2fUQ1cvFmTOLRi/sEDzSQ0OKYchqgoPmQBVyM3959qYx3fpS6Esef80KjmpgPeEr028dP3OA==" - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "source-map-js": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", - "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==" - }, - "source-map-support": { - "version": "0.5.13", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", - "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", - "dev": true, - "requires": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", - "dev": true - }, - "stack-utils": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", - "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", - "dev": true, - "requires": { - "escape-string-regexp": "^2.0.0" - } - }, - "statuses": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==" - }, - "streamsearch": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", - "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==" - }, - "string-length": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", - "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", - "dev": true, - "requires": { - "char-regex": "^1.0.2", - "strip-ansi": "^6.0.0" - } - }, - "string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - } - }, - "strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.1" - } - }, - "strip-bom": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", - "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", - "dev": true - }, - "strip-final-newline": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", - "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", - "dev": true - }, - "strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true - }, - "styled-jsx": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.1.1.tgz", - "integrity": "sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==", - "requires": { - "client-only": "0.0.1" - } - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - }, - "supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "dev": true - }, - "test-exclude": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", - "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", - "dev": true, - "requires": { - "@istanbuljs/schema": "^0.1.2", - "glob": "^7.1.4", - "minimatch": "^3.0.4" - } - }, - "tmpl": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", - "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", - "dev": true - }, - "to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", - "dev": true - }, - "to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "requires": { - "is-number": "^7.0.0" - } - }, - "toidentifier": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", - "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==" - }, - "touch": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/touch/-/touch-3.1.0.tgz", - "integrity": "sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA==", - "dev": true, - "requires": { - "nopt": "~1.0.10" - } - }, - "ts-jest": { - "version": "29.1.0", - "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.1.0.tgz", - "integrity": "sha512-ZhNr7Z4PcYa+JjMl62ir+zPiNJfXJN6E8hSLnaUKhOgqcn8vb3e537cpkd0FuAfRK3sR1LSqM1MOhliXNgOFPA==", - "dev": true, - "requires": { - "bs-logger": "0.x", - "fast-json-stable-stringify": "2.x", - "jest-util": "^29.0.0", - "json5": "^2.2.3", - "lodash.memoize": "4.x", - "make-error": "1.x", - "semver": "7.x", - "yargs-parser": "^21.0.1" - }, - "dependencies": { - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "semver": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.0.tgz", - "integrity": "sha512-+XC0AD/R7Q2mPSRuy2Id0+CGTZ98+8f+KvwirxOKIEyid+XSx6HbC63p+O4IndTHuX5Z+JxQ0TghCkO5Cg/2HA==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - } - } - }, - "ts-node": { - "version": "10.9.1", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz", - "integrity": "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==", - "requires": { - "@cspotcode/source-map-support": "^0.8.0", - "@tsconfig/node10": "^1.0.7", - "@tsconfig/node12": "^1.0.7", - "@tsconfig/node14": "^1.0.0", - "@tsconfig/node16": "^1.0.2", - "acorn": "^8.4.1", - "acorn-walk": "^8.1.1", - "arg": "^4.1.0", - "create-require": "^1.1.0", - "diff": "^4.0.1", - "make-error": "^1.1.1", - "v8-compile-cache-lib": "^3.0.1", - "yn": "3.1.1" - } - }, - "tslib": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", - "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==" - }, - "type-detect": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", - "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", - "dev": true - }, - "type-fest": { - "version": "0.21.3", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", - "dev": true - }, - "type-is": { - "version": "1.6.18", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", - "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", - "requires": { - "media-typer": "0.3.0", - "mime-types": "~2.1.24" - } - }, - "typedi": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/typedi/-/typedi-0.10.0.tgz", - "integrity": "sha512-v3UJF8xm68BBj6AF4oQML3ikrfK2c9EmZUyLOfShpJuItAqVBHWP/KtpGinkSsIiP6EZyyb6Z3NXyW9dgS9X1w==" - }, - "typescript": { - "version": "4.9.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", - "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==" - }, - "undefsafe": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.5.tgz", - "integrity": "sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==", - "dev": true - }, - "unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==" - }, - "update-browserslist-db": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz", - "integrity": "sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==", - "dev": true, - "requires": { - "escalade": "^3.1.1", - "picocolors": "^1.0.0" - } - }, - "utils-merge": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==" - }, - "uuid": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.0.tgz", - "integrity": "sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==" - }, - "v8-compile-cache-lib": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", - "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==" - }, - "v8-to-istanbul": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.1.0.tgz", - "integrity": "sha512-6z3GW9x8G1gd+JIIgQQQxXuiJtCXeAjp6RaPEPLv62mH3iPHPxV6W3robxtCzNErRo6ZwTmzWhsbNvjyEBKzKA==", - "dev": true, - "requires": { - "@jridgewell/trace-mapping": "^0.3.12", - "@types/istanbul-lib-coverage": "^2.0.1", - "convert-source-map": "^1.6.0" - }, - "dependencies": { - "convert-source-map": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", - "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", - "dev": true - } - } - }, - "validator": { - "version": "13.9.0", - "resolved": "https://registry.npmjs.org/validator/-/validator-13.9.0.tgz", - "integrity": "sha512-B+dGG8U3fdtM0/aNK4/X8CXq/EcxU2WPrPEkJGslb47qyHsxmbggTWK0yEA4qnYVNF+nxNlN88o14hIcPmSIEA==" - }, - "vary": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==" - }, - "walker": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", - "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", - "dev": true, - "requires": { - "makeerror": "1.0.12" - } - }, - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - }, - "wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "requires": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - } - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "dev": true - }, - "write-file-atomic": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", - "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", - "dev": true, - "requires": { - "imurmurhash": "^0.1.4", - "signal-exit": "^3.0.7" - } - }, - "y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "dev": true - }, - "yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true - }, - "yargs": { - "version": "17.7.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.1.tgz", - "integrity": "sha512-cwiTb08Xuv5fqF4AovYacTFNxk62th7LKJ6BL9IGUpTJrWoU7/7WdQGTP2SjKf1dUNBGzDd28p/Yfs/GI6JrLw==", - "dev": true, - "requires": { - "cliui": "^8.0.1", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.3", - "y18n": "^5.0.5", - "yargs-parser": "^21.1.1" - } - }, - "yargs-parser": { - "version": "21.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", - "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", - "dev": true - }, - "yn": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", - "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==" - }, - "yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true - } } } diff --git a/package.json b/package.json index 94b842d1..58892f98 100644 --- a/package.json +++ b/package.json @@ -17,20 +17,16 @@ "@Test": "./dist/test" }, "scripts": { - "api:startonly": "node ./dist/entries/App.js", + "build-db": "npx prisma migrate dev", "build": "tsc", - "api:start": "tsc && npm run migrate && npx prisma db seed && node ./dist/entries/App.js", - "start": "tsc && npm run api:startonly", + "start": "tsc && node ./dist/entries/App.js", "dev": "nodemon -V", - "api:dev": "nodemon", "build:test": "tsc && mocha ./dist/entries/Test.js", "format": "prettier --write src", "migrate:test": "dotenv -e .env.test -- npx prisma migrate deploy", - "migrate": "npx prisma migrate deploy", - "docker:up": "docker-compose up -d", "docker:up:test": "docker-compose -f docker-compose-test.yml up -d", - "docker:down": "docker-compose -f docker-compose-test.yml down", - "test": "tsc && npm run docker:up:test && npm run migrate:test && dotenv -e .env.test -- jest -i --verbose ./dist/test/* && npm run docker:down" + "docker:down:test": "docker-compose down", + "test": "tsc && npm run docker:up:test && npm run migrate:test && dotenv -e .env.test -- jest -i --verbose ./dist/test/* && npm run docker:down:test" }, "repository": { "type": "git", diff --git a/src/app/api/super-admin/CustomersController.ts b/src/app/api/super-admin/CustomersController.ts index 5f990ebc..b43c76e6 100644 --- a/src/app/api/super-admin/CustomersController.ts +++ b/src/app/api/super-admin/CustomersController.ts @@ -107,11 +107,18 @@ export default class CustomersController extends ApiController { try { const uid = req.params["uid"]; if (!uid) { - throw new Error("No uuid provided"); + throw new Error("No uid provided"); } - //call service to get prisma entity - const customerEntity: Customers = await this.customersService.getByUid(uid); + let customerEntity: Customers; + //get query + if (req.query["q"]) { + const query = JSON.parse(req.query["q"] as string); + customerEntity = await this.customersService.getByUid(uid, query); + } else { + //call service to get prisma entity + customerEntity = await this.customersService.getByUid(uid); + } //Hydrate ressource with prisma entity const customer = ObjectHydrate.hydrate(new Customer(), customerEntity, { strategy: "exposeAll" }); diff --git a/src/app/api/super-admin/DeedTypesController.ts b/src/app/api/super-admin/DeedTypesController.ts index d0071bf1..ac4bf9c6 100644 --- a/src/app/api/super-admin/DeedTypesController.ts +++ b/src/app/api/super-admin/DeedTypesController.ts @@ -77,7 +77,7 @@ export default class DeedTypesController extends ApiController { try { const uid = req.params["uid"]; if (!uid) { - throw new Error("No uuid provided"); + throw new Error("No uid provided"); } //init DeedType resource with request body values const deedTypeEntity = new DeedType(); @@ -111,11 +111,18 @@ export default class DeedTypesController extends ApiController { try { const uid = req.params["uid"]; if (!uid) { - throw new Error("No uuid provided"); + throw new Error("No uid provided"); } - //call service to get prisma entity - const deedTypeEntity: DeedTypes = await this.deedTypesService.getByUid(uid); + let deedTypeEntity: DeedTypes; + //get query + if (req.query["q"]) { + const query = JSON.parse(req.query["q"] as string); + deedTypeEntity = await this.deedTypesService.getByUid(uid, query); + } else { + //call service to get prisma entity + deedTypeEntity = await this.deedTypesService.getByUid(uid); + } //Hydrate ressource with prisma entity const deedType = ObjectHydrate.hydrate(new DeedType(), deedTypeEntity, { strategy: "exposeAll" }); diff --git a/src/app/api/super-admin/DeedsController.ts b/src/app/api/super-admin/DeedsController.ts index 2993bcdf..df6a836d 100644 --- a/src/app/api/super-admin/DeedsController.ts +++ b/src/app/api/super-admin/DeedsController.ts @@ -46,7 +46,7 @@ export default class DeedsController extends ApiController { try { const uid = req.params["uid"]; if (!uid) { - throw new Error("No uuid provided"); + throw new Error("No uid provided"); } //call service to get prisma entity diff --git a/src/app/api/super-admin/DocumentTypesController.ts b/src/app/api/super-admin/DocumentTypesController.ts index 8556210e..e8fe1cc3 100644 --- a/src/app/api/super-admin/DocumentTypesController.ts +++ b/src/app/api/super-admin/DocumentTypesController.ts @@ -74,7 +74,7 @@ export default class DocumentTypesController extends ApiController { try { const uid = req.params["uid"]; if (!uid) { - throw new Error("No uuid provided"); + throw new Error("No uid provided"); } //init DocumentType resource with request body values const documentTypeEntity = new DocumentType(); @@ -107,12 +107,19 @@ export default class DocumentTypesController extends ApiController { try { const uid = req.params["uid"]; if (!uid) { - throw new Error("No uuid provided"); + throw new Error("No uid provided"); } - //call service to get prisma entity - const documentTypeEntity: DocumentTypes = await this.documentTypesService.getByUid(uid); - + let documentTypeEntity: DocumentTypes; + //get query + if (req.query["q"]) { + const query = JSON.parse(req.query["q"] as string); + documentTypeEntity = await this.documentTypesService.getByUid(uid, query); + } else { + //call service to get prisma entity + documentTypeEntity = await this.documentTypesService.getByUid(uid); + } + //Hydrate ressource with prisma entity const user = ObjectHydrate.hydrate(new DocumentType(), documentTypeEntity, { strategy: "exposeAll" }); diff --git a/src/app/api/super-admin/DocumentsController.ts b/src/app/api/super-admin/DocumentsController.ts index 7c1c51f2..f1d2c798 100644 --- a/src/app/api/super-admin/DocumentsController.ts +++ b/src/app/api/super-admin/DocumentsController.ts @@ -77,7 +77,7 @@ export default class DocumentsController extends ApiController { try { const uid = req.params["uid"]; if (!uid) { - throw new Error("No uuid provided"); + throw new Error("No uid provided"); } //init Document resource with request body values @@ -109,7 +109,7 @@ export default class DocumentsController extends ApiController { try { const uid = req.params["uid"]; if (!uid) { - throw new Error("No uuid provided"); + throw new Error("No uid provided"); } //call service to get prisma entity @@ -134,11 +134,18 @@ export default class DocumentsController extends ApiController { try { const uid = req.params["uid"]; if (!uid) { - throw new Error("No uuid provided"); + throw new Error("No uid provided"); } - //call service to get prisma entity - const documentEntity: Documents = await this.documentsService.getByUid(uid); + let documentEntity: Documents; + //get query + if (req.query["q"]) { + const query = JSON.parse(req.query["q"] as string); + documentEntity = await this.documentsService.getByUid(uid, query); + } else { + //call service to get prisma entity + documentEntity = await this.documentsService.getByUid(uid); + } //Hydrate ressource with prisma entity const document = ObjectHydrate.hydrate(new Document(), documentEntity, { strategy: "exposeAll" }); diff --git a/src/app/api/super-admin/OfficeFoldersController.ts b/src/app/api/super-admin/OfficeFoldersController.ts index 308a4168..b123e8cb 100644 --- a/src/app/api/super-admin/OfficeFoldersController.ts +++ b/src/app/api/super-admin/OfficeFoldersController.ts @@ -27,7 +27,7 @@ export default class OfficeFoldersController extends ApiController { const prismaEntity: OfficeFolders[] = await this.officeFoldersService.get(query); //Hydrate ressource with prisma entity const officeFolders = ObjectHydrate.map(OfficeFolder, prismaEntity, { - strategy: "exposeAll", + strategy: "exposeAll", enableImplicitConversion: true }); //success this.httpSuccess(response, officeFolders); @@ -53,7 +53,7 @@ export default class OfficeFoldersController extends ApiController { const prismaEntityCreated = await this.officeFoldersService.create(officeFolderEntity); //Hydrate ressource with prisma entity const officeFolderEntityCreated = ObjectHydrate.hydrate(new OfficeFolder(), prismaEntityCreated, { - strategy: "exposeAll", + strategy: "exposeAll", enableImplicitConversion: true }); //success this.httpSuccess(response, officeFolderEntityCreated); @@ -71,7 +71,7 @@ export default class OfficeFoldersController extends ApiController { try { const uid = req.params["uid"]; if (!uid) { - throw new Error("No uuid provided"); + throw new Error("No uid provided"); } //init IUser resource with request body values const officeFolderEntity = new OfficeFolder(); @@ -105,11 +105,18 @@ export default class OfficeFoldersController extends ApiController { try { const uid = req.params["uid"]; if (!uid) { - throw new Error("No uuid provided"); + throw new Error("No uid provided"); } - //call service to get prisma entity - const officeFolderEntity: OfficeFolders = await this.officeFoldersService.getByUid(uid); + let officeFolderEntity: OfficeFolders; + //get query + if (req.query["q"]) { + const query = JSON.parse(req.query["q"] as string); + officeFolderEntity = await this.officeFoldersService.getByUid(uid, query); + } else { + //call service to get prisma entity + officeFolderEntity = await this.officeFoldersService.getByUid(uid); + } //Hydrate ressource with prisma entity const officeFolder = ObjectHydrate.hydrate(new OfficeFolder(), officeFolderEntity, { strategy: "exposeAll" }); diff --git a/src/app/api/super-admin/OfficesController.ts b/src/app/api/super-admin/OfficesController.ts index cd822332..3d0c835e 100644 --- a/src/app/api/super-admin/OfficesController.ts +++ b/src/app/api/super-admin/OfficesController.ts @@ -65,7 +65,7 @@ export default class OfficesController extends ApiController { try { const uid = req.params["uid"]; if (!uid) { - throw new Error("No uuid provided"); + throw new Error("No uid provided"); } //init IUser resource with request body values const officeEntity = new OfficeRessource(); @@ -93,10 +93,17 @@ export default class OfficesController extends ApiController { try { const uid = req.params["uid"]; if (!uid) { - throw new Error("No uuid provided"); + throw new Error("No uid provided"); + } + let officeEntity: Offices; + //get query + if (req.query["q"]) { + const query = JSON.parse(req.query["q"] as string); + officeEntity = await this.officesService.getByUid(uid, query); + } else { + //call service to get prisma entity + officeEntity = await this.officesService.getByUid(uid); } - //call service to get prisma entity - const officeEntity: Offices = await this.officesService.getByUid(uid); //Hydrate ressource with prisma entity const office = ObjectHydrate.hydrate(new OfficeRessource(), officeEntity, { strategy: "exposeAll" }); //success diff --git a/src/app/api/super-admin/UsersController.ts b/src/app/api/super-admin/UsersController.ts index 909bab94..9726c8e1 100644 --- a/src/app/api/super-admin/UsersController.ts +++ b/src/app/api/super-admin/UsersController.ts @@ -5,8 +5,9 @@ import UsersService from "@Services/super-admin/UsersService/UsersService"; import { Service } from "typedi"; import ObjectHydrate from "@Common/helpers/ObjectHydrate"; import { validateOrReject } from "class-validator"; -import User from "le-coffre-resources/dist/SuperAdmin"; +import User from "le-coffre-resources/dist/Notary"; import { Users } from "@prisma/client"; +import { plainToInstance } from "class-transformer"; @Controller() @Service() @@ -28,7 +29,10 @@ export default class UsersController extends ApiController { const usersEntity: Users[] = await this.usersService.get(query); //Hydrate ressource with prisma entity - const users = ObjectHydrate.map(User, usersEntity, { strategy: "exposeAll" }); + const users = plainToInstance(User, usersEntity, { + enableImplicitConversion: true, + excludeExtraneousValues: false, + }); //success this.httpSuccess(response, users); @@ -75,7 +79,7 @@ export default class UsersController extends ApiController { try { const uid = req.params["uid"]; if (!uid) { - throw new Error("No uuid provided"); + throw new Error("No uid provided"); } //init IUser resource with request body values const userEntity = new User(); @@ -108,11 +112,17 @@ export default class UsersController extends ApiController { try { const uid = req.params["uid"]; if (!uid) { - throw new Error("No uuid provided"); + throw new Error("No uid provided"); + } + let userEntity: Users; + //get query + if (req.query["q"]) { + const query = JSON.parse(req.query["q"] as string); + userEntity = await this.usersService.getByUid(uid, query); + } else { + //call service to get prisma entity + userEntity = await this.usersService.getByUid(uid); } - - //call service to get prisma entity - const userEntity: Users = await this.usersService.getByUid(uid); //Hydrate ressource with prisma entity const user = ObjectHydrate.hydrate(new User(), userEntity, { strategy: "exposeAll" }); diff --git a/src/common/databases/migrations/20230321102005_v0/migration.sql b/src/common/databases/migrations/20230321102005_v0/migration.sql deleted file mode 100644 index 0a36da48..00000000 --- a/src/common/databases/migrations/20230321102005_v0/migration.sql +++ /dev/null @@ -1,413 +0,0 @@ --- CreateEnum -CREATE TYPE "ECivility" AS ENUM ('MALE', 'FEMALE', 'OTHERS'); - --- CreateEnum -CREATE TYPE "EFolderStatus" AS ENUM ('LIVE', 'ARCHIVED'); - --- CreateEnum -CREATE TYPE "EOfficeStatus" AS ENUM ('ACTIVATED', 'DESACTIVATED'); - --- CreateEnum -CREATE TYPE "ENotificationStatus" AS ENUM ('READ', 'UNREAD'); - --- CreateEnum -CREATE TYPE "ECustomerStatus" AS ENUM ('VALIDATED', 'PENDING', 'ERRONED'); - --- CreateEnum -CREATE TYPE "EDocumentStatus" AS ENUM ('ASKED', 'DEPOSITED', 'VALIDATED', 'ANCHORED', 'REFUSED'); - --- CreateTable -CREATE TABLE "addresses" ( - "uuid" TEXT NOT NULL, - "address" VARCHAR(255) NOT NULL, - "city" VARCHAR(255) NOT NULL, - "zip_code" INTEGER NOT NULL, - "created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, - "updated_at" TIMESTAMP(3) NOT NULL, - - CONSTRAINT "addresses_pkey" PRIMARY KEY ("uuid") -); - --- CreateTable -CREATE TABLE "contacts" ( - "uuid" TEXT NOT NULL, - "first_name" VARCHAR(255) NOT NULL, - "last_name" VARCHAR(255) NOT NULL, - "email" VARCHAR(255) NOT NULL, - "phone_number" VARCHAR(50), - "cell_phone_number" VARCHAR(50), - "civility" "ECivility" NOT NULL DEFAULT 'MALE', - "address_uuid" VARCHAR(255) NOT NULL, - "created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, - "updated_at" TIMESTAMP(3) NOT NULL, - - CONSTRAINT "contacts_pkey" PRIMARY KEY ("uuid") -); - --- CreateTable -CREATE TABLE "users" ( - "uuid" TEXT NOT NULL, - "idNot" VARCHAR(255) NOT NULL, - "contact_uuid" VARCHAR(255) NOT NULL, - "created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, - "updated_at" TIMESTAMP(3) NOT NULL, - "office_uuid" VARCHAR(255) NOT NULL, - - CONSTRAINT "users_pkey" PRIMARY KEY ("uuid") -); - --- CreateTable -CREATE TABLE "offices" ( - "uuid" TEXT NOT NULL, - "idNot" VARCHAR(255) NOT NULL, - "name" VARCHAR(255) NOT NULL, - "crpcen" VARCHAR(255) NOT NULL, - "address_uuid" VARCHAR(255) NOT NULL, - "office_status" "EOfficeStatus" NOT NULL DEFAULT 'DESACTIVATED', - "created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, - "updated_at" TIMESTAMP(3) NOT NULL, - - CONSTRAINT "offices_pkey" PRIMARY KEY ("uuid") -); - --- CreateTable -CREATE TABLE "customers" ( - "uuid" TEXT NOT NULL, - "status" "ECustomerStatus" NOT NULL DEFAULT 'PENDING', - "contact_uuid" VARCHAR(255) NOT NULL, - "created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, - "updated_at" TIMESTAMP(3) NOT NULL, - - CONSTRAINT "customers_pkey" PRIMARY KEY ("uuid") -); - --- CreateTable -CREATE TABLE "user_has_notifications" ( - "uuid" TEXT NOT NULL, - "user_uuid" VARCHAR(255) NOT NULL, - "notification_uuid" VARCHAR(255) NOT NULL, - "notification_status" "ENotificationStatus" NOT NULL DEFAULT 'UNREAD', - "created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, - "updated_at" TIMESTAMP(3) NOT NULL, - - CONSTRAINT "user_has_notifications_pkey" PRIMARY KEY ("uuid") -); - --- CreateTable -CREATE TABLE "notifications" ( - "uuid" TEXT NOT NULL, - "message" VARCHAR(255) NOT NULL, - "redirection_url" VARCHAR(255) NOT NULL, - "created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, - "updated_at" TIMESTAMP(3) NOT NULL, - - CONSTRAINT "notifications_pkey" PRIMARY KEY ("uuid") -); - --- CreateTable -CREATE TABLE "office_folders" ( - "uuid" TEXT NOT NULL, - "folder_number" VARCHAR(255) NOT NULL, - "name" VARCHAR(255) NOT NULL, - "description" VARCHAR(255), - "archived_description" VARCHAR(255), - "status" "EFolderStatus" NOT NULL DEFAULT 'LIVE', - "deed_uuid" VARCHAR(255) NOT NULL, - "office_uuid" VARCHAR(255) NOT NULL, - "created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, - "updated_at" TIMESTAMP(3) NOT NULL, - - CONSTRAINT "office_folders_pkey" PRIMARY KEY ("uuid") -); - --- CreateTable -CREATE TABLE "office_folder_has_customers" ( - "uuid" TEXT NOT NULL, - "customer_uuid" VARCHAR(255) NOT NULL, - "office_folder_uuid" VARCHAR(255) NOT NULL, - "created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, - "updated_at" TIMESTAMP(3) NOT NULL, - - CONSTRAINT "office_folder_has_customers_pkey" PRIMARY KEY ("uuid") -); - --- CreateTable -CREATE TABLE "office_folder_has_stakeholder" ( - "uuid" TEXT NOT NULL, - "office_folder_uuid" VARCHAR(255) NOT NULL, - "user_stakeholder_uuid" VARCHAR(255) NOT NULL, - "created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, - "updated_at" TIMESTAMP(3) NOT NULL, - - CONSTRAINT "office_folder_has_stakeholder_pkey" PRIMARY KEY ("uuid") -); - --- CreateTable -CREATE TABLE "documents" ( - "uuid" TEXT NOT NULL, - "document_status" "EDocumentStatus" NOT NULL DEFAULT 'ASKED', - "type_uuid" VARCHAR(255) NOT NULL, - "blockchain_anchor_uuid" VARCHAR(255), - "folder_uuid" VARCHAR(255) NOT NULL, - "depositor_uuid" VARCHAR(255) NOT NULL, - "created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, - "updated_at" TIMESTAMP(3) NOT NULL, - - CONSTRAINT "documents_pkey" PRIMARY KEY ("uuid") -); - --- CreateTable -CREATE TABLE "document_history" ( - "uuid" TEXT NOT NULL, - "document_status" "EDocumentStatus" NOT NULL DEFAULT 'ASKED', - "refused_reason" VARCHAR(255), - "document_uuid" VARCHAR(255) NOT NULL, - "created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, - "updated_at" TIMESTAMP(3) NOT NULL, - - CONSTRAINT "document_history_pkey" PRIMARY KEY ("uuid") -); - --- CreateTable -CREATE TABLE "files" ( - "uuid" TEXT NOT NULL, - "document_uuid" VARCHAR(255) NOT NULL, - "file_path" VARCHAR(255), - "created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, - "updated_at" TIMESTAMP(3) NOT NULL, - - CONSTRAINT "files_pkey" PRIMARY KEY ("uuid") -); - --- CreateTable -CREATE TABLE "blockchain_anchors" ( - "uuid" TEXT NOT NULL, - "smartSigJobId" VARCHAR(255) NOT NULL, - "created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, - "updated_at" TIMESTAMP(3) NOT NULL, - - CONSTRAINT "blockchain_anchors_pkey" PRIMARY KEY ("uuid") -); - --- CreateTable -CREATE TABLE "document_types" ( - "uuid" TEXT NOT NULL, - "name" VARCHAR(255) NOT NULL, - "public_description" VARCHAR(255) NOT NULL, - "private_description" VARCHAR(255), - "archived_at" TIMESTAMP(3), - "created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, - "updated_at" TIMESTAMP(3) NOT NULL, - - CONSTRAINT "document_types_pkey" PRIMARY KEY ("uuid") -); - --- CreateTable -CREATE TABLE "deed_has_document_types" ( - "uuid" TEXT NOT NULL, - "document_type_uuid" VARCHAR(255) NOT NULL, - "deed_uuid" VARCHAR(255) NOT NULL, - "created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, - "updated_at" TIMESTAMP(3) NOT NULL, - - CONSTRAINT "deed_has_document_types_pkey" PRIMARY KEY ("uuid") -); - --- CreateTable -CREATE TABLE "deed" ( - "uuid" TEXT NOT NULL, - "deed_type_uuid" VARCHAR(255) NOT NULL, - "created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, - "updated_at" TIMESTAMP(3) NOT NULL, - - CONSTRAINT "deed_pkey" PRIMARY KEY ("uuid") -); - --- CreateTable -CREATE TABLE "deed_types" ( - "uuid" TEXT NOT NULL, - "name" VARCHAR(255) NOT NULL, - "description" VARCHAR(255) NOT NULL, - "archived_at" TIMESTAMP(3), - "office_uuid" VARCHAR(255) NOT NULL, - "created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, - "updated_at" TIMESTAMP(3) NOT NULL, - - CONSTRAINT "deed_types_pkey" PRIMARY KEY ("uuid") -); - --- CreateTable -CREATE TABLE "deed_type_has_document_types" ( - "uuid" TEXT NOT NULL, - "document_type_uuid" VARCHAR(255) NOT NULL, - "deed_type_uuid" VARCHAR(255) NOT NULL, - "created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, - "updated_at" TIMESTAMP(3) NOT NULL, - - CONSTRAINT "deed_type_has_document_types_pkey" PRIMARY KEY ("uuid") -); - --- CreateIndex -CREATE UNIQUE INDEX "addresses_uuid_key" ON "addresses"("uuid"); - --- CreateIndex -CREATE UNIQUE INDEX "contacts_uuid_key" ON "contacts"("uuid"); - --- CreateIndex -CREATE UNIQUE INDEX "contacts_address_uuid_key" ON "contacts"("address_uuid"); - --- CreateIndex -CREATE UNIQUE INDEX "users_uuid_key" ON "users"("uuid"); - --- CreateIndex -CREATE UNIQUE INDEX "users_idNot_key" ON "users"("idNot"); - --- CreateIndex -CREATE UNIQUE INDEX "users_contact_uuid_key" ON "users"("contact_uuid"); - --- CreateIndex -CREATE UNIQUE INDEX "offices_uuid_key" ON "offices"("uuid"); - --- CreateIndex -CREATE UNIQUE INDEX "offices_idNot_key" ON "offices"("idNot"); - --- CreateIndex -CREATE UNIQUE INDEX "offices_crpcen_key" ON "offices"("crpcen"); - --- CreateIndex -CREATE UNIQUE INDEX "offices_address_uuid_key" ON "offices"("address_uuid"); - --- CreateIndex -CREATE UNIQUE INDEX "customers_uuid_key" ON "customers"("uuid"); - --- CreateIndex -CREATE UNIQUE INDEX "customers_contact_uuid_key" ON "customers"("contact_uuid"); - --- CreateIndex -CREATE UNIQUE INDEX "user_has_notifications_uuid_key" ON "user_has_notifications"("uuid"); - --- CreateIndex -CREATE UNIQUE INDEX "notifications_uuid_key" ON "notifications"("uuid"); - --- CreateIndex -CREATE UNIQUE INDEX "office_folders_uuid_key" ON "office_folders"("uuid"); - --- CreateIndex -CREATE UNIQUE INDEX "office_folders_deed_uuid_key" ON "office_folders"("deed_uuid"); - --- CreateIndex -CREATE UNIQUE INDEX "office_folder_has_customers_uuid_key" ON "office_folder_has_customers"("uuid"); - --- CreateIndex -CREATE UNIQUE INDEX "office_folder_has_stakeholder_uuid_key" ON "office_folder_has_stakeholder"("uuid"); - --- CreateIndex -CREATE UNIQUE INDEX "documents_uuid_key" ON "documents"("uuid"); - --- CreateIndex -CREATE UNIQUE INDEX "document_history_uuid_key" ON "document_history"("uuid"); - --- CreateIndex -CREATE UNIQUE INDEX "files_uuid_key" ON "files"("uuid"); - --- CreateIndex -CREATE UNIQUE INDEX "files_file_path_key" ON "files"("file_path"); - --- CreateIndex -CREATE UNIQUE INDEX "blockchain_anchors_uuid_key" ON "blockchain_anchors"("uuid"); - --- CreateIndex -CREATE UNIQUE INDEX "blockchain_anchors_smartSigJobId_key" ON "blockchain_anchors"("smartSigJobId"); - --- CreateIndex -CREATE UNIQUE INDEX "document_types_uuid_key" ON "document_types"("uuid"); - --- CreateIndex -CREATE UNIQUE INDEX "deed_has_document_types_uuid_key" ON "deed_has_document_types"("uuid"); - --- CreateIndex -CREATE UNIQUE INDEX "deed_uuid_key" ON "deed"("uuid"); - --- CreateIndex -CREATE UNIQUE INDEX "deed_deed_type_uuid_key" ON "deed"("deed_type_uuid"); - --- CreateIndex -CREATE UNIQUE INDEX "deed_types_uuid_key" ON "deed_types"("uuid"); - --- CreateIndex -CREATE UNIQUE INDEX "deed_type_has_document_types_uuid_key" ON "deed_type_has_document_types"("uuid"); - --- AddForeignKey -ALTER TABLE "contacts" ADD CONSTRAINT "contacts_address_uuid_fkey" FOREIGN KEY ("address_uuid") REFERENCES "addresses"("uuid") ON DELETE RESTRICT ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "users" ADD CONSTRAINT "users_contact_uuid_fkey" FOREIGN KEY ("contact_uuid") REFERENCES "contacts"("uuid") ON DELETE RESTRICT ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "users" ADD CONSTRAINT "users_office_uuid_fkey" FOREIGN KEY ("office_uuid") REFERENCES "offices"("uuid") ON DELETE RESTRICT ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "offices" ADD CONSTRAINT "offices_address_uuid_fkey" FOREIGN KEY ("address_uuid") REFERENCES "addresses"("uuid") ON DELETE RESTRICT ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "customers" ADD CONSTRAINT "customers_contact_uuid_fkey" FOREIGN KEY ("contact_uuid") REFERENCES "contacts"("uuid") ON DELETE RESTRICT ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "user_has_notifications" ADD CONSTRAINT "user_has_notifications_user_uuid_fkey" FOREIGN KEY ("user_uuid") REFERENCES "users"("uuid") ON DELETE RESTRICT ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "user_has_notifications" ADD CONSTRAINT "user_has_notifications_notification_uuid_fkey" FOREIGN KEY ("notification_uuid") REFERENCES "notifications"("uuid") ON DELETE RESTRICT ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "office_folders" ADD CONSTRAINT "office_folders_deed_uuid_fkey" FOREIGN KEY ("deed_uuid") REFERENCES "deed"("uuid") ON DELETE RESTRICT ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "office_folders" ADD CONSTRAINT "office_folders_office_uuid_fkey" FOREIGN KEY ("office_uuid") REFERENCES "offices"("uuid") ON DELETE RESTRICT ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "office_folder_has_customers" ADD CONSTRAINT "office_folder_has_customers_customer_uuid_fkey" FOREIGN KEY ("customer_uuid") REFERENCES "customers"("uuid") ON DELETE RESTRICT ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "office_folder_has_customers" ADD CONSTRAINT "office_folder_has_customers_office_folder_uuid_fkey" FOREIGN KEY ("office_folder_uuid") REFERENCES "office_folders"("uuid") ON DELETE RESTRICT ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "office_folder_has_stakeholder" ADD CONSTRAINT "office_folder_has_stakeholder_office_folder_uuid_fkey" FOREIGN KEY ("office_folder_uuid") REFERENCES "office_folders"("uuid") ON DELETE RESTRICT ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "office_folder_has_stakeholder" ADD CONSTRAINT "office_folder_has_stakeholder_user_stakeholder_uuid_fkey" FOREIGN KEY ("user_stakeholder_uuid") REFERENCES "users"("uuid") ON DELETE RESTRICT ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "documents" ADD CONSTRAINT "documents_type_uuid_fkey" FOREIGN KEY ("type_uuid") REFERENCES "document_types"("uuid") ON DELETE RESTRICT ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "documents" ADD CONSTRAINT "documents_blockchain_anchor_uuid_fkey" FOREIGN KEY ("blockchain_anchor_uuid") REFERENCES "blockchain_anchors"("uuid") ON DELETE SET NULL ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "documents" ADD CONSTRAINT "documents_folder_uuid_fkey" FOREIGN KEY ("folder_uuid") REFERENCES "office_folders"("uuid") ON DELETE RESTRICT ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "documents" ADD CONSTRAINT "documents_depositor_uuid_fkey" FOREIGN KEY ("depositor_uuid") REFERENCES "customers"("uuid") ON DELETE RESTRICT ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "document_history" ADD CONSTRAINT "document_history_document_uuid_fkey" FOREIGN KEY ("document_uuid") REFERENCES "documents"("uuid") ON DELETE RESTRICT ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "files" ADD CONSTRAINT "files_document_uuid_fkey" FOREIGN KEY ("document_uuid") REFERENCES "documents"("uuid") ON DELETE RESTRICT ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "deed_has_document_types" ADD CONSTRAINT "deed_has_document_types_document_type_uuid_fkey" FOREIGN KEY ("document_type_uuid") REFERENCES "document_types"("uuid") ON DELETE RESTRICT ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "deed_has_document_types" ADD CONSTRAINT "deed_has_document_types_deed_uuid_fkey" FOREIGN KEY ("deed_uuid") REFERENCES "deed"("uuid") ON DELETE RESTRICT ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "deed" ADD CONSTRAINT "deed_deed_type_uuid_fkey" FOREIGN KEY ("deed_type_uuid") REFERENCES "deed_types"("uuid") ON DELETE RESTRICT ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "deed_types" ADD CONSTRAINT "deed_types_office_uuid_fkey" FOREIGN KEY ("office_uuid") REFERENCES "offices"("uuid") ON DELETE RESTRICT ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "deed_type_has_document_types" ADD CONSTRAINT "deed_type_has_document_types_document_type_uuid_fkey" FOREIGN KEY ("document_type_uuid") REFERENCES "document_types"("uuid") ON DELETE RESTRICT ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "deed_type_has_document_types" ADD CONSTRAINT "deed_type_has_document_types_deed_type_uuid_fkey" FOREIGN KEY ("deed_type_uuid") REFERENCES "deed_types"("uuid") ON DELETE RESTRICT ON UPDATE CASCADE; diff --git a/src/common/databases/migrations/20230324125436_20230324102005_v1/migration.sql b/src/common/databases/migrations/20230324125436_20230324102005_v1/migration.sql deleted file mode 100644 index decf61d6..00000000 --- a/src/common/databases/migrations/20230324125436_20230324102005_v1/migration.sql +++ /dev/null @@ -1,92 +0,0 @@ -/* - Warnings: - - - A unique constraint covering the columns `[address]` on the table `addresses` will be added. If there are existing duplicate values, this will fail. - - A unique constraint covering the columns `[email]` on the table `contacts` will be added. If there are existing duplicate values, this will fail. - - A unique constraint covering the columns `[cell_phone_number]` on the table `contacts` will be added. If there are existing duplicate values, this will fail. - -*/ --- AlterTable -ALTER TABLE "addresses" ALTER COLUMN "created_at" DROP NOT NULL, -ALTER COLUMN "updated_at" DROP NOT NULL; - --- AlterTable -ALTER TABLE "blockchain_anchors" ALTER COLUMN "created_at" DROP NOT NULL, -ALTER COLUMN "updated_at" DROP NOT NULL; - --- AlterTable -ALTER TABLE "contacts" ALTER COLUMN "created_at" DROP NOT NULL, -ALTER COLUMN "updated_at" DROP NOT NULL; - --- AlterTable -ALTER TABLE "customers" ALTER COLUMN "created_at" DROP NOT NULL, -ALTER COLUMN "updated_at" DROP NOT NULL; - --- AlterTable -ALTER TABLE "deed" ALTER COLUMN "created_at" DROP NOT NULL, -ALTER COLUMN "updated_at" DROP NOT NULL; - --- AlterTable -ALTER TABLE "deed_has_document_types" ALTER COLUMN "created_at" DROP NOT NULL, -ALTER COLUMN "updated_at" DROP NOT NULL; - --- AlterTable -ALTER TABLE "deed_type_has_document_types" ALTER COLUMN "created_at" DROP NOT NULL, -ALTER COLUMN "updated_at" DROP NOT NULL; - --- AlterTable -ALTER TABLE "deed_types" ALTER COLUMN "created_at" DROP NOT NULL, -ALTER COLUMN "updated_at" DROP NOT NULL; - --- AlterTable -ALTER TABLE "document_history" ALTER COLUMN "created_at" DROP NOT NULL, -ALTER COLUMN "updated_at" DROP NOT NULL; - --- AlterTable -ALTER TABLE "document_types" ALTER COLUMN "created_at" DROP NOT NULL, -ALTER COLUMN "updated_at" DROP NOT NULL; - --- AlterTable -ALTER TABLE "documents" ALTER COLUMN "created_at" DROP NOT NULL, -ALTER COLUMN "updated_at" DROP NOT NULL; - --- AlterTable -ALTER TABLE "files" ALTER COLUMN "created_at" DROP NOT NULL, -ALTER COLUMN "updated_at" DROP NOT NULL; - --- AlterTable -ALTER TABLE "notifications" ALTER COLUMN "created_at" DROP NOT NULL, -ALTER COLUMN "updated_at" DROP NOT NULL; - --- AlterTable -ALTER TABLE "office_folder_has_customers" ALTER COLUMN "created_at" DROP NOT NULL, -ALTER COLUMN "updated_at" DROP NOT NULL; - --- AlterTable -ALTER TABLE "office_folder_has_stakeholder" ALTER COLUMN "created_at" DROP NOT NULL, -ALTER COLUMN "updated_at" DROP NOT NULL; - --- AlterTable -ALTER TABLE "office_folders" ALTER COLUMN "created_at" DROP NOT NULL, -ALTER COLUMN "updated_at" DROP NOT NULL; - --- AlterTable -ALTER TABLE "offices" ALTER COLUMN "created_at" DROP NOT NULL, -ALTER COLUMN "updated_at" DROP NOT NULL; - --- AlterTable -ALTER TABLE "user_has_notifications" ALTER COLUMN "created_at" DROP NOT NULL, -ALTER COLUMN "updated_at" DROP NOT NULL; - --- AlterTable -ALTER TABLE "users" ALTER COLUMN "created_at" DROP NOT NULL, -ALTER COLUMN "updated_at" DROP NOT NULL; - --- CreateIndex -CREATE UNIQUE INDEX "addresses_address_key" ON "addresses"("address"); - --- CreateIndex -CREATE UNIQUE INDEX "contacts_email_key" ON "contacts"("email"); - --- CreateIndex -CREATE UNIQUE INDEX "contacts_cell_phone_number_key" ON "contacts"("cell_phone_number"); diff --git a/src/common/databases/migrations/20230324130335_20230324_v2/migration.sql b/src/common/databases/migrations/20230324130335_20230324_v2/migration.sql deleted file mode 100644 index 9fd68230..00000000 --- a/src/common/databases/migrations/20230324130335_20230324_v2/migration.sql +++ /dev/null @@ -1,2 +0,0 @@ --- DropIndex -DROP INDEX "addresses_address_key"; diff --git a/src/common/databases/migrations/20230324171729_v3/migration.sql b/src/common/databases/migrations/20230324171729_v3/migration.sql deleted file mode 100644 index 0c38c4c9..00000000 --- a/src/common/databases/migrations/20230324171729_v3/migration.sql +++ /dev/null @@ -1,119 +0,0 @@ --- DropForeignKey -ALTER TABLE "contacts" DROP CONSTRAINT "contacts_address_uuid_fkey"; - --- DropForeignKey -ALTER TABLE "customers" DROP CONSTRAINT "customers_contact_uuid_fkey"; - --- DropForeignKey -ALTER TABLE "deed" DROP CONSTRAINT "deed_deed_type_uuid_fkey"; - --- DropForeignKey -ALTER TABLE "deed_has_document_types" DROP CONSTRAINT "deed_has_document_types_deed_uuid_fkey"; - --- DropForeignKey -ALTER TABLE "deed_has_document_types" DROP CONSTRAINT "deed_has_document_types_document_type_uuid_fkey"; - --- DropForeignKey -ALTER TABLE "deed_type_has_document_types" DROP CONSTRAINT "deed_type_has_document_types_deed_type_uuid_fkey"; - --- DropForeignKey -ALTER TABLE "deed_type_has_document_types" DROP CONSTRAINT "deed_type_has_document_types_document_type_uuid_fkey"; - --- DropForeignKey -ALTER TABLE "deed_types" DROP CONSTRAINT "deed_types_office_uuid_fkey"; - --- DropForeignKey -ALTER TABLE "document_history" DROP CONSTRAINT "document_history_document_uuid_fkey"; - --- DropForeignKey -ALTER TABLE "documents" DROP CONSTRAINT "documents_depositor_uuid_fkey"; - --- DropForeignKey -ALTER TABLE "files" DROP CONSTRAINT "files_document_uuid_fkey"; - --- DropForeignKey -ALTER TABLE "office_folder_has_customers" DROP CONSTRAINT "office_folder_has_customers_customer_uuid_fkey"; - --- DropForeignKey -ALTER TABLE "office_folder_has_customers" DROP CONSTRAINT "office_folder_has_customers_office_folder_uuid_fkey"; - --- DropForeignKey -ALTER TABLE "office_folder_has_stakeholder" DROP CONSTRAINT "office_folder_has_stakeholder_office_folder_uuid_fkey"; - --- DropForeignKey -ALTER TABLE "office_folder_has_stakeholder" DROP CONSTRAINT "office_folder_has_stakeholder_user_stakeholder_uuid_fkey"; - --- DropForeignKey -ALTER TABLE "office_folders" DROP CONSTRAINT "office_folders_deed_uuid_fkey"; - --- DropForeignKey -ALTER TABLE "office_folders" DROP CONSTRAINT "office_folders_office_uuid_fkey"; - --- DropForeignKey -ALTER TABLE "offices" DROP CONSTRAINT "offices_address_uuid_fkey"; - --- DropForeignKey -ALTER TABLE "user_has_notifications" DROP CONSTRAINT "user_has_notifications_notification_uuid_fkey"; - --- DropForeignKey -ALTER TABLE "users" DROP CONSTRAINT "users_contact_uuid_fkey"; - --- AddForeignKey -ALTER TABLE "contacts" ADD CONSTRAINT "contacts_address_uuid_fkey" FOREIGN KEY ("address_uuid") REFERENCES "addresses"("uuid") ON DELETE CASCADE ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "users" ADD CONSTRAINT "users_contact_uuid_fkey" FOREIGN KEY ("contact_uuid") REFERENCES "contacts"("uuid") ON DELETE CASCADE ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "offices" ADD CONSTRAINT "offices_address_uuid_fkey" FOREIGN KEY ("address_uuid") REFERENCES "addresses"("uuid") ON DELETE CASCADE ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "customers" ADD CONSTRAINT "customers_contact_uuid_fkey" FOREIGN KEY ("contact_uuid") REFERENCES "contacts"("uuid") ON DELETE CASCADE ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "user_has_notifications" ADD CONSTRAINT "user_has_notifications_notification_uuid_fkey" FOREIGN KEY ("notification_uuid") REFERENCES "notifications"("uuid") ON DELETE CASCADE ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "office_folders" ADD CONSTRAINT "office_folders_deed_uuid_fkey" FOREIGN KEY ("deed_uuid") REFERENCES "deed"("uuid") ON DELETE CASCADE ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "office_folders" ADD CONSTRAINT "office_folders_office_uuid_fkey" FOREIGN KEY ("office_uuid") REFERENCES "offices"("uuid") ON DELETE CASCADE ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "office_folder_has_customers" ADD CONSTRAINT "office_folder_has_customers_customer_uuid_fkey" FOREIGN KEY ("customer_uuid") REFERENCES "customers"("uuid") ON DELETE CASCADE ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "office_folder_has_customers" ADD CONSTRAINT "office_folder_has_customers_office_folder_uuid_fkey" FOREIGN KEY ("office_folder_uuid") REFERENCES "office_folders"("uuid") ON DELETE CASCADE ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "office_folder_has_stakeholder" ADD CONSTRAINT "office_folder_has_stakeholder_office_folder_uuid_fkey" FOREIGN KEY ("office_folder_uuid") REFERENCES "office_folders"("uuid") ON DELETE CASCADE ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "office_folder_has_stakeholder" ADD CONSTRAINT "office_folder_has_stakeholder_user_stakeholder_uuid_fkey" FOREIGN KEY ("user_stakeholder_uuid") REFERENCES "users"("uuid") ON DELETE CASCADE ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "documents" ADD CONSTRAINT "documents_depositor_uuid_fkey" FOREIGN KEY ("depositor_uuid") REFERENCES "customers"("uuid") ON DELETE CASCADE ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "document_history" ADD CONSTRAINT "document_history_document_uuid_fkey" FOREIGN KEY ("document_uuid") REFERENCES "documents"("uuid") ON DELETE CASCADE ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "files" ADD CONSTRAINT "files_document_uuid_fkey" FOREIGN KEY ("document_uuid") REFERENCES "documents"("uuid") ON DELETE CASCADE ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "deed_has_document_types" ADD CONSTRAINT "deed_has_document_types_document_type_uuid_fkey" FOREIGN KEY ("document_type_uuid") REFERENCES "document_types"("uuid") ON DELETE CASCADE ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "deed_has_document_types" ADD CONSTRAINT "deed_has_document_types_deed_uuid_fkey" FOREIGN KEY ("deed_uuid") REFERENCES "deed"("uuid") ON DELETE CASCADE ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "deed" ADD CONSTRAINT "deed_deed_type_uuid_fkey" FOREIGN KEY ("deed_type_uuid") REFERENCES "deed_types"("uuid") ON DELETE CASCADE ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "deed_types" ADD CONSTRAINT "deed_types_office_uuid_fkey" FOREIGN KEY ("office_uuid") REFERENCES "offices"("uuid") ON DELETE CASCADE ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "deed_type_has_document_types" ADD CONSTRAINT "deed_type_has_document_types_document_type_uuid_fkey" FOREIGN KEY ("document_type_uuid") REFERENCES "document_types"("uuid") ON DELETE CASCADE ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "deed_type_has_document_types" ADD CONSTRAINT "deed_type_has_document_types_deed_type_uuid_fkey" FOREIGN KEY ("deed_type_uuid") REFERENCES "deed_types"("uuid") ON DELETE CASCADE ON UPDATE CASCADE; diff --git a/src/common/databases/migrations/20230328095747_v4/migration.sql b/src/common/databases/migrations/20230328095747_v4/migration.sql deleted file mode 100644 index feb43abb..00000000 --- a/src/common/databases/migrations/20230328095747_v4/migration.sql +++ /dev/null @@ -1,8 +0,0 @@ --- DropForeignKey -ALTER TABLE "users" DROP CONSTRAINT "users_office_uuid_fkey"; - --- DropIndex -DROP INDEX "deed_deed_type_uuid_key"; - --- AddForeignKey -ALTER TABLE "users" ADD CONSTRAINT "users_office_uuid_fkey" FOREIGN KEY ("office_uuid") REFERENCES "offices"("uuid") ON DELETE CASCADE ON UPDATE CASCADE; diff --git a/src/common/databases/migrations/20230329084446_v5/migration.sql b/src/common/databases/migrations/20230329084446_v5/migration.sql deleted file mode 100644 index 8671fd3a..00000000 --- a/src/common/databases/migrations/20230329084446_v5/migration.sql +++ /dev/null @@ -1,8 +0,0 @@ -/* - Warnings: - - - A unique constraint covering the columns `[name,office_uuid]` on the table `deed_types` will be added. If there are existing duplicate values, this will fail. - -*/ --- CreateIndex -CREATE UNIQUE INDEX "deed_types_name_office_uuid_key" ON "deed_types"("name", "office_uuid"); diff --git a/src/common/databases/migrations/20230329145139_v6/migration.sql b/src/common/databases/migrations/20230329145139_v6/migration.sql deleted file mode 100644 index 13597e8e..00000000 --- a/src/common/databases/migrations/20230329145139_v6/migration.sql +++ /dev/null @@ -1,15 +0,0 @@ -/* - Warnings: - - - A unique constraint covering the columns `[name,office_uuid]` on the table `document_types` will be added. If there are existing duplicate values, this will fail. - - Added the required column `office_uuid` to the `document_types` table without a default value. This is not possible if the table is not empty. - -*/ --- AlterTable -ALTER TABLE "document_types" ADD COLUMN "office_uuid" VARCHAR(255) NOT NULL; - --- CreateIndex -CREATE UNIQUE INDEX "document_types_name_office_uuid_key" ON "document_types"("name", "office_uuid"); - --- AddForeignKey -ALTER TABLE "document_types" ADD CONSTRAINT "document_types_office_uuid_fkey" FOREIGN KEY ("office_uuid") REFERENCES "offices"("uuid") ON DELETE CASCADE ON UPDATE CASCADE; diff --git a/src/common/databases/migrations/20230330150236_v8/migration.sql b/src/common/databases/migrations/20230330150236_v8/migration.sql deleted file mode 100644 index 5bda5e34..00000000 --- a/src/common/databases/migrations/20230330150236_v8/migration.sql +++ /dev/null @@ -1,24 +0,0 @@ -/* - Warnings: - - - A unique constraint covering the columns `[deed_uuid,document_type_uuid]` on the table `deed_has_document_types` will be added. If there are existing duplicate values, this will fail. - - A unique constraint covering the columns `[deed_type_uuid,document_type_uuid]` on the table `deed_type_has_document_types` will be added. If there are existing duplicate values, this will fail. - - A unique constraint covering the columns `[customer_uuid,office_folder_uuid]` on the table `office_folder_has_customers` will be added. If there are existing duplicate values, this will fail. - - A unique constraint covering the columns `[office_folder_uuid,user_stakeholder_uuid]` on the table `office_folder_has_stakeholder` will be added. If there are existing duplicate values, this will fail. - - A unique constraint covering the columns `[notification_uuid,user_uuid]` on the table `user_has_notifications` will be added. If there are existing duplicate values, this will fail. - -*/ --- CreateIndex -CREATE UNIQUE INDEX "deed_has_document_types_deed_uuid_document_type_uuid_key" ON "deed_has_document_types"("deed_uuid", "document_type_uuid"); - --- CreateIndex -CREATE UNIQUE INDEX "deed_type_has_document_types_deed_type_uuid_document_type_u_key" ON "deed_type_has_document_types"("deed_type_uuid", "document_type_uuid"); - --- CreateIndex -CREATE UNIQUE INDEX "office_folder_has_customers_customer_uuid_office_folder_uui_key" ON "office_folder_has_customers"("customer_uuid", "office_folder_uuid"); - --- CreateIndex -CREATE UNIQUE INDEX "office_folder_has_stakeholder_office_folder_uuid_user_stake_key" ON "office_folder_has_stakeholder"("office_folder_uuid", "user_stakeholder_uuid"); - --- CreateIndex -CREATE UNIQUE INDEX "user_has_notifications_notification_uuid_user_uuid_key" ON "user_has_notifications"("notification_uuid", "user_uuid"); diff --git a/src/common/databases/migrations/20230417100704_v9/migration.sql b/src/common/databases/migrations/20230417100704_v9/migration.sql deleted file mode 100644 index 6a1b9b40..00000000 --- a/src/common/databases/migrations/20230417100704_v9/migration.sql +++ /dev/null @@ -1,20 +0,0 @@ -/* - Warnings: - - - You are about to drop the column `type_uuid` on the `documents` table. All the data in the column will be lost. - - Added the required column `document_type_uuid` to the `documents` table without a default value. This is not possible if the table is not empty. - - Made the column `file_path` on table `files` required. This step will fail if there are existing NULL values in that column. - -*/ --- DropForeignKey -ALTER TABLE "documents" DROP CONSTRAINT "documents_type_uuid_fkey"; - --- AlterTable -ALTER TABLE "documents" DROP COLUMN "type_uuid", -ADD COLUMN "document_type_uuid" VARCHAR(255) NOT NULL; - --- AlterTable -ALTER TABLE "files" ALTER COLUMN "file_path" SET NOT NULL; - --- AddForeignKey -ALTER TABLE "documents" ADD CONSTRAINT "documents_document_type_uuid_fkey" FOREIGN KEY ("document_type_uuid") REFERENCES "document_types"("uuid") ON DELETE RESTRICT ON UPDATE CASCADE; diff --git a/src/common/databases/migrations/20230421130524_v10/migration.sql b/src/common/databases/migrations/20230421130524_v10/migration.sql deleted file mode 100644 index 43926a8f..00000000 --- a/src/common/databases/migrations/20230421130524_v10/migration.sql +++ /dev/null @@ -1,2 +0,0 @@ --- AlterTable -ALTER TABLE "contacts" ADD COLUMN "birthdate" TIMESTAMP(3); diff --git a/src/common/databases/migrations/20230426144239_init/migration.sql b/src/common/databases/migrations/20230426144239_init/migration.sql new file mode 100644 index 00000000..a7c0a49f --- /dev/null +++ b/src/common/databases/migrations/20230426144239_init/migration.sql @@ -0,0 +1,445 @@ +-- CreateEnum +CREATE TYPE "ECivility" AS ENUM ('MALE', 'FEMALE', 'OTHERS'); + +-- CreateEnum +CREATE TYPE "EFolderStatus" AS ENUM ('LIVE', 'ARCHIVED'); + +-- CreateEnum +CREATE TYPE "EOfficeStatus" AS ENUM ('ACTIVATED', 'DESACTIVATED'); + +-- CreateEnum +CREATE TYPE "ENotificationStatus" AS ENUM ('READ', 'UNREAD'); + +-- CreateEnum +CREATE TYPE "ECustomerStatus" AS ENUM ('VALIDATED', 'PENDING', 'ERRONED'); + +-- CreateEnum +CREATE TYPE "EDocumentStatus" AS ENUM ('ASKED', 'DEPOSITED', 'VALIDATED', 'ANCHORED', 'REFUSED'); + +-- CreateTable +CREATE TABLE "addresses" ( + "uid" TEXT NOT NULL, + "address" VARCHAR(255) NOT NULL, + "city" VARCHAR(255) NOT NULL, + "zip_code" INTEGER NOT NULL, + "created_at" TIMESTAMP(3) DEFAULT CURRENT_TIMESTAMP, + "updated_at" TIMESTAMP(3), + + CONSTRAINT "addresses_pkey" PRIMARY KEY ("uid") +); + +-- CreateTable +CREATE TABLE "contacts" ( + "uid" TEXT NOT NULL, + "first_name" VARCHAR(255) NOT NULL, + "last_name" VARCHAR(255) NOT NULL, + "email" VARCHAR(255) NOT NULL, + "phone_number" VARCHAR(50), + "cell_phone_number" VARCHAR(50), + "civility" "ECivility" NOT NULL DEFAULT 'MALE', + "address_uid" VARCHAR(255) NOT NULL, + "birthdate" TIMESTAMP(3), + "created_at" TIMESTAMP(3) DEFAULT CURRENT_TIMESTAMP, + "updated_at" TIMESTAMP(3), + + CONSTRAINT "contacts_pkey" PRIMARY KEY ("uid") +); + +-- CreateTable +CREATE TABLE "users" ( + "uid" TEXT NOT NULL, + "idNot" VARCHAR(255) NOT NULL, + "contact_uid" VARCHAR(255) NOT NULL, + "created_at" TIMESTAMP(3) DEFAULT CURRENT_TIMESTAMP, + "updated_at" TIMESTAMP(3), + "office_uid" VARCHAR(255) NOT NULL, + + CONSTRAINT "users_pkey" PRIMARY KEY ("uid") +); + +-- CreateTable +CREATE TABLE "offices" ( + "uid" TEXT NOT NULL, + "idNot" VARCHAR(255) NOT NULL, + "name" VARCHAR(255) NOT NULL, + "crpcen" VARCHAR(255) NOT NULL, + "address_uid" VARCHAR(255) NOT NULL, + "office_status" "EOfficeStatus" NOT NULL DEFAULT 'DESACTIVATED', + "created_at" TIMESTAMP(3) DEFAULT CURRENT_TIMESTAMP, + "updated_at" TIMESTAMP(3), + + CONSTRAINT "offices_pkey" PRIMARY KEY ("uid") +); + +-- CreateTable +CREATE TABLE "customers" ( + "uid" TEXT NOT NULL, + "status" "ECustomerStatus" NOT NULL DEFAULT 'PENDING', + "contact_uid" VARCHAR(255) NOT NULL, + "created_at" TIMESTAMP(3) DEFAULT CURRENT_TIMESTAMP, + "updated_at" TIMESTAMP(3), + + CONSTRAINT "customers_pkey" PRIMARY KEY ("uid") +); + +-- CreateTable +CREATE TABLE "user_has_notifications" ( + "uid" TEXT NOT NULL, + "user_uid" VARCHAR(255) NOT NULL, + "notification_uid" VARCHAR(255) NOT NULL, + "notification_status" "ENotificationStatus" NOT NULL DEFAULT 'UNREAD', + "created_at" TIMESTAMP(3) DEFAULT CURRENT_TIMESTAMP, + "updated_at" TIMESTAMP(3), + + CONSTRAINT "user_has_notifications_pkey" PRIMARY KEY ("uid") +); + +-- CreateTable +CREATE TABLE "notifications" ( + "uid" TEXT NOT NULL, + "message" VARCHAR(255) NOT NULL, + "redirection_url" VARCHAR(255) NOT NULL, + "created_at" TIMESTAMP(3) DEFAULT CURRENT_TIMESTAMP, + "updated_at" TIMESTAMP(3), + + CONSTRAINT "notifications_pkey" PRIMARY KEY ("uid") +); + +-- CreateTable +CREATE TABLE "office_folders" ( + "uid" TEXT NOT NULL, + "folder_number" VARCHAR(255) NOT NULL, + "name" VARCHAR(255) NOT NULL, + "description" VARCHAR(255), + "archived_description" VARCHAR(255), + "status" "EFolderStatus" NOT NULL DEFAULT 'LIVE', + "deed_uid" VARCHAR(255) NOT NULL, + "office_uid" VARCHAR(255) NOT NULL, + "created_at" TIMESTAMP(3) DEFAULT CURRENT_TIMESTAMP, + "updated_at" TIMESTAMP(3), + + CONSTRAINT "office_folders_pkey" PRIMARY KEY ("uid") +); + +-- CreateTable +CREATE TABLE "office_folder_has_customers" ( + "uid" TEXT NOT NULL, + "customer_uid" VARCHAR(255) NOT NULL, + "office_folder_uid" VARCHAR(255) NOT NULL, + "created_at" TIMESTAMP(3) DEFAULT CURRENT_TIMESTAMP, + "updated_at" TIMESTAMP(3), + + CONSTRAINT "office_folder_has_customers_pkey" PRIMARY KEY ("uid") +); + +-- CreateTable +CREATE TABLE "office_folder_has_stakeholder" ( + "uid" TEXT NOT NULL, + "office_folder_uid" VARCHAR(255) NOT NULL, + "user_stakeholder_uid" VARCHAR(255) NOT NULL, + "created_at" TIMESTAMP(3) DEFAULT CURRENT_TIMESTAMP, + "updated_at" TIMESTAMP(3), + + CONSTRAINT "office_folder_has_stakeholder_pkey" PRIMARY KEY ("uid") +); + +-- CreateTable +CREATE TABLE "documents" ( + "uid" TEXT NOT NULL, + "document_status" "EDocumentStatus" NOT NULL DEFAULT 'ASKED', + "document_type_uid" VARCHAR(255) NOT NULL, + "blockchain_anchor_uid" VARCHAR(255), + "folder_uid" VARCHAR(255) NOT NULL, + "depositor_uid" VARCHAR(255) NOT NULL, + "created_at" TIMESTAMP(3) DEFAULT CURRENT_TIMESTAMP, + "updated_at" TIMESTAMP(3), + + CONSTRAINT "documents_pkey" PRIMARY KEY ("uid") +); + +-- CreateTable +CREATE TABLE "document_history" ( + "uid" TEXT NOT NULL, + "document_status" "EDocumentStatus" NOT NULL DEFAULT 'ASKED', + "refused_reason" VARCHAR(255), + "document_uid" VARCHAR(255) NOT NULL, + "created_at" TIMESTAMP(3) DEFAULT CURRENT_TIMESTAMP, + "updated_at" TIMESTAMP(3), + + CONSTRAINT "document_history_pkey" PRIMARY KEY ("uid") +); + +-- CreateTable +CREATE TABLE "files" ( + "uid" TEXT NOT NULL, + "document_uid" VARCHAR(255) NOT NULL, + "file_path" VARCHAR(255) NOT NULL, + "created_at" TIMESTAMP(3) DEFAULT CURRENT_TIMESTAMP, + "updated_at" TIMESTAMP(3), + + CONSTRAINT "files_pkey" PRIMARY KEY ("uid") +); + +-- CreateTable +CREATE TABLE "blockchain_anchors" ( + "uid" TEXT NOT NULL, + "smartSigJobId" VARCHAR(255) NOT NULL, + "created_at" TIMESTAMP(3) DEFAULT CURRENT_TIMESTAMP, + "updated_at" TIMESTAMP(3), + + CONSTRAINT "blockchain_anchors_pkey" PRIMARY KEY ("uid") +); + +-- CreateTable +CREATE TABLE "document_types" ( + "uid" TEXT NOT NULL, + "name" VARCHAR(255) NOT NULL, + "public_description" VARCHAR(255) NOT NULL, + "private_description" VARCHAR(255), + "office_uid" VARCHAR(255) NOT NULL, + "archived_at" TIMESTAMP(3), + "created_at" TIMESTAMP(3) DEFAULT CURRENT_TIMESTAMP, + "updated_at" TIMESTAMP(3), + + CONSTRAINT "document_types_pkey" PRIMARY KEY ("uid") +); + +-- CreateTable +CREATE TABLE "deed_has_document_types" ( + "uid" TEXT NOT NULL, + "document_type_uid" VARCHAR(255) NOT NULL, + "deed_uid" VARCHAR(255) NOT NULL, + "created_at" TIMESTAMP(3) DEFAULT CURRENT_TIMESTAMP, + "updated_at" TIMESTAMP(3), + + CONSTRAINT "deed_has_document_types_pkey" PRIMARY KEY ("uid") +); + +-- CreateTable +CREATE TABLE "deed" ( + "uid" TEXT NOT NULL, + "deed_type_uid" VARCHAR(255) NOT NULL, + "created_at" TIMESTAMP(3) DEFAULT CURRENT_TIMESTAMP, + "updated_at" TIMESTAMP(3), + + CONSTRAINT "deed_pkey" PRIMARY KEY ("uid") +); + +-- CreateTable +CREATE TABLE "deed_types" ( + "uid" TEXT NOT NULL, + "name" VARCHAR(255) NOT NULL, + "description" VARCHAR(255) NOT NULL, + "archived_at" TIMESTAMP(3), + "office_uid" VARCHAR(255) NOT NULL, + "created_at" TIMESTAMP(3) DEFAULT CURRENT_TIMESTAMP, + "updated_at" TIMESTAMP(3), + + CONSTRAINT "deed_types_pkey" PRIMARY KEY ("uid") +); + +-- CreateTable +CREATE TABLE "deed_type_has_document_types" ( + "uid" TEXT NOT NULL, + "document_type_uid" VARCHAR(255) NOT NULL, + "deed_type_uid" VARCHAR(255) NOT NULL, + "created_at" TIMESTAMP(3) DEFAULT CURRENT_TIMESTAMP, + "updated_at" TIMESTAMP(3), + + CONSTRAINT "deed_type_has_document_types_pkey" PRIMARY KEY ("uid") +); + +-- CreateIndex +CREATE UNIQUE INDEX "addresses_uid_key" ON "addresses"("uid"); + +-- CreateIndex +CREATE UNIQUE INDEX "contacts_uid_key" ON "contacts"("uid"); + +-- CreateIndex +CREATE UNIQUE INDEX "contacts_email_key" ON "contacts"("email"); + +-- CreateIndex +CREATE UNIQUE INDEX "contacts_cell_phone_number_key" ON "contacts"("cell_phone_number"); + +-- CreateIndex +CREATE UNIQUE INDEX "contacts_address_uid_key" ON "contacts"("address_uid"); + +-- CreateIndex +CREATE UNIQUE INDEX "users_uid_key" ON "users"("uid"); + +-- CreateIndex +CREATE UNIQUE INDEX "users_idNot_key" ON "users"("idNot"); + +-- CreateIndex +CREATE UNIQUE INDEX "users_contact_uid_key" ON "users"("contact_uid"); + +-- CreateIndex +CREATE UNIQUE INDEX "offices_uid_key" ON "offices"("uid"); + +-- CreateIndex +CREATE UNIQUE INDEX "offices_idNot_key" ON "offices"("idNot"); + +-- CreateIndex +CREATE UNIQUE INDEX "offices_crpcen_key" ON "offices"("crpcen"); + +-- CreateIndex +CREATE UNIQUE INDEX "offices_address_uid_key" ON "offices"("address_uid"); + +-- CreateIndex +CREATE UNIQUE INDEX "customers_uid_key" ON "customers"("uid"); + +-- CreateIndex +CREATE UNIQUE INDEX "customers_contact_uid_key" ON "customers"("contact_uid"); + +-- CreateIndex +CREATE UNIQUE INDEX "user_has_notifications_uid_key" ON "user_has_notifications"("uid"); + +-- CreateIndex +CREATE UNIQUE INDEX "user_has_notifications_notification_uid_user_uid_key" ON "user_has_notifications"("notification_uid", "user_uid"); + +-- CreateIndex +CREATE UNIQUE INDEX "notifications_uid_key" ON "notifications"("uid"); + +-- CreateIndex +CREATE UNIQUE INDEX "office_folders_uid_key" ON "office_folders"("uid"); + +-- CreateIndex +CREATE UNIQUE INDEX "office_folders_deed_uid_key" ON "office_folders"("deed_uid"); + +-- CreateIndex +CREATE UNIQUE INDEX "office_folders_folder_number_office_uid_key" ON "office_folders"("folder_number", "office_uid"); + +-- CreateIndex +CREATE UNIQUE INDEX "office_folder_has_customers_uid_key" ON "office_folder_has_customers"("uid"); + +-- CreateIndex +CREATE UNIQUE INDEX "office_folder_has_customers_office_folder_uid_customer_uid_key" ON "office_folder_has_customers"("office_folder_uid", "customer_uid"); + +-- CreateIndex +CREATE UNIQUE INDEX "office_folder_has_stakeholder_uid_key" ON "office_folder_has_stakeholder"("uid"); + +-- CreateIndex +CREATE UNIQUE INDEX "office_folder_has_stakeholder_office_folder_uid_user_stakeh_key" ON "office_folder_has_stakeholder"("office_folder_uid", "user_stakeholder_uid"); + +-- CreateIndex +CREATE UNIQUE INDEX "documents_uid_key" ON "documents"("uid"); + +-- CreateIndex +CREATE UNIQUE INDEX "document_history_uid_key" ON "document_history"("uid"); + +-- CreateIndex +CREATE UNIQUE INDEX "files_uid_key" ON "files"("uid"); + +-- CreateIndex +CREATE UNIQUE INDEX "files_file_path_key" ON "files"("file_path"); + +-- CreateIndex +CREATE UNIQUE INDEX "blockchain_anchors_uid_key" ON "blockchain_anchors"("uid"); + +-- CreateIndex +CREATE UNIQUE INDEX "blockchain_anchors_smartSigJobId_key" ON "blockchain_anchors"("smartSigJobId"); + +-- CreateIndex +CREATE UNIQUE INDEX "document_types_uid_key" ON "document_types"("uid"); + +-- CreateIndex +CREATE UNIQUE INDEX "document_types_name_office_uid_key" ON "document_types"("name", "office_uid"); + +-- CreateIndex +CREATE UNIQUE INDEX "deed_has_document_types_uid_key" ON "deed_has_document_types"("uid"); + +-- CreateIndex +CREATE UNIQUE INDEX "deed_has_document_types_deed_uid_document_type_uid_key" ON "deed_has_document_types"("deed_uid", "document_type_uid"); + +-- CreateIndex +CREATE UNIQUE INDEX "deed_uid_key" ON "deed"("uid"); + +-- CreateIndex +CREATE UNIQUE INDEX "deed_types_uid_key" ON "deed_types"("uid"); + +-- CreateIndex +CREATE UNIQUE INDEX "deed_types_name_office_uid_key" ON "deed_types"("name", "office_uid"); + +-- CreateIndex +CREATE UNIQUE INDEX "deed_type_has_document_types_uid_key" ON "deed_type_has_document_types"("uid"); + +-- CreateIndex +CREATE UNIQUE INDEX "deed_type_has_document_types_deed_type_uid_document_type_ui_key" ON "deed_type_has_document_types"("deed_type_uid", "document_type_uid"); + +-- AddForeignKey +ALTER TABLE "contacts" ADD CONSTRAINT "contacts_address_uid_fkey" FOREIGN KEY ("address_uid") REFERENCES "addresses"("uid") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "users" ADD CONSTRAINT "users_contact_uid_fkey" FOREIGN KEY ("contact_uid") REFERENCES "contacts"("uid") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "users" ADD CONSTRAINT "users_office_uid_fkey" FOREIGN KEY ("office_uid") REFERENCES "offices"("uid") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "offices" ADD CONSTRAINT "offices_address_uid_fkey" FOREIGN KEY ("address_uid") REFERENCES "addresses"("uid") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "customers" ADD CONSTRAINT "customers_contact_uid_fkey" FOREIGN KEY ("contact_uid") REFERENCES "contacts"("uid") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "user_has_notifications" ADD CONSTRAINT "user_has_notifications_user_uid_fkey" FOREIGN KEY ("user_uid") REFERENCES "users"("uid") ON DELETE RESTRICT ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "user_has_notifications" ADD CONSTRAINT "user_has_notifications_notification_uid_fkey" FOREIGN KEY ("notification_uid") REFERENCES "notifications"("uid") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "office_folders" ADD CONSTRAINT "office_folders_deed_uid_fkey" FOREIGN KEY ("deed_uid") REFERENCES "deed"("uid") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "office_folders" ADD CONSTRAINT "office_folders_office_uid_fkey" FOREIGN KEY ("office_uid") REFERENCES "offices"("uid") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "office_folder_has_customers" ADD CONSTRAINT "office_folder_has_customers_customer_uid_fkey" FOREIGN KEY ("customer_uid") REFERENCES "customers"("uid") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "office_folder_has_customers" ADD CONSTRAINT "office_folder_has_customers_office_folder_uid_fkey" FOREIGN KEY ("office_folder_uid") REFERENCES "office_folders"("uid") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "office_folder_has_stakeholder" ADD CONSTRAINT "office_folder_has_stakeholder_office_folder_uid_fkey" FOREIGN KEY ("office_folder_uid") REFERENCES "office_folders"("uid") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "office_folder_has_stakeholder" ADD CONSTRAINT "office_folder_has_stakeholder_user_stakeholder_uid_fkey" FOREIGN KEY ("user_stakeholder_uid") REFERENCES "users"("uid") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "documents" ADD CONSTRAINT "documents_document_type_uid_fkey" FOREIGN KEY ("document_type_uid") REFERENCES "document_types"("uid") ON DELETE RESTRICT ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "documents" ADD CONSTRAINT "documents_blockchain_anchor_uid_fkey" FOREIGN KEY ("blockchain_anchor_uid") REFERENCES "blockchain_anchors"("uid") ON DELETE SET NULL ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "documents" ADD CONSTRAINT "documents_folder_uid_fkey" FOREIGN KEY ("folder_uid") REFERENCES "office_folders"("uid") ON DELETE RESTRICT ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "documents" ADD CONSTRAINT "documents_depositor_uid_fkey" FOREIGN KEY ("depositor_uid") REFERENCES "customers"("uid") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "document_history" ADD CONSTRAINT "document_history_document_uid_fkey" FOREIGN KEY ("document_uid") REFERENCES "documents"("uid") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "files" ADD CONSTRAINT "files_document_uid_fkey" FOREIGN KEY ("document_uid") REFERENCES "documents"("uid") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "document_types" ADD CONSTRAINT "document_types_office_uid_fkey" FOREIGN KEY ("office_uid") REFERENCES "offices"("uid") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "deed_has_document_types" ADD CONSTRAINT "deed_has_document_types_document_type_uid_fkey" FOREIGN KEY ("document_type_uid") REFERENCES "document_types"("uid") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "deed_has_document_types" ADD CONSTRAINT "deed_has_document_types_deed_uid_fkey" FOREIGN KEY ("deed_uid") REFERENCES "deed"("uid") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "deed" ADD CONSTRAINT "deed_deed_type_uid_fkey" FOREIGN KEY ("deed_type_uid") REFERENCES "deed_types"("uid") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "deed_types" ADD CONSTRAINT "deed_types_office_uid_fkey" FOREIGN KEY ("office_uid") REFERENCES "offices"("uid") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "deed_type_has_document_types" ADD CONSTRAINT "deed_type_has_document_types_document_type_uid_fkey" FOREIGN KEY ("document_type_uid") REFERENCES "document_types"("uid") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "deed_type_has_document_types" ADD CONSTRAINT "deed_type_has_document_types_deed_type_uid_fkey" FOREIGN KEY ("deed_type_uid") REFERENCES "deed_types"("uid") ON DELETE CASCADE ON UPDATE CASCADE; diff --git a/src/common/databases/schema.prisma b/src/common/databases/schema.prisma index 113b282f..e0293f41 100644 --- a/src/common/databases/schema.prisma +++ b/src/common/databases/schema.prisma @@ -18,7 +18,7 @@ datasource db { // id String @unique @default(auto()) @map("_id") @db.ObjectId // @map de la table checker le naming avec le tiret model Addresses { - uuid String @id @unique @default(uuid()) + uid String @id @unique @default(uuid()) address String @db.VarChar(255) city String @db.VarChar(255) zip_code Int @@ -31,15 +31,15 @@ model Addresses { } model Contacts { - uuid String @id @unique @default(uuid()) + uid String @id @unique @default(uuid()) first_name String @db.VarChar(255) last_name String @db.VarChar(255) email String @unique @db.VarChar(255) phone_number String? @db.VarChar(50) cell_phone_number String? @unique @db.VarChar(50) civility ECivility @default(MALE) - address Addresses? @relation(fields: [address_uuid], references: [uuid], onDelete: Cascade) - address_uuid String @unique @db.VarChar(255) + address Addresses? @relation(fields: [address_uid], references: [uid], onDelete: Cascade) + address_uid String @unique @db.VarChar(255) birthdate DateTime? created_at DateTime? @default(now()) updated_at DateTime? @updatedAt @@ -50,14 +50,14 @@ model Contacts { } model Users { - uuid String @id @unique @default(uuid()) + uid String @id @unique @default(uuid()) @map("uid") idNot String @unique @db.VarChar(255) - contact Contacts @relation(fields: [contact_uuid], references: [uuid], onDelete: Cascade) - contact_uuid String @unique @db.VarChar(255) + contact Contacts @relation(fields: [contact_uid], references: [uid], onDelete: Cascade) + contact_uid String @unique @db.VarChar(255) created_at DateTime? @default(now()) updated_at DateTime? @updatedAt - office_membership Offices @relation(fields: [office_uuid], references: [uuid], onDelete: Cascade) - office_uuid String @db.VarChar(255) + office_membership Offices @relation(fields: [office_uid], references: [uid], onDelete: Cascade) + office_uid String @db.VarChar(255) user_has_notifications UserHasNotifications[] office_folder_has_stakeholder OfficeFolderHasStakeholders[] @@ -65,12 +65,12 @@ model Users { } model Offices { - uuid String @id @unique @default(uuid()) + uid String @id @unique @default(uuid()) idNot String @unique @db.VarChar(255) name String @db.VarChar(255) crpcen String @unique @db.VarChar(255) - address Addresses @relation(fields: [address_uuid], references: [uuid], onDelete: Cascade) - address_uuid String @unique @db.VarChar(255) + address Addresses @relation(fields: [address_uid], references: [uid], onDelete: Cascade) + address_uid String @unique @db.VarChar(255) office_status EOfficeStatus @default(DESACTIVATED) created_at DateTime? @default(now()) updated_at DateTime? @updatedAt @@ -83,10 +83,10 @@ model Offices { } model Customers { - uuid String @id @unique @default(uuid()) + uid String @id @unique @default(uuid()) status ECustomerStatus @default(PENDING) - contact Contacts @relation(fields: [contact_uuid], references: [uuid], onDelete: Cascade) - contact_uuid String @unique @db.VarChar(255) + contact Contacts @relation(fields: [contact_uid], references: [uid], onDelete: Cascade) + contact_uid String @unique @db.VarChar(255) created_at DateTime? @default(now()) updated_at DateTime? @updatedAt office_folder_has_customers OfficeFolderHasCustomers[] @@ -96,21 +96,21 @@ model Customers { } model UserHasNotifications { - uuid String @id @unique @default(uuid()) - user Users @relation(fields: [user_uuid], references: [uuid]) - user_uuid String @db.VarChar(255) - notification Notifications @relation(fields: [notification_uuid], references: [uuid], onDelete: Cascade) - notification_uuid String @db.VarChar(255) + uid String @id @unique @default(uuid()) + user Users @relation(fields: [user_uid], references: [uid]) + user_uid String @db.VarChar(255) + notification Notifications @relation(fields: [notification_uid], references: [uid], onDelete: Cascade) + notification_uid String @db.VarChar(255) notification_status ENotificationStatus @default(UNREAD) created_at DateTime? @default(now()) updated_at DateTime? @updatedAt - @@unique([notification_uuid, user_uuid]) + @@unique([notification_uid, user_uid]) @@map("user_has_notifications") } model Notifications { - uuid String @id @unique @default(uuid()) + uid String @id @unique @default(uuid()) message String @db.VarChar(255) redirection_url String @db.VarChar(255) created_at DateTime? @default(now()) @@ -121,63 +121,63 @@ model Notifications { } model OfficeFolders { - uuid String @id @unique @default(uuid()) + uid String @id @unique @default(uuid()) folder_number String @db.VarChar(255) name String @db.VarChar(255) description String? @db.VarChar(255) archived_description String? @db.VarChar(255) status EFolderStatus @default(LIVE) - deed Deeds @relation(fields: [deed_uuid], references: [uuid], onDelete: Cascade) - deed_uuid String @unique @db.VarChar(255) - office Offices @relation(fields: [office_uuid], references: [uuid], onDelete: Cascade) - office_uuid String @db.VarChar(255) + deed Deeds @relation(fields: [deed_uid], references: [uid], onDelete: Cascade) + deed_uid String @unique @db.VarChar(255) + office Offices @relation(fields: [office_uid], references: [uid], onDelete: Cascade) + office_uid String @db.VarChar(255) created_at DateTime? @default(now()) updated_at DateTime? @updatedAt office_folder_has_customers OfficeFolderHasCustomers[] office_folder_has_stakeholder OfficeFolderHasStakeholders[] documents Documents[] - @@unique([folder_number, office_uuid]) + @@unique([folder_number, office_uid]) @@map("office_folders") } model OfficeFolderHasCustomers { - uuid String @id @unique @default(uuid()) - customer Customers @relation(fields: [customer_uuid], references: [uuid], onDelete: Cascade) - customer_uuid String @db.VarChar(255) - office_folder OfficeFolders @relation(fields: [office_folder_uuid], references: [uuid], onDelete: Cascade) - office_folder_uuid String @db.VarChar(255) + uid String @id @unique @default(uuid()) + customer Customers @relation(fields: [customer_uid], references: [uid], onDelete: Cascade) + customer_uid String @db.VarChar(255) + office_folder OfficeFolders @relation(fields: [office_folder_uid], references: [uid], onDelete: Cascade) + office_folder_uid String @db.VarChar(255) created_at DateTime? @default(now()) updated_at DateTime? @updatedAt - @@unique([office_folder_uuid, customer_uuid]) + @@unique([office_folder_uid, customer_uid]) @@map("office_folder_has_customers") } model OfficeFolderHasStakeholders { - uuid String @id @unique @default(uuid()) - office_folder OfficeFolders @relation(fields: [office_folder_uuid], references: [uuid], onDelete: Cascade) - office_folder_uuid String @db.VarChar(255) - user_stakeholder Users @relation(fields: [user_stakeholder_uuid], references: [uuid], onDelete: Cascade) - user_stakeholder_uuid String @db.VarChar(255) + uid String @id @unique @default(uuid()) + office_folder OfficeFolders @relation(fields: [office_folder_uid], references: [uid], onDelete: Cascade) + office_folder_uid String @db.VarChar(255) + user_stakeholder Users @relation(fields: [user_stakeholder_uid], references: [uid], onDelete: Cascade) + user_stakeholder_uid String @db.VarChar(255) created_at DateTime? @default(now()) updated_at DateTime? @updatedAt - @@unique([office_folder_uuid, user_stakeholder_uuid]) + @@unique([office_folder_uid, user_stakeholder_uid]) @@map("office_folder_has_stakeholder") } model Documents { - uuid String @id @unique @default(uuid()) + uid String @id @unique @default(uuid()) document_status EDocumentStatus @default(ASKED) - document_type DocumentTypes @relation(fields: [document_type_uuid], references: [uuid]) - document_type_uuid String @db.VarChar(255) - blockchain_anchor BlockchainAnchors? @relation(fields: [blockchain_anchor_uuid], references: [uuid]) - blockchain_anchor_uuid String? @db.VarChar(255) - folder OfficeFolders @relation(fields: [folder_uuid], references: [uuid]) - folder_uuid String @db.VarChar(255) - depositor Customers @relation(fields: [depositor_uuid], references: [uuid], onDelete: Cascade) - depositor_uuid String @db.VarChar(255) + document_type DocumentTypes @relation(fields: [document_type_uid], references: [uid]) + document_type_uid String @db.VarChar(255) + blockchain_anchor BlockchainAnchors? @relation(fields: [blockchain_anchor_uid], references: [uid]) + blockchain_anchor_uid String? @db.VarChar(255) + folder OfficeFolders @relation(fields: [folder_uid], references: [uid]) + folder_uid String @db.VarChar(255) + depositor Customers @relation(fields: [depositor_uid], references: [uid], onDelete: Cascade) + depositor_uid String @db.VarChar(255) created_at DateTime? @default(now()) updated_at DateTime? @updatedAt files Files[] @@ -187,11 +187,11 @@ model Documents { } model DocumentHistory { - uuid String @id @unique @default(uuid()) + uid String @id @unique @default(uuid()) document_status EDocumentStatus @default(ASKED) refused_reason String? @db.VarChar(255) - document Documents @relation(fields: [document_uuid], references: [uuid], onDelete: Cascade) - document_uuid String @db.VarChar(255) + document Documents @relation(fields: [document_uid], references: [uid], onDelete: Cascade) + document_uid String @db.VarChar(255) created_at DateTime? @default(now()) updated_at DateTime? @updatedAt @@ -199,9 +199,9 @@ model DocumentHistory { } model Files { - uuid String @id @unique @default(uuid()) - document Documents @relation(fields: [document_uuid], references: [uuid], onDelete: Cascade) - document_uuid String @db.VarChar(255) + uid String @id @unique @default(uuid()) + document Documents @relation(fields: [document_uid], references: [uid], onDelete: Cascade) + document_uid String @db.VarChar(255) file_path String @unique @db.VarChar(255) created_at DateTime? @default(now()) updated_at DateTime? @updatedAt @@ -210,7 +210,7 @@ model Files { } model BlockchainAnchors { - uuid String @id @unique @default(uuid()) + uid String @id @unique @default(uuid()) smartSigJobId String @unique @db.VarChar(255) created_at DateTime? @default(now()) updated_at DateTime? @updatedAt @@ -220,12 +220,12 @@ model BlockchainAnchors { } model DocumentTypes { - uuid String @id @unique @default(uuid()) + uid String @id @unique @default(uuid()) name String @db.VarChar(255) public_description String @db.VarChar(255) private_description String? @db.VarChar(255) - office Offices @relation(fields: [office_uuid], references: [uuid], onDelete: Cascade) - office_uuid String @db.VarChar(255) + office Offices @relation(fields: [office_uid], references: [uid], onDelete: Cascade) + office_uid String @db.VarChar(255) archived_at DateTime? created_at DateTime? @default(now()) updated_at DateTime? @updatedAt @@ -233,27 +233,27 @@ model DocumentTypes { deed_has_document_types DeedHasDocumentTypes[] deed_type_has_document_types DeedTypeHasDocumentTypes[] - @@unique([name, office_uuid]) + @@unique([name, office_uid]) @@map("document_types") } model DeedHasDocumentTypes { - uuid String @id @unique @default(uuid()) - document_type DocumentTypes @relation(fields: [document_type_uuid], references: [uuid], onDelete: Cascade) - document_type_uuid String @db.VarChar(255) - deed Deeds @relation(fields: [deed_uuid], references: [uuid], onDelete: Cascade) - deed_uuid String @db.VarChar(255) + uid String @id @unique @default(uuid()) + document_type DocumentTypes @relation(fields: [document_type_uid], references: [uid], onDelete: Cascade) + document_type_uid String @db.VarChar(255) + deed Deeds @relation(fields: [deed_uid], references: [uid], onDelete: Cascade) + deed_uid String @db.VarChar(255) created_at DateTime? @default(now()) updated_at DateTime? @updatedAt - @@unique([deed_uuid, document_type_uuid]) + @@unique([deed_uid, document_type_uid]) @@map("deed_has_document_types") } model Deeds { - uuid String @id @unique @default(uuid()) - deed_type DeedTypes @relation(fields: [deed_type_uuid], references: [uuid], onDelete: Cascade) - deed_type_uuid String @db.VarChar(255) + uid String @id @unique @default(uuid()) + deed_type DeedTypes @relation(fields: [deed_type_uid], references: [uid], onDelete: Cascade) + deed_type_uid String @db.VarChar(255) created_at DateTime? @default(now()) updated_at DateTime? @updatedAt deed_has_document_types DeedHasDocumentTypes[] @@ -263,31 +263,31 @@ model Deeds { } model DeedTypes { - uuid String @id @unique @default(uuid()) + uid String @id @unique @default(uuid()) name String @db.VarChar(255) description String @db.VarChar(255) archived_at DateTime? - office Offices @relation(fields: [office_uuid], references: [uuid], onDelete: Cascade) - office_uuid String @db.VarChar(255) + office Offices @relation(fields: [office_uid], references: [uid], onDelete: Cascade) + office_uid String @db.VarChar(255) created_at DateTime? @default(now()) updated_at DateTime? @updatedAt deed Deeds[] deed_type_has_document_types DeedTypeHasDocumentTypes[] - @@unique([name, office_uuid]) + @@unique([name, office_uid]) @@map("deed_types") } model DeedTypeHasDocumentTypes { - uuid String @id @unique @default(uuid()) - document_type DocumentTypes @relation(fields: [document_type_uuid], references: [uuid], onDelete: Cascade) - document_type_uuid String @db.VarChar(255) - deed_type DeedTypes @relation(fields: [deed_type_uuid], references: [uuid], onDelete: Cascade) - deed_type_uuid String @db.VarChar(255) + uid String @id @unique @default(uuid()) + document_type DocumentTypes @relation(fields: [document_type_uid], references: [uid], onDelete: Cascade) + document_type_uid String @db.VarChar(255) + deed_type DeedTypes @relation(fields: [deed_type_uid], references: [uid], onDelete: Cascade) + deed_type_uid String @db.VarChar(255) created_at DateTime? @default(now()) updated_at DateTime? @updatedAt - @@unique([deed_type_uuid, document_type_uuid]) + @@unique([deed_type_uid, document_type_uid]) @@map("deed_type_has_document_types") } diff --git a/src/common/databases/seeders/seeder.ts b/src/common/databases/seeders/seeder.ts index 7bff7d73..d76ede13 100644 --- a/src/common/databases/seeders/seeder.ts +++ b/src/common/databases/seeders/seeder.ts @@ -38,62 +38,68 @@ import { for (let i = 10; i > 0; --i) result += chars[Math.floor(Math.random() * chars.length)]; return result; }; - const uuidCustomer1: string = randomString(); - const uuidCustomer2: string = randomString(); + const uidCustomer1: string = randomString(); + const uidCustomer2: string = randomString(); - const uuidContact1: string = randomString(); - const uuidContact2: string = randomString(); + const uidContact1: string = randomString(); + const uidContact2: string = randomString(); - const uuidAddress1: string = randomString(); - const uuidAddress2: string = randomString(); + const uidAddress1: string = randomString(); + const uidAddress2: string = randomString(); - const uuidOffice1: string = randomString(); - const uuidOffice2: string = randomString(); + const uidOffice1: string = randomString(); + const uidOffice2: string = randomString(); - const uuidUser1: string = randomString(); - const uuidUser2: string = randomString(); + const uidUser1: string = randomString(); + const uidUser2: string = randomString(); - const uuidOfficeFolder1: string = randomString(); - const uuidOfficeFolder2: string = randomString(); + const uidOfficeFolder1: string = randomString(); + const uidOfficeFolder2: string = randomString(); + const uidOfficeFolder3: string = randomString(); + const uidOfficeFolder4: string = randomString(); + const uidOfficeFolder5: string = randomString(); - const uuidDeed1: string = randomString(); - const uuidDeed2: string = randomString(); + const uidDeed1: string = randomString(); + const uidDeed2: string = randomString(); + const uidDeed3: string = randomString(); + const uidDeed4: string = randomString(); + const uidDeed5: string = randomString(); - const uuidDeedType1: string = randomString(); - const uuidDeedType2: string = randomString(); + const uidDeedType1: string = randomString(); + const uidDeedType2: string = randomString(); - const uuidDocument1: string = randomString(); - const uuidDocument2: string = randomString(); + const uidDocument1: string = randomString(); + const uidDocument2: string = randomString(); - const uuidDocumentType1: string = randomString(); - const uuidDocumentType2: string = randomString(); + const uidDocumentType1: string = randomString(); + const uidDocumentType2: string = randomString(); - const uuidOfficeFolderHasCustomer1: string = randomString(); - const uuidOfficeFolderHasCustomer2: string = randomString(); + const uidOfficeFolderHasCustomer1: string = randomString(); + const uidOfficeFolderHasCustomer2: string = randomString(); - const uuidFiles1: string = randomString(); - const uuidFiles2: string = randomString(); + const uidFiles1: string = randomString(); + const uidFiles2: string = randomString(); - const uuidDeedHasDocumentType1: string = randomString(); - const uuidDeedHasDocumentType2: string = randomString(); + const uidDeedHasDocumentType1: string = randomString(); + const uidDeedHasDocumentType2: string = randomString(); - const uuidDeedTypeHasDocumentType1: string = randomString(); - const uuidDeedTypeHasDocumentType2: string = randomString(); + const uidDeedTypeHasDocumentType1: string = randomString(); + const uidDeedTypeHasDocumentType2: string = randomString(); - const uuidDocumentHistory1: string = randomString(); - const uuidDocumentHistory2: string = randomString(); + const uidDocumentHistory1: string = randomString(); + const uidDocumentHistory2: string = randomString(); const customers: Customers[] = [ { - uuid: uuidCustomer1, - contact_uuid: uuidContact1, + uid: uidCustomer1, + contact_uid: uidContact1, created_at: new Date(), updated_at: new Date(), status: ECustomerStatus.PENDING, }, { - uuid: uuidCustomer2, - contact_uuid: uuidContact2, + uid: uidCustomer2, + contact_uid: uidContact2, created_at: new Date(), updated_at: new Date(), status: ECustomerStatus.PENDING, @@ -102,7 +108,7 @@ import { const addresses: Addresses[] = [ { - uuid: uuidAddress1, + uid: uidAddress1, address: "123 Main St", city: "Los Angeles", zip_code: 90001, @@ -110,7 +116,7 @@ import { updated_at: new Date(), }, { - uuid: uuidAddress2, + uid: uidAddress2, address: "Rue Pierre Emillion", city: "Paris", zip_code: 75003, @@ -121,8 +127,8 @@ import { const contacts: Contacts[] = [ { - uuid: uuidContact1, - address_uuid: uuidAddress1, + uid: uidContact1, + address_uid: uidAddress1, first_name: "John", last_name: "Doe", email: "john.doe@example.com", @@ -134,8 +140,8 @@ import { civility: ECivility.MALE, }, { - uuid: uuidContact2, - address_uuid: uuidAddress2, + uid: uidContact2, + address_uid: uidAddress2, first_name: "Jane", last_name: "Doe", email: "jane.doe@example.com", @@ -150,21 +156,21 @@ import { const offices: Offices[] = [ { - uuid: uuidOffice1, + uid: uidOffice1, idNot: randomString(), name: "LA Office", crpcen: randomString(), - address_uuid: uuidAddress1, + address_uid: uidAddress1, created_at: new Date(), updated_at: new Date(), office_status: EOfficeStatus.ACTIVATED, }, { - uuid: uuidOffice2, + uid: uidOffice2, idNot: randomString(), name: "NYC Office", crpcen: randomString(), - address_uuid: uuidAddress2, + address_uid: uidAddress2, created_at: new Date(), updated_at: new Date(), office_status: EOfficeStatus.DESACTIVATED, @@ -173,81 +179,135 @@ import { const users: Users[] = [ { - uuid: uuidUser1, + uid: uidUser1, created_at: new Date(), updated_at: new Date(), idNot: randomString(), - contact_uuid: uuidContact1, - office_uuid: uuidOffice1, + contact_uid: uidContact1, + office_uid: uidOffice1, }, { - uuid: uuidUser2, + uid: uidUser2, created_at: new Date(), updated_at: new Date(), idNot: randomString(), - contact_uuid: uuidContact2, - office_uuid: uuidOffice2, + contact_uid: uidContact2, + office_uid: uidOffice2, }, ]; const officeFolders: OfficeFolders[] = [ { - uuid: uuidOfficeFolder1, - folder_number: randomString(), - name: "0001", - deed_uuid: uuidDeed1, + uid: uidOfficeFolder1, + folder_number: "0001", + name: "Dossier", + deed_uid: uidDeed1, status: EFolderStatus.LIVE, created_at: new Date(), updated_at: new Date(), - office_uuid: uuidOffice1, + office_uid: uidOffice1, description: null, archived_description: null, }, { - uuid: uuidOfficeFolder2, - folder_number: randomString(), - name: "0001", - deed_uuid: uuidDeed2, + uid: uidOfficeFolder2, + folder_number: "0002", + name: "Dossier", + deed_uid: uidDeed2, status: EFolderStatus.LIVE, created_at: new Date(), updated_at: new Date(), - office_uuid: uuidOffice2, + office_uid: uidOffice2, description: null, archived_description: null, }, + { + uid: uidOfficeFolder3, + folder_number: "0003", + name: "Dossier", + deed_uid: uidDeed3, + status: EFolderStatus.LIVE, + created_at: new Date(), + updated_at: new Date(), + office_uid: uidOffice2, + description: null, + archived_description: null, + }, + { + uid: uidOfficeFolder4, + folder_number: "0004", + name: "Dossier", + deed_uid: uidDeed4, + status: EFolderStatus.ARCHIVED, + created_at: new Date(), + updated_at: new Date(), + office_uid: uidOffice2, + description: null, + archived_description: null, + }, + { + uid: uidOfficeFolder5, + folder_number: "0005", + name: "Dossier", + deed_uid: uidDeed5, + status: EFolderStatus.ARCHIVED, + created_at: new Date(), + updated_at: new Date(), + office_uid: uidOffice2, + description: null, + archived_description: null, + } ]; const deeds: Deeds[] = [ { - uuid: uuidDeed1, - deed_type_uuid: uuidDeedType1, + uid: uidDeed1, + deed_type_uid: uidDeedType1, created_at: new Date(), updated_at: new Date(), }, { - uuid: uuidDeed2, - deed_type_uuid: uuidDeedType2, + uid: uidDeed2, + deed_type_uid: uidDeedType2, created_at: new Date(), updated_at: new Date(), }, + { + uid: uidDeed3, + deed_type_uid: uidDeedType2, + created_at: new Date(), + updated_at: new Date(), + }, + { + uid: uidDeed4, + deed_type_uid: uidDeedType2, + created_at: new Date(), + updated_at: new Date(), + }, + { + uid: uidDeed5, + deed_type_uid: uidDeedType2, + created_at: new Date(), + updated_at: new Date(), + } ]; const deedTypes: DeedTypes[] = [ { - uuid: uuidDeedType1, + uid: uidDeedType1, name: "Acte de mariage", archived_at: null, description: "Acte regroupant deux personnes en mariage", - office_uuid: uuidOffice1, + office_uid: uidOffice1, created_at: new Date(), updated_at: new Date(), }, { - uuid: uuidDeedType2, + uid: uidDeedType2, name: "Vente d'un bien immobilier", archived_at: null, description: "Permet de vendre un bien immobilier à une entité ou une personne physique", - office_uuid: uuidOffice2, + office_uid: uidOffice2, created_at: new Date(), updated_at: new Date(), }, @@ -255,22 +315,22 @@ import { const documents: Documents[] = [ { - uuid: uuidDocument1, - blockchain_anchor_uuid: null, - depositor_uuid: uuidCustomer1, + uid: uidDocument1, + blockchain_anchor_uid: null, + depositor_uid: uidCustomer1, document_status: EDocumentStatus.ASKED, - folder_uuid: uuidOfficeFolder1, - document_type_uuid: uuidDocumentType1, + folder_uid: uidOfficeFolder1, + document_type_uid: uidDocumentType1, created_at: new Date(), updated_at: new Date(), }, { - uuid: uuidDocument2, - blockchain_anchor_uuid: null, - depositor_uuid: uuidCustomer2, + uid: uidDocument2, + blockchain_anchor_uid: null, + depositor_uid: uidCustomer2, document_status: EDocumentStatus.ASKED, - folder_uuid: uuidOfficeFolder2, - document_type_uuid: uuidDocumentType2, + folder_uid: uidOfficeFolder2, + document_type_uid: uidDocumentType2, created_at: new Date(), updated_at: new Date(), }, @@ -278,20 +338,20 @@ import { const documentTypes: DocumentTypes[] = [ { - uuid: uuidDocumentType1, + uid: uidDocumentType1, archived_at: null, name: "Acte de naissance", - office_uuid: uuidOffice1, + office_uid: uidOffice1, private_description: "Ce document est confidentiel, et ne doit pas être divulgué", public_description: "Acte de naissance est un document officiel qui atteste de la naissance d'une personne", created_at: new Date(), updated_at: new Date(), }, { - uuid: uuidDocumentType2, + uid: uidDocumentType2, archived_at: null, name: "Carte d'identité", - office_uuid: uuidOffice2, + office_uid: uidOffice2, private_description: "Ce document est confidentiel, demander un recto-verso au client", public_description: "Carte d'identité est un document officiel qui atteste de l'identité d'une personne", created_at: new Date(), @@ -301,16 +361,16 @@ import { const officeFolderHasCustomers: OfficeFolderHasCustomers[] = [ { - uuid: uuidOfficeFolderHasCustomer1, - customer_uuid: uuidCustomer1, - office_folder_uuid: uuidOfficeFolder1, + uid: uidOfficeFolderHasCustomer1, + customer_uid: uidCustomer1, + office_folder_uid: uidOfficeFolder1, created_at: new Date(), updated_at: new Date(), }, { - uuid: uuidOfficeFolderHasCustomer2, - customer_uuid: uuidCustomer2, - office_folder_uuid: uuidOfficeFolder2, + uid: uidOfficeFolderHasCustomer2, + customer_uid: uidCustomer2, + office_folder_uid: uidOfficeFolder2, created_at: new Date(), updated_at: new Date(), }, @@ -318,15 +378,15 @@ import { const files: Files[] = [ { - uuid: uuidFiles1, - document_uuid: uuidDocument1, + uid: uidFiles1, + document_uid: uidDocument1, file_path: "https://www.google1.com", created_at: new Date(), updated_at: new Date(), }, { - uuid: uuidFiles2, - document_uuid: uuidDocument2, + uid: uidFiles2, + document_uid: uidDocument2, file_path: "https://www.google2.com", created_at: new Date(), updated_at: new Date(), @@ -335,16 +395,16 @@ import { const deedHasDocumentTypes: DeedHasDocumentTypes[] = [ { - uuid: uuidDeedHasDocumentType1, - deed_uuid: uuidDeed1, - document_type_uuid: uuidDocumentType1, + uid: uidDeedHasDocumentType1, + deed_uid: uidDeed1, + document_type_uid: uidDocumentType1, created_at: new Date(), updated_at: new Date(), }, { - uuid: uuidDeedHasDocumentType2, - deed_uuid: uuidDeed2, - document_type_uuid: uuidDocumentType2, + uid: uidDeedHasDocumentType2, + deed_uid: uidDeed2, + document_type_uid: uidDocumentType2, created_at: new Date(), updated_at: new Date(), }, @@ -352,16 +412,16 @@ import { const deedTypeHasDocumentTypes: DeedTypeHasDocumentTypes[] = [ { - uuid: uuidDeedTypeHasDocumentType1, - deed_type_uuid: uuidDeedType1, - document_type_uuid: uuidDocumentType1, + uid: uidDeedTypeHasDocumentType1, + deed_type_uid: uidDeedType1, + document_type_uid: uidDocumentType1, created_at: new Date(), updated_at: new Date(), }, { - uuid: uuidDeedTypeHasDocumentType2, - deed_type_uuid: uuidDeedType2, - document_type_uuid: uuidDocumentType2, + uid: uidDeedTypeHasDocumentType2, + deed_type_uid: uidDeedType2, + document_type_uid: uidDocumentType2, created_at: new Date(), updated_at: new Date(), }, @@ -369,17 +429,17 @@ import { const documentHistories: DocumentHistory[] = [ { - uuid: uuidDocumentHistory1, + uid: uidDocumentHistory1, document_status: EDocumentStatus.ASKED, - document_uuid: uuidDocument1, + document_uid: uidDocument1, refused_reason: "Le document n'est pas conforme", created_at: new Date(), updated_at: new Date(), }, { - uuid: uuidDocumentHistory2, + uid: uidDocumentHistory2, document_status: EDocumentStatus.DEPOSITED, - document_uuid: uuidDocument1, + document_uid: uidDocument1, refused_reason: "Le document n'est pas conforme", created_at: new Date(), updated_at: new Date(), diff --git a/src/common/helpers/ObjectHydrate.ts b/src/common/helpers/ObjectHydrate.ts index d8f3121c..199b8733 100644 --- a/src/common/helpers/ObjectHydrate.ts +++ b/src/common/helpers/ObjectHydrate.ts @@ -1,4 +1,4 @@ -import { type ClassTransformOptions, plainToClass, plainToClassFromExist } from "class-transformer"; +import { type ClassTransformOptions, plainToClassFromExist, plainToInstance } from "class-transformer"; export default abstract class ObjectHydrate { public static hydrate(object: T, from: Partial, options?: ClassTransformOptions): T { @@ -7,7 +7,7 @@ export default abstract class ObjectHydrate { public static map(ClassEntity: { new (): T }, fromArray: Partial[], options?: ClassTransformOptions): T[] { return fromArray.map((from) => { - return plainToClass(ClassEntity, from, options); + return plainToInstance(ClassEntity, from, options); }); } } diff --git a/src/common/repositories/AddressesRepository.ts b/src/common/repositories/AddressesRepository.ts index 6a5cdba3..7bd53e84 100644 --- a/src/common/repositories/AddressesRepository.ts +++ b/src/common/repositories/AddressesRepository.ts @@ -29,7 +29,7 @@ export default class AddressesRepository extends BaseRepository { public async findOneByUid(uid: string): Promise { const addressEntity = await this.model.findUnique({ where: { - uuid: uid, + uid: uid, }, }); diff --git a/src/common/repositories/ContactsRepository.ts b/src/common/repositories/ContactsRepository.ts index 836b17d5..b302d1f6 100644 --- a/src/common/repositories/ContactsRepository.ts +++ b/src/common/repositories/ContactsRepository.ts @@ -29,7 +29,7 @@ export default class ContactsRepository extends BaseRepository { public async findOneByUid(uid: string): Promise { const contactEntity = await this.model.findUnique({ where: { - uuid: uid, + uid: uid, }, }); diff --git a/src/common/repositories/CustomersRepository.ts b/src/common/repositories/CustomersRepository.ts index 7dc3e1ee..b08bc0d5 100644 --- a/src/common/repositories/CustomersRepository.ts +++ b/src/common/repositories/CustomersRepository.ts @@ -61,7 +61,7 @@ export default class CustomersRepository extends BaseRepository { public async update(uid: string, customer: Customer): Promise { const updateArgs: Prisma.CustomersUpdateArgs = { where: { - uuid: uid, + uid: uid, }, data: { status: ECustomerStatus[customer.status as keyof typeof ECustomerStatus], @@ -91,12 +91,16 @@ export default class CustomersRepository extends BaseRepository { /** * @description : Find unique customer */ - public async findOneByUid(uid: string): Promise { - const customerEntity = await this.model.findUnique({ + public async findOneByUid(uid: string, query?: any): Promise { + const findOneArgs: Prisma.CustomersFindUniqueArgs = { where: { - uuid: uid, - }, - }); + uid: uid, + } + }; + if(query) { + findOneArgs.include = query + } + const customerEntity = await this.model.findUnique(findOneArgs); if (!customerEntity) { throw new Error("Customer not found"); diff --git a/src/common/repositories/DeedTypesHasDocumentTypesRepository.ts b/src/common/repositories/DeedTypesHasDocumentTypesRepository.ts index 975842c0..53cb40a7 100644 --- a/src/common/repositories/DeedTypesHasDocumentTypesRepository.ts +++ b/src/common/repositories/DeedTypesHasDocumentTypesRepository.ts @@ -29,7 +29,7 @@ export default class DeedTypeHasDocumentTypesRepository extends BaseRepository { public async findOneByUid(uid: string): Promise { const deedTypeHasDoculmentTypesEntity = await this.model.findUnique({ where: { - uuid: uid, + uid: uid, }, }); diff --git a/src/common/repositories/DeedTypesRepository.ts b/src/common/repositories/DeedTypesRepository.ts index 28bc1e7a..47ea54c1 100644 --- a/src/common/repositories/DeedTypesRepository.ts +++ b/src/common/repositories/DeedTypesRepository.ts @@ -34,7 +34,7 @@ export default class DeedTypesRepository extends BaseRepository { description: deedType.description, office: { connect: { - uuid: deedType.office.uid, + uid: deedType.office.uid, }, }, } @@ -43,7 +43,7 @@ export default class DeedTypesRepository extends BaseRepository { createArgs.data.deed_type_has_document_types = { createMany: { data: deedType.deed_type_has_document_types.map((relation) => ({ - document_type_uuid: relation.document_type.uid!, + document_type_uid: relation.document_type.uid!, })), skipDuplicates: true, }, @@ -58,7 +58,7 @@ export default class DeedTypesRepository extends BaseRepository { public async update(uid: string, deedType: DeedType): Promise { const updateArgs: Prisma.DeedTypesUpdateArgs = { where: { - uuid: uid, + uid: uid, }, data: { name: deedType.name, @@ -66,7 +66,7 @@ export default class DeedTypesRepository extends BaseRepository { archived_at: deedType.archived_at, office: { connect: { - uuid: deedType.office.uid, + uid: deedType.office.uid, }, }, }, @@ -76,10 +76,10 @@ export default class DeedTypesRepository extends BaseRepository { }; if (deedType.deed_type_has_document_types) { updateArgs.data.deed_type_has_document_types = { - deleteMany: { deed_type_uuid: uid }, + deleteMany: { deed_type_uid: uid }, createMany: { data: deedType.deed_type_has_document_types.map((relation) => ({ - document_type_uuid: relation.document_type.uid!, + document_type_uid: relation.document_type.uid!, })), skipDuplicates: true, }, @@ -91,15 +91,16 @@ export default class DeedTypesRepository extends BaseRepository { /** * @description : Find unique deed type */ - public async findOneByUid(uid: string): Promise { - const deedTypeEntity = await this.model.findUnique({ + public async findOneByUid(uid: string, query?: any): Promise { + const findOneArgs: Prisma.DeedTypesFindUniqueArgs = { where: { - uuid: uid, - }, - include: { - deed_type_has_document_types: true, - }, - }); + uid: uid, + } + }; + if(query) { + findOneArgs.include = query + } + const deedTypeEntity = await this.model.findUnique(findOneArgs); if (!deedTypeEntity) { throw new Error("deed type not found"); diff --git a/src/common/repositories/DeedsHasDocumentTypesRepository.ts b/src/common/repositories/DeedsHasDocumentTypesRepository.ts index 8f3c1712..65bac2c0 100644 --- a/src/common/repositories/DeedsHasDocumentTypesRepository.ts +++ b/src/common/repositories/DeedsHasDocumentTypesRepository.ts @@ -29,7 +29,7 @@ export default class DeedHasDocumentTypesRepository extends BaseRepository { public async findOneByUid(uid: string): Promise { const deedHasDocumentTypesEntity = await this.model.findUnique({ where: { - uuid: uid, + uid: uid, }, }); diff --git a/src/common/repositories/DeedsRepository.ts b/src/common/repositories/DeedsRepository.ts index b430000f..71c37b47 100644 --- a/src/common/repositories/DeedsRepository.ts +++ b/src/common/repositories/DeedsRepository.ts @@ -32,14 +32,14 @@ export default class DeedsRepository extends BaseRepository { data: { deed_type: { connect: { - uuid: deed.deed_type.uid, + uid: deed.deed_type.uid, }, }, }, }; const deedTypeWithDocumentTypes = await this.instanceDb.deedTypes.findUniqueOrThrow({ where: { - uuid: deed.deed_type.uid, + uid: deed.deed_type.uid, }, include: { deed_type_has_document_types: true }, }); @@ -50,7 +50,7 @@ export default class DeedsRepository extends BaseRepository { createArgs.data.deed_has_document_types = { createMany: { data: deedTypeWithDocumentTypes.deed_type_has_document_types.map((relation) => ({ - document_type_uuid: relation.document_type_uuid, + document_type_uid: relation.document_type_uid, })), skipDuplicates: true, }, @@ -65,7 +65,7 @@ export default class DeedsRepository extends BaseRepository { public async update(uid: string, deed: Deed): Promise { const updateArgs: Prisma.DeedsUpdateArgs = { where: { - uuid: uid, + uid: uid, }, data: {}, include: { @@ -74,10 +74,10 @@ export default class DeedsRepository extends BaseRepository { }; if (deed.deed_has_document_types) { updateArgs.data.deed_has_document_types = { - deleteMany: { deed_uuid: uid }, + deleteMany: { deed_uid: uid }, createMany: { data: deed.deed_has_document_types.map((relation) => ({ - document_type_uuid: relation.document_type.uid!, + document_type_uid: relation.document_type.uid!, })), skipDuplicates: true, }, @@ -92,7 +92,7 @@ export default class DeedsRepository extends BaseRepository { public async findOneByUid(uid: string): Promise { const deedTypeEntity = await this.model.findUnique({ where: { - uuid: uid, + uid: uid, }, }); diff --git a/src/common/repositories/DocumentTypesRepository.ts b/src/common/repositories/DocumentTypesRepository.ts index a502b47a..d29259cb 100644 --- a/src/common/repositories/DocumentTypesRepository.ts +++ b/src/common/repositories/DocumentTypesRepository.ts @@ -1,7 +1,7 @@ import Database from "@Common/databases/database"; import BaseRepository from "@Repositories/BaseRepository"; import { Service } from "typedi"; -import { DocumentTypes } from "prisma/prisma-client"; +import { DocumentTypes, Prisma } from "prisma/prisma-client"; import { DocumentType } from "le-coffre-resources/dist/SuperAdmin"; @Service() @@ -35,7 +35,7 @@ export default class DocumentTypesRepository extends BaseRepository { private_description: documentType.private_description, office: { connect: { - uuid: documentType.office.uid, + uid: documentType.office.uid, }, }, }, @@ -45,10 +45,10 @@ export default class DocumentTypesRepository extends BaseRepository { /** * @description : update given document type */ - public async update(uuid: string, documentType: DocumentType): Promise { + public async update(uid: string, documentType: DocumentType): Promise { return this.model.update({ where: { - uuid: uuid, + uid: uid, }, data: { name: documentType.name, @@ -57,7 +57,7 @@ export default class DocumentTypesRepository extends BaseRepository { archived_at: documentType.archived_at, office: { connect: { - uuid: documentType.office.uid, + uid: documentType.office.uid, }, }, }, @@ -67,12 +67,16 @@ export default class DocumentTypesRepository extends BaseRepository { /** * @description : find unique document type */ - public async findOneByUid(uid: string): Promise { - const documentTypeEntity = await this.model.findUnique({ + public async findOneByUid(uid: string, query?: any): Promise { + const findOneArgs: Prisma.DocumentTypesFindUniqueArgs = { where: { - uuid: uid, - }, - }); + uid: uid, + } + }; + if(query) { + findOneArgs.include = query + } + const documentTypeEntity = await this.model.findUnique(findOneArgs); if (!documentTypeEntity) { throw new Error("Document Type not found"); diff --git a/src/common/repositories/DocumentsRepository.ts b/src/common/repositories/DocumentsRepository.ts index 310ab78a..e9c631f2 100644 --- a/src/common/repositories/DocumentsRepository.ts +++ b/src/common/repositories/DocumentsRepository.ts @@ -32,17 +32,17 @@ export default class DocumentsRepository extends BaseRepository { data: { folder: { connect: { - uuid: document.folder.uid, + uid: document.folder.uid, }, }, depositor: { connect: { - uuid: document.depositor.uid, + uid: document.depositor.uid, }, }, document_type: { connect: { - uuid: document.document_type.uid, + uid: document.document_type.uid, }, }, }, @@ -52,7 +52,7 @@ export default class DocumentsRepository extends BaseRepository { data: { document: { connect: { - uuid: documentCreated.uuid, + uid: documentCreated.uid, }, }, }, @@ -67,9 +67,9 @@ export default class DocumentsRepository extends BaseRepository { public async createMany(documents: Document[]): Promise { return this.model.createMany({ data: documents.map((document) => ({ - folder_uuid: document.folder.uid!, - depositor_uuid: document.depositor.uid!, - document_type_uuid: document.document_type.uid!, + folder_uid: document.folder.uid!, + depositor_uid: document.depositor.uid!, + document_type_uid: document.document_type.uid!, })), skipDuplicates: true, }); @@ -81,7 +81,7 @@ export default class DocumentsRepository extends BaseRepository { public async update(uid: string, document: Document, refusedReason?: string): Promise { return this.model.update({ where: { - uuid: uid, + uid: uid, }, data: { document_status: EDocumentStatus[document.document_status as keyof typeof EDocumentStatus], @@ -93,7 +93,7 @@ export default class DocumentsRepository extends BaseRepository { }, depositor: { connect: { - uuid: document.depositor.uid, + uid: document.depositor.uid, }, }, }, @@ -106,7 +106,7 @@ export default class DocumentsRepository extends BaseRepository { public async delete(uid: string): Promise { return this.model.delete({ where: { - uuid: uid, + uid: uid, }, }); } @@ -114,13 +114,16 @@ export default class DocumentsRepository extends BaseRepository { /** * @description : Find unique document */ - public async findOneByUid(uid: string): Promise { - const documentEntity = await this.model.findUnique({ + public async findOneByUid(uid: string, query?: any): Promise { + const findOneArgs: Prisma.DocumentsFindUniqueArgs = { where: { - uuid: uid, - }, - }); - + uid: uid, + } + }; + if(query) { + findOneArgs.include = query + } + const documentEntity = await this.model.findUnique(findOneArgs); if (!documentEntity) { throw new Error("Document not found"); } diff --git a/src/common/repositories/FilesRepository.ts b/src/common/repositories/FilesRepository.ts index b6431dff..d91da097 100644 --- a/src/common/repositories/FilesRepository.ts +++ b/src/common/repositories/FilesRepository.ts @@ -32,7 +32,7 @@ export default class FilesRepository extends BaseRepository { data: { document: { connect: { - uuid: file.document.uid + uid: file.document.uid } }, file_path: file.file_path @@ -46,7 +46,7 @@ export default class FilesRepository extends BaseRepository { public async update(uid: string, file: File): Promise { return this.model.update({ where: { - uuid: uid, + uid: uid, }, data: { file_path: file.file_path @@ -60,7 +60,7 @@ export default class FilesRepository extends BaseRepository { public async delete(uid: string): Promise { return this.model.delete({ where: { - uuid: uid, + uid: uid, } }); } @@ -71,7 +71,7 @@ export default class FilesRepository extends BaseRepository { public async findOneByUid(uid: string): Promise { const fileEntity = await this.model.findUnique({ where: { - uuid: uid, + uid: uid, }, }); diff --git a/src/common/repositories/OfficeFoldersHasCustomerRepository.ts b/src/common/repositories/OfficeFoldersHasCustomerRepository.ts index cb879b32..aa83e947 100644 --- a/src/common/repositories/OfficeFoldersHasCustomerRepository.ts +++ b/src/common/repositories/OfficeFoldersHasCustomerRepository.ts @@ -30,7 +30,7 @@ export default class OfficeFoldersHasCustomerRepository extends BaseRepository { public async findOneByUid(uid: string): Promise { const officeFolderHasCustomersEntity = await this.model.findUnique({ where: { - uuid: uid, + uid: uid, }, }); diff --git a/src/common/repositories/OfficeFoldersHasStakeholderRepository.ts b/src/common/repositories/OfficeFoldersHasStakeholderRepository.ts index 576e9cd0..02b2bb11 100644 --- a/src/common/repositories/OfficeFoldersHasStakeholderRepository.ts +++ b/src/common/repositories/OfficeFoldersHasStakeholderRepository.ts @@ -29,7 +29,7 @@ export default class OfficeFoldersHasStakeholderRepository extends BaseRepositor public async findOneByUid(uid: string): Promise { const officeFolderHasStakeholdersEntity = await this.model.findUnique({ where: { - uuid: uid, + uid: uid, }, }); diff --git a/src/common/repositories/OfficeFoldersRepository.ts b/src/common/repositories/OfficeFoldersRepository.ts index 5f7032ab..06e8d87a 100644 --- a/src/common/repositories/OfficeFoldersRepository.ts +++ b/src/common/repositories/OfficeFoldersRepository.ts @@ -38,7 +38,7 @@ export default class OfficeFoldersRepository extends BaseRepository { create: { deed_type: { connect: { - uuid: officeFolder.deed.deed_type.uid, + uid: officeFolder.deed.deed_type.uid, }, }, }, @@ -57,7 +57,7 @@ export default class OfficeFoldersRepository extends BaseRepository { createArgs.data.office_folder_has_stakeholder = { createMany: { data: officeFolder.office_folder_has_stakeholder.map((relation) => ({ - user_stakeholder_uuid: relation.user_stakeholder.uid!, + user_stakeholder_uid: relation.user_stakeholder.uid!, })), skipDuplicates: true }, @@ -69,10 +69,10 @@ export default class OfficeFoldersRepository extends BaseRepository { /** * @description : Update data of an office folder */ - public async update(officeFolderUuid: string, officeFolder: OfficeFolder): Promise { + public async update(officeFolderuid: string, officeFolder: OfficeFolder): Promise { const updateArgs: Prisma.OfficeFoldersUpdateArgs = { where: { - uuid: officeFolderUuid, + uid: officeFolderuid, }, data: { folder_number: officeFolder.folder_number, @@ -89,10 +89,10 @@ export default class OfficeFoldersRepository extends BaseRepository { }; if (officeFolder.office_folder_has_stakeholder) { updateArgs.data.office_folder_has_stakeholder = { - deleteMany: { office_folder_uuid: officeFolderUuid }, + deleteMany: { office_folder_uid: officeFolderuid }, createMany: { data: officeFolder.office_folder_has_stakeholder.map((relation) => ({ - user_stakeholder_uuid: relation.user_stakeholder.uid!, + user_stakeholder_uid: relation.user_stakeholder.uid!, })), skipDuplicates: true }, @@ -100,10 +100,10 @@ export default class OfficeFoldersRepository extends BaseRepository { } if (officeFolder.office_folder_has_customers) { updateArgs.data.office_folder_has_customers = { - deleteMany: { office_folder_uuid: officeFolderUuid }, + deleteMany: { office_folder_uid: officeFolderuid }, createMany: { data: officeFolder.office_folder_has_customers.map((relation) => ({ - customer_uuid: relation.customer.uid!, + customer_uid: relation.customer.uid!, })), skipDuplicates: true }, @@ -113,8 +113,8 @@ export default class OfficeFoldersRepository extends BaseRepository { updateArgs.data.documents = { createMany: { data: officeFolder.documents.map((relation) => ({ - document_type_uuid: relation.document_type.uid!, - depositor_uuid: relation.depositor.uid! + document_type_uid: relation.document_type.uid!, + depositor_uid: relation.depositor.uid! })), skipDuplicates: true }, @@ -126,12 +126,16 @@ export default class OfficeFoldersRepository extends BaseRepository { /** * @description : Find one office folder */ - public async findOneByUid(uid: string): Promise { - const officeFolderEntity = await this.model.findUnique({ + public async findOneByUid(uid: string, query?: any): Promise { + const findOneArgs: Prisma.OfficeFoldersFindUniqueArgs = { where: { - uuid: uid, - }, - }); + uid: uid, + } + }; + if(query) { + findOneArgs.include = query + } + const officeFolderEntity = await this.model.findUnique(findOneArgs); if (!officeFolderEntity) { throw new Error("office folder not found"); diff --git a/src/common/repositories/OfficesRepository.ts b/src/common/repositories/OfficesRepository.ts index 741bdd10..1bd11cf0 100644 --- a/src/common/repositories/OfficesRepository.ts +++ b/src/common/repositories/OfficesRepository.ts @@ -1,7 +1,7 @@ import Database from "@Common/databases/database"; import BaseRepository from "@Repositories/BaseRepository"; import { Service } from "typedi"; -import { EOfficeStatus, Offices } from "@prisma/client"; +import { EOfficeStatus, Offices, Prisma } from "@prisma/client"; import { Office as OfficeRessource } from "le-coffre-resources/dist/SuperAdmin"; @Service() @@ -52,7 +52,7 @@ export default class OfficesRepository extends BaseRepository { public async update(uid: string, office: OfficeRessource): Promise { return this.model.update({ where: { - uuid: uid, + uid: uid, }, data: { name: office.name, @@ -71,15 +71,20 @@ export default class OfficesRepository extends BaseRepository { /** * @description : Find one office */ - public async findOneByUid(uid: string): Promise { - const officeEntity = await this.model.findUnique({ + public async findOneByUid(uid: string, query?: any): Promise { + const findOneArgs: Prisma.OfficesFindUniqueArgs = { where: { - uuid: uid, - }, - }); + uid: uid, + } + }; + if(query) { + findOneArgs.include = query + } + const officeEntity = await this.model.findUnique(findOneArgs); + if (!officeEntity) { - throw new Error("User not found"); + throw new Error("office not found"); } return officeEntity; diff --git a/src/common/repositories/UsersRepository.ts b/src/common/repositories/UsersRepository.ts index 8d1dedb7..72a521c0 100644 --- a/src/common/repositories/UsersRepository.ts +++ b/src/common/repositories/UsersRepository.ts @@ -79,7 +79,7 @@ export default class UsersRepository extends BaseRepository { public async update(uid: string, user: User): Promise { const updateArgs: Prisma.UsersUpdateArgs = { where: { - uuid: uid, + uid: uid, }, data: { idNot: user.idNot, @@ -128,12 +128,16 @@ export default class UsersRepository extends BaseRepository { /** * @description : Find one user */ - public async findOneByUid(uid: string): Promise { - const userEntity = await this.model.findUnique({ + public async findOneByUid(uid: string, query?: any): Promise { + const findOneArgs: Prisma.UsersFindUniqueArgs = { where: { - uuid: uid, - }, - }); + uid: uid, + } + }; + if(query) { + findOneArgs.include = query + } + const userEntity = await this.model.findUnique(findOneArgs); if (!userEntity) { throw new Error("User not found"); diff --git a/src/services/private-services/AddressesService/AddressesService.ts b/src/services/private-services/AddressesService/AddressesService.ts index 8d3886c3..41e53765 100644 --- a/src/services/private-services/AddressesService/AddressesService.ts +++ b/src/services/private-services/AddressesService/AddressesService.ts @@ -20,7 +20,7 @@ export default class AddressesService extends BaseService { * @description : Get a address by uid * @throws {Error} If address cannot be get */ - public async getByUid(uuid: string) { - return this.addressRepository.findOneByUid(uuid); + public async getByUid(uid: string) { + return this.addressRepository.findOneByUid(uid); } } diff --git a/src/services/private-services/ContactsService/ContactsService.ts b/src/services/private-services/ContactsService/ContactsService.ts index 4c1df6d1..4d381a84 100644 --- a/src/services/private-services/ContactsService/ContactsService.ts +++ b/src/services/private-services/ContactsService/ContactsService.ts @@ -20,7 +20,7 @@ export default class ContactsService extends BaseService { * @description : Get a contact by uid * @throws {Error} If contact cannot be get */ - public async getByUid(uuid: string) { - return this.contactRepository.findOneByUid(uuid); + public async getByUid(uid: string) { + return this.contactRepository.findOneByUid(uid); } } diff --git a/src/services/super-admin/CustomersService/CustomersService.ts b/src/services/super-admin/CustomersService/CustomersService.ts index f096654e..20470182 100644 --- a/src/services/super-admin/CustomersService/CustomersService.ts +++ b/src/services/super-admin/CustomersService/CustomersService.ts @@ -38,7 +38,7 @@ export default class CustomersService extends BaseService { * @description : Get a customer by uid * @throws {Error} If customer cannot be get by uid */ - public async getByUid(uid: string): Promise { - return this.customerRepository.findOneByUid(uid); + public async getByUid(uid: string, query?: any): Promise { + return this.customerRepository.findOneByUid(uid, query); } } diff --git a/src/services/super-admin/DeedTypesService/DeedTypesService.ts b/src/services/super-admin/DeedTypesService/DeedTypesService.ts index c52f3278..da71909e 100644 --- a/src/services/super-admin/DeedTypesService/DeedTypesService.ts +++ b/src/services/super-admin/DeedTypesService/DeedTypesService.ts @@ -40,7 +40,7 @@ export default class DeedTypesService extends BaseService { * @description : Get a deedtype by uid * @throws {Error} If deed-type cannot be get by uid */ - public async getByUid(uid: string) { - return this.deedTypeRepository.findOneByUid(uid); + public async getByUid(uid: string, query?: any) { + return this.deedTypeRepository.findOneByUid(uid, query); } } diff --git a/src/services/super-admin/DeedsService/DeedsService.ts b/src/services/super-admin/DeedsService/DeedsService.ts index 5d144b14..bb133369 100644 --- a/src/services/super-admin/DeedsService/DeedsService.ts +++ b/src/services/super-admin/DeedsService/DeedsService.ts @@ -30,8 +30,8 @@ export default class DeedsService extends BaseService { * @description : Update data of a deed with document types * @throws {Error} If deeds cannot be updated with document types or one of them */ - public async update(deedUuid: string, deed: Deed): Promise { - return this.deedRepository.update(deedUuid, deed); + public async update(deeduid: string, deed: Deed): Promise { + return this.deedRepository.update(deeduid, deed); } /** diff --git a/src/services/super-admin/DocumentTypesService/DocumentTypesService.ts b/src/services/super-admin/DocumentTypesService/DocumentTypesService.ts index ccf13a05..dacfe17f 100644 --- a/src/services/super-admin/DocumentTypesService/DocumentTypesService.ts +++ b/src/services/super-admin/DocumentTypesService/DocumentTypesService.ts @@ -38,7 +38,7 @@ export default class DocumentTypesService extends BaseService { * @description : Get a document-type by uid * @throws {Error} If document-type is not found */ - public async getByUid(uid: string) { - return this.documentTypeRepository.findOneByUid(uid); + public async getByUid(uid: string, query?: any) { + return this.documentTypeRepository.findOneByUid(uid, query); } } diff --git a/src/services/super-admin/DocumentsService/DocumentsService.ts b/src/services/super-admin/DocumentsService/DocumentsService.ts index 38bed1f8..4e466535 100644 --- a/src/services/super-admin/DocumentsService/DocumentsService.ts +++ b/src/services/super-admin/DocumentsService/DocumentsService.ts @@ -54,7 +54,7 @@ export default class DocumentsService extends BaseService { * @description : Get a document by uid * @throws {Error} If document cannot be get by uid */ - public async getByUid(uid: string) { - return this.documentsRepository.findOneByUid(uid); + public async getByUid(uid: string, query?: any) { + return this.documentsRepository.findOneByUid(uid, query); } } diff --git a/src/services/super-admin/OfficeFoldersService/OfficeFoldersService.ts b/src/services/super-admin/OfficeFoldersService/OfficeFoldersService.ts index bcc7147d..06388662 100644 --- a/src/services/super-admin/OfficeFoldersService/OfficeFoldersService.ts +++ b/src/services/super-admin/OfficeFoldersService/OfficeFoldersService.ts @@ -37,15 +37,15 @@ export default class OfficeFoldersService extends BaseService { * @description : Modify a folder * @throws {Error} If folder cannot be modified */ - public async update(officeFolderUuid: string, officeFolderEntity: OfficeFolder): Promise { - return this.officeFoldersRepository.update(officeFolderUuid, officeFolderEntity); + public async update(officeFolderuid: string, officeFolderEntity: OfficeFolder): Promise { + return this.officeFoldersRepository.update(officeFolderuid, officeFolderEntity); } /** * @description : Get a folder by uid * @throws {Error} If folder cannot be get by uid */ - public async getByUid(uid: string) { - return this.officeFoldersRepository.findOneByUid(uid); + public async getByUid(uid: string, query?: any) { + return this.officeFoldersRepository.findOneByUid(uid, query); } } diff --git a/src/services/super-admin/OfficesService/OfficesService.ts b/src/services/super-admin/OfficesService/OfficesService.ts index 6bb49a15..4de766be 100644 --- a/src/services/super-admin/OfficesService/OfficesService.ts +++ b/src/services/super-admin/OfficesService/OfficesService.ts @@ -38,7 +38,7 @@ export default class OfficesService extends BaseService { * @description : Get a office by uid * @throws {Error} If office cannot be get */ - public async getByUid(uid: string): Promise { - return this.officeRepository.findOneByUid(uid); + public async getByUid(uid: string, query?: any): Promise { + return this.officeRepository.findOneByUid(uid, query); } } diff --git a/src/services/super-admin/UsersService/UsersService.ts b/src/services/super-admin/UsersService/UsersService.ts index 62e11871..1e9c4445 100644 --- a/src/services/super-admin/UsersService/UsersService.ts +++ b/src/services/super-admin/UsersService/UsersService.ts @@ -31,15 +31,15 @@ export default class UsersService extends BaseService { * @description : Modify a user * @throws {Error} If user modification failed */ - public update(uuid: string, userEntity: User): Promise { - return this.userRepository.update(uuid, userEntity); + public update(uid: string, userEntity: User): Promise { + return this.userRepository.update(uid, userEntity); } /** * @description : Get a user by uid * @throws {Error} If user cannot be get by uid */ - public getByUid(uid: string): Promise { - return this.userRepository.findOneByUid(uid); + public getByUid(uid: string, query?: any): Promise { + return this.userRepository.findOneByUid(uid, query); } } diff --git a/src/test/config/Init.ts b/src/test/config/Init.ts index 0d6d0380..8be002d5 100644 --- a/src/test/config/Init.ts +++ b/src/test/config/Init.ts @@ -27,7 +27,7 @@ export const initDocumentType = (documentType: DocumentType, office: Office): Pr public_description: documentType.public_description, private_description: documentType.private_description, archived_at: null, - office_uuid: office.uid!, + office_uid: office.uid!, }, }); }; @@ -38,11 +38,11 @@ export const initDeedType = (deedType: DeedType, office: Office, documentTypes?: name: deedType.name, description: deedType.description, archived_at: null, - office_uuid: office.uid!, + office_uid: office.uid!, deed_type_has_document_types: { createMany: { data: documentTypes!.map((documentType) => ({ - document_type_uuid: documentType, + document_type_uid: documentType, })), skipDuplicates: true, }, diff --git a/src/test/services/super-admin/CustomersService.test.ts b/src/test/services/super-admin/CustomersService.test.ts index 6d7282bc..1ebccd55 100644 --- a/src/test/services/super-admin/CustomersService.test.ts +++ b/src/test/services/super-admin/CustomersService.test.ts @@ -28,7 +28,7 @@ describe("test create function", () => { expect(customerCreated?.status).toEqual("PENDING"); // verify if customer contact is created in db - const contactCreated = await prisma.contacts.findUnique({ where: { uuid: customerCreated.contact_uuid } }); + const contactCreated = await prisma.contacts.findUnique({ where: { uid: customerCreated.contact_uid } }); expect(contactCreated?.first_name).toEqual(customer.contact.first_name); expect(contactCreated?.last_name).toEqual(customer.contact.last_name); expect(contactCreated?.cell_phone_number).toEqual(customer.contact.cell_phone_number); @@ -37,7 +37,7 @@ describe("test create function", () => { expect(contactCreated?.email).toEqual(customer.contact.email); // verify if customer address is created in db - const addressForContactCreated = await prisma.addresses.findUnique({ where: { uuid: contactCreated?.address_uuid } }); + const addressForContactCreated = await prisma.addresses.findUnique({ where: { uid: contactCreated?.address_uid } }); expect(addressForContactCreated?.address).toEqual(customer.contact.address?.address); expect(addressForContactCreated?.zip_code).toEqual(customer.contact.address?.zip_code); expect(addressForContactCreated?.city).toEqual(customer.contact.address?.city); @@ -83,7 +83,7 @@ describe("test create function", () => { expect(customerCreated?.status).toEqual("PENDING"); // verify if customer_ contact is created in db - const contactCreated = await prisma.contacts.findUnique({ where: { uuid: customerCreated.contact_uuid } }); + const contactCreated = await prisma.contacts.findUnique({ where: { uid: customerCreated.contact_uid } }); expect(contactCreated?.first_name).toEqual(customer.contact.first_name); expect(contactCreated?.last_name).toEqual(customer.contact.last_name); expect(contactCreated?.cell_phone_number).toEqual(customer_.contact.cell_phone_number); @@ -92,7 +92,7 @@ describe("test create function", () => { expect(contactCreated?.email).toEqual(customer_.contact.email); // verify if customer_ address is created in db - const addressForContactCreated = await prisma.addresses.findUnique({ where: { uuid: contactCreated?.address_uuid } }); + const addressForContactCreated = await prisma.addresses.findUnique({ where: { uid: contactCreated?.address_uid } }); expect(addressForContactCreated?.address).toEqual(customer.contact.address?.address); expect(addressForContactCreated?.zip_code).toEqual(customer.contact.address?.zip_code); expect(addressForContactCreated?.city).toEqual(customer.contact.address?.city); @@ -104,12 +104,12 @@ describe("test update function", () => { const customerCreated = await prisma.customers.findFirstOrThrow({ where: { contact: { email: customer_.contact.email } } }); // update the last customer created with his own new office and own contact - const updatedCustomer = await CustomersServiceTest.update(customerCreated.uuid, customer_); + const updatedCustomer = await CustomersServiceTest.update(customerCreated.uid, customer_); expect(updatedCustomer?.status).toEqual("ERRONED"); // verify if customer_ contact is created in db - const existingContact = await prisma.contacts.findUnique({ where: { uuid: updatedCustomer.contact_uuid } }); + const existingContact = await prisma.contacts.findUnique({ where: { uid: updatedCustomer.contact_uid } }); expect(existingContact?.first_name).toEqual(customer_.contact.first_name); expect(existingContact?.last_name).toEqual(customer_.contact.last_name); expect(existingContact?.cell_phone_number).toEqual(customer_.contact.cell_phone_number); @@ -118,14 +118,14 @@ describe("test update function", () => { expect(existingContact?.email).toEqual(customer_.contact.email); // verify if customer_ address is created in db - const addressForExistingContact = await prisma.addresses.findUnique({ where: { uuid: existingContact?.address_uuid } }); + const addressForExistingContact = await prisma.addresses.findUnique({ where: { uid: existingContact?.address_uid } }); expect(addressForExistingContact?.address).toEqual(customer_.contact.address?.address); expect(addressForExistingContact?.zip_code).toEqual(customer_.contact.address?.zip_code); expect(addressForExistingContact?.city).toEqual(customer_.contact.address?.city); }); it("should not update an customer with an email already used", async () => { - const customerUid = (await prisma.customers.findFirstOrThrow({ where: { contact: { email: customer_.contact.email } } })).uuid; + const customerUid = (await prisma.customers.findFirstOrThrow({ where: { contact: { email: customer_.contact.email } } })).uid; let updatedCustomer: Customer = JSON.parse(JSON.stringify(customer_)); updatedCustomer.contact.email = customerContact.email; @@ -137,7 +137,7 @@ describe("test update function", () => { }); it("should not update an customer with an phone number already used", async () => { - const customerUid = (await prisma.customers.findFirstOrThrow({ where: { contact: { email: customer_.contact.email } } })).uuid; + const customerUid = (await prisma.customers.findFirstOrThrow({ where: { contact: { email: customer_.contact.email } } })).uid; let updatedCustomer: Customer = JSON.parse(JSON.stringify(customer_)); updatedCustomer.contact.cell_phone_number = customerContact.cell_phone_number; diff --git a/src/test/services/super-admin/DeedService.test.ts b/src/test/services/super-admin/DeedService.test.ts index f208958f..58511ebb 100644 --- a/src/test/services/super-admin/DeedService.test.ts +++ b/src/test/services/super-admin/DeedService.test.ts @@ -13,10 +13,10 @@ const prisma = new PrismaClient(); const DeedServiceTest = new DeedService(Container.get(DeedsRepository)); beforeAll(async () => { - office.uid = (await initOffice(office)).uuid; - documentType.uid = (await initDocumentType(documentType, office)).uuid; - documentType_.uid = (await initDocumentType(documentType_, office)).uuid; - deedType.uid = (await initDeedType(deedType, office, [documentType.uid])).uuid; + office.uid = (await initOffice(office)).uid; + documentType.uid = (await initDocumentType(documentType, office)).uid; + documentType_.uid = (await initDocumentType(documentType_, office)).uid; + deedType.uid = (await initDeedType(deedType, office, [documentType.uid])).uid; }); afterAll(async () => { @@ -29,7 +29,7 @@ afterAll(async () => { describe("test create function", () => { it("should not create a new deed if deed type is unknown", async () => { let deedWithoutDeedTypeUid: Deed = JSON.parse(JSON.stringify(deed)); - deedWithoutDeedTypeUid.deed_type.uid = "random uuid"; + deedWithoutDeedTypeUid.deed_type.uid = "random uid"; // try to create a new deed with unknown deed type async function createDeedWithUnknownDeedType() { await DeedServiceTest.create(deedWithoutDeedTypeUid); @@ -42,13 +42,13 @@ describe("test create function", () => { deedWithDeedTypeUid.deed_type.uid = deedType.uid; const deedCreated = await DeedServiceTest.create(deedWithDeedTypeUid); - expect(deedCreated.deed_type_uuid).toEqual(deedType.uid); + expect(deedCreated.deed_type_uid).toEqual(deedType.uid); }); it("should have by default the same document types as its deed type ", async () => { const deedWithDocumentTypes = await prisma.deeds.findFirstOrThrow({ include: { deed_has_document_types: true } }); expect(deedWithDocumentTypes.deed_has_document_types.length).toEqual(1); - expect(deedWithDocumentTypes.deed_has_document_types[0]?.document_type_uuid).toEqual(documentType.uid); + expect(deedWithDocumentTypes.deed_has_document_types[0]?.document_type_uid).toEqual(documentType.uid); }); it("should create a the same deed based on existing deed type", async () => { @@ -56,7 +56,7 @@ describe("test create function", () => { deedWithDeedTypeUid.deed_type.uid = deedType.uid; const deedCreated = await DeedServiceTest.create(deedWithDeedTypeUid); - expect(deedCreated.deed_type_uuid).toEqual(deedType.uid); + expect(deedCreated.deed_type_uid).toEqual(deedType.uid); }); it("should not create a new deed based on archivated deed type", async () => { @@ -64,7 +64,7 @@ describe("test create function", () => { deedArchivated.deed_type.uid = deedType.uid; await prisma.deedTypes.update({ - where: { uuid: deedType.uid }, + where: { uid: deedType.uid }, data: { archived_at: new Date(Date.now()), }, @@ -80,7 +80,7 @@ describe("test create function", () => { describe("test update function", () => { it("should add document types to a deed", async () => { - const deedUid = (await prisma.deeds.findFirstOrThrow({ where: { deed_type_uuid: deedType.uid } })).uuid; + const deedUid = (await prisma.deeds.findFirstOrThrow({ where: { deed_type_uid: deedType.uid } })).uid; let deedToUpdate: Deed = JSON.parse(JSON.stringify(deed)); deedToUpdate.deed_has_document_types = [ @@ -102,7 +102,7 @@ describe("test update function", () => { const deedUpdated = await prisma.deeds.findFirstOrThrow({ where: { - uuid: deedUid, + uid: deedUid, }, include: { deed_has_document_types: true, @@ -112,7 +112,7 @@ describe("test update function", () => { }); it("should not add document types to a deed type that already has those document types ", async () => { - const deedUid = (await prisma.deeds.findFirstOrThrow({ where: { deed_type_uuid: deedType.uid } })).uuid; + const deedUid = (await prisma.deeds.findFirstOrThrow({ where: { deed_type_uid: deedType.uid } })).uid; let deedToUpdate: Deed = JSON.parse(JSON.stringify(deed)); deedToUpdate.deed_has_document_types = [ @@ -134,7 +134,7 @@ describe("test update function", () => { const deedUpdated = await prisma.deeds.findFirstOrThrow({ where: { - uuid: deedUid, + uid: deedUid, }, include: { deed_has_document_types: true, @@ -144,7 +144,7 @@ describe("test update function", () => { }); it("should delete document types from a deed", async () => { - const deedUid = (await prisma.deeds.findFirstOrThrow({ where: { deed_type_uuid: deedType.uid } })).uuid; + const deedUid = (await prisma.deeds.findFirstOrThrow({ where: { deed_type_uid: deedType.uid } })).uid; let deedToUpdate: Deed = JSON.parse(JSON.stringify(deed)); // set relation between deed and document types empty @@ -154,7 +154,7 @@ describe("test update function", () => { const deedUpdated = await prisma.deeds.findFirstOrThrow({ where: { - uuid: deedUid, + uid: deedUid, }, include: { deed_has_document_types: true, @@ -173,7 +173,7 @@ describe("test get function", () => { expect(deeds.length).toEqual(2); // verify result content - expect(deeds[0]?.deed_type_uuid).toEqual(deedType.uid); - expect(deeds[1]?.deed_type_uuid).toEqual(deedType.uid); + expect(deeds[0]?.deed_type_uid).toEqual(deedType.uid); + expect(deeds[1]?.deed_type_uid).toEqual(deedType.uid); }); }); diff --git a/src/test/services/super-admin/DeedTypesService.test.ts b/src/test/services/super-admin/DeedTypesService.test.ts index 28b99eb6..5cf11f7f 100644 --- a/src/test/services/super-admin/DeedTypesService.test.ts +++ b/src/test/services/super-admin/DeedTypesService.test.ts @@ -13,10 +13,10 @@ const prisma = new PrismaClient(); const DeedTypeServiceTest = new DeedTypeService(Container.get(DeedTypesRepository)); beforeAll(async () => { - office.uid = (await initOffice(office)).uuid; - office_.uid = (await initOffice(office_)).uuid; - documentType.uid = (await initDocumentType(documentType, office)).uuid; - documentType_.uid = (await initDocumentType(documentType_, office)).uuid; + office.uid = (await initOffice(office)).uid; + office_.uid = (await initOffice(office_)).uid; + documentType.uid = (await initDocumentType(documentType, office)).uid; + documentType_.uid = (await initDocumentType(documentType_, office)).uid; }); afterAll(async () => { @@ -29,7 +29,7 @@ afterAll(async () => { describe("test create function", () => { it("should not create a new deed type if office is unknown", async () => { let deedTypeWithoutOfficeUid: DeedType = JSON.parse(JSON.stringify(deedType)); - deedTypeWithoutOfficeUid.office.uid = "random uuid"; + deedTypeWithoutOfficeUid.office.uid = "random uid"; // try to create a new deed type with unknown office async function createDeedTypeWithUnknownOffice() { await DeedTypeServiceTest.create(deedTypeWithoutOfficeUid); @@ -43,7 +43,7 @@ describe("test create function", () => { expect(deedTypeCreated.name).toEqual(deedType.name); expect(deedTypeCreated.description).toEqual(deedType.description); expect(deedTypeCreated.archived_at).toBeNull(); - expect(deedTypeCreated.office_uuid).toEqual(office.uid); + expect(deedTypeCreated.office_uid).toEqual(office.uid); }); it("should not create a new deed type with a name already used for a given office", async () => { @@ -66,7 +66,7 @@ describe("test create function", () => { expect(deedTypeCreated.name).toEqual(deedType.name); expect(deedTypeCreated.description).toEqual(deedType.description); expect(deedTypeCreated.archived_at).toBeNull(); - expect(deedTypeCreated.office_uuid).toEqual(office_.uid); + expect(deedTypeCreated.office_uid).toEqual(office_.uid); }); it("should create the a new deed type version with a different name for a given office", async () => { @@ -78,33 +78,33 @@ describe("test create function", () => { expect(deedTypeCreated.name).toEqual(deedType_.name); expect(deedTypeCreated.description).toEqual(deedType.description); expect(deedTypeCreated.archived_at).toBeNull(); - expect(deedTypeCreated.office_uuid).toEqual(office.uid); + expect(deedTypeCreated.office_uid).toEqual(office.uid); }); }); describe("test update function", () => { it("should update a deed type data", async () => { - const deedTypeCreated = await prisma.deedTypes.findFirstOrThrow({ where: { name: deedType_.name, office_uuid: office.uid } }); + const deedTypeCreated = await prisma.deedTypes.findFirstOrThrow({ where: { name: deedType_.name, office_uid: office.uid } }); expect(deedTypeCreated.name).toEqual(deedType_.name); expect(deedTypeCreated.description).toEqual(deedType.description); expect(deedTypeCreated.archived_at).toBeNull(); - expect(deedTypeCreated.office_uuid).toEqual(deedType.office.uid); + expect(deedTypeCreated.office_uid).toEqual(deedType.office.uid); let deedTypeWithNewDescription: DeedType = JSON.parse(JSON.stringify(deedType_)); deedTypeWithNewDescription.office = office; // update the last deed type created with his the right description - const deedTypeUpdated = await DeedTypeServiceTest.update(deedTypeCreated.uuid, deedTypeWithNewDescription); + const deedTypeUpdated = await DeedTypeServiceTest.update(deedTypeCreated.uid, deedTypeWithNewDescription); expect(deedTypeUpdated.name).toEqual(deedType_.name); expect(deedTypeUpdated.description).toEqual(deedType_.description); expect(deedTypeUpdated.archived_at).toBeNull(); - expect(deedTypeUpdated.office_uuid).toEqual(deedType.office.uid); + expect(deedTypeUpdated.office_uid).toEqual(deedType.office.uid); }); it("should not update a deed type name with an already used name for given office", async () => { - const deedTypeUid = (await prisma.deedTypes.findFirstOrThrow({ where: { name: deedType_.name, office_uuid: office.uid } })).uuid; + const deedTypeUid = (await prisma.deedTypes.findFirstOrThrow({ where: { name: deedType_.name, office_uid: office.uid } })).uid; let deedTypeWithSameNameAndOffice: DeedType = JSON.parse(JSON.stringify(deedType_)); deedTypeWithSameNameAndOffice.office.uid = office.uid; deedTypeWithSameNameAndOffice.name = deedType.name; @@ -117,7 +117,7 @@ describe("test update function", () => { }); it("should not update a deed type office membership if the office already have this document type", async () => { - const deedTypeUid = (await prisma.deedTypes.findFirstOrThrow({ where: { name: deedType_.name, office_uuid: office.uid } })).uuid; + const deedTypeUid = (await prisma.deedTypes.findFirstOrThrow({ where: { name: deedType_.name, office_uid: office.uid } })).uid; let deedTypeWithSameNameAndOffice: DeedType = JSON.parse(JSON.stringify(deedType_)); deedTypeWithSameNameAndOffice.office.uid = office.uid; deedTypeWithSameNameAndOffice.name = deedType.name; @@ -130,62 +130,62 @@ describe("test update function", () => { }); it("should update a deed type office membership", async () => { - const deedTypeCreated = await prisma.deedTypes.findFirstOrThrow({ where: { name: deedType_.name, office_uuid: office.uid } }); + const deedTypeCreated = await prisma.deedTypes.findFirstOrThrow({ where: { name: deedType_.name, office_uid: office.uid } }); expect(deedTypeCreated.name).toEqual(deedType_.name); expect(deedTypeCreated.description).toEqual(deedType_.description); expect(deedTypeCreated.archived_at).toBeNull(); - expect(deedTypeCreated.office_uuid).toEqual(office.uid); + expect(deedTypeCreated.office_uid).toEqual(office.uid); // update the last deed type updated with a new office membership - const deedTypeUpdated = await DeedTypeServiceTest.update(deedTypeCreated.uuid, deedType_); + const deedTypeUpdated = await DeedTypeServiceTest.update(deedTypeCreated.uid, deedType_); expect(deedTypeUpdated.name).toEqual(deedType_.name); expect(deedTypeUpdated.description).toEqual(deedType_.description); expect(deedTypeUpdated.archived_at).toBeNull(); - expect(deedTypeUpdated.office_uuid).toEqual(deedType_.office.uid); + expect(deedTypeUpdated.office_uid).toEqual(deedType_.office.uid); }); it("should archivate a deed type", async () => { - const deedTypeCreated = await prisma.deedTypes.findFirstOrThrow({ where: { name: deedType_.name, office_uuid: office_.uid } }); + const deedTypeCreated = await prisma.deedTypes.findFirstOrThrow({ where: { name: deedType_.name, office_uid: office_.uid } }); expect(deedTypeCreated.name).toEqual(deedType_.name); expect(deedTypeCreated.description).toEqual(deedType_.description); expect(deedTypeCreated.archived_at).toBeNull(); - expect(deedTypeCreated.office_uuid).toEqual(deedType_.office.uid); + expect(deedTypeCreated.office_uid).toEqual(deedType_.office.uid); let deedTypeArchivated: DeedType = JSON.parse(JSON.stringify(deedType_)); const currentDate = new Date(Date.now()); deedTypeArchivated.archived_at = new Date(Date.now()); // archivate a deed type by giving a non null date for archivated_at attribute - const deedTypeUpdated = await DeedTypeServiceTest.update(deedTypeCreated.uuid, deedTypeArchivated); + const deedTypeUpdated = await DeedTypeServiceTest.update(deedTypeCreated.uid, deedTypeArchivated); expect(deedTypeUpdated.name).toEqual(deedType_.name); expect(deedTypeUpdated.description).toEqual(deedType_.description); expect(deedTypeUpdated.archived_at).toEqual(currentDate); - expect(deedTypeUpdated.office_uuid).toEqual(office_.uid); + expect(deedTypeUpdated.office_uid).toEqual(office_.uid); }); it("should unarchivate a deed type", async () => { - const deedTypeCreated = await prisma.deedTypes.findFirstOrThrow({ where: { name: deedType_.name, office_uuid: office_.uid } }); + const deedTypeCreated = await prisma.deedTypes.findFirstOrThrow({ where: { name: deedType_.name, office_uid: office_.uid } }); expect(deedTypeCreated.name).toEqual(deedType_.name); expect(deedTypeCreated.description).toEqual(deedType_.description); expect(deedTypeCreated.archived_at).not.toBeNull(); - expect(deedTypeCreated.office_uuid).toEqual(deedType_.office.uid); + expect(deedTypeCreated.office_uid).toEqual(deedType_.office.uid); // unarchivate a deed type by giving a null date for archivated_at attribute - const deedTypeUpdated = await DeedTypeServiceTest.update(deedTypeCreated.uuid, deedType_); + const deedTypeUpdated = await DeedTypeServiceTest.update(deedTypeCreated.uid, deedType_); expect(deedTypeUpdated.name).toEqual(deedType_.name); expect(deedTypeUpdated.description).toEqual(deedType_.description); expect(deedTypeUpdated.archived_at).toBeNull(); - expect(deedTypeUpdated.office_uuid).toEqual(office_.uid); + expect(deedTypeUpdated.office_uid).toEqual(office_.uid); }); it("should add document types to a deed type", async () => { - const deedTypeUid = (await prisma.deedTypes.findFirstOrThrow({ where: { name: deedType.name, office_uuid: office.uid } })).uuid; + const deedTypeUid = (await prisma.deedTypes.findFirstOrThrow({ where: { name: deedType.name, office_uid: office.uid } })).uid; let deedTypeToUpdate: DeedType = JSON.parse(JSON.stringify(deedType)); deedTypeToUpdate.deed_type_has_document_types = [ @@ -207,7 +207,7 @@ describe("test update function", () => { const deedTypeUpdated = await prisma.deedTypes.findFirstOrThrow({ where: { - uuid: deedTypeUid, + uid: deedTypeUid, }, include: { deed_type_has_document_types: true, @@ -217,7 +217,7 @@ describe("test update function", () => { }); it("should not add document types to a deed type that already has those document types ", async () => { - const deedTypeUid = (await prisma.deedTypes.findFirstOrThrow({ where: { name: deedType.name, office_uuid: office.uid } })).uuid; + const deedTypeUid = (await prisma.deedTypes.findFirstOrThrow({ where: { name: deedType.name, office_uid: office.uid } })).uid; let deedTypeToUpdate: DeedType = JSON.parse(JSON.stringify(deedType)); deedTypeToUpdate.deed_type_has_document_types = [ @@ -239,7 +239,7 @@ describe("test update function", () => { const deedTypeUpdated = await prisma.deedTypes.findFirstOrThrow({ where: { - uuid: deedTypeUid, + uid: deedTypeUid, }, include: { deed_type_has_document_types: true, @@ -249,7 +249,7 @@ describe("test update function", () => { }); it("should delete document types from a deed", async () => { - const deedTypeUid = (await prisma.deedTypes.findFirstOrThrow({ where: { name: deedType.name, office_uuid: office.uid } })).uuid; + const deedTypeUid = (await prisma.deedTypes.findFirstOrThrow({ where: { name: deedType.name, office_uid: office.uid } })).uid; let deedTypeToUpdate: DeedType = JSON.parse(JSON.stringify(deedType)); // set relation between deed and document types empty @@ -259,7 +259,7 @@ describe("test update function", () => { const deedTypeUpdated = await prisma.deedTypes.findFirstOrThrow({ where: { - uuid: deedTypeUid, + uid: deedTypeUid, }, include: { deed_type_has_document_types: true, @@ -281,21 +281,21 @@ describe("test get function", () => { expect(deedTypes[0]?.name).toEqual(deedType_.name); expect(deedTypes[0]?.description).toEqual(deedType_.description); expect(deedTypes[0]?.archived_at).toBeNull(); - expect(deedTypes[0]?.office_uuid).toEqual(office_.uid); + expect(deedTypes[0]?.office_uid).toEqual(office_.uid); expect(deedTypes[1]?.name).toEqual(deedType.name); expect(deedTypes[1]?.description).toEqual(deedType.description); expect(deedTypes[1]?.archived_at).toBeNull(); - expect(deedTypes[1]?.office_uuid).toEqual(office.uid); + expect(deedTypes[1]?.office_uid).toEqual(office.uid); expect(deedTypes[2]?.name).toEqual(deedType.name); expect(deedTypes[2]?.description).toEqual(deedType.description); expect(deedTypes[2]?.archived_at).toBeNull(); - expect(deedTypes[2]?.office_uuid).toEqual(office_.uid); + expect(deedTypes[2]?.office_uid).toEqual(office_.uid); }); it("should return an array of DeedTypes per offices", async () => { - const deedTypesForFirstOffice = await DeedTypeServiceTest.get({ where: { office: {uuid: office.uid} }, orderBy: { name: "asc" } }); + const deedTypesForFirstOffice = await DeedTypeServiceTest.get({ where: { office: {uid: office.uid} }, orderBy: { name: "asc" } }); expect(deedTypesForFirstOffice.length).toEqual(1); @@ -303,9 +303,9 @@ describe("test get function", () => { expect(deedTypesForFirstOffice[0]?.name).toEqual(deedType.name); expect(deedTypesForFirstOffice[0]?.description).toEqual(deedType.description); expect(deedTypesForFirstOffice[0]?.archived_at).toBeNull(); - expect(deedTypesForFirstOffice[0]?.office_uuid).toEqual(office.uid); + expect(deedTypesForFirstOffice[0]?.office_uid).toEqual(office.uid); - const deedTypesForSecondOffice = await DeedTypeServiceTest.get({ where: { office: {uuid: office_.uid} }, orderBy: { name: "asc" } }); + const deedTypesForSecondOffice = await DeedTypeServiceTest.get({ where: { office: {uid: office_.uid} }, orderBy: { name: "asc" } }); expect(deedTypesForSecondOffice.length).toEqual(2); @@ -313,11 +313,11 @@ describe("test get function", () => { expect(deedTypesForSecondOffice[0]?.name).toEqual(deedType_.name); expect(deedTypesForSecondOffice[0]?.description).toEqual(deedType_.description); expect(deedTypesForSecondOffice[0]?.archived_at).toBeNull(); - expect(deedTypesForSecondOffice[0]?.office_uuid).toEqual(office_.uid); + expect(deedTypesForSecondOffice[0]?.office_uid).toEqual(office_.uid); expect(deedTypesForSecondOffice[1]?.name).toEqual(deedType.name); expect(deedTypesForSecondOffice[1]?.description).toEqual(deedType.description); expect(deedTypesForSecondOffice[1]?.archived_at).toBeNull(); - expect(deedTypesForSecondOffice[1]?.office_uuid).toEqual(office_.uid); + expect(deedTypesForSecondOffice[1]?.office_uid).toEqual(office_.uid); }); }); diff --git a/src/test/services/super-admin/DocumentTypesService.test.ts b/src/test/services/super-admin/DocumentTypesService.test.ts index bc7c40e8..e8c88d17 100644 --- a/src/test/services/super-admin/DocumentTypesService.test.ts +++ b/src/test/services/super-admin/DocumentTypesService.test.ts @@ -13,8 +13,8 @@ const prisma = new PrismaClient(); const DocumentTypesServiceTest = new DocumentTypesService(Container.get(DocumentTypesRepository)); beforeAll(async () => { - office.uid = (await initOffice(office)).uuid; - office_.uid = (await initOffice(office_)).uuid; + office.uid = (await initOffice(office)).uid; + office_.uid = (await initOffice(office_)).uid; }); afterAll(async () => { @@ -27,7 +27,7 @@ afterAll(async () => { describe("test create function", () => { it("should not create a new document type if office is unknown", async () => { let documentTypeWithoutOfficeUid: DocumentType = JSON.parse(JSON.stringify(documentType)); - documentTypeWithoutOfficeUid.office.uid = "random uuid"; + documentTypeWithoutOfficeUid.office.uid = "random uid"; // try to create a new document type with unknown office async function createDocumentTypeWithUnknownOffice() { await DocumentTypesServiceTest.create(documentTypeWithoutOfficeUid); @@ -44,7 +44,7 @@ describe("test create function", () => { expect(documentTypeCreated.public_description).toEqual(documentType.public_description); expect(documentTypeCreated.private_description).toEqual(documentType.private_description); expect(documentTypeCreated.archived_at).toBeNull(); - expect(documentTypeCreated.office_uuid).toEqual(office.uid); + expect(documentTypeCreated.office_uid).toEqual(office.uid); }); it("should not create a new document type with a name already used for a given office", async () => { @@ -68,7 +68,7 @@ describe("test create function", () => { expect(documentTypeCreated.public_description).toEqual(documentType.public_description); expect(documentTypeCreated.private_description).toEqual(documentType.private_description); expect(documentTypeCreated.archived_at).toBeNull(); - expect(documentTypeCreated.office_uuid).toEqual(office_.uid); + expect(documentTypeCreated.office_uid).toEqual(office_.uid); }); it("should create a new document type version with a different name for a given office", async () => { @@ -82,37 +82,37 @@ describe("test create function", () => { expect(documentTypeCreated.public_description).toEqual(documentType.public_description); expect(documentTypeCreated.private_description).toEqual(documentType.private_description); expect(documentTypeCreated.archived_at).toBeNull(); - expect(documentTypeCreated.office_uuid).toEqual(office.uid); + expect(documentTypeCreated.office_uid).toEqual(office.uid); }); }); describe("test update function", () => { it("should update a document type", async () => { const documentTypeCreated = await prisma.documentTypes.findFirstOrThrow({ - where: { name: documentType_.name, office_uuid: office.uid }, + where: { name: documentType_.name, office_uid: office.uid }, }); expect(documentTypeCreated.name).toEqual(documentType_.name); expect(documentTypeCreated.public_description).toEqual(documentType.public_description); expect(documentTypeCreated.private_description).toEqual(documentType.private_description); expect(documentTypeCreated.archived_at).toBeNull(); - expect(documentTypeCreated.office_uuid).toEqual(office.uid); + expect(documentTypeCreated.office_uid).toEqual(office.uid); let documentTypeWithNewDescription: DocumentType = JSON.parse(JSON.stringify(documentType_)); documentTypeWithNewDescription.office.uid = office.uid; // update the last document type created with his the right descriptions - const documentTypeUpdated = await DocumentTypesServiceTest.update(documentTypeCreated.uuid, documentTypeWithNewDescription); + const documentTypeUpdated = await DocumentTypesServiceTest.update(documentTypeCreated.uid, documentTypeWithNewDescription); expect(documentTypeUpdated.name).toEqual(documentType_.name); expect(documentTypeUpdated.public_description).toEqual(documentType_.public_description); expect(documentTypeUpdated.private_description).toEqual(documentType_.private_description); expect(documentTypeUpdated.archived_at).toBeNull(); - expect(documentTypeUpdated.office_uuid).toEqual(office.uid); + expect(documentTypeUpdated.office_uid).toEqual(office.uid); }); it("should not update a document type name with an already used name for given office", async () => { const documentTypeUid = ( - await prisma.documentTypes.findFirstOrThrow({ where: { name: documentType_.name, office_uuid: office.uid } }) - ).uuid; + await prisma.documentTypes.findFirstOrThrow({ where: { name: documentType_.name, office_uid: office.uid } }) + ).uid; let documentTypeWithSameNameAndOffice: DocumentType = JSON.parse(JSON.stringify(documentType_)); documentTypeWithSameNameAndOffice.office.uid = office.uid; documentTypeWithSameNameAndOffice.name = documentType.name; @@ -126,8 +126,8 @@ describe("test update function", () => { it("should not update a document type office membership if the office already has this document type", async () => { const documentTypeUid = ( - await prisma.documentTypes.findFirstOrThrow({ where: { name: documentType_.name, office_uuid: office.uid } }) - ).uuid; + await prisma.documentTypes.findFirstOrThrow({ where: { name: documentType_.name, office_uid: office.uid } }) + ).uid; let documentTypeWithSameNameAndOffice: DocumentType = JSON.parse(JSON.stringify(documentType_)); documentTypeWithSameNameAndOffice.office.uid = office.uid; documentTypeWithSameNameAndOffice.name = documentType.name; @@ -141,74 +141,74 @@ describe("test update function", () => { it("should update a document type office membership", async () => { const documentTypeCreated = await prisma.documentTypes.findFirstOrThrow({ - where: { name: documentType_.name, office_uuid: office.uid }, + where: { name: documentType_.name, office_uid: office.uid }, }); expect(documentTypeCreated.name).toEqual(documentType_.name); expect(documentTypeCreated.public_description).toEqual(documentType_.public_description); expect(documentTypeCreated.private_description).toEqual(documentType_.private_description); expect(documentTypeCreated.archived_at).toBeNull(); - expect(documentTypeCreated.office_uuid).toEqual(office.uid); + expect(documentTypeCreated.office_uid).toEqual(office.uid); let documentTypeTransferedToNewOffice: DocumentType = JSON.parse(JSON.stringify(documentType_)); documentTypeTransferedToNewOffice.office.uid = office_.uid; // update the last document type updated with a new office membership - const documentTypeUpdated = await DocumentTypesServiceTest.update(documentTypeCreated.uuid, documentTypeTransferedToNewOffice); + const documentTypeUpdated = await DocumentTypesServiceTest.update(documentTypeCreated.uid, documentTypeTransferedToNewOffice); expect(documentTypeUpdated.name).toEqual(documentType_.name); expect(documentTypeUpdated.public_description).toEqual(documentType_.public_description); expect(documentTypeUpdated.private_description).toEqual(documentType_.private_description); expect(documentTypeUpdated.archived_at).toBeNull(); - expect(documentTypeUpdated.office_uuid).toEqual(office_.uid); + expect(documentTypeUpdated.office_uid).toEqual(office_.uid); }); it("should archivate a document type", async () => { const documentTypeCreated = await prisma.documentTypes.findFirstOrThrow({ - where: { name: documentType_.name, office_uuid: office_.uid }, + where: { name: documentType_.name, office_uid: office_.uid }, }); expect(documentTypeCreated.name).toEqual(documentType_.name); expect(documentTypeCreated.public_description).toEqual(documentType_.public_description); expect(documentTypeCreated.private_description).toEqual(documentType_.private_description); expect(documentTypeCreated.archived_at).toBeNull(); - expect(documentTypeCreated.office_uuid).toEqual(office_.uid); + expect(documentTypeCreated.office_uid).toEqual(office_.uid); let documentTypeArchivated: DocumentType = JSON.parse(JSON.stringify(documentType_)); documentTypeArchivated.office.uid = office_.uid; const currentDate = new Date(Date.now()); documentTypeArchivated.archived_at = currentDate; // archivate a document type by giving a non null date for archivated_at attribute - const documentTypeUpdated = await DocumentTypesServiceTest.update(documentTypeCreated.uuid, documentTypeArchivated); + const documentTypeUpdated = await DocumentTypesServiceTest.update(documentTypeCreated.uid, documentTypeArchivated); expect(documentTypeUpdated.name).toEqual(documentType_.name); expect(documentTypeUpdated.public_description).toEqual(documentType_.public_description); expect(documentTypeUpdated.private_description).toEqual(documentType_.private_description); expect(documentTypeUpdated.archived_at).toEqual(currentDate); - expect(documentTypeUpdated.office_uuid).toEqual(office_.uid); + expect(documentTypeUpdated.office_uid).toEqual(office_.uid); }); it("should unarchivate a document type", async () => { const documentTypeCreated = await prisma.documentTypes.findFirstOrThrow({ - where: { name: documentType_.name, office_uuid: office_.uid }, + where: { name: documentType_.name, office_uid: office_.uid }, }); expect(documentTypeCreated.name).toEqual(documentType_.name); expect(documentTypeCreated.public_description).toEqual(documentType_.public_description); expect(documentTypeCreated.private_description).toEqual(documentType_.private_description); expect(documentTypeCreated.archived_at).not.toBeNull(); - expect(documentTypeCreated.office_uuid).toEqual(office_.uid); + expect(documentTypeCreated.office_uid).toEqual(office_.uid); let documentTypeUnarchivated: DocumentType = JSON.parse(JSON.stringify(documentType_)); documentTypeUnarchivated.office.uid = office_.uid; // unarchivate a document type by giving a null date for archivated_at attribute - const documentTypeUpdated = await DocumentTypesServiceTest.update(documentTypeCreated.uuid, documentTypeUnarchivated); + const documentTypeUpdated = await DocumentTypesServiceTest.update(documentTypeCreated.uid, documentTypeUnarchivated); expect(documentTypeUpdated.name).toEqual(documentType_.name); expect(documentTypeUpdated.public_description).toEqual(documentType_.public_description); expect(documentTypeUpdated.private_description).toEqual(documentType_.private_description); expect(documentTypeUpdated.archived_at).toBeNull(); - expect(documentTypeUpdated.office_uuid).toEqual(office_.uid); + expect(documentTypeUpdated.office_uid).toEqual(office_.uid); }); }); @@ -225,23 +225,23 @@ describe("test get function", () => { expect(documentTypes[0]?.public_description).toEqual(documentType_.public_description); expect(documentTypes[0]?.private_description).toEqual(documentType_.private_description); expect(documentTypes[0]?.archived_at).toBeNull(); - expect(documentTypes[0]?.office_uuid).toEqual(office_.uid); + expect(documentTypes[0]?.office_uid).toEqual(office_.uid); expect(documentTypes[1]?.name).toEqual(documentType.name); expect(documentTypes[1]?.public_description).toEqual(documentType.public_description); expect(documentTypes[1]?.private_description).toEqual(documentType.private_description); expect(documentTypes[1]?.archived_at).toBeNull(); - expect(documentTypes[1]?.office_uuid).toEqual(office.uid); + expect(documentTypes[1]?.office_uid).toEqual(office.uid); expect(documentTypes[2]?.name).toEqual(documentType.name); expect(documentTypes[2]?.public_description).toEqual(documentType.public_description); expect(documentTypes[2]?.private_description).toEqual(documentType.private_description); expect(documentTypes[2]?.archived_at).toBeNull(); - expect(documentTypes[2]?.office_uuid).toEqual(office_.uid); + expect(documentTypes[2]?.office_uid).toEqual(office_.uid); }); it("should return an array of DocumentTypes per offices", async () => { - const documentTypesForFirstOffice = await DocumentTypesServiceTest.get({ where: { office: {uuid : office.uid }}, orderBy: { name: "asc" } }); + const documentTypesForFirstOffice = await DocumentTypesServiceTest.get({ where: { office: {uid : office.uid }}, orderBy: { name: "asc" } }); expect(documentTypesForFirstOffice.length).toEqual(1); @@ -250,9 +250,9 @@ describe("test get function", () => { expect(documentTypesForFirstOffice[0]?.public_description).toEqual(documentType.public_description); expect(documentTypesForFirstOffice[0]?.private_description).toEqual(documentType.private_description); expect(documentTypesForFirstOffice[0]?.archived_at).toBeNull(); - expect(documentTypesForFirstOffice[0]?.office_uuid).toEqual(office.uid); + expect(documentTypesForFirstOffice[0]?.office_uid).toEqual(office.uid); - const documentTypesForSecondOffice = await DocumentTypesServiceTest.get({ where: { office: {uuid : office_.uid }}, orderBy: { name: "asc" } }); + const documentTypesForSecondOffice = await DocumentTypesServiceTest.get({ where: { office: {uid : office_.uid }}, orderBy: { name: "asc" } }); expect(documentTypesForSecondOffice.length).toEqual(2); @@ -261,12 +261,12 @@ describe("test get function", () => { expect(documentTypesForSecondOffice[0]?.public_description).toEqual(documentType_.public_description); expect(documentTypesForSecondOffice[0]?.private_description).toEqual(documentType_.private_description); expect(documentTypesForSecondOffice[0]?.archived_at).toBeNull(); - expect(documentTypesForSecondOffice[0]?.office_uuid).toEqual(office_.uid); + expect(documentTypesForSecondOffice[0]?.office_uid).toEqual(office_.uid); expect(documentTypesForSecondOffice[1]?.name).toEqual(documentType.name); expect(documentTypesForSecondOffice[1]?.public_description).toEqual(documentType.public_description); expect(documentTypesForSecondOffice[1]?.private_description).toEqual(documentType.private_description); expect(documentTypesForSecondOffice[1]?.archived_at).toBeNull(); - expect(documentTypesForSecondOffice[1]?.office_uuid).toEqual(office_.uid); + expect(documentTypesForSecondOffice[1]?.office_uid).toEqual(office_.uid); }); }); diff --git a/src/test/services/super-admin/OfficeFolderService.test.ts b/src/test/services/super-admin/OfficeFolderService.test.ts index 6aa7451f..6011f30e 100644 --- a/src/test/services/super-admin/OfficeFolderService.test.ts +++ b/src/test/services/super-admin/OfficeFolderService.test.ts @@ -1,18 +1,7 @@ import "module-alias/register"; import "reflect-metadata"; import { OfficeFolderHasCustomers, OfficeFolderHasStakeholders, PrismaClient } from "prisma/prisma-client"; -import { - customer, - customer_, - deedType, - documentType, - documentType_, - office, - officeFolder, - officeFolder_, - user, - user_, -} from "@Test/config/MockedData"; +import { customer, customer_, deedType, documentType, documentType_, office, officeFolder, officeFolder_, user, user_ } from "@Test/config/MockedData"; import Container from "typedi"; import OfficeFoldersRepository from "@Repositories/OfficeFoldersRepository"; import OfficeFolderService from "@Services/super-admin/OfficeFoldersService/OfficeFoldersService"; @@ -25,14 +14,14 @@ const prisma = new PrismaClient(); const OfficeFolderServiceTest = new OfficeFolderService(Container.get(OfficeFoldersRepository), Container.get(DeedTypesService)); beforeAll(async () => { - office.uid = (await initOffice(office)).uuid; - documentType.uid = (await initDocumentType(documentType, office)).uuid; - documentType_.uid = (await initDocumentType(documentType_, office)).uuid; - deedType.uid = (await initDeedType(deedType, office, [documentType.uid])).uuid; - user.uid = (await initUsers(user)).uuid; - user_.uid = (await initUsers(user_)).uuid; - customer.uid = (await initCustomers(customer)).uuid; - customer_.uid = (await initCustomers(customer_)).uuid; + office.uid = (await initOffice(office)).uid; + documentType.uid = (await initDocumentType(documentType, office)).uid; + documentType_.uid = (await initDocumentType(documentType_, office)).uid; + deedType.uid = (await initDeedType(deedType, office, [documentType.uid])).uid; + user.uid = (await initUsers(user)).uid; + user_.uid = (await initUsers(user_)).uid; + customer.uid = (await initCustomers(customer)).uid; + customer_.uid = (await initCustomers(customer_)).uid; }); afterAll(async () => { @@ -49,7 +38,7 @@ afterAll(async () => { describe("test create function", () => { it("should not create a new office folder if deed type is unknown", async () => { let officeFolderWithoutDeedTypeUid: OfficeFolder = JSON.parse(JSON.stringify(officeFolder)); - officeFolderWithoutDeedTypeUid.deed.deed_type.uid = "random uuid"; + officeFolderWithoutDeedTypeUid.deed.deed_type.uid = "random uid"; // try to create a new deed with unknown deed type async function createOfficeFolderWithUnknownDeedType() { await OfficeFolderServiceTest.create(officeFolderWithoutDeedTypeUid); @@ -57,18 +46,27 @@ describe("test create function", () => { await expect(createOfficeFolderWithUnknownDeedType).rejects.toThrow(); }); + it("should not create a new office folder if deed type is archived", async () => { + let officeFolderWithArchivatedDeedType: OfficeFolder = JSON.parse(JSON.stringify(officeFolder)); + // try to create a new deed with unknown deed type + async function createOfficeFolderWithArchivedDeedType() { + await OfficeFolderServiceTest.create(officeFolderWithArchivatedDeedType); + } + await expect(createOfficeFolderWithArchivedDeedType).rejects.toThrow("deed type is archived"); + }); + it("should create a new office folder based on existing deed type", async () => { const officeFolderCreated = await OfficeFolderServiceTest.create(officeFolder); - const deedCreated = await prisma.deeds.findUniqueOrThrow({ where: { uuid: officeFolderCreated.deed_uuid } }); + const deedCreated = await prisma.deeds.findUniqueOrThrow({ where: { uid: officeFolderCreated.deed_uid } }); expect(officeFolderCreated.name).toEqual(officeFolder.name); expect(officeFolderCreated.folder_number).toEqual(officeFolder.folder_number); expect(officeFolderCreated.description).toEqual(officeFolder.description); expect(officeFolderCreated.archived_description).toEqual(null); expect(officeFolderCreated.status).toEqual("LIVE"); - expect(officeFolderCreated.office_uuid).toEqual(officeFolder.office.uid); - expect(deedCreated.deed_type_uuid).toEqual(officeFolder.deed.deed_type.uid); + expect(officeFolderCreated.office_uid).toEqual(officeFolder.office.uid); + expect(deedCreated.deed_type_uid).toEqual(officeFolder.deed.deed_type.uid); }); it("should contains stakeholders", async () => { @@ -77,32 +75,32 @@ describe("test create function", () => { }); const stakeholderRelation = await prisma.officeFolderHasStakeholders.findUniqueOrThrow({ where: { - office_folder_uuid_user_stakeholder_uuid: { - user_stakeholder_uuid: user.uid!, - office_folder_uuid: officeFolderCreated.uuid, + office_folder_uid_user_stakeholder_uid: { + user_stakeholder_uid: user.uid!, + office_folder_uid: officeFolderCreated.uid, }, }, }); const stakeholderRelation_ = await prisma.officeFolderHasStakeholders.findUniqueOrThrow({ where: { - office_folder_uuid_user_stakeholder_uuid: { - user_stakeholder_uuid: user_.uid!, - office_folder_uuid: officeFolderCreated.uuid, + office_folder_uid_user_stakeholder_uid: { + user_stakeholder_uid: user_.uid!, + office_folder_uid: officeFolderCreated.uid, }, }, }); expect(officeFolderCreated.office_folder_has_stakeholder.length).toEqual(2); const stakeholder: OfficeFolderHasStakeholders = { - uuid: stakeholderRelation.uuid, - office_folder_uuid: officeFolderCreated.uuid, - user_stakeholder_uuid: user.uid!, + uid: stakeholderRelation.uid, + office_folder_uid: officeFolderCreated.uid, + user_stakeholder_uid: user.uid!, created_at: officeFolderCreated.created_at, updated_at: officeFolderCreated.updated_at, }; const stakeholder_: OfficeFolderHasStakeholders = { - uuid: stakeholderRelation_.uuid, - office_folder_uuid: officeFolderCreated.uuid, - user_stakeholder_uuid: user_.uid!, + uid: stakeholderRelation_.uid, + office_folder_uid: officeFolderCreated.uid, + user_stakeholder_uid: user_.uid!, created_at: officeFolderCreated.created_at, updated_at: officeFolderCreated.updated_at, }; @@ -120,7 +118,7 @@ describe("test create function", () => { }); it("should not create a new office folder if deed type is archived", async () => { - await prisma.deedTypes.update({ where: { uuid: deedType.uid }, data: { archived_at: new Date(Date.now()) } }); + await prisma.deedTypes.update({ where: { uid: deedType.uid }, data: { archived_at: new Date(Date.now()) } }); // try to create a new deed with archivated deed type async function createDeedWithArchivatedDeedType() { await OfficeFolderServiceTest.create(officeFolder); @@ -137,21 +135,21 @@ describe("test update function", () => { expect(officeFolderCreated.office_folder_has_customers).toEqual([]); // mocked data contains the customers - await OfficeFolderServiceTest.update(officeFolderCreated.uuid, officeFolder); + await OfficeFolderServiceTest.update(officeFolderCreated.uid, officeFolder); const customerRelation = await prisma.officeFolderHasCustomers.findUniqueOrThrow({ where: { - office_folder_uuid_customer_uuid: { - customer_uuid: customer.uid!, - office_folder_uuid: officeFolderCreated.uuid, + office_folder_uid_customer_uid: { + customer_uid: customer.uid!, + office_folder_uid: officeFolderCreated.uid, }, }, }); const customerRelation_ = await prisma.officeFolderHasCustomers.findUniqueOrThrow({ where: { - office_folder_uuid_customer_uuid: { - customer_uuid: customer_.uid!, - office_folder_uuid: officeFolderCreated.uuid, + office_folder_uid_customer_uid: { + customer_uid: customer_.uid!, + office_folder_uid: officeFolderCreated.uid, }, }, }); @@ -162,16 +160,16 @@ describe("test update function", () => { expect(officeFolderCreated.office_folder_has_customers.length).toEqual(2); const officeFolderHasCustomer: OfficeFolderHasCustomers = { - uuid: customerRelation.uuid, - office_folder_uuid: officeFolderCreated.uuid, - customer_uuid: customer.uid!, + uid: customerRelation.uid, + office_folder_uid: officeFolderCreated.uid, + customer_uid: customer.uid!, created_at: customerRelation.created_at, updated_at: customerRelation.updated_at, }; const officeFolderHasCustomer_: OfficeFolderHasCustomers = { - uuid: customerRelation_.uuid, - office_folder_uuid: officeFolderCreated.uuid, - customer_uuid: customer_.uid!, + uid: customerRelation_.uid, + office_folder_uid: officeFolderCreated.uid, + customer_uid: customer_.uid!, created_at: customerRelation_.created_at, updated_at: customerRelation_.updated_at, }; @@ -190,13 +188,13 @@ describe("test update function", () => { let officeFolderWithLessCustomers: OfficeFolder = JSON.parse(JSON.stringify(officeFolder)); officeFolderWithLessCustomers.office_folder_has_customers!.pop(); // mocked data contains the customers - await OfficeFolderServiceTest.update(officeFolderCreated.uuid, officeFolderWithLessCustomers); + await OfficeFolderServiceTest.update(officeFolderCreated.uid, officeFolderWithLessCustomers); const customerRelation = await prisma.officeFolderHasCustomers.findUniqueOrThrow({ where: { - office_folder_uuid_customer_uuid: { - customer_uuid: customer.uid!, - office_folder_uuid: officeFolderCreated.uuid, + office_folder_uid_customer_uid: { + customer_uid: customer.uid!, + office_folder_uid: officeFolderCreated.uid, }, }, }); @@ -207,9 +205,9 @@ describe("test update function", () => { expect(officeFolderCreated.office_folder_has_customers.length).toEqual(1); const officeFolderHasCustomer: OfficeFolderHasCustomers = { - uuid: customerRelation.uuid, - office_folder_uuid: officeFolderCreated.uuid, - customer_uuid: customer.uid!, + uid: customerRelation.uid, + office_folder_uid: officeFolderCreated.uid, + customer_uid: customer.uid!, created_at: customerRelation.created_at, updated_at: customerRelation.updated_at, }; @@ -225,13 +223,13 @@ describe("test update function", () => { let officeFolderWithLessStakeholders: OfficeFolder = JSON.parse(JSON.stringify(officeFolder)); officeFolderWithLessStakeholders.office_folder_has_stakeholder!.pop(); // mocked data contains the customers - await OfficeFolderServiceTest.update(officeFolderCreated.uuid, officeFolderWithLessStakeholders); + await OfficeFolderServiceTest.update(officeFolderCreated.uid, officeFolderWithLessStakeholders); const stakeholderRelation = await prisma.officeFolderHasStakeholders.findUniqueOrThrow({ where: { - office_folder_uuid_user_stakeholder_uuid: { - user_stakeholder_uuid: user.uid!, - office_folder_uuid: officeFolderCreated.uuid, + office_folder_uid_user_stakeholder_uid: { + user_stakeholder_uid: user.uid!, + office_folder_uid: officeFolderCreated.uid, }, }, }); @@ -242,9 +240,9 @@ describe("test update function", () => { expect(officeFolderCreated.office_folder_has_stakeholder.length).toEqual(1); const officeFolderHasStakeholder: OfficeFolderHasStakeholders = { - uuid: stakeholderRelation.uuid, - office_folder_uuid: officeFolderCreated.uuid, - user_stakeholder_uuid: user.uid!, + uid: stakeholderRelation.uid, + office_folder_uid: officeFolderCreated.uid, + user_stakeholder_uid: user.uid!, created_at: stakeholderRelation.created_at, updated_at: stakeholderRelation.updated_at, }; @@ -256,7 +254,7 @@ describe("test update function", () => { // mocked data for this office folder is "ARCHIVATED" by default officeFolderArchived.archived_description = "folder complete"; - const officeFolderUpdated = await OfficeFolderServiceTest.update(officeFolderCreated.uuid, officeFolderArchived); + const officeFolderUpdated = await OfficeFolderServiceTest.update(officeFolderCreated.uid, officeFolderArchived); expect(officeFolderUpdated.archived_description).toEqual(officeFolderArchived.archived_description); expect(officeFolderUpdated.status).toEqual("ARCHIVED"); @@ -270,7 +268,7 @@ describe("test update function", () => { let officeFolderUnarchived: OfficeFolder = JSON.parse(JSON.stringify(officeFolder)); officeFolderUnarchived.status = "LIVE"; - const officeFolderUpdated = await OfficeFolderServiceTest.update(officeFolderCreated.uuid, officeFolderUnarchived); + const officeFolderUpdated = await OfficeFolderServiceTest.update(officeFolderCreated.uid, officeFolderUnarchived); expect(officeFolderUpdated.archived_description).toBeNull(); expect(officeFolderUpdated.status).toEqual("LIVE"); diff --git a/src/test/services/super-admin/UsersService.test.ts b/src/test/services/super-admin/UsersService.test.ts index ca1bb88f..a4ce6f06 100644 --- a/src/test/services/super-admin/UsersService.test.ts +++ b/src/test/services/super-admin/UsersService.test.ts @@ -28,7 +28,7 @@ describe("test create function", () => { expect(userCreated?.idNot).toEqual(user.idNot); // verify if user contact is created in db - const contactCreated = await prisma.contacts.findUnique({ where: { uuid: userCreated.contact_uuid } }); + const contactCreated = await prisma.contacts.findUnique({ where: { uid: userCreated.contact_uid } }); expect(contactCreated?.first_name).toEqual(user.contact.first_name); expect(contactCreated?.last_name).toEqual(user.contact.last_name); expect(contactCreated?.cell_phone_number).toEqual(user.contact.cell_phone_number); @@ -37,20 +37,20 @@ describe("test create function", () => { expect(contactCreated?.email).toEqual(user.contact.email); // verify if user address is created in db - const addressForContactCreated = await prisma.addresses.findUnique({ where: { uuid: contactCreated?.address_uuid } }); + const addressForContactCreated = await prisma.addresses.findUnique({ where: { uid: contactCreated?.address_uid } }); expect(addressForContactCreated?.address).toEqual(user.contact.address?.address); expect(addressForContactCreated?.zip_code).toEqual(user.contact.address?.zip_code); expect(addressForContactCreated?.city).toEqual(user.contact.address?.city); // verify if user office is created in db - const officeCreated = await prisma.offices.findUnique({ where: { uuid: userCreated.office_uuid } }); + const officeCreated = await prisma.offices.findUnique({ where: { uid: userCreated.office_uid } }); expect(officeCreated?.idNot).toEqual(user.office_membership.idNot); expect(officeCreated?.name).toEqual(user.office_membership.name); expect(officeCreated?.crpcen).toEqual(user.office_membership.crpcen); expect(officeCreated?.office_status).toEqual("DESACTIVATED"); // verify if user office's address is created in db - const addressForOfficeCreated = await prisma.addresses.findUnique({ where: { uuid: officeCreated?.address_uuid } }); + const addressForOfficeCreated = await prisma.addresses.findUnique({ where: { uid: officeCreated?.address_uid } }); expect(addressForOfficeCreated?.address).toEqual(user.office_membership.address.address); expect(addressForOfficeCreated?.zip_code).toEqual(user.office_membership.address.zip_code); expect(addressForOfficeCreated?.city).toEqual(user.office_membership.address.city); @@ -97,7 +97,7 @@ describe("test create function", () => { expect(userCreated?.idNot).toEqual(user_.idNot); // verify if user_ contact is created in db - const contactCreated = await prisma.contacts.findUnique({ where: { uuid: userCreated.contact_uuid } }); + const contactCreated = await prisma.contacts.findUnique({ where: { uid: userCreated.contact_uid } }); expect(contactCreated?.first_name).toEqual(user.contact.first_name); expect(contactCreated?.last_name).toEqual(user.contact.last_name); expect(contactCreated?.cell_phone_number).toEqual(user_.contact.cell_phone_number); @@ -106,13 +106,13 @@ describe("test create function", () => { expect(contactCreated?.email).toEqual(user_.contact.email); // verify if user_ address is created in db - const addressForContactCreated = await prisma.addresses.findUnique({ where: { uuid: contactCreated?.address_uuid } }); + const addressForContactCreated = await prisma.addresses.findUnique({ where: { uid: contactCreated?.address_uid } }); expect(addressForContactCreated?.address).toEqual(user.contact.address?.address); expect(addressForContactCreated?.zip_code).toEqual(user.contact.address?.zip_code); expect(addressForContactCreated?.city).toEqual(user.contact.address?.city); // verify if user joined the existing office - const officeJoined = await prisma.offices.findUnique({ where: { uuid: userCreated.office_uuid } }); + const officeJoined = await prisma.offices.findUnique({ where: { uid: userCreated.office_uid } }); expect(officeJoined?.idNot).toEqual(user.office_membership.idNot); expect(officeJoined?.name).toEqual(user.office_membership.name); expect(officeJoined?.crpcen).toEqual(user.office_membership.crpcen); @@ -124,19 +124,19 @@ describe("test update function", () => { it("should update an user's data", async () => { const userCreated = await prisma.users.findFirstOrThrow({ where: { idNot: user_.idNot } }); - const officeJoined = await prisma.offices.findUnique({ where: { uuid: userCreated.office_uuid } }); + const officeJoined = await prisma.offices.findUnique({ where: { uid: userCreated.office_uid } }); expect(officeJoined?.idNot).toEqual(user.office_membership.idNot); expect(officeJoined?.name).toEqual(user.office_membership.name); expect(officeJoined?.crpcen).toEqual(user.office_membership.crpcen); expect(officeJoined?.office_status).toEqual("DESACTIVATED"); // update the last user created with his own new office and own contact - const updatedUser = await UsersServiceTest.update(userCreated.uuid, user_); + const updatedUser = await UsersServiceTest.update(userCreated.uid, user_); expect(updatedUser?.idNot).toEqual(user_.idNot); // verify if user_ contact is created in db - const existingContact = await prisma.contacts.findUnique({ where: { uuid: updatedUser.contact_uuid } }); + const existingContact = await prisma.contacts.findUnique({ where: { uid: updatedUser.contact_uid } }); expect(existingContact?.first_name).toEqual(user_.contact.first_name); expect(existingContact?.last_name).toEqual(user_.contact.last_name); expect(existingContact?.cell_phone_number).toEqual(user_.contact.cell_phone_number); @@ -145,27 +145,27 @@ describe("test update function", () => { expect(existingContact?.email).toEqual(user_.contact.email); // verify if user_ address is created in db - const addressForExistingContact = await prisma.addresses.findUnique({ where: { uuid: existingContact?.address_uuid } }); + const addressForExistingContact = await prisma.addresses.findUnique({ where: { uid: existingContact?.address_uid } }); expect(addressForExistingContact?.address).toEqual(user_.contact.address?.address); expect(addressForExistingContact?.zip_code).toEqual(user_.contact.address?.zip_code); expect(addressForExistingContact?.city).toEqual(user_.contact.address?.city); // verify if user_ joined the new office - const officeCreated = await prisma.offices.findUnique({ where: { uuid: updatedUser.office_uuid } }); + const officeCreated = await prisma.offices.findUnique({ where: { uid: updatedUser.office_uid } }); expect(officeCreated?.idNot).toEqual(user_.office_membership.idNot); expect(officeCreated?.name).toEqual(user_.office_membership.name); expect(officeCreated?.crpcen).toEqual(user_.office_membership.crpcen); expect(officeCreated?.office_status).toEqual("DESACTIVATED"); // verify is user_ office's address is created in db - const addressForOfficeCreated = await prisma.addresses.findUnique({ where: { uuid: officeCreated?.address_uuid } }); + const addressForOfficeCreated = await prisma.addresses.findUnique({ where: { uid: officeCreated?.address_uid } }); expect(addressForOfficeCreated?.address).toEqual(user_.office_membership.address.address); expect(addressForOfficeCreated?.zip_code).toEqual(user_.office_membership.address.zip_code); expect(addressForOfficeCreated?.city).toEqual(user_.office_membership.address.city); }); it("should not update an user with an email already used", async () => { - const userUid = (await prisma.users.findFirstOrThrow({ where: { idNot: user_.idNot } })).uuid; + const userUid = (await prisma.users.findFirstOrThrow({ where: { idNot: user_.idNot } })).uid; let updatedUser: User = JSON.parse(JSON.stringify(user_)); updatedUser.contact.email = userContact.email; @@ -177,7 +177,7 @@ describe("test update function", () => { }); it("should not update an user with an phone number already used", async () => { - const userUid = (await prisma.users.findFirstOrThrow({ where: { idNot: user_.idNot } })).uuid; + const userUid = (await prisma.users.findFirstOrThrow({ where: { idNot: user_.idNot } })).uid; let updatedUser: User = JSON.parse(JSON.stringify(user_)); updatedUser.contact.cell_phone_number = userContact.cell_phone_number; @@ -206,7 +206,7 @@ describe("test get function", () => { it("should return an array of Users per offices", async () => { const officesCreated = await prisma.offices.findMany(); - const reqForFirstOffice = { where: { office_uuid: officesCreated[0]?.uuid } }; + const reqForFirstOffice = { where: { office_uid: officesCreated[0]?.uid } }; const usersForFirstOffice = await UsersServiceTest.get(reqForFirstOffice); expect(usersForFirstOffice.length).toEqual(1); @@ -214,7 +214,7 @@ describe("test get function", () => { // verify result content expect(usersForFirstOffice[0]?.idNot).toEqual(user.idNot); - const reqForSecondOffice = { where: { office_uuid: officesCreated[1]?.uuid } }; + const reqForSecondOffice = { where: { office_uid: officesCreated[1]?.uid } }; const usersForSecondOffice = await UsersServiceTest.get(reqForSecondOffice); expect(usersForSecondOffice.length).toEqual(1);