From 6be90cf62451c43cf16760980cd73b2763fedd9b Mon Sep 17 00:00:00 2001 From: Rakib Ansary Date: Tue, 14 Nov 2023 04:17:12 +0600 Subject: [PATCH 01/11] feat: introduce point reward type Signed-off-by: Rakib Ansary --- .circleci/config.yml | 2 +- app-constants.js | 6 + src/common/challenge-helper.js | 23 +++- src/services/ChallengeService.js | 64 +++++---- yarn.lock | 216 +++++++++++++++---------------- 5 files changed, 179 insertions(+), 132 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 17dcd01d..8e095a20 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -90,7 +90,7 @@ workflows: branches: only: - dev - - PLAT-3491 + - CORE-40 - "build-qa": context: org-global diff --git a/app-constants.js b/app-constants.js index 17ec44d8..718e2e9c 100644 --- a/app-constants.js +++ b/app-constants.js @@ -18,6 +18,11 @@ const prizeSetTypes = { CheckpointPrizes: "checkpoint", }; +const prizeTypes = { + USD: "USD", + POINT: "POINT", +}; + const challengeStatuses = { New: "New", Draft: "Draft", @@ -137,6 +142,7 @@ const SelfServiceNotificationSettings = { module.exports = { UserRoles, prizeSetTypes, + prizeTypes, challengeStatuses, validChallengeParams, EVENT_ORIGINATOR, diff --git a/src/common/challenge-helper.js b/src/common/challenge-helper.js index 4bca0223..ad042a4d 100644 --- a/src/common/challenge-helper.js +++ b/src/common/challenge-helper.js @@ -99,6 +99,23 @@ class ChallengeHelper { await Promise.all(promises); } + validatePrizeSetsAndGetPrizeType(prizeSets) { + if (_.isEmpty(prizeSets)) return null; + + const firstType = _.get(prizeSets, "[0].prizes[0].type", null); + if (!firstType) return null; + + const isConsistent = _.every(prizeSets, (prizeSet) => + _.every(prizeSet.prizes, (prize) => prize.type === firstType) + ); + + if (!isConsistent) { + throw new errors.BadRequestError("All prizes must be of the same type"); + } + + return firstType; + } + /** * Validate Challenge skills. * @param {Object} challenge the challenge @@ -114,7 +131,9 @@ class ChallengeHelper { if (oldChallenge && oldChallenge.status === constants.challengeStatuses.Completed) { // Don't allow edit skills for Completed challenges if (!_.isEqual(ids, _.uniq(_.map(oldChallenge.skills, "id")))) { - throw new errors.BadRequestError("Cannot update skills for challenges with Completed status"); + throw new errors.BadRequestError( + "Cannot update skills for challenges with Completed status" + ); } } @@ -469,6 +488,7 @@ class ChallengeHelper { return ChallengeHelper.convertDateToISOString(startDate); } + // TODO: Deprecate this method convertPrizeSetValuesToCents(prizeSets) { prizeSets.forEach((prizeSet) => { prizeSet.prizes.forEach((prize) => { @@ -478,6 +498,7 @@ class ChallengeHelper { }); } + // TODO: Deprecate this method convertPrizeSetValuesToDollars(prizeSets, overview) { prizeSets.forEach((prizeSet) => { prizeSet.prizes.forEach((prize) => { diff --git a/src/services/ChallengeService.js b/src/services/ChallengeService.js index f616346a..29ee0bbc 100644 --- a/src/services/ChallengeService.js +++ b/src/services/ChallengeService.js @@ -920,7 +920,9 @@ searchChallenges.schema = { */ async function createChallenge(currentUser, challenge, userToken) { await challengeHelper.validateCreateChallengeRequest(currentUser, challenge); + let prizeTypeTmp = challengeHelper.validatePrizeSetsAndGetPrizeType(challenge.prizeSets); + console.log("TYPE", prizeTypeTmp); if (challenge.legacy.selfService) { // if self-service, create a new project (what about if projectId is provided in the payload? confirm with business!) if (!challenge.projectId) { @@ -1055,9 +1057,17 @@ async function createChallenge(currentUser, challenge, userToken) { grpcMetadata.set("userId", currentUser.userId); grpcMetadata.set("token", await getM2MToken()); - convertPrizeSetValuesToCents(challenge.prizeSets); + const prizeType = challengeHelper.validatePrizeSetsAndGetPrizeType(challenge.prizeSets); + + if (prizeType === constants.prizeTypes.USD) { + convertPrizeSetValuesToCents(challenge.prizeSets); + } + const ret = await challengeDomain.create(challenge, grpcMetadata); - convertPrizeSetValuesToDollars(ret.prizeSets, ret.overview); + + if (prizeType === constants.prizeTypes.USD) { + convertPrizeSetValuesToDollars(ret.prizeSets, ret.overview); + } ret.numOfSubmissions = 0; ret.numOfRegistrants = 0; @@ -1484,7 +1494,11 @@ function validateTask(currentUser, challenge, data, challengeResources) { */ async function updateChallenge(currentUser, challengeId, data) { const challenge = await challengeDomain.lookup(getLookupCriteria("id", challengeId)); - convertPrizeSetValuesToDollars(challenge.prizeSets, challenge.overview); + const existingPrizeType = challengeHelper.validatePrizeSetsAndGetPrizeType(challenge.prizeSets); + + if (existingPrizeType === constants.prizeTypes.USD) { + convertPrizeSetValuesToDollars(challenge.prizeSets, challenge.overview); + } const projectId = _.get(challenge, "projectId"); @@ -1881,28 +1895,30 @@ async function updateChallenge(currentUser, challengeId, data) { } } - try { - const updateInput = sanitizeRepeatedFieldsInUpdateRequest(_.omit(data, ["cancelReason"])); - if (!_.isEmpty(updateInput)) { - const grpcMetadata = new GrpcMetadata(); + const updateInput = sanitizeRepeatedFieldsInUpdateRequest(_.omit(data, ["cancelReason"])); + if (!_.isEmpty(updateInput)) { + const grpcMetadata = new GrpcMetadata(); - grpcMetadata.set("handle", currentUser.handle); - grpcMetadata.set("userId", currentUser.userId); - grpcMetadata.set("token", await getM2MToken()); + grpcMetadata.set("handle", currentUser.handle); + grpcMetadata.set("userId", currentUser.userId); + grpcMetadata.set("token", await getM2MToken()); - if (updateInput.prizeSetUpdate != null) { - convertPrizeSetValuesToCents(updateInput.prizeSetUpdate.prizeSets); - } - await challengeDomain.update( - { - filterCriteria: getScanCriteria({ id: challengeId }), - updateInput, - }, - grpcMetadata + const newPrizeType = challengeHelper.validatePrizeSetsAndGetPrizeType(updateInput.prizeSets); + if (newPrizeType != null && existingPrizeType != null && newPrizeType !== existingPrizeType) { + throw new errors.BadRequestError( + `Cannot change prize type from ${existingPrizeType} to ${newPrizeType}` ); } - } catch (e) { - throw e; + if (updateInput.prizeSetUpdate != null && newPrizeType === constants.prizeTypes.USD) { + convertPrizeSetValuesToCents(updateInput.prizeSetUpdate.prizeSets); + } + await challengeDomain.update( + { + filterCriteria: getScanCriteria({ id: challengeId }), + updateInput, + }, + grpcMetadata + ); } const updatedChallenge = await challengeDomain.lookup(getLookupCriteria("id", challengeId)); @@ -2416,7 +2432,11 @@ advancePhase.schema = { }; async function indexChallengeAndPostToKafka(updatedChallenge, track, type) { - convertPrizeSetValuesToDollars(updatedChallenge.prizeSets, updatedChallenge.overview); + const prizeType = challengeHelper.validatePrizeSetsAndGetPrizeType(updatedChallenge.prizeSets); + + if (prizeType === constants.prizeTypes.USD) { + convertPrizeSetValuesToDollars(updatedChallenge.prizeSets, updatedChallenge.overview); + } if (track == null || type == null) { const trackAndTypeData = await challengeHelper.validateAndGetChallengeTypeAndTrack({ diff --git a/yarn.lock b/yarn.lock index e8d35dd2..23d867d1 100644 --- a/yarn.lock +++ b/yarn.lock @@ -10,12 +10,12 @@ "@babel/highlight" "^7.22.13" chalk "^2.4.2" -"@babel/generator@^7.23.0", "@babel/generator@^7.4.0": - version "7.23.0" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.23.0.tgz#df5c386e2218be505b34837acbcb874d7a983420" - integrity sha512-lN85QRR+5IbYrMWM6Y4pE/noaQtg4pNiqeNGX60eqOfo6gtEj6uw/JagelB8vVztSd7R6M5n1+PQkDbHbBRU4g== +"@babel/generator@^7.23.3", "@babel/generator@^7.4.0": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.23.3.tgz#86e6e83d95903fbe7613f448613b8b319f330a8e" + integrity sha512-keeZWAV4LU3tW0qRi19HRpabC/ilM0HRBBzf9/k8FFiG4KVpiv0FIy4hHfLfFQZNhziCTPTmd59zoyv6DNISzg== dependencies: - "@babel/types" "^7.23.0" + "@babel/types" "^7.23.3" "@jridgewell/gen-mapping" "^0.3.2" "@jridgewell/trace-mapping" "^0.3.17" jsesc "^2.5.1" @@ -66,10 +66,10 @@ chalk "^2.4.2" js-tokens "^4.0.0" -"@babel/parser@^7.22.15", "@babel/parser@^7.23.0", "@babel/parser@^7.4.3": - version "7.23.0" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.23.0.tgz#da950e622420bf96ca0d0f2909cdddac3acd8719" - integrity sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw== +"@babel/parser@^7.22.15", "@babel/parser@^7.23.3", "@babel/parser@^7.4.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.23.3.tgz#0ce0be31a4ca4f1884b5786057cadcb6c3be58f9" + integrity sha512-uVsWNvlVsIninV2prNz/3lHCb+5CJ+e+IUBfbjToAHODtfGYLfCFuY4AU7TskI+dAKk+njsPiBjq1gKTvZOBaw== "@babel/runtime@^7.15.4": version "7.23.2" @@ -88,25 +88,25 @@ "@babel/types" "^7.22.15" "@babel/traverse@^7.4.3": - version "7.23.2" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.23.2.tgz#329c7a06735e144a506bdb2cad0268b7f46f4ad8" - integrity sha512-azpe59SQ48qG6nu2CzcMLbxUudtN+dOM9kDbUqGq3HXUJRlo7i8fvPoxQUzYgLZ4cMVmuZgm8vvBpNeRhd6XSw== + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.23.3.tgz#26ee5f252e725aa7aca3474aa5b324eaf7908b5b" + integrity sha512-+K0yF1/9yR0oHdE0StHuEj3uTPzwwbrLGfNOndVJVV2TqA5+j3oljJUb4nmB954FLGjNem976+B+eDuLIjesiQ== dependencies: "@babel/code-frame" "^7.22.13" - "@babel/generator" "^7.23.0" + "@babel/generator" "^7.23.3" "@babel/helper-environment-visitor" "^7.22.20" "@babel/helper-function-name" "^7.23.0" "@babel/helper-hoist-variables" "^7.22.5" "@babel/helper-split-export-declaration" "^7.22.6" - "@babel/parser" "^7.23.0" - "@babel/types" "^7.23.0" + "@babel/parser" "^7.23.3" + "@babel/types" "^7.23.3" debug "^4.1.0" globals "^11.1.0" -"@babel/types@^7.22.15", "@babel/types@^7.22.5", "@babel/types@^7.23.0", "@babel/types@^7.4.0": - version "7.23.0" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.23.0.tgz#8c1f020c9df0e737e4e247c0619f58c68458aaeb" - integrity sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg== +"@babel/types@^7.22.15", "@babel/types@^7.22.5", "@babel/types@^7.23.0", "@babel/types@^7.23.3", "@babel/types@^7.4.0": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.23.3.tgz#d5ea892c07f2ec371ac704420f4dcdb07b5f9598" + integrity sha512-OZnvoH2l8PK5eUvEcUyCt/sXgr/h+UWpVuBbOljwcrAgUl6lpchoQ++PHGyQy1AtYnVA6CEq3y5xeEI10brpXw== dependencies: "@babel/helper-string-parser" "^7.22.5" "@babel/helper-validator-identifier" "^7.22.20" @@ -127,9 +127,9 @@ kuler "^2.0.0" "@grpc/grpc-js@^1.8.0", "@grpc/grpc-js@^1.8.12": - version "1.9.7" - resolved "https://registry.yarnpkg.com/@grpc/grpc-js/-/grpc-js-1.9.7.tgz#7d0e29bc162287bee2523901c9bc9320d8402397" - integrity sha512-yMaA/cIsRhGzW3ymCNpdlPcInXcovztlgu/rirThj2b87u3RzWUszliOqZ/pldy7yhmJPS8uwog+kZSTa4A0PQ== + version "1.9.9" + resolved "https://registry.yarnpkg.com/@grpc/grpc-js/-/grpc-js-1.9.9.tgz#ce3a05439b1c957ec64c2ecdc6f1e4f54e8af797" + integrity sha512-vQ1qwi/Kiyprt+uhb1+rHMpyk4CVRMTGNUGGPRGS7pLNfWkdCHrGEnT6T3/JyC2VZgoOX/X1KwdoU0WYQAeYcQ== dependencies: "@grpc/proto-loader" "^0.7.8" "@types/node" ">=12.12.47" @@ -282,29 +282,29 @@ tslib "^2.4.1" "@types/body-parser@*": - version "1.19.4" - resolved "https://registry.yarnpkg.com/@types/body-parser/-/body-parser-1.19.4.tgz#78ad68f1f79eb851aa3634db0c7f57f6f601b462" - integrity sha512-N7UDG0/xiPQa2D/XrVJXjkWbpqHCd2sBaB32ggRF2l83RhPfamgKGF8gwwqyksS95qUS5ZYF9aF+lLPRlwI2UA== + version "1.19.5" + resolved "https://registry.yarnpkg.com/@types/body-parser/-/body-parser-1.19.5.tgz#04ce9a3b677dc8bd681a17da1ab9835dc9d3ede4" + integrity sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg== dependencies: "@types/connect" "*" "@types/node" "*" "@types/chai@4": - version "4.3.9" - resolved "https://registry.yarnpkg.com/@types/chai/-/chai-4.3.9.tgz#144d762491967db8c6dea38e03d2206c2623feec" - integrity sha512-69TtiDzu0bcmKQv3yg1Zx409/Kd7r0b5F1PfpYJfSHzLGtB53547V4u+9iqKYsTu/O2ai6KTb0TInNpvuQ3qmg== + version "4.3.10" + resolved "https://registry.yarnpkg.com/@types/chai/-/chai-4.3.10.tgz#2ad2959d1767edee5b0e4efb1a0cd2b500747317" + integrity sha512-of+ICnbqjmFCiixUnqRulbylyXQrPqIGf/B3Jax1wIF3DvSheysQxAWvqHhZiW3IQrycvokcLcFQlveGp+vyNg== "@types/connect@*": - version "3.4.37" - resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.37.tgz#c66a96689fd3127c8772eb3e9e5c6028ec1a9af5" - integrity sha512-zBUSRqkfZ59OcwXon4HVxhx5oWCJmc0OtBTK05M+p0dYjgN6iTwIL2T/WbsQZrEsdnwaF9cWQ+azOnpPvIqY3Q== + version "3.4.38" + resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.38.tgz#5ba7f3bc4fbbdeaff8dded952e5ff2cc53f8d858" + integrity sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug== dependencies: "@types/node" "*" "@types/cookiejar@*": - version "2.1.3" - resolved "https://registry.yarnpkg.com/@types/cookiejar/-/cookiejar-2.1.3.tgz#c54976fb8f3a32ea8da844f59f0374dd39656e13" - integrity sha512-LZ8SD3LpNmLMDLkG2oCBjZg+ETnx6XdCjydUE0HwojDmnDfDUnhMKKbtth1TZh+hzcqb03azrYWoXLS8sMXdqg== + version "2.1.4" + resolved "https://registry.yarnpkg.com/@types/cookiejar/-/cookiejar-2.1.4.tgz#d3fe9c70f026237239ef57dd9d41c87f978b63b5" + integrity sha512-b698BLJ6kPVd6uhHsY7wlebZdrWPXYied883PDSzpJZYOP97EOn/oGdLCH3jJf157srkFReIZY5v0H1s8Dozrg== "@types/express-jwt@0.0.42": version "0.0.42" @@ -315,9 +315,9 @@ "@types/express-unless" "*" "@types/express-serve-static-core@^4.17.33": - version "4.17.39" - resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.39.tgz#2107afc0a4b035e6cb00accac3bdf2d76ae408c8" - integrity sha512-BiEUfAiGCOllomsRAZOiMFP7LAnrifHpt56pc4Z7l9K6ACyN06Ns1JLMBxwkfLOjJRlSf06NwWsT7yzfpaVpyQ== + version "4.17.41" + resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.41.tgz#5077defa630c2e8d28aa9ffc2c01c157c305bef6" + integrity sha512-OaJ7XLaelTgrvlZD8/aa0vvvxZdUmlCn6MtWeB7TkiKW70BQLc9XEPpDLPdbo52ZhXUCrznlWdCHWxJWtdyajA== dependencies: "@types/node" "*" "@types/qs" "*" @@ -332,9 +332,9 @@ express-unless "*" "@types/express@*": - version "4.17.20" - resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.20.tgz#e7c9b40276d29e38a4e3564d7a3d65911e2aa433" - integrity sha512-rOaqlkgEvOW495xErXMsmyX3WKBInbhG5eqojXYi3cGUaLoRDlXa5d52fkfWZT963AZ3v2eZ4MbKE6WpDAGVsw== + version "4.17.21" + resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.21.tgz#c26d4a151e60efe0084b23dc3369ebc631ed192d" + integrity sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ== dependencies: "@types/body-parser" "*" "@types/express-serve-static-core" "^4.17.33" @@ -342,49 +342,49 @@ "@types/serve-static" "*" "@types/http-errors@*": - version "2.0.3" - resolved "https://registry.yarnpkg.com/@types/http-errors/-/http-errors-2.0.3.tgz#c54e61f79b3947d040f150abd58f71efb422ff62" - integrity sha512-pP0P/9BnCj1OVvQR2lF41EkDG/lWWnDyA203b/4Fmi2eTyORnBtcDoKDwjWQthELrBvWkMOrvSOnZ8OVlW6tXA== + version "2.0.4" + resolved "https://registry.yarnpkg.com/@types/http-errors/-/http-errors-2.0.4.tgz#7eb47726c391b7345a6ec35ad7f4de469cf5ba4f" + integrity sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA== "@types/mime@*": - version "3.0.3" - resolved "https://registry.yarnpkg.com/@types/mime/-/mime-3.0.3.tgz#886674659ce55fe7c6c06ec5ca7c0eb276a08f91" - integrity sha512-i8MBln35l856k5iOhKk2XJ4SeAWg75mLIpZB4v6imOagKL6twsukBZGDMNhdOVk7yRFTMPpfILocMos59Q1otQ== + version "3.0.4" + resolved "https://registry.yarnpkg.com/@types/mime/-/mime-3.0.4.tgz#2198ac274de6017b44d941e00261d5bc6a0e0a45" + integrity sha512-iJt33IQnVRkqeqC7PzBHPTC6fDlRNRW8vjrgqtScAhrmMwe8c4Eo7+fUGTa+XdWrpEgpyKWMYmi2dIwMAYRzPw== "@types/mime@^1": - version "1.3.4" - resolved "https://registry.yarnpkg.com/@types/mime/-/mime-1.3.4.tgz#a4ed836e069491414bab92c31fdea9e557aca0d9" - integrity sha512-1Gjee59G25MrQGk8bsNvC6fxNiRgUlGn2wlhGf95a59DrprnnHk80FIMMFG9XHMdrfsuA119ht06QPDXA1Z7tw== + version "1.3.5" + resolved "https://registry.yarnpkg.com/@types/mime/-/mime-1.3.5.tgz#1ef302e01cf7d2b5a0fa526790c9123bf1d06690" + integrity sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w== "@types/node@*", "@types/node@>=12.12.47", "@types/node@>=13.7.0": - version "20.8.7" - resolved "https://registry.yarnpkg.com/@types/node/-/node-20.8.7.tgz#ad23827850843de973096edfc5abc9e922492a25" - integrity sha512-21TKHHh3eUHIi2MloeptJWALuCu5H7HQTdTrWIFReA8ad+aggoX+lRes3ex7/FtpC+sVUpFMQ+QTfYr74mruiQ== + version "20.9.0" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.9.0.tgz#bfcdc230583aeb891cf51e73cfdaacdd8deae298" + integrity sha512-nekiGu2NDb1BcVofVcEKMIwzlx4NjHlcjhoxxKBNLtz15Y1z7MYf549DFvkHSId02Ax6kGwWntIBPC3l/JZcmw== dependencies: - undici-types "~5.25.1" + undici-types "~5.26.4" "@types/qs@*": - version "6.9.9" - resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.9.tgz#66f7b26288f6799d279edf13da7ccd40d2fa9197" - integrity sha512-wYLxw35euwqGvTDx6zfY1vokBFnsK0HNrzc6xNHchxfO2hpuRg74GbkEW7e3sSmPvj0TjCDT1VCa6OtHXnubsg== + version "6.9.10" + resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.10.tgz#0af26845b5067e1c9a622658a51f60a3934d51e8" + integrity sha512-3Gnx08Ns1sEoCrWssEgTSJs/rsT2vhGP+Ja9cnnk9k4ALxinORlQneLXFeFKOTJMOeZUFD1s7w+w2AphTpvzZw== "@types/range-parser@*": - version "1.2.6" - resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.6.tgz#7cb33992049fd7340d5b10c0098e104184dfcd2a" - integrity sha512-+0autS93xyXizIYiyL02FCY8N+KkKPhILhcUSA276HxzreZ16kl+cmwvV2qAM/PuCCwPXzOXOWhiPcw20uSFcA== + version "1.2.7" + resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.7.tgz#50ae4353eaaddc04044279812f52c8c65857dbcb" + integrity sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ== "@types/send@*": - version "0.17.3" - resolved "https://registry.yarnpkg.com/@types/send/-/send-0.17.3.tgz#81b2ea5a3a18aad357405af2d643ccbe5a09020b" - integrity sha512-/7fKxvKUoETxjFUsuFlPB9YndePpxxRAOfGC/yJdc9kTjTeP5kRCTzfnE8kPUKCeyiyIZu0YQ76s50hCedI1ug== + version "0.17.4" + resolved "https://registry.yarnpkg.com/@types/send/-/send-0.17.4.tgz#6619cd24e7270793702e4e6a4b958a9010cfc57a" + integrity sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA== dependencies: "@types/mime" "^1" "@types/node" "*" "@types/serve-static@*": - version "1.15.4" - resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.15.4.tgz#44b5895a68ca637f06c229119e1c774ca88f81b2" - integrity sha512-aqqNfs1XTF0HDrFdlY//+SGUxmdSUbjeRXb5iaZc3x0/vMbYmdw9qvOgHWOyyLFxSSRnUuP5+724zBgfw8/WAw== + version "1.15.5" + resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.15.5.tgz#15e67500ec40789a1e8c9defc2d32a896f05b033" + integrity sha512-PDRk21MnK70hja/YF8AHfC7yIsiQHn1rcXx7ijCFBX/k+XQJhQT/gw3xekXKJvx+5SXaMMS8oqQy09Mzvz2TuQ== dependencies: "@types/http-errors" "*" "@types/mime" "*" @@ -399,9 +399,9 @@ "@types/node" "*" "@types/triple-beam@^1.3.2": - version "1.3.4" - resolved "https://registry.yarnpkg.com/@types/triple-beam/-/triple-beam-1.3.4.tgz#a1d5f480245db86e2f4777000065d4fe7467a012" - integrity sha512-HlJjF3wxV4R2VQkFpKe0YqJLilYNgtRtsqqZtby7RkVsSs+i+vbyzjtUwpFEdUCKcrGzCiEJE7F/0mKjh0sunA== + version "1.3.5" + resolved "https://registry.yarnpkg.com/@types/triple-beam/-/triple-beam-1.3.5.tgz#74fef9ffbaa198eb8b588be029f38b00299caa2c" + integrity sha512-6WaYesThRMCl19iryMYP7/x2OVgCtbIVflDGFpWnb9irXI3UjYE4AzmYuiUKY1AJstGijoY+MgUszMgRxIYTYw== abab@^2.0.6: version "2.0.6" @@ -430,14 +430,14 @@ acorn-globals@^7.0.0: acorn-walk "^8.0.2" acorn-walk@^8.0.2: - version "8.2.0" - resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.2.0.tgz#741210f2e2426454508853a2f44d0ab83b7f69c1" - integrity sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA== + version "8.3.0" + resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.3.0.tgz#2097665af50fd0cf7a2dfccd2b9368964e66540f" + integrity sha512-FS7hV565M5l1R08MXqo8odwMTB02C2UqzB17RVgu9EyuYFBqJZ3/ZY97sQD5FewVu1UyDFc1yztUDrAwT0EypA== acorn@^8.1.0, acorn@^8.8.2: - version "8.10.0" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.10.0.tgz#8be5b3907a67221a81ab23c7889c4c5526b62ec5" - integrity sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw== + version "8.11.2" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.11.2.tgz#ca0d78b51895be5390a5903c5b3bdcdaf78ae40b" + integrity sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w== agent-base@6: version "6.0.2" @@ -599,9 +599,9 @@ assertion-error@^1.1.0: integrity sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw== async@^3.2.3: - version "3.2.4" - resolved "https://registry.yarnpkg.com/async/-/async-3.2.4.tgz#2d22e00f8cddeb5fde5dd33522b56d1cf569a81c" - integrity sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ== + version "3.2.5" + resolved "https://registry.yarnpkg.com/async/-/async-3.2.5.tgz#ebd52a8fdaf7a2289a24df399f8d8485c8a46b66" + integrity sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg== asynckit@^0.4.0: version "0.4.0" @@ -614,9 +614,9 @@ available-typed-arrays@^1.0.5: integrity sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw== aws-sdk@^2.1145.0: - version "2.1478.0" - resolved "https://registry.yarnpkg.com/aws-sdk/-/aws-sdk-2.1478.0.tgz#30edc3a34fb0c40f30e5512e5e02c630ef849022" - integrity sha512-F+Ud9FxMD4rwvGbEXn7qc25Q19N4p+9klRjiH1llFLYssPw6TRtY464Cry/jG4OzuYkE/DsnhcwVFEJjGvMmuQ== + version "2.1495.0" + resolved "https://registry.yarnpkg.com/aws-sdk/-/aws-sdk-2.1495.0.tgz#7582d3862c8f18b2467f8e3f013479bda4de7d4d" + integrity sha512-JbefhY9G3WooJJjTtSUegyuNiYhY0vFd0q1KtpY8W+z1U6aKovkIyLJsR2de6u8KXZQkcwT+7N46BYT1SbZ5sQ== dependencies: buffer "4.9.2" events "1.1.1" @@ -640,9 +640,9 @@ aws4@^1.11.0, aws4@^1.8.0: integrity sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg== axios-retry@^3.4.0: - version "3.8.0" - resolved "https://registry.yarnpkg.com/axios-retry/-/axios-retry-3.8.0.tgz#a174af633ef143a9f5642b9e4afe65c2017936b5" - integrity sha512-CfIsQyWNc5/AE7x/UEReRUadiBmQeoBpSEC+4QyGLJMswTsP1tz0GW2YYPnE7w9+ESMef5zOgLDFpHynNyEZ1w== + version "3.8.1" + resolved "https://registry.yarnpkg.com/axios-retry/-/axios-retry-3.8.1.tgz#4bb53f87ea537bce904c477e5c2808571066acbb" + integrity sha512-4XseuArB4CEbfLRtMpUods2q8MLBvD4r8ifKgK4SP2FRgzQIPUDpzZ+cjQ/19eu3w2UpKgkJA+myEh2BYDSjqQ== dependencies: "@babel/runtime" "^7.15.4" is-retry-allowed "^2.2.0" @@ -1169,14 +1169,14 @@ deep-eql@^4.1.3: type-detect "^4.0.0" deep-equal@^2.2.0: - version "2.2.2" - resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-2.2.2.tgz#9b2635da569a13ba8e1cc159c2f744071b115daa" - integrity sha512-xjVyBf0w5vH0I42jdAZzOKVldmPgSulmiyPRywoyq7HXC9qdgo17kxJE+rdnif5Tz6+pIrpJI8dCpMNLIGkUiA== + version "2.2.3" + resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-2.2.3.tgz#af89dafb23a396c7da3e862abc0be27cf51d56e1" + integrity sha512-ZIwpnevOurS8bpT4192sqAowWM76JDKSHYzMLty3BZGSswgq6pBaH3DhCSW5xVAZICZyKdOBPjwww5wfgT/6PA== dependencies: array-buffer-byte-length "^1.0.0" - call-bind "^1.0.2" + call-bind "^1.0.5" es-get-iterator "^1.1.3" - get-intrinsic "^1.2.1" + get-intrinsic "^1.2.2" is-arguments "^1.1.1" is-array-buffer "^3.0.2" is-date-object "^1.0.5" @@ -1186,11 +1186,11 @@ deep-equal@^2.2.0: object-is "^1.1.5" object-keys "^1.1.1" object.assign "^4.1.4" - regexp.prototype.flags "^1.5.0" + regexp.prototype.flags "^1.5.1" side-channel "^1.0.4" which-boxed-primitive "^1.0.2" which-collection "^1.0.1" - which-typed-array "^1.1.9" + which-typed-array "^1.1.13" default-require-extensions@^2.0.0: version "2.0.0" @@ -1480,9 +1480,9 @@ events@1.1.1: integrity sha512-kEcvvCBByWXGnZy6JUlgAp2gBIUjfCAV6P6TgT1/aaQKcmuAEC4OZTV1I4EWQLz2gxZw76atuVyvHhTxvi0Flw== express-fileupload@^1.1.6: - version "1.4.1" - resolved "https://registry.yarnpkg.com/express-fileupload/-/express-fileupload-1.4.1.tgz#b14b9678a8c445bd5b3d1ba253567243472e7741" - integrity sha512-9F6SkbxbEOA9cYOBZ8tnn238jL+bGfacQuUO/JqPWp5t+piUcoDcESvKwAXsQV7IHGxmI5bMj3QxMWOKOIsMCg== + version "1.4.2" + resolved "https://registry.yarnpkg.com/express-fileupload/-/express-fileupload-1.4.2.tgz#59f8ab14f9d12c4b53dfc29e56face4313ca0b59" + integrity sha512-vk+9cK595jP03T+YgoYPAebynVCZuUBtW1JkyJnitQnWzlONHdxdAIm9yo99V4viTEftq7MUfzuqmWyqWGzMIg== dependencies: busboy "^1.6.0" @@ -2475,9 +2475,9 @@ json-parse-better-errors@^1.0.1: integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== json-rules-engine@^6.1.2: - version "6.4.2" - resolved "https://registry.yarnpkg.com/json-rules-engine/-/json-rules-engine-6.4.2.tgz#29e399dd5c07a3cc020d5a8bb6eda59347641485" - integrity sha512-D1wafl8UHDSlUCq22/jxJYLwKR7Y9YJ/ybFJff8EFw6+4wDR1lb7j4a6VpfBtiOcGcFmB8S2PO+IiUbDPv4XhQ== + version "6.5.0" + resolved "https://registry.yarnpkg.com/json-rules-engine/-/json-rules-engine-6.5.0.tgz#dead167b2171b2cd9c4925285fe3971f9aa6c887" + integrity sha512-W8SLmnfQRDNG1Nh3Agz3c9AZzhiZ/cUtjAhyfhujFzVFNBv7cSHm9WaLoRjOdRr/9je7RgLtmbYXFViL3CekPA== dependencies: clone "^2.1.2" eventemitter2 "^6.4.4" @@ -3274,9 +3274,9 @@ punycode@1.3.2: integrity sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw== punycode@2.x.x, punycode@^2.1.0, punycode@^2.1.1, punycode@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.0.tgz#f67fa67c94da8f4d0cfff981aee4118064199b8f" - integrity sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA== + version "2.3.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.1.tgz#027422e2faec0b25e1549c3e1bd8309b9133b6e5" + integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg== qs@6.11.0: version "6.11.0" @@ -3402,7 +3402,7 @@ regenerator-runtime@^0.14.0: resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz#5e19d68eb12d486f797e15a3c6a918f7cec5eb45" integrity sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA== -regexp.prototype.flags@^1.5.0, regexp.prototype.flags@^1.5.1: +regexp.prototype.flags@^1.5.1: version "1.5.1" resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.1.tgz#90ce989138db209f81492edd734183ce99f9677e" integrity sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg== @@ -3937,9 +3937,9 @@ supports-preserve-symlinks-flag@^1.0.0: integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== swagger-ui-dist@>=4.11.0: - version "5.9.0" - resolved "https://registry.yarnpkg.com/swagger-ui-dist/-/swagger-ui-dist-5.9.0.tgz#d52b6cf52fd0a8e6930866c402aaa793fe4e3f76" - integrity sha512-NUHSYoe5XRTk/Are8jPJ6phzBh3l9l33nEyXosM17QInoV95/jng8+PuSGtbD407QoPf93MH3Bkh773OgesJpA== + version "5.9.4" + resolved "https://registry.yarnpkg.com/swagger-ui-dist/-/swagger-ui-dist-5.9.4.tgz#668256c12892519201406ae74777a60ebdfbfb92" + integrity sha512-Ppghvj6Q8XxH5xiSrUjEeCUitrasGtz7v9FCUIBR/4t89fACQ4FnUT9D0yfodUYhB+PrCmYmxwe/2jTDLslHDw== swagger-ui-express@^4.1.3: version "4.6.3" @@ -4145,10 +4145,10 @@ undefsafe@^2.0.5: resolved "https://registry.yarnpkg.com/undefsafe/-/undefsafe-2.0.5.tgz#38733b9327bdcd226db889fb723a6efd162e6e2c" integrity sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA== -undici-types@~5.25.1: - version "5.25.3" - resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-5.25.3.tgz#e044115914c85f0bcbb229f346ab739f064998c3" - integrity sha512-Ga1jfYwRn7+cP9v8auvEXN1rX3sWqlayd4HP7OKk4mZWylEmu3KzXDUGrQUN6Ol7qo1gPvB2e5gX6udnyEPgdA== +undici-types@~5.26.4: + version "5.26.5" + resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-5.26.5.tgz#bcd539893d00b56e964fd2657a4866b221a65617" + integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA== universalify@^0.2.0: version "0.2.0" @@ -4294,7 +4294,7 @@ which-module@^2.0.0: resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.1.tgz#776b1fe35d90aebe99e8ac15eb24093389a4a409" integrity sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ== -which-typed-array@^1.1.11, which-typed-array@^1.1.13, which-typed-array@^1.1.2, which-typed-array@^1.1.9: +which-typed-array@^1.1.11, which-typed-array@^1.1.13, which-typed-array@^1.1.2: version "1.1.13" resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.13.tgz#870cd5be06ddb616f504e7b039c4c24898184d36" integrity sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow== From 16a8a07a4667e5c4eef4a28fae32caf1ef3a3c8e Mon Sep 17 00:00:00 2001 From: Rakib Ansary Date: Tue, 14 Nov 2023 19:00:36 +0600 Subject: [PATCH 02/11] feat: introduce point reward type Signed-off-by: Rakib Ansary --- package.json | 4 ++-- yarn.lock | 44 ++++++++++++++++++++++---------------------- 2 files changed, 24 insertions(+), 24 deletions(-) diff --git a/package.json b/package.json index 2226eb2f..249b4213 100644 --- a/package.json +++ b/package.json @@ -42,8 +42,8 @@ "dependencies": { "@grpc/grpc-js": "^1.8.12", "@opensearch-project/opensearch": "^2.2.0", - "@topcoder-framework/domain-challenge": "^0.24.0", - "@topcoder-framework/lib-common": "^0.24.0", + "@topcoder-framework/domain-challenge": "^0.24.1", + "@topcoder-framework/lib-common": "^0.24.1", "aws-sdk": "^2.1145.0", "axios": "^0.19.0", "axios-retry": "^3.4.0", diff --git a/yarn.lock b/yarn.lock index 23d867d1..3be6cd76 100644 --- a/yarn.lock +++ b/yarn.lock @@ -250,35 +250,35 @@ resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-2.0.0.tgz#f544a148d3ab35801c1f633a7441fd87c2e484bf" integrity sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A== -"@topcoder-framework/client-relational@^0.24.0": - version "0.24.0" - resolved "https://topcoder-409275337247.d.codeartifact.us-east-1.amazonaws.com/npm/topcoder-framework/@topcoder-framework/client-relational/-/client-relational-0.24.0.tgz#07ee26b1a35f3a5c4c7d7f2ec7300efbc63cf311" - integrity sha512-H+sHV9pKDW6urMZLr//NLmC2XDX6obrEy1dynpmF2W1AgkMFDgWy9euevAjPNWqnZvScW08N3c8yPwQ43/akaw== +"@topcoder-framework/client-relational@^0.24.1": + version "0.24.1" + resolved "https://topcoder-409275337247.d.codeartifact.us-east-1.amazonaws.com/npm/topcoder-framework/@topcoder-framework/client-relational/-/client-relational-0.24.1.tgz#a01c4bb5a6117c38d5b61e1a79ded58abeb5b7c5" + integrity sha512-yZJS2N6l1YT/wadWRgMhMzrtFNfPgCBMVLUPO2ORHq182xXSIBkpXLRvX99z2XVPRGpjCVkfumh+jANQKX8AXw== dependencies: "@grpc/grpc-js" "^1.8.0" - "@topcoder-framework/lib-common" "^0.24.0" - topcoder-proto-registry "0.1.0" + "@topcoder-framework/lib-common" "^0.24.1" + topcoder-proto-registry "0.2.0" tslib "^2.4.1" -"@topcoder-framework/domain-challenge@^0.24.0": - version "0.24.0" - resolved "https://topcoder-409275337247.d.codeartifact.us-east-1.amazonaws.com/npm/topcoder-framework/@topcoder-framework/domain-challenge/-/domain-challenge-0.24.0.tgz#023e57b95cc5213650eebffb860939b61d9b8068" - integrity sha512-RDD7D8Mk8hFkONuGEAYk2E7SMhBWGWtH3CJHsRoANn+7HzkeiGe48WCZRCdNI+5ygFmm3oKltMOf9lB/PD8RMw== +"@topcoder-framework/domain-challenge@^0.24.1": + version "0.24.1" + resolved "https://topcoder-409275337247.d.codeartifact.us-east-1.amazonaws.com/npm/topcoder-framework/@topcoder-framework/domain-challenge/-/domain-challenge-0.24.1.tgz#912cb9c7903236345ee036574e2fe82fe810b659" + integrity sha512-Zp7YEqCMxBel+VHFsmg9C7ZoZwkq5xMB3V0e2OxRdd0QZwyzXHll66NsajPNpkkEAAaMmzMmZTbKxF6KTJ97GQ== dependencies: "@grpc/grpc-js" "^1.8.0" - "@topcoder-framework/client-relational" "^0.24.0" - "@topcoder-framework/lib-common" "^0.24.0" - topcoder-proto-registry "0.1.0" + "@topcoder-framework/client-relational" "^0.24.1" + "@topcoder-framework/lib-common" "^0.24.1" + topcoder-proto-registry "0.2.0" tslib "^2.4.1" -"@topcoder-framework/lib-common@^0.24.0": - version "0.24.0" - resolved "https://topcoder-409275337247.d.codeartifact.us-east-1.amazonaws.com/npm/topcoder-framework/@topcoder-framework/lib-common/-/lib-common-0.24.0.tgz#a6baeeb3e1d3ad15cd0c010aaa7a62769a908a90" - integrity sha512-lKTqHYyVRdSs8JvXT9MYpxe4bY/ysIksCvj7OJUtntExkRjv7EPBysofjb7H4uNsofa2G5iOGycJtp+Qhaqb8Q== +"@topcoder-framework/lib-common@^0.24.1": + version "0.24.1" + resolved "https://topcoder-409275337247.d.codeartifact.us-east-1.amazonaws.com/npm/topcoder-framework/@topcoder-framework/lib-common/-/lib-common-0.24.1.tgz#fc69af0f3deb263d347bfb8ac014065c5a7ceeec" + integrity sha512-Av/v5YybzyrJlhxANFxy+uJR938OWzd4vkcBZvAWmY4wX9D8UOiBA1nF2EMZ5+9xhY+PD3O/yuqnfqUs/4qT+g== dependencies: "@grpc/grpc-js" "^1.8.0" rimraf "^3.0.2" - topcoder-proto-registry "0.1.0" + topcoder-proto-registry "0.2.0" tslib "^2.4.1" "@types/body-parser@*": @@ -4007,10 +4007,10 @@ topcoder-bus-api-wrapper@topcoder-platform/tc-bus-api-wrapper.git: superagent "^3.8.3" tc-core-library-js appirio-tech/tc-core-library-js.git#v2.6.4 -topcoder-proto-registry@0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/topcoder-proto-registry/-/topcoder-proto-registry-0.1.0.tgz#7bdcb7df7c8bbf9d54beba1c69a6210d0f4ca097" - integrity sha512-2RYGdDfCaX02pNcJu7ofb26O0SPe4MA6yfvpzXx6DjiuGtZu5QSZHkeaxqAlzRc9/F5zfWmGJwin4TOppo2xrA== +topcoder-proto-registry@0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/topcoder-proto-registry/-/topcoder-proto-registry-0.2.0.tgz#703d636d2581b7b3903fe299f6c3d572c5f728c0" + integrity sha512-qmoAY0jb25A4S4bunUagj+wP++d1Db0iZqMc0SaMFjzW33dXjay7TpJDBbNZuVk4He7kUhYXrn2CDikbPM3TFw== topo@3.x.x: version "3.0.3" From 06a0d90b8ce962d4b57ece844071d5c9271b3e77 Mon Sep 17 00:00:00 2001 From: Rakib Ansary Date: Fri, 24 Nov 2023 13:03:25 +0600 Subject: [PATCH 03/11] fix: checking whether legacy id exists is no longer relevant Signed-off-by: Rakib Ansary --- src/services/ChallengeService.js | 9 --------- 1 file changed, 9 deletions(-) diff --git a/src/services/ChallengeService.js b/src/services/ChallengeService.js index f18a7bef..15dabe0b 100644 --- a/src/services/ChallengeService.js +++ b/src/services/ChallengeService.js @@ -1627,15 +1627,6 @@ async function updateChallenge(currentUser, challengeId, data) { let isChallengeBeingCancelled = false; if (data.status) { if (data.status === constants.challengeStatuses.Active) { - if ( - !_.get(challenge, "legacy.pureV5Task") && - !_.get(challenge, "legacy.pureV5") && - _.isUndefined(_.get(challenge, "legacyId")) - ) { - throw new errors.BadRequestError( - "You cannot activate the challenge as it has not been created on legacy yet. Please try again later or contact support." - ); - } // if activating a challenge, the challenge must have a billing account id if ( (!billingAccountId || billingAccountId === null) && From 7d73e6c1cc3081c34959d7141ee25af56218ea1a Mon Sep 17 00:00:00 2001 From: Rakib Ansary Date: Sun, 26 Nov 2023 06:24:37 +0600 Subject: [PATCH 04/11] feat: pure-v5 challenge advance phase support Signed-off-by: Rakib Ansary --- src/phase-management/phase-rules.json | 54 +++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) diff --git a/src/phase-management/phase-rules.json b/src/phase-management/phase-rules.json index 5de8f34a..80590dcb 100644 --- a/src/phase-management/phase-rules.json +++ b/src/phase-management/phase-rules.json @@ -1,5 +1,32 @@ { "openRules": { + "Open": [ + { + "name": "Open Registration & Submission", + "conditions": { + "all": [ + { + "fact": "isPastScheduledStartTime", + "operator": "equal", + "value": true + }, + { + "fact": "isOpen", + "operator": "notEqual", + "value": true + }, + { + "fact": "isClosed", + "operator": "notEqual", + "value": true + } + ] + }, + "event": { + "type": "canOpen" + } + } + ], "Registration": [ { "name": "Registration Open", @@ -184,6 +211,33 @@ ] }, "closeRules": { + "Open": [ + { + "name": "Close Registration & Submission", + "conditions": { + "all": [ + { + "fact": "isOpen", + "operator": "equal", + "value": true + }, + { + "fact": "isPastScheduledEndTime", + "operator": "equal", + "value": true + }, + { + "fact": "isClosed", + "operator": "notEqual", + "value": true + } + ] + }, + "event": { + "type": "canClose" + } + } + ], "Registration": [ { "name": "Registration Close", From 3af16609ee168159a80bc26a1e3101fea6ab1b46 Mon Sep 17 00:00:00 2001 From: Rakib Ansary Date: Sun, 26 Nov 2023 07:01:55 +0600 Subject: [PATCH 05/11] feat: pure-v5 challenge advance phase support Signed-off-by: Rakib Ansary --- src/phase-management/phase-rules.json | 5 ----- 1 file changed, 5 deletions(-) diff --git a/src/phase-management/phase-rules.json b/src/phase-management/phase-rules.json index 80590dcb..ac1d250b 100644 --- a/src/phase-management/phase-rules.json +++ b/src/phase-management/phase-rules.json @@ -101,11 +101,6 @@ "operator": "notEqual", "value": true }, - { - "fact": "submissionCount", - "operator": "greaterThanInclusive", - "value": 1 - }, { "fact": "isPredecessorPhaseClosed", "operator": "equal", From 94f483a1f91e55c03a08377cc8b27bc009d80d2e Mon Sep 17 00:00:00 2001 From: Rakib Ansary Date: Sun, 26 Nov 2023 07:22:26 +0600 Subject: [PATCH 06/11] feat: pure-v5 challenge advance phase support Signed-off-by: Rakib Ansary --- src/phase-management/PhaseAdvancer.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/phase-management/PhaseAdvancer.js b/src/phase-management/PhaseAdvancer.js index 08f34e14..3a50ba66 100644 --- a/src/phase-management/PhaseAdvancer.js +++ b/src/phase-management/PhaseAdvancer.js @@ -290,7 +290,7 @@ class PhaseAdvancer { async #areAllSubmissionsReviewed(challengeId) { console.log(`Getting review count for challenge ${challengeId}`); - return Promise.resolve(false); + return Promise.resolve(true); } async #areAllAppealsResolved(challengeId) { From 2eb7834ee540557226579024b43ff0a847e2cb9d Mon Sep 17 00:00:00 2001 From: Rakib Ansary Date: Sun, 26 Nov 2023 13:53:56 +0600 Subject: [PATCH 07/11] debug: log Signed-off-by: Rakib Ansary --- src/services/ChallengeService.js | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/src/services/ChallengeService.js b/src/services/ChallengeService.js index 78b73d18..544ae69d 100644 --- a/src/services/ChallengeService.js +++ b/src/services/ChallengeService.js @@ -132,6 +132,7 @@ async function searchByLegacyId(currentUser, legacyId, page, perPage) { */ async function searchChallenges(currentUser, criteria) { // construct ES query + console.log("Serach Challenges Query", JSON.stringify(criteria)); const page = criteria.page || 1; const perPage = criteria.perPage || 20; @@ -340,12 +341,6 @@ async function searchChallenges(currentUser, criteria) { } boolQuery.push({ range: { "overview.totalPrizes": prizeRangeQuery } }); } - - if (criteria.useSchedulingAPI) { - boolQuery.push({ - match_phrase: { "legacy.useSchedulingAPI": criteria.useSchedulingAPI }, - }); - } if (criteria.selfService) { boolQuery.push({ match_phrase: { "legacy.selfService": criteria.selfService }, From 28cd46ac088e3d714e9ac70b423793e7652cbe97 Mon Sep 17 00:00:00 2001 From: Rakib Ansary Date: Sun, 26 Nov 2023 14:32:50 +0600 Subject: [PATCH 08/11] feat: challenge with phase name open is considered open for registration Signed-off-by: Rakib Ansary --- src/services/ChallengeService.js | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/src/services/ChallengeService.js b/src/services/ChallengeService.js index 544ae69d..f9d58149 100644 --- a/src/services/ChallengeService.js +++ b/src/services/ChallengeService.js @@ -132,7 +132,6 @@ async function searchByLegacyId(currentUser, legacyId, page, perPage) { */ async function searchChallenges(currentUser, criteria) { // construct ES query - console.log("Serach Challenges Query", JSON.stringify(criteria)); const page = criteria.page || 1; const perPage = criteria.perPage || 20; @@ -374,9 +373,21 @@ async function searchChallenges(currentUser, criteria) { }); } if (criteria.currentPhaseName) { - boolQuery.push({ - match_phrase: { currentPhaseNames: criteria.currentPhaseName }, - }); + if (criteria.currentPhaseName === "Registration") { + boolQuery.push({ + bool: { + should: [ + { match_phrase: { currentPhaseNames: "Registration" } }, + { match_phrase: { currentPhaseNames: "Open" } }, + ], + minimum_should_match: 1, + }, + }); + } else { + boolQuery.push({ + match_phrase: { currentPhaseNames: criteria.currentPhaseName }, + }); + } } if (criteria.createdDateStart) { boolQuery.push({ range: { created: { gte: criteria.createdDateStart } } }); From b2d41d04d99a5837861048bbd6836116008dad35 Mon Sep 17 00:00:00 2001 From: Rakib Ansary Date: Mon, 27 Nov 2023 06:47:42 +0600 Subject: [PATCH 09/11] debug: logs Signed-off-by: Rakib Ansary --- src/common/logger.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/common/logger.js b/src/common/logger.js index ca1bb2d5..478983a6 100644 --- a/src/common/logger.js +++ b/src/common/logger.js @@ -35,7 +35,7 @@ logger.logFullError = (err, signature) => { `${err.name} details: ${JSON.stringify(err.details)} input:${JSON.stringify(err._object)}` ); } else if (err.isAxiosError) { - logger.error(`${err.message} - ${err.response.data}`); + logger.error(`${err.message} - ${JSON.stringify(err.response.data)}`); } else if (err.httpStatus) { logger.error(err.message); } else if (!_.isUndefined(err.code) && err.details && err.metadata) { From 2b0614cc9da9d31e040e43507aa6f3c11d3a3b81 Mon Sep 17 00:00:00 2001 From: Rakib Ansary Date: Mon, 27 Nov 2023 07:09:54 +0600 Subject: [PATCH 10/11] debug: logs Signed-off-by: Rakib Ansary --- src/services/ChallengeService.js | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/services/ChallengeService.js b/src/services/ChallengeService.js index f9d58149..a00bdc2a 100644 --- a/src/services/ChallengeService.js +++ b/src/services/ChallengeService.js @@ -1113,7 +1113,14 @@ async function createChallenge(currentUser, challenge, userToken) { } // post bus event - await helper.postBusEvent(constants.Topics.ChallengeCreated, ret); + + try { + await helper.postBusEvent(constants.Topics.ChallengeCreated, ret); + } catch (err) { + console.error( + `Failed to post bus event ${constants.Topics.ChallengeCreated}: ${JSON.stringify(err)}` + ); + } return ret; } From ba73a63f6e16fa1bacb13e3ed19a0780cc964a62 Mon Sep 17 00:00:00 2001 From: Rakib Ansary Date: Mon, 27 Nov 2023 07:32:51 +0600 Subject: [PATCH 11/11] fix: set winner.type=placement only for tasks --- src/services/ChallengeService.js | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) diff --git a/src/services/ChallengeService.js b/src/services/ChallengeService.js index a00bdc2a..30d99f24 100644 --- a/src/services/ChallengeService.js +++ b/src/services/ChallengeService.js @@ -1113,14 +1113,7 @@ async function createChallenge(currentUser, challenge, userToken) { } // post bus event - - try { - await helper.postBusEvent(constants.Topics.ChallengeCreated, ret); - } catch (err) { - console.error( - `Failed to post bus event ${constants.Topics.ChallengeCreated}: ${JSON.stringify(err)}` - ); - } + await helper.postBusEvent(constants.Topics.ChallengeCreated, ret); return ret; } @@ -1817,6 +1810,11 @@ async function updateChallenge(currentUser, challengeId, data) { if (data.winners && data.winners.length && data.winners.length > 0) { await validateWinners(data.winners, challengeResources); + if (_.get(challenge, "legacy.pureV5Task", false)) { + _.each(data.winners, (w) => { + w.type = constants.prizeSetTypes.ChallengePrizes; + }); + } } // Only m2m tokens are allowed to modify the `task.*` information on a challenge @@ -2140,9 +2138,7 @@ updateChallenge.schema = { userId: Joi.number().integer().positive().required(), handle: Joi.string().required(), placement: Joi.number().integer().positive().required(), - type: Joi.string() - .valid(_.values(constants.prizeSetTypes)) - .default(constants.prizeSetTypes.ChallengePrizes), + type: Joi.string().valid(_.values(constants.prizeSetTypes)), }) .unknown(true) )