Commit 2b703f93 by lixinming

no message

parent 51b932d8
{
"name": "screen",
"version": "1.0.0",
"lockfileVersion": 1,
"lockfileVersion": 3,
"requires": true,
"dependencies": {
"@alicloud/dybaseapi": {
"packages": {
"": {
"name": "screen",
"version": "1.0.0",
"license": "ISC",
"dependencies": {
"@alicloud/sms-sdk": "^1.1.6",
"@types/node": "^10.12.18",
"compression": "^1.7.4",
"express": "^4.17.1",
"express-async-handler": "^1.1.4",
"express-history-api-fallback": "^2.2.1",
"formidable": "^1.2.1",
"log4js": "^6.6.1",
"lru-cache": "^4.1.5",
"md5": "^2.2.1",
"moment": "^2.24.0",
"node-xlsx": "^0.16.1",
"nodemailer": "^6.1.1",
"qs": "^6.11.0",
"request": "^2.88.0",
"svg-captcha": "^1.3.12",
"tencentcloud-sdk-nodejs": "^4.0.562",
"ws": "^5.2.2",
"xml2js": "^0.4.23"
},
"bin": {
"screen": "out/main.js"
},
"devDependencies": {}
},
"node_modules/@alicloud/dybaseapi": {
"version": "1.0.0",
"resolved": "https://registry.npmmirror.com/@alicloud/dybaseapi/-/dybaseapi-1.0.0.tgz",
"integrity": "sha512-4KEDgqES7IL60T/TWGSkLQkN6BYeHEw8smnPgac2J2MTES5v1ieCWvbLSuUUWi5SAXi7cydKoD4HUOmX7xwM+A==",
"requires": {
"dependencies": {
"@alicloud/pop-core": "^1.3.3"
}
},
"@alicloud/dysmsapi-2017-05-25": {
"node_modules/@alicloud/dysmsapi-2017-05-25": {
"version": "1.0.1",
"resolved": "https://registry.npmmirror.com/@alicloud/dysmsapi-2017-05-25/-/dysmsapi-2017-05-25-1.0.1.tgz",
"integrity": "sha512-CVX/Yl9ntwkAOHAZa3j2Y/Io+SlbETw/ILv4UPIDCEIQm/N0EEcN2OXF8cWCUvHeu7OgnFWZKhdJY5GsbjWHDA==",
"requires": {
"dependencies": {
"@alicloud/pop-core": "^1.5.1"
}
},
"@alicloud/mns": {
"node_modules/@alicloud/mns": {
"version": "1.0.0",
"resolved": "https://registry.npmmirror.com/@alicloud/mns/-/mns-1.0.0.tgz",
"integrity": "sha512-SUJYM8+x3iPy6thIy5Wa/5lw7+RodeDDIPcI3QQ3bZPNCSq+yEC3jMtfVlS3vxGPq+dGjAysI9RGeM7NByeHlw==",
"requires": {
"dependencies": {
"debug": "^2.6.3",
"httpx": "^2.1.1",
"kitx": "^1.2.0",
"xml2js": "^0.4.17"
},
}
},
"node_modules/@alicloud/mns/node_modules/debug": {
"version": "2.6.9",
"resolved": "https://registry.npmmirror.com/debug/-/debug-2.6.9.tgz",
"integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
"dependencies": {
"debug": {
"version": "2.6.9",
"resolved": "https://registry.npmmirror.com/debug/-/debug-2.6.9.tgz",
"integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
"requires": {
"ms": "2.0.0"
}
},
"ms": {
"version": "2.0.0",
"resolved": "https://registry.npmmirror.com/ms/-/ms-2.0.0.tgz",
"integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
}
"ms": "2.0.0"
}
},
"@alicloud/pop-core": {
"node_modules/@alicloud/mns/node_modules/ms": {
"version": "2.0.0",
"resolved": "https://registry.npmmirror.com/ms/-/ms-2.0.0.tgz",
"integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
},
"node_modules/@alicloud/pop-core": {
"version": "1.7.13",
"resolved": "https://registry.npmmirror.com/@alicloud/pop-core/-/pop-core-1.7.13.tgz",
"integrity": "sha512-agzr4DU+aAGW7/2mp2hP1JcNJkn/zBS0jUGQt5etIASN0MVq1tMdudVqvWbExUG0mUouo/n2VgdnjOHjswvrlA==",
"requires": {
"dependencies": {
"debug": "^3.1.0",
"httpx": "^2.1.2",
"json-bigint": "^1.0.0",
"kitx": "^1.2.1",
"xml2js": "^0.5.0"
},
"engines": {
"node": ">=8.0.0"
}
},
"node_modules/@alicloud/pop-core/node_modules/xml2js": {
"version": "0.5.0",
"resolved": "https://registry.npmmirror.com/xml2js/-/xml2js-0.5.0.tgz",
"integrity": "sha512-drPFnkQJik/O+uPKpqSgr22mpuFHqKdbS835iAQrUC73L2F5WkboIRd63ai/2Yg6I1jzifPFKH2NTK+cfglkIA==",
"dependencies": {
"xml2js": {
"version": "0.5.0",
"resolved": "https://registry.npmmirror.com/xml2js/-/xml2js-0.5.0.tgz",
"integrity": "sha512-drPFnkQJik/O+uPKpqSgr22mpuFHqKdbS835iAQrUC73L2F5WkboIRd63ai/2Yg6I1jzifPFKH2NTK+cfglkIA==",
"requires": {
"sax": ">=0.6.0",
"xmlbuilder": "~11.0.0"
}
}
"sax": ">=0.6.0",
"xmlbuilder": "~11.0.0"
},
"engines": {
"node": ">=4.0.0"
}
},
"@alicloud/sms-sdk": {
"node_modules/@alicloud/sms-sdk": {
"version": "1.1.6",
"resolved": "https://registry.npmmirror.com/@alicloud/sms-sdk/-/sms-sdk-1.1.6.tgz",
"integrity": "sha512-jW5ROjpAtOrNFkZSXb8geJWzkgJ9ggnPx+ve+72eatu78/vad2emdZjRx43/xPqqhA9djRoU3xHQt2xFODiaMQ==",
"requires": {
"dependencies": {
"@alicloud/dybaseapi": "^1.0.0",
"@alicloud/dysmsapi-2017-05-25": "^1.0.1",
"@alicloud/mns": "^1.0.0-beta6",
"babel-runtime": "^6.26.0"
}
},
"@babel/runtime": {
"node_modules/@babel/runtime": {
"version": "7.22.10",
"resolved": "https://registry.npmmirror.com/@babel/runtime/-/runtime-7.22.10.tgz",
"integrity": "sha512-21t/fkKLMZI4pqP2wlmsQAWnYW1PDyKyyUV4vCi+B25ydmdaYTKXPwCj0BzSUnZf4seIiYvSA3jcZ3gdsMFkLQ==",
"requires": {
"dependencies": {
"regenerator-runtime": "^0.14.0"
},
"dependencies": {
"regenerator-runtime": {
"version": "0.14.0",
"resolved": "https://registry.npmmirror.com/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz",
"integrity": "sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA=="
}
"engines": {
"node": ">=6.9.0"
}
},
"@types/node": {
"node_modules/@babel/runtime/node_modules/regenerator-runtime": {
"version": "0.14.0",
"resolved": "https://registry.npmmirror.com/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz",
"integrity": "sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA=="
},
"node_modules/@types/node": {
"version": "10.17.60",
"resolved": "https://registry.npmmirror.com/@types/node/-/node-10.17.60.tgz",
"integrity": "sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw=="
},
"accepts": {
"node_modules/accepts": {
"version": "1.3.8",
"resolved": "https://registry.npmmirror.com/accepts/-/accepts-1.3.8.tgz",
"integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==",
"requires": {
"dependencies": {
"mime-types": "~2.1.34",
"negotiator": "0.6.3"
},
"engines": {
"node": ">= 0.6"
}
},
"adler-32": {
"node_modules/adler-32": {
"version": "1.2.0",
"resolved": "https://registry.npmmirror.com/adler-32/-/adler-32-1.2.0.tgz",
"integrity": "sha512-/vUqU/UY4MVeFsg+SsK6c+/05RZXIHZMGJA+PX5JyWI0ZRcBpupnRuPLU/NXXoFwMYCPCoxIfElM2eS+DUXCqQ==",
"requires": {
"dependencies": {
"exit-on-epipe": "~1.0.1",
"printj": "~1.1.0"
},
"bin": {
"adler32": "bin/adler32.njs"
},
"engines": {
"node": ">=0.8"
}
},
"agent-base": {
"node_modules/agent-base": {
"version": "6.0.2",
"resolved": "https://registry.npmmirror.com/agent-base/-/agent-base-6.0.2.tgz",
"integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==",
"requires": {
"dependencies": {
"debug": "4"
},
"engines": {
"node": ">= 6.0.0"
}
},
"node_modules/agent-base/node_modules/debug": {
"version": "4.3.4",
"resolved": "https://registry.npmmirror.com/debug/-/debug-4.3.4.tgz",
"integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
"dependencies": {
"debug": {
"version": "4.3.4",
"resolved": "https://registry.npmmirror.com/debug/-/debug-4.3.4.tgz",
"integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
"requires": {
"ms": "2.1.2"
}
},
"ms": {
"version": "2.1.2",
"resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz",
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
"ms": "2.1.2"
},
"engines": {
"node": ">=6.0"
},
"peerDependenciesMeta": {
"supports-color": {
"optional": true
}
}
},
"ajv": {
"node_modules/agent-base/node_modules/ms": {
"version": "2.1.2",
"resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz",
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
},
"node_modules/ajv": {
"version": "6.12.6",
"resolved": "https://registry.npmmirror.com/ajv/-/ajv-6.12.6.tgz",
"integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
"requires": {
"dependencies": {
"fast-deep-equal": "^3.1.1",
"fast-json-stable-stringify": "^2.0.0",
"json-schema-traverse": "^0.4.1",
"uri-js": "^4.2.2"
},
"funding": {
"type": "github",
"url": "https://github.com/sponsors/epoberezkin"
}
},
"array-flatten": {
"node_modules/array-flatten": {
"version": "1.1.1",
"resolved": "https://registry.npmmirror.com/array-flatten/-/array-flatten-1.1.1.tgz",
"integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg=="
},
"asn1": {
"node_modules/asn1": {
"version": "0.2.6",
"resolved": "https://registry.npmmirror.com/asn1/-/asn1-0.2.6.tgz",
"integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==",
"requires": {
"dependencies": {
"safer-buffer": "~2.1.0"
}
},
"assert-plus": {
"node_modules/assert-plus": {
"version": "1.0.0",
"resolved": "https://registry.npmmirror.com/assert-plus/-/assert-plus-1.0.0.tgz",
"integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw=="
"integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==",
"engines": {
"node": ">=0.8"
}
},
"async-limiter": {
"node_modules/async-limiter": {
"version": "1.0.1",
"resolved": "https://registry.npmmirror.com/async-limiter/-/async-limiter-1.0.1.tgz",
"integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ=="
},
"asynckit": {
"node_modules/asynckit": {
"version": "0.4.0",
"resolved": "https://registry.npmmirror.com/asynckit/-/asynckit-0.4.0.tgz",
"integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q=="
},
"aws-sign2": {
"node_modules/aws-sign2": {
"version": "0.7.0",
"resolved": "https://registry.npmmirror.com/aws-sign2/-/aws-sign2-0.7.0.tgz",
"integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA=="
"integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==",
"engines": {
"node": "*"
}
},
"aws4": {
"node_modules/aws4": {
"version": "1.12.0",
"resolved": "https://registry.npmmirror.com/aws4/-/aws4-1.12.0.tgz",
"integrity": "sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg=="
},
"babel-runtime": {
"node_modules/babel-runtime": {
"version": "6.26.0",
"resolved": "https://registry.npmmirror.com/babel-runtime/-/babel-runtime-6.26.0.tgz",
"integrity": "sha512-ITKNuq2wKlW1fJg9sSW52eepoYgZBggvOAHC0u/CYu/qxQ9EVzThCgR69BnSXLHjy2f7SY5zaQ4yt7H9ZVxY2g==",
"requires": {
"dependencies": {
"core-js": "^2.4.0",
"regenerator-runtime": "^0.11.0"
}
},
"bcrypt-pbkdf": {
"node_modules/bcrypt-pbkdf": {
"version": "1.0.2",
"resolved": "https://registry.npmmirror.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz",
"integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==",
"requires": {
"dependencies": {
"tweetnacl": "^0.14.3"
}
},
"bignumber.js": {
"node_modules/bignumber.js": {
"version": "9.1.1",
"resolved": "https://registry.npmmirror.com/bignumber.js/-/bignumber.js-9.1.1.tgz",
"integrity": "sha512-pHm4LsMJ6lzgNGVfZHjMoO8sdoRhOzOH4MLmY65Jg70bpxCKu5iOHNJyfF6OyvYw7t8Fpf35RuzUyqnQsj8Vig=="
"integrity": "sha512-pHm4LsMJ6lzgNGVfZHjMoO8sdoRhOzOH4MLmY65Jg70bpxCKu5iOHNJyfF6OyvYw7t8Fpf35RuzUyqnQsj8Vig==",
"engines": {
"node": "*"
}
},
"body-parser": {
"node_modules/body-parser": {
"version": "1.20.1",
"resolved": "https://registry.npmmirror.com/body-parser/-/body-parser-1.20.1.tgz",
"integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==",
"requires": {
"dependencies": {
"bytes": "3.1.2",
"content-type": "~1.0.4",
"debug": "2.6.9",
......@@ -230,106 +294,139 @@
"type-is": "~1.6.18",
"unpipe": "1.0.0"
},
"engines": {
"node": ">= 0.8",
"npm": "1.2.8000 || >= 1.4.16"
}
},
"node_modules/body-parser/node_modules/bytes": {
"version": "3.1.2",
"resolved": "https://registry.npmmirror.com/bytes/-/bytes-3.1.2.tgz",
"integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==",
"engines": {
"node": ">= 0.8"
}
},
"node_modules/body-parser/node_modules/debug": {
"version": "2.6.9",
"resolved": "https://registry.npmmirror.com/debug/-/debug-2.6.9.tgz",
"integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
"dependencies": {
"bytes": {
"version": "3.1.2",
"resolved": "https://registry.npmmirror.com/bytes/-/bytes-3.1.2.tgz",
"integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg=="
},
"debug": {
"version": "2.6.9",
"resolved": "https://registry.npmmirror.com/debug/-/debug-2.6.9.tgz",
"integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
"requires": {
"ms": "2.0.0"
}
},
"ms": {
"version": "2.0.0",
"resolved": "https://registry.npmmirror.com/ms/-/ms-2.0.0.tgz",
"integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
},
"qs": {
"version": "6.11.0",
"resolved": "https://registry.npmmirror.com/qs/-/qs-6.11.0.tgz",
"integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==",
"requires": {
"side-channel": "^1.0.4"
}
}
"ms": "2.0.0"
}
},
"node_modules/body-parser/node_modules/ms": {
"version": "2.0.0",
"resolved": "https://registry.npmmirror.com/ms/-/ms-2.0.0.tgz",
"integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
},
"node_modules/body-parser/node_modules/qs": {
"version": "6.11.0",
"resolved": "https://registry.npmmirror.com/qs/-/qs-6.11.0.tgz",
"integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==",
"dependencies": {
"side-channel": "^1.0.4"
},
"engines": {
"node": ">=0.6"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"buffer-from": {
"node_modules/buffer-from": {
"version": "1.1.2",
"resolved": "https://registry.npmmirror.com/buffer-from/-/buffer-from-1.1.2.tgz",
"integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ=="
},
"bytes": {
"node_modules/bytes": {
"version": "3.0.0",
"resolved": "https://registry.npmmirror.com/bytes/-/bytes-3.0.0.tgz",
"integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw=="
"integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==",
"engines": {
"node": ">= 0.8"
}
},
"call-bind": {
"node_modules/call-bind": {
"version": "1.0.2",
"resolved": "https://registry.npmmirror.com/call-bind/-/call-bind-1.0.2.tgz",
"integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==",
"requires": {
"dependencies": {
"function-bind": "^1.1.1",
"get-intrinsic": "^1.0.2"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"caseless": {
"node_modules/caseless": {
"version": "0.12.0",
"resolved": "https://registry.npmmirror.com/caseless/-/caseless-0.12.0.tgz",
"integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw=="
},
"cfb": {
"node_modules/cfb": {
"version": "1.2.2",
"resolved": "https://registry.npmmirror.com/cfb/-/cfb-1.2.2.tgz",
"integrity": "sha512-KfdUZsSOw19/ObEWasvBP/Ac4reZvAGauZhs6S/gqNhXhI7cKwvlH7ulj+dOEYnca4bm4SGo8C1bTAQvnTjgQA==",
"requires": {
"dependencies": {
"adler-32": "~1.3.0",
"crc-32": "~1.2.0"
},
"dependencies": {
"adler-32": {
"version": "1.3.1",
"resolved": "https://registry.npmmirror.com/adler-32/-/adler-32-1.3.1.tgz",
"integrity": "sha512-ynZ4w/nUUv5rrsR8UUGoe1VC9hZj6V5hU9Qw1HlMDJGEJw5S7TfTErWTjMys6M7vr0YWcPqs3qAr4ss0nDfP+A=="
}
"engines": {
"node": ">=0.8"
}
},
"node_modules/cfb/node_modules/adler-32": {
"version": "1.3.1",
"resolved": "https://registry.npmmirror.com/adler-32/-/adler-32-1.3.1.tgz",
"integrity": "sha512-ynZ4w/nUUv5rrsR8UUGoe1VC9hZj6V5hU9Qw1HlMDJGEJw5S7TfTErWTjMys6M7vr0YWcPqs3qAr4ss0nDfP+A==",
"engines": {
"node": ">=0.8"
}
},
"charenc": {
"node_modules/charenc": {
"version": "0.0.2",
"resolved": "https://registry.npmmirror.com/charenc/-/charenc-0.0.2.tgz",
"integrity": "sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA=="
"integrity": "sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA==",
"engines": {
"node": "*"
}
},
"codepage": {
"node_modules/codepage": {
"version": "1.15.0",
"resolved": "https://registry.npmmirror.com/codepage/-/codepage-1.15.0.tgz",
"integrity": "sha512-3g6NUTPd/YtuuGrhMnOMRjFc+LJw/bnMp3+0r/Wcz3IXUuCosKRJvMphm5+Q+bvTVGcJJuRvVLuYba+WojaFaA=="
"integrity": "sha512-3g6NUTPd/YtuuGrhMnOMRjFc+LJw/bnMp3+0r/Wcz3IXUuCosKRJvMphm5+Q+bvTVGcJJuRvVLuYba+WojaFaA==",
"engines": {
"node": ">=0.8"
}
},
"combined-stream": {
"node_modules/combined-stream": {
"version": "1.0.8",
"resolved": "https://registry.npmmirror.com/combined-stream/-/combined-stream-1.0.8.tgz",
"integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
"requires": {
"dependencies": {
"delayed-stream": "~1.0.0"
},
"engines": {
"node": ">= 0.8"
}
},
"compressible": {
"node_modules/compressible": {
"version": "2.0.18",
"resolved": "https://registry.npmmirror.com/compressible/-/compressible-2.0.18.tgz",
"integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==",
"requires": {
"dependencies": {
"mime-db": ">= 1.43.0 < 2"
},
"engines": {
"node": ">= 0.6"
}
},
"compression": {
"node_modules/compression": {
"version": "1.7.4",
"resolved": "https://registry.npmmirror.com/compression/-/compression-1.7.4.tgz",
"integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==",
"requires": {
"dependencies": {
"accepts": "~1.3.5",
"bytes": "3.0.0",
"compressible": "~2.0.16",
......@@ -338,147 +435,205 @@
"safe-buffer": "5.1.2",
"vary": "~1.1.2"
},
"engines": {
"node": ">= 0.8.0"
}
},
"node_modules/compression/node_modules/debug": {
"version": "2.6.9",
"resolved": "https://registry.npmmirror.com/debug/-/debug-2.6.9.tgz",
"integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
"dependencies": {
"debug": {
"version": "2.6.9",
"resolved": "https://registry.npmmirror.com/debug/-/debug-2.6.9.tgz",
"integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
"requires": {
"ms": "2.0.0"
}
},
"ms": {
"version": "2.0.0",
"resolved": "https://registry.npmmirror.com/ms/-/ms-2.0.0.tgz",
"integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
}
"ms": "2.0.0"
}
},
"content-disposition": {
"node_modules/compression/node_modules/ms": {
"version": "2.0.0",
"resolved": "https://registry.npmmirror.com/ms/-/ms-2.0.0.tgz",
"integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
},
"node_modules/content-disposition": {
"version": "0.5.4",
"resolved": "https://registry.npmmirror.com/content-disposition/-/content-disposition-0.5.4.tgz",
"integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==",
"requires": {
"dependencies": {
"safe-buffer": "5.2.1"
},
"dependencies": {
"safe-buffer": {
"version": "5.2.1",
"resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.2.1.tgz",
"integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ=="
"engines": {
"node": ">= 0.6"
}
},
"node_modules/content-disposition/node_modules/safe-buffer": {
"version": "5.2.1",
"resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.2.1.tgz",
"integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
"funding": [
{
"type": "github",
"url": "https://github.com/sponsors/feross"
},
{
"type": "patreon",
"url": "https://www.patreon.com/feross"
},
{
"type": "consulting",
"url": "https://feross.org/support"
}
}
]
},
"content-type": {
"node_modules/content-type": {
"version": "1.0.5",
"resolved": "https://registry.npmmirror.com/content-type/-/content-type-1.0.5.tgz",
"integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA=="
"integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==",
"engines": {
"node": ">= 0.6"
}
},
"cookie": {
"node_modules/cookie": {
"version": "0.5.0",
"resolved": "https://registry.npmmirror.com/cookie/-/cookie-0.5.0.tgz",
"integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw=="
"integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==",
"engines": {
"node": ">= 0.6"
}
},
"cookie-signature": {
"node_modules/cookie-signature": {
"version": "1.0.6",
"resolved": "https://registry.npmmirror.com/cookie-signature/-/cookie-signature-1.0.6.tgz",
"integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ=="
},
"core-js": {
"node_modules/core-js": {
"version": "2.6.12",
"resolved": "https://registry.npmmirror.com/core-js/-/core-js-2.6.12.tgz",
"integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ=="
"integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==",
"deprecated": "core-js@<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Some versions have web compatibility issues. Please, upgrade your dependencies to the actual version of core-js.",
"hasInstallScript": true
},
"core-util-is": {
"node_modules/core-util-is": {
"version": "1.0.2",
"resolved": "https://registry.npmmirror.com/core-util-is/-/core-util-is-1.0.2.tgz",
"integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ=="
},
"crc-32": {
"node_modules/crc-32": {
"version": "1.2.2",
"resolved": "https://registry.npmmirror.com/crc-32/-/crc-32-1.2.2.tgz",
"integrity": "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ=="
"integrity": "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==",
"bin": {
"crc32": "bin/crc32.njs"
},
"engines": {
"node": ">=0.8"
}
},
"crypt": {
"node_modules/crypt": {
"version": "0.0.2",
"resolved": "https://registry.npmmirror.com/crypt/-/crypt-0.0.2.tgz",
"integrity": "sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow=="
"integrity": "sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow==",
"engines": {
"node": "*"
}
},
"dashdash": {
"node_modules/dashdash": {
"version": "1.14.1",
"resolved": "https://registry.npmmirror.com/dashdash/-/dashdash-1.14.1.tgz",
"integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==",
"requires": {
"dependencies": {
"assert-plus": "^1.0.0"
},
"engines": {
"node": ">=0.10"
}
},
"date-format": {
"node_modules/date-format": {
"version": "4.0.14",
"resolved": "https://registry.npmmirror.com/date-format/-/date-format-4.0.14.tgz",
"integrity": "sha512-39BOQLs9ZjKh0/patS9nrT8wc3ioX3/eA/zgbKNopnF2wCqJEoxywwwElATYvRsXdnOxA/OQeQoFZ3rFjVajhg=="
"integrity": "sha512-39BOQLs9ZjKh0/patS9nrT8wc3ioX3/eA/zgbKNopnF2wCqJEoxywwwElATYvRsXdnOxA/OQeQoFZ3rFjVajhg==",
"engines": {
"node": ">=4.0"
}
},
"debug": {
"node_modules/debug": {
"version": "3.2.7",
"resolved": "https://registry.npmmirror.com/debug/-/debug-3.2.7.tgz",
"integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
"requires": {
"dependencies": {
"ms": "^2.1.1"
}
},
"delayed-stream": {
"node_modules/delayed-stream": {
"version": "1.0.0",
"resolved": "https://registry.npmmirror.com/delayed-stream/-/delayed-stream-1.0.0.tgz",
"integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ=="
"integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==",
"engines": {
"node": ">=0.4.0"
}
},
"depd": {
"node_modules/depd": {
"version": "2.0.0",
"resolved": "https://registry.npmmirror.com/depd/-/depd-2.0.0.tgz",
"integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw=="
"integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==",
"engines": {
"node": ">= 0.8"
}
},
"destroy": {
"node_modules/destroy": {
"version": "1.2.0",
"resolved": "https://registry.npmmirror.com/destroy/-/destroy-1.2.0.tgz",
"integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg=="
"integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==",
"engines": {
"node": ">= 0.8",
"npm": "1.2.8000 || >= 1.4.16"
}
},
"ecc-jsbn": {
"node_modules/ecc-jsbn": {
"version": "0.1.2",
"resolved": "https://registry.npmmirror.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz",
"integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==",
"requires": {
"dependencies": {
"jsbn": "~0.1.0",
"safer-buffer": "^2.1.0"
}
},
"ee-first": {
"node_modules/ee-first": {
"version": "1.1.1",
"resolved": "https://registry.npmmirror.com/ee-first/-/ee-first-1.1.1.tgz",
"integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow=="
},
"encodeurl": {
"node_modules/encodeurl": {
"version": "1.0.2",
"resolved": "https://registry.npmmirror.com/encodeurl/-/encodeurl-1.0.2.tgz",
"integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w=="
"integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==",
"engines": {
"node": ">= 0.8"
}
},
"escape-html": {
"node_modules/escape-html": {
"version": "1.0.3",
"resolved": "https://registry.npmmirror.com/escape-html/-/escape-html-1.0.3.tgz",
"integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow=="
},
"etag": {
"node_modules/etag": {
"version": "1.8.1",
"resolved": "https://registry.npmmirror.com/etag/-/etag-1.8.1.tgz",
"integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg=="
"integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==",
"engines": {
"node": ">= 0.6"
}
},
"exit-on-epipe": {
"node_modules/exit-on-epipe": {
"version": "1.0.1",
"resolved": "https://registry.npmmirror.com/exit-on-epipe/-/exit-on-epipe-1.0.1.tgz",
"integrity": "sha512-h2z5mrROTxce56S+pnvAV890uu7ls7f1kEvVGJbw1OlFH3/mlJ5bkXu0KRyW94v37zzHPiUd55iLn3DA7TjWpw=="
"integrity": "sha512-h2z5mrROTxce56S+pnvAV890uu7ls7f1kEvVGJbw1OlFH3/mlJ5bkXu0KRyW94v37zzHPiUd55iLn3DA7TjWpw==",
"engines": {
"node": ">=0.8"
}
},
"express": {
"node_modules/express": {
"version": "4.18.2",
"resolved": "https://registry.npmmirror.com/express/-/express-4.18.2.tgz",
"integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==",
"requires": {
"dependencies": {
"accepts": "~1.3.8",
"array-flatten": "1.1.1",
"body-parser": "1.20.1",
......@@ -511,70 +666,94 @@
"utils-merge": "1.0.1",
"vary": "~1.1.2"
},
"dependencies": {
"debug": {
"version": "2.6.9",
"resolved": "https://registry.npmmirror.com/debug/-/debug-2.6.9.tgz",
"integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
"requires": {
"ms": "2.0.0"
}
},
"ms": {
"version": "2.0.0",
"resolved": "https://registry.npmmirror.com/ms/-/ms-2.0.0.tgz",
"integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
},
"qs": {
"version": "6.11.0",
"resolved": "https://registry.npmmirror.com/qs/-/qs-6.11.0.tgz",
"integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==",
"requires": {
"side-channel": "^1.0.4"
}
},
"safe-buffer": {
"version": "5.2.1",
"resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.2.1.tgz",
"integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ=="
}
"engines": {
"node": ">= 0.10.0"
}
},
"express-async-handler": {
"node_modules/express-async-handler": {
"version": "1.2.0",
"resolved": "https://registry.npmmirror.com/express-async-handler/-/express-async-handler-1.2.0.tgz",
"integrity": "sha512-rCSVtPXRmQSW8rmik/AIb2P0op6l7r1fMW538yyvTMltCO4xQEWMmobfrIxN2V1/mVrgxB8Az3reYF6yUZw37w=="
},
"express-history-api-fallback": {
"node_modules/express-history-api-fallback": {
"version": "2.2.1",
"resolved": "https://registry.npmmirror.com/express-history-api-fallback/-/express-history-api-fallback-2.2.1.tgz",
"integrity": "sha512-swxwm3aP8vrOOvlzOdZvHlSZtJGwHKaY94J6AkrAgCTmcbko3IRwbkhLv2wKV1WeZhjxX58aLMpP3atDBnKuZg=="
},
"extend": {
"node_modules/express/node_modules/debug": {
"version": "2.6.9",
"resolved": "https://registry.npmmirror.com/debug/-/debug-2.6.9.tgz",
"integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
"dependencies": {
"ms": "2.0.0"
}
},
"node_modules/express/node_modules/ms": {
"version": "2.0.0",
"resolved": "https://registry.npmmirror.com/ms/-/ms-2.0.0.tgz",
"integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
},
"node_modules/express/node_modules/qs": {
"version": "6.11.0",
"resolved": "https://registry.npmmirror.com/qs/-/qs-6.11.0.tgz",
"integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==",
"dependencies": {
"side-channel": "^1.0.4"
},
"engines": {
"node": ">=0.6"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/express/node_modules/safe-buffer": {
"version": "5.2.1",
"resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.2.1.tgz",
"integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
"funding": [
{
"type": "github",
"url": "https://github.com/sponsors/feross"
},
{
"type": "patreon",
"url": "https://www.patreon.com/feross"
},
{
"type": "consulting",
"url": "https://feross.org/support"
}
]
},
"node_modules/extend": {
"version": "3.0.2",
"resolved": "https://registry.npmmirror.com/extend/-/extend-3.0.2.tgz",
"integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g=="
},
"extsprintf": {
"node_modules/extsprintf": {
"version": "1.3.0",
"resolved": "https://registry.npmmirror.com/extsprintf/-/extsprintf-1.3.0.tgz",
"integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g=="
"integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==",
"engines": [
"node >=0.6.0"
]
},
"fast-deep-equal": {
"node_modules/fast-deep-equal": {
"version": "3.1.3",
"resolved": "https://registry.npmmirror.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
"integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="
},
"fast-json-stable-stringify": {
"node_modules/fast-json-stable-stringify": {
"version": "2.1.0",
"resolved": "https://registry.npmmirror.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
"integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw=="
},
"finalhandler": {
"node_modules/finalhandler": {
"version": "1.2.0",
"resolved": "https://registry.npmmirror.com/finalhandler/-/finalhandler-1.2.0.tgz",
"integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==",
"requires": {
"dependencies": {
"debug": "2.6.9",
"encodeurl": "~1.0.2",
"escape-html": "~1.0.3",
......@@ -583,536 +762,721 @@
"statuses": "2.0.1",
"unpipe": "~1.0.0"
},
"engines": {
"node": ">= 0.8"
}
},
"node_modules/finalhandler/node_modules/debug": {
"version": "2.6.9",
"resolved": "https://registry.npmmirror.com/debug/-/debug-2.6.9.tgz",
"integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
"dependencies": {
"debug": {
"version": "2.6.9",
"resolved": "https://registry.npmmirror.com/debug/-/debug-2.6.9.tgz",
"integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
"requires": {
"ms": "2.0.0"
}
},
"ms": {
"version": "2.0.0",
"resolved": "https://registry.npmmirror.com/ms/-/ms-2.0.0.tgz",
"integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
}
"ms": "2.0.0"
}
},
"flatted": {
"node_modules/finalhandler/node_modules/ms": {
"version": "2.0.0",
"resolved": "https://registry.npmmirror.com/ms/-/ms-2.0.0.tgz",
"integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
},
"node_modules/flatted": {
"version": "3.2.7",
"resolved": "https://registry.npmmirror.com/flatted/-/flatted-3.2.7.tgz",
"integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ=="
},
"forever-agent": {
"node_modules/forever-agent": {
"version": "0.6.1",
"resolved": "https://registry.npmmirror.com/forever-agent/-/forever-agent-0.6.1.tgz",
"integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw=="
"integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==",
"engines": {
"node": "*"
}
},
"form-data": {
"node_modules/form-data": {
"version": "2.3.3",
"resolved": "https://registry.npmmirror.com/form-data/-/form-data-2.3.3.tgz",
"integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==",
"requires": {
"dependencies": {
"asynckit": "^0.4.0",
"combined-stream": "^1.0.6",
"mime-types": "^2.1.12"
},
"engines": {
"node": ">= 0.12"
}
},
"formidable": {
"node_modules/formidable": {
"version": "1.2.6",
"resolved": "https://registry.npmmirror.com/formidable/-/formidable-1.2.6.tgz",
"integrity": "sha512-KcpbcpuLNOwrEjnbpMC0gS+X8ciDoZE1kkqzat4a8vrprf+s9pKNQ/QIwWfbfs4ltgmFl3MD177SNTkve3BwGQ=="
"integrity": "sha512-KcpbcpuLNOwrEjnbpMC0gS+X8ciDoZE1kkqzat4a8vrprf+s9pKNQ/QIwWfbfs4ltgmFl3MD177SNTkve3BwGQ==",
"deprecated": "Please upgrade to latest, formidable@v2 or formidable@v3! Check these notes: https://bit.ly/2ZEqIau",
"funding": {
"url": "https://ko-fi.com/tunnckoCore/commissions"
}
},
"forwarded": {
"node_modules/forwarded": {
"version": "0.2.0",
"resolved": "https://registry.npmmirror.com/forwarded/-/forwarded-0.2.0.tgz",
"integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow=="
"integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==",
"engines": {
"node": ">= 0.6"
}
},
"frac": {
"node_modules/frac": {
"version": "1.1.2",
"resolved": "https://registry.npmmirror.com/frac/-/frac-1.1.2.tgz",
"integrity": "sha512-w/XBfkibaTl3YDqASwfDUqkna4Z2p9cFSr1aHDt0WoMTECnRfBOv2WArlZILlqgWlmdIlALXGpM2AOhEk5W3IA=="
"integrity": "sha512-w/XBfkibaTl3YDqASwfDUqkna4Z2p9cFSr1aHDt0WoMTECnRfBOv2WArlZILlqgWlmdIlALXGpM2AOhEk5W3IA==",
"engines": {
"node": ">=0.8"
}
},
"fresh": {
"node_modules/fresh": {
"version": "0.5.2",
"resolved": "https://registry.npmmirror.com/fresh/-/fresh-0.5.2.tgz",
"integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q=="
"integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==",
"engines": {
"node": ">= 0.6"
}
},
"fs-extra": {
"node_modules/fs-extra": {
"version": "8.1.0",
"resolved": "https://registry.npmmirror.com/fs-extra/-/fs-extra-8.1.0.tgz",
"integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==",
"requires": {
"dependencies": {
"graceful-fs": "^4.2.0",
"jsonfile": "^4.0.0",
"universalify": "^0.1.0"
},
"engines": {
"node": ">=6 <7 || >=8"
}
},
"function-bind": {
"node_modules/function-bind": {
"version": "1.1.1",
"resolved": "https://registry.npmmirror.com/function-bind/-/function-bind-1.1.1.tgz",
"integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A=="
},
"get-intrinsic": {
"node_modules/get-intrinsic": {
"version": "1.2.1",
"resolved": "https://registry.npmmirror.com/get-intrinsic/-/get-intrinsic-1.2.1.tgz",
"integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==",
"requires": {
"dependencies": {
"function-bind": "^1.1.1",
"has": "^1.0.3",
"has-proto": "^1.0.1",
"has-symbols": "^1.0.3"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"get-stream": {
"node_modules/get-stream": {
"version": "6.0.1",
"resolved": "https://registry.npmmirror.com/get-stream/-/get-stream-6.0.1.tgz",
"integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg=="
"integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==",
"engines": {
"node": ">=10"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"getpass": {
"node_modules/getpass": {
"version": "0.1.7",
"resolved": "https://registry.npmmirror.com/getpass/-/getpass-0.1.7.tgz",
"integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==",
"requires": {
"dependencies": {
"assert-plus": "^1.0.0"
}
},
"graceful-fs": {
"node_modules/graceful-fs": {
"version": "4.2.11",
"resolved": "https://registry.npmmirror.com/graceful-fs/-/graceful-fs-4.2.11.tgz",
"integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ=="
},
"har-schema": {
"node_modules/har-schema": {
"version": "2.0.0",
"resolved": "https://registry.npmmirror.com/har-schema/-/har-schema-2.0.0.tgz",
"integrity": "sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q=="
"integrity": "sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==",
"engines": {
"node": ">=4"
}
},
"har-validator": {
"node_modules/har-validator": {
"version": "5.1.5",
"resolved": "https://registry.npmmirror.com/har-validator/-/har-validator-5.1.5.tgz",
"integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==",
"requires": {
"deprecated": "this library is no longer supported",
"dependencies": {
"ajv": "^6.12.3",
"har-schema": "^2.0.0"
},
"engines": {
"node": ">=6"
}
},
"has": {
"node_modules/has": {
"version": "1.0.3",
"resolved": "https://registry.npmmirror.com/has/-/has-1.0.3.tgz",
"integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
"requires": {
"dependencies": {
"function-bind": "^1.1.1"
},
"engines": {
"node": ">= 0.4.0"
}
},
"has-proto": {
"node_modules/has-proto": {
"version": "1.0.1",
"resolved": "https://registry.npmmirror.com/has-proto/-/has-proto-1.0.1.tgz",
"integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg=="
"integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==",
"engines": {
"node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"has-symbols": {
"node_modules/has-symbols": {
"version": "1.0.3",
"resolved": "https://registry.npmmirror.com/has-symbols/-/has-symbols-1.0.3.tgz",
"integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A=="
"integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==",
"engines": {
"node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"http-errors": {
"node_modules/http-errors": {
"version": "2.0.0",
"resolved": "https://registry.npmmirror.com/http-errors/-/http-errors-2.0.0.tgz",
"integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==",
"requires": {
"dependencies": {
"depd": "2.0.0",
"inherits": "2.0.4",
"setprototypeof": "1.2.0",
"statuses": "2.0.1",
"toidentifier": "1.0.1"
},
"engines": {
"node": ">= 0.8"
}
},
"http-signature": {
"node_modules/http-signature": {
"version": "1.2.0",
"resolved": "https://registry.npmmirror.com/http-signature/-/http-signature-1.2.0.tgz",
"integrity": "sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==",
"requires": {
"dependencies": {
"assert-plus": "^1.0.0",
"jsprim": "^1.2.2",
"sshpk": "^1.7.0"
},
"engines": {
"node": ">=0.8",
"npm": ">=1.3.7"
}
},
"https-proxy-agent": {
"node_modules/https-proxy-agent": {
"version": "5.0.1",
"resolved": "https://registry.npmmirror.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz",
"integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==",
"requires": {
"dependencies": {
"agent-base": "6",
"debug": "4"
},
"engines": {
"node": ">= 6"
}
},
"node_modules/https-proxy-agent/node_modules/debug": {
"version": "4.3.4",
"resolved": "https://registry.npmmirror.com/debug/-/debug-4.3.4.tgz",
"integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
"dependencies": {
"debug": {
"version": "4.3.4",
"resolved": "https://registry.npmmirror.com/debug/-/debug-4.3.4.tgz",
"integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
"requires": {
"ms": "2.1.2"
}
},
"ms": {
"version": "2.1.2",
"resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz",
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
"ms": "2.1.2"
},
"engines": {
"node": ">=6.0"
},
"peerDependenciesMeta": {
"supports-color": {
"optional": true
}
}
},
"httpx": {
"node_modules/https-proxy-agent/node_modules/ms": {
"version": "2.1.2",
"resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz",
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
},
"node_modules/httpx": {
"version": "2.2.7",
"resolved": "https://registry.npmmirror.com/httpx/-/httpx-2.2.7.tgz",
"integrity": "sha512-Wjh2JOAah0pdczfqL8NC5378G7jMt0Zcpn8U+yyxAiejjlagzSTQgJHuVvka2VNPQlKfoGehYRc79WKq9E4gDw==",
"requires": {
"dependencies": {
"@types/node": "^14",
"debug": "^4.1.1"
},
}
},
"node_modules/httpx/node_modules/@types/node": {
"version": "14.18.54",
"resolved": "https://registry.npmmirror.com/@types/node/-/node-14.18.54.tgz",
"integrity": "sha512-uq7O52wvo2Lggsx1x21tKZgqkJpvwCseBBPtX/nKQfpVlEsLOb11zZ1CRsWUKvJF0+lzuA9jwvA7Pr2Wt7i3xw=="
},
"node_modules/httpx/node_modules/debug": {
"version": "4.3.4",
"resolved": "https://registry.npmmirror.com/debug/-/debug-4.3.4.tgz",
"integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
"dependencies": {
"@types/node": {
"version": "14.18.54",
"resolved": "https://registry.npmmirror.com/@types/node/-/node-14.18.54.tgz",
"integrity": "sha512-uq7O52wvo2Lggsx1x21tKZgqkJpvwCseBBPtX/nKQfpVlEsLOb11zZ1CRsWUKvJF0+lzuA9jwvA7Pr2Wt7i3xw=="
},
"debug": {
"version": "4.3.4",
"resolved": "https://registry.npmmirror.com/debug/-/debug-4.3.4.tgz",
"integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
"requires": {
"ms": "2.1.2"
}
},
"ms": {
"version": "2.1.2",
"resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz",
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
"ms": "2.1.2"
},
"engines": {
"node": ">=6.0"
},
"peerDependenciesMeta": {
"supports-color": {
"optional": true
}
}
},
"iconv-lite": {
"node_modules/httpx/node_modules/ms": {
"version": "2.1.2",
"resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz",
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
},
"node_modules/iconv-lite": {
"version": "0.4.24",
"resolved": "https://registry.npmmirror.com/iconv-lite/-/iconv-lite-0.4.24.tgz",
"integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
"requires": {
"dependencies": {
"safer-buffer": ">= 2.1.2 < 3"
},
"engines": {
"node": ">=0.10.0"
}
},
"inherits": {
"node_modules/inherits": {
"version": "2.0.4",
"resolved": "https://registry.npmmirror.com/inherits/-/inherits-2.0.4.tgz",
"integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
},
"ipaddr.js": {
"node_modules/ipaddr.js": {
"version": "1.9.1",
"resolved": "https://registry.npmmirror.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz",
"integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g=="
"integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==",
"engines": {
"node": ">= 0.10"
}
},
"is-buffer": {
"node_modules/is-buffer": {
"version": "1.1.6",
"resolved": "https://registry.npmmirror.com/is-buffer/-/is-buffer-1.1.6.tgz",
"integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w=="
},
"is-stream": {
"node_modules/is-stream": {
"version": "2.0.1",
"resolved": "https://registry.npmmirror.com/is-stream/-/is-stream-2.0.1.tgz",
"integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg=="
"integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==",
"engines": {
"node": ">=8"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"is-typedarray": {
"node_modules/is-typedarray": {
"version": "1.0.0",
"resolved": "https://registry.npmmirror.com/is-typedarray/-/is-typedarray-1.0.0.tgz",
"integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA=="
},
"isstream": {
"node_modules/isstream": {
"version": "0.1.2",
"resolved": "https://registry.npmmirror.com/isstream/-/isstream-0.1.2.tgz",
"integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g=="
},
"jsbn": {
"node_modules/jsbn": {
"version": "0.1.1",
"resolved": "https://registry.npmmirror.com/jsbn/-/jsbn-0.1.1.tgz",
"integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg=="
},
"json-bigint": {
"node_modules/json-bigint": {
"version": "1.0.0",
"resolved": "https://registry.npmmirror.com/json-bigint/-/json-bigint-1.0.0.tgz",
"integrity": "sha512-SiPv/8VpZuWbvLSMtTDU8hEfrZWg/mH/nV/b4o0CYbSxu1UIQPLdwKOCIyLQX+VIPO5vrLX3i8qtqFyhdPSUSQ==",
"requires": {
"dependencies": {
"bignumber.js": "^9.0.0"
}
},
"json-schema": {
"node_modules/json-schema": {
"version": "0.4.0",
"resolved": "https://registry.npmmirror.com/json-schema/-/json-schema-0.4.0.tgz",
"integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA=="
},
"json-schema-traverse": {
"node_modules/json-schema-traverse": {
"version": "0.4.1",
"resolved": "https://registry.npmmirror.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
"integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg=="
},
"json-stringify-safe": {
"node_modules/json-stringify-safe": {
"version": "5.0.1",
"resolved": "https://registry.npmmirror.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
"integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA=="
},
"jsonfile": {
"node_modules/jsonfile": {
"version": "4.0.0",
"resolved": "https://registry.npmmirror.com/jsonfile/-/jsonfile-4.0.0.tgz",
"integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==",
"requires": {
"optionalDependencies": {
"graceful-fs": "^4.1.6"
}
},
"jsprim": {
"node_modules/jsprim": {
"version": "1.4.2",
"resolved": "https://registry.npmmirror.com/jsprim/-/jsprim-1.4.2.tgz",
"integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==",
"requires": {
"dependencies": {
"assert-plus": "1.0.0",
"extsprintf": "1.3.0",
"json-schema": "0.4.0",
"verror": "1.10.0"
},
"engines": {
"node": ">=0.6.0"
}
},
"kitx": {
"node_modules/kitx": {
"version": "1.3.0",
"resolved": "https://registry.npmmirror.com/kitx/-/kitx-1.3.0.tgz",
"integrity": "sha512-fhBqFlXd0GkKTB+8ayLfpzPUw+LHxZlPAukPNBD1Om7JMeInT+/PxCAf1yLagvD+VKoyWhXtJR68xQkX/a0wOQ=="
},
"log4js": {
"node_modules/log4js": {
"version": "6.9.1",
"resolved": "https://registry.npmmirror.com/log4js/-/log4js-6.9.1.tgz",
"integrity": "sha512-1somDdy9sChrr9/f4UlzhdaGfDR2c/SaD2a4T7qEkG4jTS57/B3qmnjLYePwQ8cqWnUHZI0iAKxMBpCZICiZ2g==",
"requires": {
"dependencies": {
"date-format": "^4.0.14",
"debug": "^4.3.4",
"flatted": "^3.2.7",
"rfdc": "^1.3.0",
"streamroller": "^3.1.5"
},
"engines": {
"node": ">=8.0"
}
},
"node_modules/log4js/node_modules/debug": {
"version": "4.3.4",
"resolved": "https://registry.npmmirror.com/debug/-/debug-4.3.4.tgz",
"integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
"dependencies": {
"debug": {
"version": "4.3.4",
"resolved": "https://registry.npmmirror.com/debug/-/debug-4.3.4.tgz",
"integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
"requires": {
"ms": "2.1.2"
}
},
"ms": {
"version": "2.1.2",
"resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz",
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
"ms": "2.1.2"
},
"engines": {
"node": ">=6.0"
},
"peerDependenciesMeta": {
"supports-color": {
"optional": true
}
}
},
"lru-cache": {
"node_modules/log4js/node_modules/ms": {
"version": "2.1.2",
"resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz",
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
},
"node_modules/lru-cache": {
"version": "4.1.5",
"resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-4.1.5.tgz",
"integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==",
"requires": {
"dependencies": {
"pseudomap": "^1.0.2",
"yallist": "^2.1.2"
}
},
"md5": {
"node_modules/md5": {
"version": "2.3.0",
"resolved": "https://registry.npmmirror.com/md5/-/md5-2.3.0.tgz",
"integrity": "sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g==",
"requires": {
"dependencies": {
"charenc": "0.0.2",
"crypt": "0.0.2",
"is-buffer": "~1.1.6"
}
},
"media-typer": {
"node_modules/media-typer": {
"version": "0.3.0",
"resolved": "https://registry.npmmirror.com/media-typer/-/media-typer-0.3.0.tgz",
"integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ=="
"integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==",
"engines": {
"node": ">= 0.6"
}
},
"merge-descriptors": {
"node_modules/merge-descriptors": {
"version": "1.0.1",
"resolved": "https://registry.npmmirror.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
"integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w=="
},
"methods": {
"node_modules/methods": {
"version": "1.1.2",
"resolved": "https://registry.npmmirror.com/methods/-/methods-1.1.2.tgz",
"integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w=="
"integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==",
"engines": {
"node": ">= 0.6"
}
},
"mime": {
"node_modules/mime": {
"version": "1.6.0",
"resolved": "https://registry.npmmirror.com/mime/-/mime-1.6.0.tgz",
"integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg=="
"integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
"bin": {
"mime": "cli.js"
},
"engines": {
"node": ">=4"
}
},
"mime-db": {
"node_modules/mime-db": {
"version": "1.52.0",
"resolved": "https://registry.npmmirror.com/mime-db/-/mime-db-1.52.0.tgz",
"integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg=="
"integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
"engines": {
"node": ">= 0.6"
}
},
"mime-types": {
"node_modules/mime-types": {
"version": "2.1.35",
"resolved": "https://registry.npmmirror.com/mime-types/-/mime-types-2.1.35.tgz",
"integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
"requires": {
"dependencies": {
"mime-db": "1.52.0"
},
"engines": {
"node": ">= 0.6"
}
},
"moment": {
"node_modules/moment": {
"version": "2.29.4",
"resolved": "https://registry.npmmirror.com/moment/-/moment-2.29.4.tgz",
"integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w=="
"integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==",
"engines": {
"node": "*"
}
},
"ms": {
"node_modules/ms": {
"version": "2.1.3",
"resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.3.tgz",
"integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
},
"negotiator": {
"node_modules/negotiator": {
"version": "0.6.3",
"resolved": "https://registry.npmmirror.com/negotiator/-/negotiator-0.6.3.tgz",
"integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg=="
"integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==",
"engines": {
"node": ">= 0.6"
}
},
"node-fetch": {
"node_modules/node-fetch": {
"version": "2.6.12",
"resolved": "https://registry.npmmirror.com/node-fetch/-/node-fetch-2.6.12.tgz",
"integrity": "sha512-C/fGU2E8ToujUivIO0H+tpQ6HWo4eEmchoPIoXtxCrVghxdKq+QOHqEZW7tuP3KlV3bC8FRMO5nMCC7Zm1VP6g==",
"requires": {
"dependencies": {
"whatwg-url": "^5.0.0"
},
"engines": {
"node": "4.x || >=6.0.0"
},
"peerDependencies": {
"encoding": "^0.1.0"
},
"peerDependenciesMeta": {
"encoding": {
"optional": true
}
}
},
"node-xlsx": {
"node_modules/node-xlsx": {
"version": "0.16.2",
"resolved": "https://registry.npmmirror.com/node-xlsx/-/node-xlsx-0.16.2.tgz",
"integrity": "sha512-ZT3Y4Zg2BFC2UWdp9B/6x3GqrFL0Bf0cXKy9IyhcwlKbcDAf5GuPAPSqrWFQK68NIpfTNA1Kr/NNjpwYxUgHTA==",
"requires": {
"dependencies": {
"@babel/runtime": "^7.14.6",
"buffer-from": "^1.1.1",
"xlsx": "^0.17.0"
},
"engines": {
"node": ">=4.0.0"
}
},
"nodemailer": {
"node_modules/nodemailer": {
"version": "6.9.4",
"resolved": "https://registry.npmmirror.com/nodemailer/-/nodemailer-6.9.4.tgz",
"integrity": "sha512-CXjQvrQZV4+6X5wP6ZIgdehJamI63MFoYFGGPtHudWym9qaEHDNdPzaj5bfMCvxG1vhAileSWW90q7nL0N36mA=="
"integrity": "sha512-CXjQvrQZV4+6X5wP6ZIgdehJamI63MFoYFGGPtHudWym9qaEHDNdPzaj5bfMCvxG1vhAileSWW90q7nL0N36mA==",
"engines": {
"node": ">=6.0.0"
}
},
"oauth-sign": {
"node_modules/oauth-sign": {
"version": "0.9.0",
"resolved": "https://registry.npmmirror.com/oauth-sign/-/oauth-sign-0.9.0.tgz",
"integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ=="
"integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==",
"engines": {
"node": "*"
}
},
"object-inspect": {
"node_modules/object-inspect": {
"version": "1.12.3",
"resolved": "https://registry.npmmirror.com/object-inspect/-/object-inspect-1.12.3.tgz",
"integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g=="
"integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==",
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"on-finished": {
"node_modules/on-finished": {
"version": "2.4.1",
"resolved": "https://registry.npmmirror.com/on-finished/-/on-finished-2.4.1.tgz",
"integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==",
"requires": {
"dependencies": {
"ee-first": "1.1.1"
},
"engines": {
"node": ">= 0.8"
}
},
"on-headers": {
"node_modules/on-headers": {
"version": "1.0.2",
"resolved": "https://registry.npmmirror.com/on-headers/-/on-headers-1.0.2.tgz",
"integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA=="
"integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==",
"engines": {
"node": ">= 0.8"
}
},
"opentype.js": {
"node_modules/opentype.js": {
"version": "0.7.3",
"resolved": "https://registry.npmmirror.com/opentype.js/-/opentype.js-0.7.3.tgz",
"integrity": "sha512-Veui5vl2bLonFJ/SjX/WRWJT3SncgiZNnKUyahmXCc2sa1xXW15u3R/3TN5+JFiP7RsjK5ER4HA5eWaEmV9deA==",
"requires": {
"dependencies": {
"tiny-inflate": "^1.0.2"
},
"bin": {
"ot": "bin/ot"
}
},
"parseurl": {
"node_modules/parseurl": {
"version": "1.3.3",
"resolved": "https://registry.npmmirror.com/parseurl/-/parseurl-1.3.3.tgz",
"integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ=="
"integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==",
"engines": {
"node": ">= 0.8"
}
},
"path-to-regexp": {
"node_modules/path-to-regexp": {
"version": "0.1.7",
"resolved": "https://registry.npmmirror.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
"integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ=="
},
"performance-now": {
"node_modules/performance-now": {
"version": "2.1.0",
"resolved": "https://registry.npmmirror.com/performance-now/-/performance-now-2.1.0.tgz",
"integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow=="
},
"printj": {
"node_modules/printj": {
"version": "1.1.2",
"resolved": "https://registry.npmmirror.com/printj/-/printj-1.1.2.tgz",
"integrity": "sha512-zA2SmoLaxZyArQTOPj5LXecR+RagfPSU5Kw1qP+jkWeNlrq+eJZyY2oS68SU1Z/7/myXM4lo9716laOFAVStCQ=="
"integrity": "sha512-zA2SmoLaxZyArQTOPj5LXecR+RagfPSU5Kw1qP+jkWeNlrq+eJZyY2oS68SU1Z/7/myXM4lo9716laOFAVStCQ==",
"bin": {
"printj": "bin/printj.njs"
},
"engines": {
"node": ">=0.8"
}
},
"proxy-addr": {
"node_modules/proxy-addr": {
"version": "2.0.7",
"resolved": "https://registry.npmmirror.com/proxy-addr/-/proxy-addr-2.0.7.tgz",
"integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==",
"requires": {
"dependencies": {
"forwarded": "0.2.0",
"ipaddr.js": "1.9.1"
},
"engines": {
"node": ">= 0.10"
}
},
"pseudomap": {
"node_modules/pseudomap": {
"version": "1.0.2",
"resolved": "https://registry.npmmirror.com/pseudomap/-/pseudomap-1.0.2.tgz",
"integrity": "sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ=="
},
"psl": {
"node_modules/psl": {
"version": "1.9.0",
"resolved": "https://registry.npmmirror.com/psl/-/psl-1.9.0.tgz",
"integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag=="
},
"punycode": {
"node_modules/punycode": {
"version": "2.3.0",
"resolved": "https://registry.npmmirror.com/punycode/-/punycode-2.3.0.tgz",
"integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA=="
"integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==",
"engines": {
"node": ">=6"
}
},
"qs": {
"node_modules/qs": {
"version": "6.11.2",
"resolved": "https://registry.npmmirror.com/qs/-/qs-6.11.2.tgz",
"integrity": "sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==",
"requires": {
"dependencies": {
"side-channel": "^1.0.4"
},
"engines": {
"node": ">=0.6"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"range-parser": {
"node_modules/range-parser": {
"version": "1.2.1",
"resolved": "https://registry.npmmirror.com/range-parser/-/range-parser-1.2.1.tgz",
"integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg=="
"integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==",
"engines": {
"node": ">= 0.6"
}
},
"raw-body": {
"node_modules/raw-body": {
"version": "2.5.1",
"resolved": "https://registry.npmmirror.com/raw-body/-/raw-body-2.5.1.tgz",
"integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==",
"requires": {
"dependencies": {
"bytes": "3.1.2",
"http-errors": "2.0.0",
"iconv-lite": "0.4.24",
"unpipe": "1.0.0"
},
"dependencies": {
"bytes": {
"version": "3.1.2",
"resolved": "https://registry.npmmirror.com/bytes/-/bytes-3.1.2.tgz",
"integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg=="
}
"engines": {
"node": ">= 0.8"
}
},
"regenerator-runtime": {
"node_modules/raw-body/node_modules/bytes": {
"version": "3.1.2",
"resolved": "https://registry.npmmirror.com/bytes/-/bytes-3.1.2.tgz",
"integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==",
"engines": {
"node": ">= 0.8"
}
},
"node_modules/regenerator-runtime": {
"version": "0.11.1",
"resolved": "https://registry.npmmirror.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz",
"integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg=="
},
"request": {
"node_modules/request": {
"version": "2.88.2",
"resolved": "https://registry.npmmirror.com/request/-/request-2.88.2.tgz",
"integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==",
"requires": {
"deprecated": "request has been deprecated, see https://github.com/request/request/issues/3142",
"dependencies": {
"aws-sign2": "~0.7.0",
"aws4": "^1.8.0",
"caseless": "~0.12.0",
......@@ -1134,39 +1498,43 @@
"tunnel-agent": "^0.6.0",
"uuid": "^3.3.2"
},
"dependencies": {
"qs": {
"version": "6.5.3",
"resolved": "https://registry.npmmirror.com/qs/-/qs-6.5.3.tgz",
"integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA=="
}
"engines": {
"node": ">= 6"
}
},
"rfdc": {
"node_modules/request/node_modules/qs": {
"version": "6.5.3",
"resolved": "https://registry.npmmirror.com/qs/-/qs-6.5.3.tgz",
"integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==",
"engines": {
"node": ">=0.6"
}
},
"node_modules/rfdc": {
"version": "1.3.0",
"resolved": "https://registry.npmmirror.com/rfdc/-/rfdc-1.3.0.tgz",
"integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA=="
},
"safe-buffer": {
"node_modules/safe-buffer": {
"version": "5.1.2",
"resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.1.2.tgz",
"integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
},
"safer-buffer": {
"node_modules/safer-buffer": {
"version": "2.1.2",
"resolved": "https://registry.npmmirror.com/safer-buffer/-/safer-buffer-2.1.2.tgz",
"integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
},
"sax": {
"node_modules/sax": {
"version": "1.2.4",
"resolved": "https://registry.npmmirror.com/sax/-/sax-1.2.4.tgz",
"integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw=="
},
"send": {
"node_modules/send": {
"version": "0.18.0",
"resolved": "https://registry.npmmirror.com/send/-/send-0.18.0.tgz",
"integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==",
"requires": {
"dependencies": {
"debug": "2.6.9",
"depd": "2.0.0",
"destroy": "1.2.0",
......@@ -1181,63 +1549,71 @@
"range-parser": "~1.2.1",
"statuses": "2.0.1"
},
"engines": {
"node": ">= 0.8.0"
}
},
"node_modules/send/node_modules/debug": {
"version": "2.6.9",
"resolved": "https://registry.npmmirror.com/debug/-/debug-2.6.9.tgz",
"integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
"dependencies": {
"debug": {
"version": "2.6.9",
"resolved": "https://registry.npmmirror.com/debug/-/debug-2.6.9.tgz",
"integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
"requires": {
"ms": "2.0.0"
},
"dependencies": {
"ms": {
"version": "2.0.0",
"resolved": "https://registry.npmmirror.com/ms/-/ms-2.0.0.tgz",
"integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
}
}
}
"ms": "2.0.0"
}
},
"serve-static": {
"node_modules/send/node_modules/debug/node_modules/ms": {
"version": "2.0.0",
"resolved": "https://registry.npmmirror.com/ms/-/ms-2.0.0.tgz",
"integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
},
"node_modules/serve-static": {
"version": "1.15.0",
"resolved": "https://registry.npmmirror.com/serve-static/-/serve-static-1.15.0.tgz",
"integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==",
"requires": {
"dependencies": {
"encodeurl": "~1.0.2",
"escape-html": "~1.0.3",
"parseurl": "~1.3.3",
"send": "0.18.0"
},
"engines": {
"node": ">= 0.8.0"
}
},
"setprototypeof": {
"node_modules/setprototypeof": {
"version": "1.2.0",
"resolved": "https://registry.npmmirror.com/setprototypeof/-/setprototypeof-1.2.0.tgz",
"integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw=="
},
"side-channel": {
"node_modules/side-channel": {
"version": "1.0.4",
"resolved": "https://registry.npmmirror.com/side-channel/-/side-channel-1.0.4.tgz",
"integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==",
"requires": {
"dependencies": {
"call-bind": "^1.0.0",
"get-intrinsic": "^1.0.2",
"object-inspect": "^1.9.0"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"ssf": {
"node_modules/ssf": {
"version": "0.11.2",
"resolved": "https://registry.npmmirror.com/ssf/-/ssf-0.11.2.tgz",
"integrity": "sha512-+idbmIXoYET47hH+d7dfm2epdOMUDjqcB4648sTZ+t2JwoyBFL/insLfB/racrDmsKB3diwsDA696pZMieAC5g==",
"requires": {
"dependencies": {
"frac": "~1.1.2"
},
"engines": {
"node": ">=0.8"
}
},
"sshpk": {
"node_modules/sshpk": {
"version": "1.17.0",
"resolved": "https://registry.npmmirror.com/sshpk/-/sshpk-1.17.0.tgz",
"integrity": "sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==",
"requires": {
"dependencies": {
"asn1": "~0.2.3",
"assert-plus": "^1.0.0",
"bcrypt-pbkdf": "^1.0.0",
......@@ -1247,51 +1623,74 @@
"jsbn": "~0.1.0",
"safer-buffer": "^2.0.2",
"tweetnacl": "~0.14.0"
},
"bin": {
"sshpk-conv": "bin/sshpk-conv",
"sshpk-sign": "bin/sshpk-sign",
"sshpk-verify": "bin/sshpk-verify"
},
"engines": {
"node": ">=0.10.0"
}
},
"statuses": {
"node_modules/statuses": {
"version": "2.0.1",
"resolved": "https://registry.npmmirror.com/statuses/-/statuses-2.0.1.tgz",
"integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ=="
"integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==",
"engines": {
"node": ">= 0.8"
}
},
"streamroller": {
"node_modules/streamroller": {
"version": "3.1.5",
"resolved": "https://registry.npmmirror.com/streamroller/-/streamroller-3.1.5.tgz",
"integrity": "sha512-KFxaM7XT+irxvdqSP1LGLgNWbYN7ay5owZ3r/8t77p+EtSUAfUgtl7be3xtqtOmGUl9K9YPO2ca8133RlTjvKw==",
"requires": {
"dependencies": {
"date-format": "^4.0.14",
"debug": "^4.3.4",
"fs-extra": "^8.1.0"
},
"engines": {
"node": ">=8.0"
}
},
"node_modules/streamroller/node_modules/debug": {
"version": "4.3.4",
"resolved": "https://registry.npmmirror.com/debug/-/debug-4.3.4.tgz",
"integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
"dependencies": {
"debug": {
"version": "4.3.4",
"resolved": "https://registry.npmmirror.com/debug/-/debug-4.3.4.tgz",
"integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
"requires": {
"ms": "2.1.2"
}
},
"ms": {
"version": "2.1.2",
"resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz",
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
"ms": "2.1.2"
},
"engines": {
"node": ">=6.0"
},
"peerDependenciesMeta": {
"supports-color": {
"optional": true
}
}
},
"svg-captcha": {
"node_modules/streamroller/node_modules/ms": {
"version": "2.1.2",
"resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz",
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
},
"node_modules/svg-captcha": {
"version": "1.4.0",
"resolved": "https://registry.npmmirror.com/svg-captcha/-/svg-captcha-1.4.0.tgz",
"integrity": "sha512-/fkkhavXPE57zRRCjNqAP3txRCSncpMx3NnNZL7iEoyAtYwUjPhJxW6FQTQPG5UPEmCrbFoXS10C3YdJlW7PDg==",
"requires": {
"dependencies": {
"opentype.js": "^0.7.3"
},
"engines": {
"node": ">=4.x"
}
},
"tencentcloud-sdk-nodejs": {
"node_modules/tencentcloud-sdk-nodejs": {
"version": "4.0.667",
"resolved": "https://registry.npmmirror.com/tencentcloud-sdk-nodejs/-/tencentcloud-sdk-nodejs-4.0.667.tgz",
"integrity": "sha512-JBLHSlZuz/FRIVtOszvbEE90zG8UmslBLwGrKYq0mKvKiNLiidaSpFcRZjvnJ5Y0YcOuQ7WceLb9FPxvEF11ww==",
"requires": {
"dependencies": {
"form-data": "^3.0.0",
"get-stream": "^6.0.0",
"https-proxy-agent": "^5.0.0",
......@@ -1299,150 +1698,191 @@
"node-fetch": "^2.2.0",
"tslib": "1.13.0"
},
"engines": {
"node": ">=10"
}
},
"node_modules/tencentcloud-sdk-nodejs/node_modules/form-data": {
"version": "3.0.1",
"resolved": "https://registry.npmmirror.com/form-data/-/form-data-3.0.1.tgz",
"integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==",
"dependencies": {
"form-data": {
"version": "3.0.1",
"resolved": "https://registry.npmmirror.com/form-data/-/form-data-3.0.1.tgz",
"integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==",
"requires": {
"asynckit": "^0.4.0",
"combined-stream": "^1.0.8",
"mime-types": "^2.1.12"
}
}
"asynckit": "^0.4.0",
"combined-stream": "^1.0.8",
"mime-types": "^2.1.12"
},
"engines": {
"node": ">= 6"
}
},
"tiny-inflate": {
"node_modules/tiny-inflate": {
"version": "1.0.3",
"resolved": "https://registry.npmmirror.com/tiny-inflate/-/tiny-inflate-1.0.3.tgz",
"integrity": "sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw=="
},
"toidentifier": {
"node_modules/toidentifier": {
"version": "1.0.1",
"resolved": "https://registry.npmmirror.com/toidentifier/-/toidentifier-1.0.1.tgz",
"integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA=="
"integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==",
"engines": {
"node": ">=0.6"
}
},
"tough-cookie": {
"node_modules/tough-cookie": {
"version": "2.5.0",
"resolved": "https://registry.npmmirror.com/tough-cookie/-/tough-cookie-2.5.0.tgz",
"integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==",
"requires": {
"dependencies": {
"psl": "^1.1.28",
"punycode": "^2.1.1"
},
"engines": {
"node": ">=0.8"
}
},
"tr46": {
"node_modules/tr46": {
"version": "0.0.3",
"resolved": "https://registry.npmmirror.com/tr46/-/tr46-0.0.3.tgz",
"integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw=="
},
"tslib": {
"node_modules/tslib": {
"version": "1.13.0",
"resolved": "https://registry.npmmirror.com/tslib/-/tslib-1.13.0.tgz",
"integrity": "sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q=="
},
"tunnel-agent": {
"node_modules/tunnel-agent": {
"version": "0.6.0",
"resolved": "https://registry.npmmirror.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
"integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==",
"requires": {
"dependencies": {
"safe-buffer": "^5.0.1"
},
"engines": {
"node": "*"
}
},
"tweetnacl": {
"node_modules/tweetnacl": {
"version": "0.14.5",
"resolved": "https://registry.npmmirror.com/tweetnacl/-/tweetnacl-0.14.5.tgz",
"integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA=="
},
"type-is": {
"node_modules/type-is": {
"version": "1.6.18",
"resolved": "https://registry.npmmirror.com/type-is/-/type-is-1.6.18.tgz",
"integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==",
"requires": {
"dependencies": {
"media-typer": "0.3.0",
"mime-types": "~2.1.24"
},
"engines": {
"node": ">= 0.6"
}
},
"universalify": {
"node_modules/universalify": {
"version": "0.1.2",
"resolved": "https://registry.npmmirror.com/universalify/-/universalify-0.1.2.tgz",
"integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg=="
"integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==",
"engines": {
"node": ">= 4.0.0"
}
},
"unpipe": {
"node_modules/unpipe": {
"version": "1.0.0",
"resolved": "https://registry.npmmirror.com/unpipe/-/unpipe-1.0.0.tgz",
"integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ=="
"integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==",
"engines": {
"node": ">= 0.8"
}
},
"uri-js": {
"node_modules/uri-js": {
"version": "4.4.1",
"resolved": "https://registry.npmmirror.com/uri-js/-/uri-js-4.4.1.tgz",
"integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
"requires": {
"dependencies": {
"punycode": "^2.1.0"
}
},
"utils-merge": {
"node_modules/utils-merge": {
"version": "1.0.1",
"resolved": "https://registry.npmmirror.com/utils-merge/-/utils-merge-1.0.1.tgz",
"integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA=="
"integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==",
"engines": {
"node": ">= 0.4.0"
}
},
"uuid": {
"node_modules/uuid": {
"version": "3.4.0",
"resolved": "https://registry.npmmirror.com/uuid/-/uuid-3.4.0.tgz",
"integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A=="
"integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==",
"deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.",
"bin": {
"uuid": "bin/uuid"
}
},
"vary": {
"node_modules/vary": {
"version": "1.1.2",
"resolved": "https://registry.npmmirror.com/vary/-/vary-1.1.2.tgz",
"integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg=="
"integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==",
"engines": {
"node": ">= 0.8"
}
},
"verror": {
"node_modules/verror": {
"version": "1.10.0",
"resolved": "https://registry.npmmirror.com/verror/-/verror-1.10.0.tgz",
"integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==",
"requires": {
"engines": [
"node >=0.6.0"
],
"dependencies": {
"assert-plus": "^1.0.0",
"core-util-is": "1.0.2",
"extsprintf": "^1.2.0"
}
},
"webidl-conversions": {
"node_modules/webidl-conversions": {
"version": "3.0.1",
"resolved": "https://registry.npmmirror.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
"integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ=="
},
"whatwg-url": {
"node_modules/whatwg-url": {
"version": "5.0.0",
"resolved": "https://registry.npmmirror.com/whatwg-url/-/whatwg-url-5.0.0.tgz",
"integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==",
"requires": {
"dependencies": {
"tr46": "~0.0.3",
"webidl-conversions": "^3.0.0"
}
},
"wmf": {
"node_modules/wmf": {
"version": "1.0.2",
"resolved": "https://registry.npmmirror.com/wmf/-/wmf-1.0.2.tgz",
"integrity": "sha512-/p9K7bEh0Dj6WbXg4JG0xvLQmIadrner1bi45VMJTfnbVHsc7yIajZyoSoK60/dtVBs12Fm6WkUI5/3WAVsNMw=="
"integrity": "sha512-/p9K7bEh0Dj6WbXg4JG0xvLQmIadrner1bi45VMJTfnbVHsc7yIajZyoSoK60/dtVBs12Fm6WkUI5/3WAVsNMw==",
"engines": {
"node": ">=0.8"
}
},
"word": {
"node_modules/word": {
"version": "0.3.0",
"resolved": "https://registry.npmmirror.com/word/-/word-0.3.0.tgz",
"integrity": "sha512-OELeY0Q61OXpdUfTp+oweA/vtLVg5VDOXh+3he3PNzLGG/y0oylSOC1xRVj0+l4vQ3tj/bB1HVHv1ocXkQceFA=="
"integrity": "sha512-OELeY0Q61OXpdUfTp+oweA/vtLVg5VDOXh+3he3PNzLGG/y0oylSOC1xRVj0+l4vQ3tj/bB1HVHv1ocXkQceFA==",
"engines": {
"node": ">=0.8"
}
},
"ws": {
"node_modules/ws": {
"version": "5.2.3",
"resolved": "https://registry.npmmirror.com/ws/-/ws-5.2.3.tgz",
"integrity": "sha512-jZArVERrMsKUatIdnLzqvcfydI85dvd/Fp1u/VOpfdDWQ4c9qWXe+VIeAbQ5FrDwciAkr+lzofXLz3Kuf26AOA==",
"requires": {
"dependencies": {
"async-limiter": "~1.0.0"
}
},
"xlsx": {
"node_modules/xlsx": {
"version": "0.17.5",
"resolved": "https://registry.npmmirror.com/xlsx/-/xlsx-0.17.5.tgz",
"integrity": "sha512-lXNU0TuYsvElzvtI6O7WIVb9Zar1XYw7Xb3VAx2wn8N/n0whBYrCnHMxtFyIiUU1Wjf09WzmLALDfBO5PqTb1g==",
"requires": {
"dependencies": {
"adler-32": "~1.2.0",
"cfb": "^1.1.4",
"codepage": "~1.15.0",
......@@ -1450,23 +1890,35 @@
"ssf": "~0.11.2",
"wmf": "~1.0.1",
"word": "~0.3.0"
},
"bin": {
"xlsx": "bin/xlsx.njs"
},
"engines": {
"node": ">=0.8"
}
},
"xml2js": {
"node_modules/xml2js": {
"version": "0.4.23",
"resolved": "https://registry.npmmirror.com/xml2js/-/xml2js-0.4.23.tgz",
"integrity": "sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug==",
"requires": {
"dependencies": {
"sax": ">=0.6.0",
"xmlbuilder": "~11.0.0"
},
"engines": {
"node": ">=4.0.0"
}
},
"xmlbuilder": {
"node_modules/xmlbuilder": {
"version": "11.0.1",
"resolved": "https://registry.npmmirror.com/xmlbuilder/-/xmlbuilder-11.0.1.tgz",
"integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA=="
"integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==",
"engines": {
"node": ">=4.0"
}
},
"yallist": {
"node_modules/yallist": {
"version": "2.1.2",
"resolved": "https://registry.npmmirror.com/yallist/-/yallist-2.1.2.tgz",
"integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A=="
......
......@@ -10,7 +10,8 @@ import * as splitResultConfig from "../config/splitResultConfig";
import { selectData } from "../middleware/databaseSuccess";
import { OPERATIONALDATATYPE, TABLENAME } from "../config/dbEnum";
import moment = require("moment");
import * as verificationEnumTools from "../util/verificationEnum";
import { getStudent } from "./partyMember";
/**
* 主页基础数据
......@@ -27,44 +28,55 @@ import moment = require("moment");
let param = { bId };
let partyQualityScore = await selectData(OPERATIONALDATATYPE.查询多个, TABLENAME.党建质量三级指标, param, ["thirdLevelScore", "currentScore"]);
let massIndex = 0;//得分
let massCount = 0;//总分
let scoreCount = 0;//得分
let massSum = 0;//总分
partyQualityScore.forEach( score => {
massCount += score.thirdLevelScore;
massIndex += score.currentScore;
massSum += score.thirdLevelScore;
scoreCount += score.currentScore;
});
let partyPositionsMap = {}; // = []; //党内职务人员 [{key, list:["", ""]}]
for (let key in clientConfigEnum.PARTYPOSITIONS) {
let anyKey:any = key;
if (isNaN(anyKey)) { //枚举key key = string
partyPositionsMap[anyKey] = {key:anyKey, list:[]}
}
}
let selectAllColumn = ["bId", "partyPositionsName", "name"];
let allMemberList = await selectData(OPERATIONALDATATYPE.查询多个, TABLENAME.党员基础信息表, param, selectAllColumn);
let partyMemberNum = 0;//本支部人员总数
allMemberList.forEach(item => {
let { partyPositionsName, name} = item;
const ItemBId = item.bId;
if (ItemBId == bId) {
partyMemberNum += 1;
let partyPositionsList = getPartyPositionsList(JSON.parse(partyPositionsName));
partyPositionsList.forEach(positions => {
partyPositionsMap[positions].list.push(name);
});
}
let partyMemberNum = allMemberList.length;//本支部人员总数
let partyNoticeParam = {bId};
let partyNoticeList = await selectData(OPERATIONALDATATYPE.查询多个, TABLENAME.党建通知, partyNoticeParam, []);
let noticeList = [];
partyNoticeList.forEach(info => {
noticeList.push({
title:info.title,//类型
content:info.content,//内容
time:moment(info.dataTime).format("YYYY-MM-DD")
});
});
let partyPositions = []; //党内职务人员 [{key, list:["", ""]}]
for (let key in partyPositionsMap ) {
let dataItem = partyPositionsMap[key];
if (!dataItem.list.length) dataItem.list.push("暂无数据");
partyPositions.push(dataItem)
}
return { branch, partyMemberNum, massSum:massCount, massIndex, partyPositions };
// let partyPositionsMap = {}; // = []; //党内职务人员 [{key, list:["", ""]}]
// for (let key in clientConfigEnum.PARTYPOSITIONS) {
// let anyKey:any = key;
// if (isNaN(anyKey)) { //枚举key key = string
// partyPositionsMap[anyKey] = {key:anyKey, list:[]}
// }
// }
// allMemberList.forEach(item => {
// let { partyPositionsName, name} = item;
// const ItemBId = item.bId;
// if (ItemBId == bId) {
// partyMemberNum += 1;
// let partyPositionsList = getPartyPositionsList(JSON.parse(partyPositionsName));
// partyPositionsList.forEach(positions => {
// partyPositionsMap[positions].list.push(name);
// });
// }
// });
// let partyPositions = []; //党内职务人员 [{key, list:["", ""]}]
// for (let key in partyPositionsMap ) {
// let dataItem = partyPositionsMap[key];
// if (!dataItem.list.length) dataItem.list.push("暂无数据");
// partyPositions.push(dataItem)
// }
return { branch, partyMemberNum, scoreCount, noticeList, noticeCount:noticeList.length };
}
......@@ -90,35 +102,150 @@ function getPartyPositionsList(numberList) {
*/
export async function activitiesData(bId:number) {
let param = { bId };
let partyInformationList = await selectData(OPERATIONALDATATYPE.查询多个, TABLENAME.专题活动表, param, ["taId", "theme", "dataMonth"]);
let partyBuildingDynamicDataList = await selectData(OPERATIONALDATATYPE.查询多个, TABLENAME.党建动态表, param, ["pbId", "theme", "dataMonth"]);
/**资讯 = 活动表 */
let partyInformationList = await selectData(OPERATIONALDATATYPE.查询多个, TABLENAME.专题活动表, param, ["taId", "theme", "activitesTime"]);
let dataList = [];
partyInformationList.forEach( info => {
let changeData:any = extractData(splitResultConfig.partyInformationConfig, info);
changeData.dataMonth = new Date(info.dataMonth).valueOf();
changeData.time = moment(info.activitesTime).format('YYYY-MM-DD');
changeData.dateMs = new Date(info.activitesTime).valueOf();
changeData.pbType = configEnum.PBTYPE.党建资讯;
changeData.labels = ["专题活动"];
changeData.id = info.taId;
dataList.push(changeData);
})
});
dataList.sort( (a, b) => { return b.dateMs - a.dateMs; });
/**动态 */
let partyBuildingDynamicDataList = await selectData(OPERATIONALDATATYPE.查询多个, TABLENAME.党建动态表, param, ["pbId", "theme", "dataMonth", "fileName"]);
let dynamicsList = [];
partyBuildingDynamicDataList.forEach (info => {
let changeData:any = extractData(splitResultConfig.buildingDynamiconfig, info);
changeData.dataMonth = new Date(info.dataMonth).valueOf();
changeData.pbType = configEnum.PBTYPE.党建动态;
dataList.push(changeData);
})
let addInfo = {
theme : info.theme,
id : info.pbId,
fileUrl:info.fileName[0] || ""
}
dataList.sort( (a, b) => { return b["dataMonth"] - a["dataMonth"]; })
dataList.push(addInfo);
});
return {dynamicsList:dynamicsList, informationList:dataList};
}
dataList.forEach( info => {
info.dataMonth = moment(info.dataMonth).format('YYYY-MM-DD');
})
return dataList;
const ColorConfig = {
1:"#C62A23",
2:"#E4B386",
3:"#2aa115",//发展对象
4:"#3549B0",
5:"#1e5eff"
};
function changePartyPositionsName(partyPositionsName, etId) {
let str = "";
for (let i= 0; i < partyPositionsName.length; i++) {
let item = partyPositionsName[i];
if (item < 10) continue;
str += `,${verificationEnumTools.changeEnumValue(configEnum.PARTYPOSITIONS, item)}`;
}
if (!str) {
let partyPositionsNameStr = "";
if (etId == configEnum.ENTRYTYPE.正式党员) partyPositionsNameStr = "党员";
else partyPositionsNameStr = verificationEnumTools.changeEnumValue(configEnum.ENTRYTYPE, etId);
return {partyPositionsNameStr, color:ColorConfig[etId]};
}
return {partyPositionsNameStr : str.replace(",", ""), color:"#C62A23"};
}
/**
* 个人首页 上面 和 中部
* @param pmId
* @param bId
* @returns
*/
export async function memberHomeData(pmId:string, bId:number) {
let clomun = ["bId", "pmId", "etId", "name", "sex", "birthDate", "phone", "levelOfEducation", "bId", "partyPositionsName", "partyJoiningTime", "administrativePositionName",
"departmentName", "askForTime", "listedAsActivistsTime", "liaison", "talkTime", "partyState"];
let partyMemberInfo = await selectData(OPERATIONALDATATYPE.查询单个, TABLENAME.党员基础信息表, {pmId}, clomun);
let changeData:any = extractData(splitResultConfig.partyMemberConfig, partyMemberInfo);
let {color, partyPositionsNameStr} = changePartyPositionsName( JSON.parse(partyMemberInfo.partyPositionsName), changeData.etId);
changeData.color = color;
changeData.partyPositionsName = partyPositionsNameStr;
changeData.departmentName = verificationEnumTools.changeEnumValue(configEnum.DEDPARTMENT, JSON.parse(partyMemberInfo.departmentName));
changeData.sex = verificationEnumTools.changeEnumValue(configEnum.SEX, partyMemberInfo.sex);
changeData.administrativePositionName = verificationEnumTools.changeEnumValue(configEnum.ADMINISTRATIVEPOSITION, partyMemberInfo.administrativePositionName);
changeData.partyState = verificationEnumTools.changeEnumValue(configEnum.PARTYSTATE, partyMemberInfo.partyState);
changeData.levelOfEducation = verificationEnumTools.changeEnumValue(configEnum.DEGREE, partyMemberInfo.levelOfEducation);
changeData.study = await getStudent(bId, pmId); //学习相关数据
let time = moment(new Date()).format("YYYY");
let partyJoiningTime = time;
if (changeData.partyJoiningTime) partyJoiningTime = moment(partyMemberInfo.partyJoiningTime).format("YYYY")
changeData.partyStanding = parseInt(time) - parseInt(partyJoiningTime) + "年";
if (partyMemberInfo.partyJoiningTime) {
changeData.partyStanding = Math.floor(moment().diff(partyMemberInfo.partyJoiningTime, 'years'))+'年';
changeData.partyJoiningTime = moment(partyMemberInfo.partyJoiningTime).format("YYYY年MM月DD日");
} else {
changeData.partyStanding = "-年";
changeData.partyJoiningTime = "-";
}
changeData.position = "-";
changeData.branch = changeEnumValue(configEnum.BRANCHNAME, bId);
let partyExpensesClomun = ["payAmount"]
let payList = await selectData(OPERATIONALDATATYPE.查询多个, TABLENAME.党费管理表, {pmId, payType:configEnum.PAYTYPE.已缴纳}, partyExpensesClomun);
let payAmountCount = 0;
payList.forEach(info => {
let {payAmount} = info;
payAmountCount += payAmount;
});
let activityCount = await selectData(OPERATIONALDATATYPE.查询数据量, TABLENAME.组织生活表, {signedInMember:{"%like%":pmId } }, [] );
let middleInfo = {
payAmountCount,
activityCount,
offlineCount:0,
online:0
};
return {baseInfo:changeData, middleInfo};
}
/**
* 个人首页 底部
* @param pmId
* @param bId
*/
export async function memberHomeBottomData( bId:number, activitiesType:number) {
let files = ["theme", "activitesTime", "taId", "img", "bId"];
let thematicActivitiesList = await selectData(OPERATIONALDATATYPE.查询多个, TABLENAME.专题活动表, {bId, activitiesType}, files );
let dataList = [];
thematicActivitiesList.forEach(info => {
let { taId, theme, activitesTime, img } = info;
dataList.push({
taId,
theme,
activitesTime:moment(activitesTime).format("YYYY-MM-DD"),
img:img || "",
source:changeEnumValue(configEnum.BRANCHNAME, bId)
});
});
return {dataList};
}
......
......@@ -2,13 +2,17 @@
* 支部制度
*/
import moment = require("moment");
import { OPERATIONALDATATYPE, TABLENAME } from "../config/dbEnum";
import { UPTYPE } from "../config/enum";
import { ERRORENUM } from "../config/errorEnum";
import { systemConfig } from "../config/systemConfig";
import { selectData } from "../middleware/databaseSuccess";
import { operationalData, selectData } from "../middleware/databaseSuccess";
import { getFileUrl } from "../middleware/getUrl";
import { BizError } from "../util/bizError";
import { eccFormParam } from "../util/verificationParam";
import { CreateZBZDConfig } from "../config/eccFormParamConfig";
import { getBindId } from "../tools/system";
/**
......@@ -21,10 +25,18 @@ export async function branchSystemList(bId:number, systemTitle:string) {
let param = { bId:{"%like%": bId} };
if(systemTitle) param["systemTitle"] = {"%like%": systemTitle};
let branchSystemList = await selectData(OPERATIONALDATATYPE.查询多个, TABLENAME.支部制度表, param, ["bsId", "systemTitle"]);
let branchSystemList = await selectData(OPERATIONALDATATYPE.查询多个, TABLENAME.支部制度表, param, ["bsId", "systemTitle", "releaseTime"]);
branchSystemList = branchSystemList || [];
let dataList = [];
branchSystemList.forEach(info => {
dataList.push({
bsId:info.bsId,
title:info.systemTitle,
time:moment(info.releaseTime).format("YYYY-MM-DD")
});
});
return branchSystemList;
return {dataList};
}
......@@ -33,13 +45,43 @@ export async function branchSystemList(bId:number, systemTitle:string) {
* @param bsId 支部制度id
* @returns branchSystemInfo:{"bsId":1, "systemTitle":"制度标题", "fileName":["制度文件1", ......]}
*/
export async function branchSystemDetsils(bsId:number, token:string, userid:string) {
let clomun = ["bsId", "systemTitle", "fileName"];
export async function branchSystemDetsils(bsId:number) {
let clomun = ["bsId", "systemTitle", "content", "periodTime", "releaseTime"];
let branchSystemInfo = await selectData(OPERATIONALDATATYPE.查询单个, TABLENAME.支部制度表, {bsId}, clomun);
if(!branchSystemInfo || !branchSystemInfo.bsId) throw new BizError(ERRORENUM.库中不存在对应数据, `制度细则中不存在id=${bsId}的数据`);
let fileNameList = getFileUrl(branchSystemInfo.fileName, token, UPTYPE.支部制度, userid);
branchSystemInfo.fileName = fileNameList;
return branchSystemInfo;
// let fileNameList = getFileUrl(branchSystemInfo.fileName, token, UPTYPE.支部制度, userid);
// branchSystemInfo.fileName = fileNameList;
let dataInfo = {
title:branchSystemInfo.systemTitle,
releaseTime:moment(branchSystemInfo.releaseTime).format("YYYY-MM-DD"),
content:branchSystemInfo.content,
source:"牙防所党建"
};
return {dataInfo};
}
/**
* 添加制度细则
* @param bsId 支部制度id
* @returns
*/
export async function addOneBranchSystemDetsils(bId:number, param) {
eccFormParam("添加制度细则", CreateZBZDConfig, param);
let addInfo = {
systemTitle:param.title,
releaseTime:moment(param.releaseTime).format("YYYY-MM-DD"),
periodTime:moment(param.periodTime).format("YYYY-MM-DD"),
content:param.content,
bId:JSON.stringify([bId])
};
await operationalData(OPERATIONALDATATYPE.增加, TABLENAME.支部制度表, addInfo, {});
return {isSuccess:true};
}
......
import { changeEnumValue } from "../util/verificationEnum";
import * as configEnum from "../config/enum";
import * as clientConfigEnum from "../config/clientEnum";
import { extractData } from "../util/piecemeal";
import * as splitResultConfig from "../config/splitResultConfig";
import { selectData } from "../middleware/databaseSuccess";
import { OPERATIONALDATATYPE, TABLENAME } from "../config/dbEnum";
import moment = require("moment");
import * as verificationEnumTools from "../util/verificationEnum";
import { getStudent } from "./partyMember";
const ColorConfig = {
1:"#C62A23",
2:"#E4B386",
3:"#2aa115",//发展对象
4:"#3549B0",
5:"#1e5eff"
};
function changePartyPositionsName(partyPositionsName, etId) {
let str = "";
for (let i= 0; i < partyPositionsName.length; i++) {
let item = partyPositionsName[i];
if (item < 10) continue;
str += `,${verificationEnumTools.changeEnumValue(configEnum.PARTYPOSITIONS, item)}`;
}
if (!str) {
let partyPositionsNameStr = "";
if (etId == configEnum.ENTRYTYPE.正式党员) partyPositionsNameStr = "党员";
else partyPositionsNameStr = verificationEnumTools.changeEnumValue(configEnum.ENTRYTYPE, etId);
return {partyPositionsNameStr, color:ColorConfig[etId]};
}
return {partyPositionsNameStr : str.replace(",", ""), color:"#C62A23"};
}
export async function homeData() {
let branch = "牙防所党委" //支部名称
let param = { };
let partyQualityScore = await selectData(OPERATIONALDATATYPE.查询多个, TABLENAME.党建质量三级指标, param, ["thirdLevelScore", "currentScore"]);
let scoreCount = 0;//得分
let massSum = 0;//总分
partyQualityScore.forEach( score => {
massSum += score.thirdLevelScore;
scoreCount += score.currentScore;
});
let branchCount = 4;
let partyNoticeParam = {};
let partyNoticeList = await selectData(OPERATIONALDATATYPE.查询多个, TABLENAME.党建通知, partyNoticeParam, []);
let noticeList = [];
partyNoticeList.forEach(info => {
noticeList.push({
title:info.title,//类型
content:info.content,//内容
time:moment(info.dataTime).format("YYYY-MM-DD")
});
});
return { branch, branchCount, scoreCount, noticeList, noticeCount:noticeList.length };
}
export async function activitiesData() {
let param = { };
/**资讯 = 活动表 */
let partyInformationList = await selectData(OPERATIONALDATATYPE.查询多个, TABLENAME.专题活动表, param, ["taId", "theme", "activitesTime"]);
let dataList = [];
partyInformationList.forEach( info => {
let changeData:any = extractData(splitResultConfig.partyInformationConfig, info);
changeData.time = moment(info.activitesTime).format('YYYY-MM-DD');
changeData.dateMs = new Date(info.activitesTime).valueOf();
changeData.pbType = configEnum.PBTYPE.党建资讯;
changeData.labels = ["专题活动"];
changeData.id = info.taId;
dataList.push(changeData);
});
dataList.sort( (a, b) => { return b.dateMs - a.dateMs; });
/**动态 */
let partyBuildingDynamicDataList = await selectData(OPERATIONALDATATYPE.查询多个, TABLENAME.党建动态表, param, ["pbId", "theme", "dataMonth", "fileName"]);
let dynamicsList = [];
partyBuildingDynamicDataList.forEach (info => {
let addInfo = {
theme : info.theme,
id : info.pbId,
fileUrl:info.fileName[0] || ""
}
dataList.push(addInfo);
});
return {dynamicsList:dynamicsList, informationList:dataList};
}
export async function partymemberList() {
/**资讯 = 活动表 */
let pmList = await selectData(OPERATIONALDATATYPE.查询多个, TABLENAME.党员基础信息表, {}, ["pmId", "bId"]);
let dataList = [];
let map = {};
let count = pmList.length;
pmList.forEach(info => {
let nameStr = changeEnumValue(configEnum.BRANCHNAMESTR, info.bId);
if ( !map[nameStr] ) map[nameStr] = {name:`${nameStr}人数`,bId:info.bId, count:0};
map[nameStr].count += 1;
})
dataList.push({name:"牙防所党建总人数", count});
for (let key in map) {
dataList.push(map[key]);
}
return {dataList};
}
export async function partymemberTypeList(bId) {
verificationEnumTools.eccEnumValue("党员支部人数", "bId", configEnum.BRANCHNAME, bId);
/**资讯 = 活动表 */
let pmList = await selectData(OPERATIONALDATATYPE.查询多个, TABLENAME.党员基础信息表, {bId}, ["pmId", "etId"]);
let dataList = [];
let map = {};
pmList.forEach(info => {
let nameStr = changeEnumValue(configEnum.ENTRYTYPE, info.etId);
if ( !map[nameStr] ) map[nameStr] = {name:`牙防所${nameStr}人数`, etId:info.etId, count:0};
map[nameStr].count += 1;
})
for (let key in map) {
dataList.push(map[key]);
}
return {dataList};
}
export async function partymemberSublist(bId, name, partyPositionsName ) {
let param = {bId:{"%like%":bId}}
if (name) param["name"] = {"%like%":name};
if (partyPositionsName) param["partyPositionsName"] = {"%like%":partyPositionsName};
let clomun = ["pmId", "name", "etId", "partyPositionsName", "partyJoiningTime", "departmentName"];
let partyMemberList = await selectData(OPERATIONALDATATYPE.查询多个, TABLENAME.党员基础信息表, param, clomun);
let nameList = [];
/**截取返回字段 */
partyMemberList.forEach( info => {
let changeData:any = extractData(splitResultConfig.partyMemberConfig, info);
let {color, partyPositionsNameStr} = changePartyPositionsName( JSON.parse(info.partyPositionsName), changeData.etId);
changeData.partyPositionsName = partyPositionsNameStr;
changeData.color = color;
let time = moment(new Date()).format("YYYY");
let partyJoiningTime = time;
if (info.partyJoiningTime) partyJoiningTime = moment(info.partyJoiningTime).format("YYYY")
changeData.partyStanding = parseInt(time) - parseInt(partyJoiningTime) + "年";
let departmentName = JSON.parse(changeData.departmentName);
changeData.departmentName = verificationEnumTools.changeEnumValue(configEnum.DEDPARTMENT, departmentName);
nameList.push(changeData);
})
return {nameList};
}
......@@ -37,12 +37,15 @@ export async function memberLearningList(pmId:string, courseEntryType:number, co
if(courseTypeName) param["courseTypeName"] = courseTypeName;
if(contentTitle) param["contentTitle"] = {"%like%": contentTitle};
let clomun = ["mlId", "contentTitle", "fileName", "coverImage", "videoDuration", "courseEntryType"];
let clomun = ["mlId", "contentTitle", "fileName", "coverImage", "videoDuration", "courseEntryType", "desc"];
let memberLearningInfo = await selectData(OPERATIONALDATATYPE.查询多个, TABLENAME.党员学习表, param, clomun);
let courseList = [];
for(let i = 0; i < memberLearningInfo.length; i++) {
let memberInfo = memberLearningInfo[i];
let {mlId, contentTitle, fileName, coverImage, videoDuration} = memberInfo;
let {mlId, contentTitle, fileName, coverImage, videoDuration, desc} = memberInfo;
let learningInfo = rateLearningMap[mlId];
if (!learningInfo) { //如果对应学习课程没有进度数据,创建一条对应进度为0的数据
let addInfo = {
......@@ -65,7 +68,16 @@ export async function memberLearningList(pmId:string, courseEntryType:number, co
} else {
alanysisFileName = JSON.parse(fileName);
}
//todo 这里 fileName不再是一个字符串 而是一个对象{}
courseList.push({
videoDuration,
coverImage,
contentTitle,
desc,
fileName:alanysisFileName
});
// fileName不再是一个字符串 而是一个对象{}
rateLearningList.push({
rlId: learningInfo.rlId,
contentTitle,
......@@ -78,7 +90,7 @@ export async function memberLearningList(pmId:string, courseEntryType:number, co
})
}
return rateLearningList;
return {rateLearningList, courseList};
}
......
......@@ -5,13 +5,15 @@
import moment = require("moment");
import { OPERATIONALDATATYPE, TABLENAME } from "../config/dbEnum";
import { ERRORENUM } from "../config/errorEnum";
import { selectData } from "../middleware/databaseSuccess";
import { operationalData, selectData } from "../middleware/databaseSuccess";
import { BizError } from "../util/bizError";
import { extractData } from "../util/piecemeal";
import * as splitResultConfig from "../config/splitResultConfig";
import * as verificationEnumTools from "../util/verificationEnum";
import * as configEnum from "../config/enum";
import { getFileUrl } from "../middleware/getUrl";
import { eccFormParam } from "../util/verificationParam";
import { CreateActivityConfig, UpdateActivityConfig } from "../config/eccFormParamConfig";
/**
......@@ -22,48 +24,192 @@ import { getFileUrl } from "../middleware/getUrl";
* @param dataMonth 活动月份
* @returns organizationalLifeList[{"oId":1, "theme":"活动主题", "themeType":"活动类型", "dataMonth":"活动月份"}]
*/
export async function organizationalLifeList(bId:number, theme:string, themeType:number, dataMonth:string) {
export async function organizationalLifeList(bId:number, theme:string, themeType:number) {
let param = { bId };
if (theme) param["theme"] = {"%like%": theme};
if (themeType) param["themeType"] = themeType;
if (dataMonth) {
let stTime = moment(dataMonth).startOf("month").format("YYYY-MM-DD HH:mm:ss");
let etTime = moment(dataMonth).endOf('month').format("YYYY-MM-DD HH:mm:ss");
param["dataMonth"] = {"%between%": [stTime, etTime]}; //`DATE_FORMAT(dataMonth, '%Y-%m') = DATE_FORMAT(${dataMonth}, '%Y-%m')`;
}
if (themeType) param["partyActivityType"] = themeType;
let clomun = ["oId", "theme", "themeType", "dataMonth"];
let clomun = ["oId", "activityStartTime", "activityEndTime", "activityAdd", "partyActivityType"];
let organizationalLifeDataList = await selectData(OPERATIONALDATATYPE.查询多个, TABLENAME.组织生活表, param, clomun);
let organizationalLifeList = [];
organizationalLifeDataList.forEach( info => {
let changeData:any = extractData(splitResultConfig.organlzationalLifeConfig, info, "YYYY-MM-DD");
changeData.themeType = verificationEnumTools.changeEnumValue(configEnum.THEMETYPE, info.themeType);
organizationalLifeList.push(changeData);
})
return organizationalLifeList;
const Now = new Date().valueOf();
let dataList = [];
organizationalLifeDataList.forEach(info => {
let st = new Date(info.activityStartTime).valueOf();
let et = new Date(info.activityEndTime).valueOf();
let state = "";
if (st < Now && et > Now) state = "正在进行";
else if (Now > et) state = "已结束";
else state = "即将开展";
let sTimeStr = moment(info.activityStartTime).format("YYYY-MM-DD HH:mm");
let time = `${sTimeStr}-${moment(info.activityEndTime).format("HH:mm")}`
dataList.push({
oId:info.oId,
address:info.activityAdd,
time,
state,
theme:verificationEnumTools.changeEnumValue(configEnum.THEMETYPE, info.partyActivityType)
});
});
return {dataList};
}
/**
* 获取组织生活详情
* @param oId 组织生活id
* @returns orgLifeInfo:{"oId":1, "theme":"活动主题", "themeType":"活动类型", "fileName":["活动文件名称", ......]}
*/
export async function organlzationalLifeListDetsils(oId:number, token:string, userid:string) {
let clomun = ["oId", "theme", "themeType", "dataMonth", "fileName"];
export async function organlzationalLifeListDetsils(oId:number, token:string, userid:string, bId) {
let clomun = ["oId", "partyActivityType", "activityStartTime", "activityEndTime", "activityAdd", "activityHost", "activityNoteTaker", "leavePartyMember", "participatingPartyMember", "activityLog", "signedInMember"];
let orgLifeInfo = await selectData(OPERATIONALDATATYPE.查询单个, TABLENAME.组织生活表, {oId}, clomun);
if (!orgLifeInfo || !orgLifeInfo.oId) throw new BizError(ERRORENUM.目标数据不存在);
let leavePartyMember = JSON.parse(orgLifeInfo.leavePartyMember);
let signedInMember = JSON.parse(orgLifeInfo.signedInMember);//签到人员列表
let participatingPartyMemberIdList = JSON.parse(orgLifeInfo.participatingPartyMember);
let thisBIdAllUser = await selectData(OPERATIONALDATATYPE.查询多个, TABLENAME.党员基础信息表, {bId}, ["pmId", "name"]);
let checkNameMap = {};
thisBIdAllUser.forEach(info => {
checkNameMap[info.pmId] = info.name;
})
let statis = { signedIn:0, notSignedIn:0 };
let participatingPartyMember = "";
let participatingPartyMemberList = [];
participatingPartyMemberIdList.forEach(item => {
participatingPartyMember += `,${checkNameMap[item]}`;
participatingPartyMemberList.push(item);
if (signedInMember.indexOf(item) > -1) {
statis.signedIn += 1;
} else {
statis.notSignedIn += 1;
}
});
participatingPartyMember = participatingPartyMember.replace(",", "");
let dataInfo = {
partyActivityType:orgLifeInfo.partyActivityType,//党建活动类型
activityStartTime:new Date(orgLifeInfo.activityStartTime).valueOf(),//活动开始时间
activityEndTime:new Date(orgLifeInfo.activityEndTime).valueOf(),//活动结束时间
activityAdd:orgLifeInfo.activityAdd,//活动地点
activityHost:orgLifeInfo.activityHost,//活动主持人
activityNoteTaker:orgLifeInfo.activityNoteTaker,//活动记录人
leavePartyMember,//请假党员
participatingPartyMember:participatingPartyMemberList,//参与党员
activityLog:orgLifeInfo.activityLog,
statis
};
return {dataInfo};
}
export async function addOrg(bId, param) {
const FuncName = "添加支部活动";
eccFormParam(FuncName, CreateActivityConfig, param);
verificationEnumTools.eccEnumValue(FuncName, "partyActivityType", configEnum.THEMETYPE, param.partyActivityType );
let leavePartyMember = [];
if (param.leavePartyMember) leavePartyMember = [param.leavePartyMember];
let addInfo = {
bId,
partyActivityType:param.partyActivityType,
activityStartTime:moment(param.activityStartTime).format("YYYY-MM-DD"),
activityEndTime:moment(param.activityEndTime).format("YYYY-MM-DD"),
activityAdd:param.activityAdd,
activityHost:param.activityHost,
activityNoteTaker:param.activityNoteTaker,
leavePartyMember:JSON.stringify(leavePartyMember),
participatingPartyMember:JSON.stringify(param.participatingPartyMember || []),
};
await operationalData(OPERATIONALDATATYPE.增加, TABLENAME.组织生活表, addInfo, {});
return {isSuccess:true}
}
export async function updateOrg(oId, param) {
let clomun = ["oId"];
let orgLifeInfo = await selectData(OPERATIONALDATATYPE.查询单个, TABLENAME.组织生活表, {oId}, clomun);
if(!orgLifeInfo || !orgLifeInfo.oId) throw new BizError(ERRORENUM.未找到数据, `库中找不到id为${oId}的组织生活详情`);
if (!orgLifeInfo || !orgLifeInfo.oId) throw new BizError(ERRORENUM.目标数据不存在);
eccFormParam("修改支部活动", UpdateActivityConfig, param);
let activityNoteTaker = [];
if (param.activityNoteTaker) activityNoteTaker = [param.activityNoteTaker];
let leavePartyMember = [];
if (param.leavePartyMember) leavePartyMember = [param.leavePartyMember];
let updateInfo = {
partyActivityType:param.partyActivityType,
activityStartTime:moment(param.activityStartTime).format("YYYY-MM-DD"),
activityEndTime:moment(param.activityEndTime).format("YYYY-MM-DD"),
activityAdd:param.activityAdd,
activityHost:JSON.stringify(param.activityHost || []),
activityNoteTaker:JSON.stringify(activityNoteTaker),
leavePartyMember:JSON.stringify(leavePartyMember),
participatingPartyMember:JSON.stringify(param.participatingPartyMember || []),
signedInMember:JSON.stringify(param.signedInMember || []),//签到人员
activityLog:param.log,//活动记录
};
await operationalData(OPERATIONALDATATYPE.增加, TABLENAME.组织生活表, updateInfo, {oId});
return {isSuccess:true}
}
const ColorConfig = {
1:"#C62A23",
2:"#E4B386",
3:"#2aa115",//发展对象
4:"#3549B0",
5:"#1e5eff"
};
function changePartyPositionsName(partyPositionsName, etId) {
let str = "";
for (let i= 0; i < partyPositionsName.length; i++) {
let item = partyPositionsName[i];
if (item < 10) continue;
str += `,${verificationEnumTools.changeEnumValue(configEnum.PARTYPOSITIONS, item)}`;
}
if (!str) {
let partyPositionsNameStr = "";
if (etId == configEnum.ENTRYTYPE.正式党员) partyPositionsNameStr = "党员";
else partyPositionsNameStr = verificationEnumTools.changeEnumValue(configEnum.ENTRYTYPE, etId);
return {partyPositionsNameStr, color:ColorConfig[etId]};
}
orgLifeInfo.themeType = verificationEnumTools.changeEnumValue(configEnum.THEMETYPE, orgLifeInfo.themeType);
orgLifeInfo.dataMonth = moment(orgLifeInfo.dataMonth).format("YYYY-MM-DD");
orgLifeInfo.fileName = getFileUrl(orgLifeInfo.fileName, token, configEnum.UPTYPE.组织生活, userid);
return orgLifeInfo;
return {partyPositionsNameStr : str.replace(",", ""), color:"#C62A23"};
}
export async function memberSelect(bId:number) {
let clomun = ["pmId", "name", "etId", "partyPositionsName", "partyJoiningTime", "departmentName"];
let partyMemberList = await selectData(OPERATIONALDATATYPE.查询多个, TABLENAME.党员基础信息表, {bId}, clomun);
let dataList = [];
partyMemberList.forEach(info => {
let {partyPositionsNameStr} = changePartyPositionsName(JSON.parse(info.partyPositionsName), info.etId)
dataList.push({
name:info.name,
userId:info.pmId,
type:info.etId,
label:partyPositionsNameStr
});
});
return {dataList}
}
......
/**
* 党建动态 partyBuildingDynamic
* 党建资讯 partyBuildingDynamic
*/
import { OPERATIONALDATATYPE, TABLENAME } from "../config/dbEnum";
......@@ -7,9 +7,9 @@ import { selectData } from "../middleware/databaseSuccess";
import { extractData } from "../util/piecemeal";
import * as splitResultConfig from "../config/splitResultConfig";
import moment = require("moment");
import { PBTYPE, UPTYPE } from "../config/enum";
import { systemConfig } from "../config/systemConfig";
import { ACTIVITIESTYPE, PBTYPE, UPTYPE } from "../config/enum";
import { getFileUrl } from "../middleware/getUrl";
import { changeEnumValue } from "../util/verificationEnum";
/**
......@@ -20,35 +20,34 @@ import { getFileUrl } from "../middleware/getUrl";
* @param activityMonth 月份
* @returns partyBuildingDynamicList:[{"pbId":1, "theme":"党建动态主题", "dataMonth":"数据月份"}, ......]
*/
export async function partyBuildingDynamicList(bId:number, theme:string, activityYear:string, activityMonth:string) {
let timeStr = new Date(`${activityYear}-${activityMonth}`).valueOf();
let stTime = moment(timeStr).startOf("month").format("YYYY-MM-DD HH:mm:ss");
let etTime = moment(timeStr).endOf('month').format("YYYY-MM-DD HH:mm:ss");
export async function partyBuildingDynamicList(bId:number, activitiesType:Number) {
let param = {
let param:any = {
bId,
dataMonth: {"%between%": [stTime, etTime]}
}
if(theme) param["theme"] = {"%like%":theme};
let partyBuildingDynamicList = [];
let partyInformationList = await selectData(OPERATIONALDATATYPE.查询多个, TABLENAME.专题活动表, param, ["taId", "theme", "dataMonth"]);
for (let i = 0; i < partyInformationList.length; i++) {
let info = partyInformationList[i];
let changeData:any = extractData(splitResultConfig.thematicActivitiesConfig, info, "YYYY-MM-DD");
changeData.pbType = PBTYPE.党建资讯;
partyBuildingDynamicList.push(changeData);
}
let buildingDynamicDataList = await selectData(OPERATIONALDATATYPE.查询多个, TABLENAME.党建动态表, param, ["pbId", "theme", "dataMonth"]);
for (let i = 0; i < buildingDynamicDataList.length; i++) {
let info = buildingDynamicDataList[i];
let changeData:any = extractData(splitResultConfig.partyBuildingDynamicConfig, info, "YYYY-MM-DD");
changeData.pbType = PBTYPE.党建动态;
partyBuildingDynamicList.push(changeData);
}
return partyBuildingDynamicList;
activitiesType:{"%like%":activitiesType}
};
let partyInformationList = await selectData(OPERATIONALDATATYPE.查询多个, TABLENAME.专题活动表, param, ["taId", "theme", "activitiesType","activitesTime"]);
let dataList = [];
partyInformationList.forEach(info => {
let activitiesTypeList = [];
JSON.parse(info.activitiesType).forEach(itemKey => {
activitiesTypeList.push({
title:changeEnumValue(ACTIVITIESTYPE, itemKey),
color:"red"
});
})
dataList.push({
taId:info.taId,
activitiesType:activitiesTypeList,
theme:info.theme,
activitesTime:moment(info.activitesTime).format("YYYY-MM-DD")
});
});
return {dataList};
}
......@@ -57,20 +56,29 @@ export async function partyBuildingDynamicList(bId:number, theme:string, activit
* @param pbId
* @returns partyBuildingDynamicInfo:{ "theme":"党建动态主题", "dataMonth":"数据月份", "fileName":["党建动态文件名称", ......] }
*/
export async function partyBuildingDynamicDetsils(pbId:number, pbType:number, token:string, userid:string) {
let clomun = ["theme", "dataMonth", "fileName"];
let partyBuildingDynamicInfo:any = {};
if (pbType == PBTYPE.党建资讯) partyBuildingDynamicInfo = await selectData(OPERATIONALDATATYPE.查询单个, TABLENAME.专题活动表, {taId: pbId}, clomun);
if (pbType == PBTYPE.党建动态) partyBuildingDynamicInfo = await selectData(OPERATIONALDATATYPE.查询单个, TABLENAME.党建动态表, {pbId}, clomun);
partyBuildingDynamicInfo.dataMonth = moment(partyBuildingDynamicInfo.dataMonth).format("YYYY-MM-DD");
let fileNameList = getFileUrl(partyBuildingDynamicInfo.fileName, token, UPTYPE.党建动态, userid);
partyBuildingDynamicInfo.fileName = fileNameList;
return partyBuildingDynamicInfo;
export async function partyBuildingDynamicDetsils(taId:number) {
let files = ["taId", "activitiesType", "theme", "content", "activitesTime"];
let partyInformation = await selectData(OPERATIONALDATATYPE.查询单个, TABLENAME.专题活动表, {taId}, files);
let activitiesTypeList = [];
JSON.parse(partyInformation.activitiesType).forEach(itemKey => {
activitiesTypeList.push({
title:changeEnumValue(ACTIVITIESTYPE, itemKey),
color:"red"
});
})
let dataInfo:any = {};
dataInfo.taId = partyInformation.taId;
dataInfo.theme = partyInformation.theme;
dataInfo.content = partyInformation.content;
dataInfo.activitesTime = moment(partyInformation.activitesTime).format("YYYY-MM-DD");
dataInfo.source = "牙防所党建";
dataInfo.activitiesType = activitiesTypeList;
return {dataInfo};
}
......
......@@ -3,7 +3,7 @@
*/
import * as configEnum from "../config/enum";
import { selectData } from "../middleware/databaseSuccess";
import { selectData, selectManyTableData } from "../middleware/databaseSuccess";
import { OPERATIONALDATATYPE, TABLENAME } from "../config/dbEnum";
import moment = require("moment");
import { changeEnumValue } from "../util/verificationEnum";
......@@ -19,81 +19,50 @@ import { changeEnumValue } from "../util/verificationEnum";
* @returns 基础数据:"baseData": {"partyCount":党员总数, "paid":已缴纳人数, "unpaid":未缴纳人数}
* @returns 党费列表:"partyExpensesList": [{"name":"党员名称","payType":"缴纳状态","pmId":"党员id","payTime":"缴纳时间","partyPositionsName":"党内职务","departmentName":"所属科室","partyJoiningTime":"党龄"}, ......]
*/
export async function partyExpensesData(bId, name, payType, payableYear, payableMonth) {
let timeStr = new Date(`${payableYear}-${payableMonth}`).valueOf();
let stTime = moment(timeStr).startOf("month").format("YYYY-MM-DD HH:mm:ss");
let etTime = moment(timeStr).endOf('month').format("YYYY-MM-DD HH:mm:ss");
let param = {
bId,
payableMonth: {"%between%": [stTime, etTime]}
}
if(payType) param["payType"] = payType;
let clomun = ["pmId", "payType", "payTime"];
let partyExpensesDataList = await selectData(OPERATIONALDATATYPE.查询多个 , TABLENAME.党费管理表, param, clomun);
let expMap = {};//党费缴纳记录
partyExpensesDataList.forEach(info => {
let {pmId, payType, payTime} = info;
expMap[pmId] = {payType, payTime};
});
export async function partyExpensesData(bId, payType, payableYear, payableMonth) {
let param:any = { bId, payableYear, payableMonth };
// if (payType) param.payType = payType;
let partyExpensesList = [];
let manyTableConfig = {};
manyTableConfig[TABLENAME.党员基础信息表] = {column:["name", "etId", "partyPositionsName", "partyJoiningTime", "departmentName"], where:{etId:1} };
let partyExpensesList = await selectManyTableData(OPERATIONALDATATYPE.多表联查, TABLENAME.党费管理表, param, ["peId", "payType", "payAmount"], manyTableConfig);
let memberParam = { etId: 1, bId: {"%like%": bId} };
if(name) memberParam["name"] = {"%like%": name};
let memberClomun = ["pmId", "etId", "name", "partyPositionsName", "departmentName", "partyJoiningTime"];
let partyMenberDataList = await selectData(OPERATIONALDATATYPE.查询多个 , TABLENAME.党员基础信息表, memberParam, memberClomun);
partyMenberDataList.forEach(info => {
let {name, etId, pmId, partyPositionsName, departmentName, partyJoiningTime} = info;
let expInfo = expMap[pmId];
if (expInfo) {
let payTime = "";
if(expInfo.payTime) payTime = moment(expInfo.payTime).format("YYYY-MM-DD");
let partyPositions = "";
switch(etId) {
case configEnum.ENTRYTYPE.正式党员:
partyPositions = changeEnumValue(configEnum.PARTYPOSITIONS, JSON.parse(partyPositionsName));
if (!partyPositions || partyPositions=='undefined') partyPositions = "党员";
break;
default: partyPositions = changeEnumValue(configEnum.ENTRYTYPE, etId);
}
partyExpensesList.push({
name,
payType:changeEnumValue(configEnum.PAYTYPE, expInfo.payType),
pmId,
payTime,
partyPositionsName: partyPositions, //党内职务
departmentName: changeEnumValue(configEnum.DEDPARTMENT, JSON.parse(departmentName)), //所属科室
partyJoiningTime: `${new Date().getFullYear() - parseInt(partyJoiningTime)}年` //党龄
});
let dataList = [];
let allAmount = 0;
let completed = 0;
let incomplete = 0;
partyExpensesList.forEach(info => {
let {partyMember, payAmount} = info;
let item = {
name:partyMember.name,
partyPositionsName:"党员",//党员类型
payType:changeEnumValue(configEnum.PAYTYPE, info.payType),//状态
partyJoiningTime:moment(partyMember.partyJoiningTime).format("YYYY-MM-DD"),
departmentName:changeEnumValue(configEnum.DEDPARTMENT , partyMember.departmentName),
payAmount:payAmount
};
if (payType && info.payType == payType) {
dataList.push(item);
} else {
dataList.push(item);
}
if (info.payType == configEnum.PAYTYPE.已缴纳) {
allAmount += payAmount;
completed += 1;
} else {
allAmount += payAmount;
incomplete += 1;
}
});
let baseExpenses = await selectData(OPERATIONALDATATYPE.查询多个 , TABLENAME.党费管理表, {bId, payableMonth: {"%between%": [stTime, etTime]}}, clomun);
let baseExpMap = {};//党费缴纳记录
baseExpenses.forEach(info => {
let {pmId, payType, payTime} = info;
baseExpMap[pmId] = {payType, payTime};
});
let baseMember = await selectData(OPERATIONALDATATYPE.查询多个 , TABLENAME.党员基础信息表, {etId: 1, bId: {"%like%": bId}}, memberClomun);
let baseData = { //基础数据
partyCount:baseMember.length,//党员总数,
paid:0, // 已缴纳
unpaid:0 // 未缴纳
};
baseMember.forEach(info => {
let expInfo = baseExpMap[info.pmId];
if (!expInfo) expInfo = {payType:configEnum.PAYTYPE.未缴纳, payTime:timeStr}; //对应党员没有缴纳信息,返回一条该月未缴纳数据
if (expInfo.payType == configEnum.PAYTYPE.未缴纳) baseData.unpaid += 1;
if (expInfo.payType == configEnum.PAYTYPE.已缴纳) baseData.paid += 1;
});
let rate = 0;
if ( (completed + incomplete) ) {
rate = Math.round(completed/(completed + incomplete)*100)
}
return {baseData, partyExpensesList};
return {statisInfo:{rate, allAmount, completed, incomplete }, dataList};
}
......
......@@ -9,7 +9,36 @@ import { extractData } from "../util/piecemeal";
import * as splitResultConfig from "../config/splitResultConfig";
import moment = require("moment");
import { OPERATIONALDATATYPE, TABLENAME } from "../config/dbEnum";
import { selectData, selectManyTableData } from "../middleware/databaseSuccess";
import { operationalData, selectData, selectManyTableData } from "../middleware/databaseSuccess";
import { eccFormParam } from "../util/verificationParam";
import { CreateFZDXConfig, CreateRDJJFZConfig, CreateRDSQConfig, CreateYBDYConfig, CreateZSDYConfig } from "../config/eccFormParamConfig";
import { getBindId, getRandomId, md5PwdStr } from "../tools/system";
const ColorConfig = {
1:"#C62A23",
2:"#E4B386",
3:"#2aa115",//发展对象
4:"#3549B0",
5:"#1e5eff"
};
function changePartyPositionsName(partyPositionsName, etId) {
let str = "";
for (let i= 0; i < partyPositionsName.length; i++) {
let item = partyPositionsName[i];
if (item < 10) continue;
str += `,${verificationEnumTools.changeEnumValue(configEnum.PARTYPOSITIONS, item)}`;
}
if (!str) {
let partyPositionsNameStr = "";
if (etId == configEnum.ENTRYTYPE.正式党员) partyPositionsNameStr = "党员";
else partyPositionsNameStr = verificationEnumTools.changeEnumValue(configEnum.ENTRYTYPE, etId);
return {partyPositionsNameStr, color:ColorConfig[etId]};
}
return {partyPositionsNameStr : str.replace(",", ""), color:"#C62A23"};
}
/**
* 获取党员名册
......@@ -33,22 +62,10 @@ export async function partyMemberNameList(bId:number, name:string) {
/**截取返回字段 */
partyMemberList.forEach( info => {
let changeData:any = extractData(splitResultConfig.partyMemberConfig, info);
switch (changeData.etId) {
case configEnum.ENTRYTYPE.正式党员:
changeData.color = "#C62A23";
let partyPositions = JSON.parse(info.partyPositionsName);
changeData.partyPositionsName = verificationEnumTools.changeEnumValue(configEnum.PARTYPOSITIONS, partyPositions);
if (!changeData.partyPositionsName || changeData.partyPositionsName == "undefined") changeData.partyPositionsName = "党员";
break;
case configEnum.ENTRYTYPE.入党积极分子:
changeData.color = "#3549B0";
changeData.partyPositionsName = verificationEnumTools.changeEnumValue(configEnum.ENTRYTYPE, info.etId);
break;
case configEnum.ENTRYTYPE.预备党员:
changeData.color = "#E4B386";
changeData.partyPositionsName = verificationEnumTools.changeEnumValue(configEnum.ENTRYTYPE, info.etId);
break;
}
let {color, partyPositionsNameStr} = changePartyPositionsName( JSON.parse(info.partyPositionsName), changeData.etId);
changeData.partyPositionsName = partyPositionsNameStr;
changeData.color = color;
let time = moment(new Date()).format("YYYY");
let partyJoiningTime = time;
......@@ -72,44 +89,38 @@ export async function partyMemberNameList(bId:number, name:string) {
*/
export async function partyMemberDetails(bId:number, pmId:string) {
let clomun = ["bId", "pmId", "etId", "name", "sex", "birthDate", "phone", "levelOfEducation", "bId", "partyPositionsName", "partyJoiningTime", "administrativePositionName",
"departmentName", "askForTime", "listedAsActivistsTime", "liaison", "talkTime", "partyState"]
let partyMemberList = await selectData(OPERATIONALDATATYPE.查询单个, TABLENAME.党员基础信息表, {pmId}, clomun);
let changeData:any = {};
"departmentName", "askForTime", "listedAsActivistsTime", "liaison", "talkTime", "partyState"];
let partyMemberInfo = await selectData(OPERATIONALDATATYPE.查询单个, TABLENAME.党员基础信息表, {pmId}, clomun);
let changeData:any = extractData(splitResultConfig.partyMemberConfig, partyMemberInfo);
let {color, partyPositionsNameStr} = changePartyPositionsName( JSON.parse(partyMemberInfo.partyPositionsName), changeData.etId);
changeData.color = color;
changeData.partyPositionsName = partyPositionsNameStr;
/**截取返回字段 */
switch (partyMemberList.etId) {
case configEnum.ENTRYTYPE.正式党员:
changeData = extractData(splitResultConfig.partyMemberDetailsConfig, partyMemberList, "YYYY-MM-DD");
changeData.color = "#C62A23";
if(partyMemberList.partyPositionsName) changeData.partyPositionsName = verificationEnumTools.changeEnumValue(configEnum.PARTYPOSITIONS, JSON.parse(partyMemberList.partyPositionsName));
if(!changeData.partyPositionsName || changeData.partyPositionsName == "undefined") changeData.partyPositionsName = "党员";
break;
case configEnum.ENTRYTYPE.入党积极分子:
changeData = extractData(splitResultConfig.activistDetailsConfig, partyMemberList, "YYYY-MM-DD");
changeData.color = "#3549B0";
changeData.partyPositionsName = verificationEnumTools.changeEnumValue(configEnum.ENTRYTYPE, partyMemberList.etId);
break;
case configEnum.ENTRYTYPE.预备党员:
changeData = extractData(splitResultConfig.prepareDetailsConfig, partyMemberList, "YYYY-MM-DD");
changeData.color = "#E4B386";
changeData.partyPositionsName = verificationEnumTools.changeEnumValue(configEnum.ENTRYTYPE, partyMemberList.etId);
changeData.branchName = verificationEnumTools.changeEnumValue(configEnum.BRANCHNAME, partyMemberList.bId);
break;
}
changeData.departmentName = verificationEnumTools.changeEnumValue(configEnum.DEDPARTMENT, JSON.parse(partyMemberList.departmentName));
changeData.sex = verificationEnumTools.changeEnumValue(configEnum.SEX, partyMemberList.sex);
changeData.administrativePositionName = verificationEnumTools.changeEnumValue(configEnum.ADMINISTRATIVEPOSITION, partyMemberList.administrativePositionName);
changeData.partyState = verificationEnumTools.changeEnumValue(configEnum.PARTYSTATE, partyMemberList.partyState);
changeData.levelOfEducation = verificationEnumTools.changeEnumValue(configEnum.DEGREE, partyMemberList.levelOfEducation);
changeData.departmentName = verificationEnumTools.changeEnumValue(configEnum.DEDPARTMENT, JSON.parse(partyMemberInfo.departmentName));
changeData.sex = verificationEnumTools.changeEnumValue(configEnum.SEX, partyMemberInfo.sex);
changeData.administrativePositionName = verificationEnumTools.changeEnumValue(configEnum.ADMINISTRATIVEPOSITION, partyMemberInfo.administrativePositionName);
changeData.partyState = verificationEnumTools.changeEnumValue(configEnum.PARTYSTATE, partyMemberInfo.partyState);
changeData.levelOfEducation = verificationEnumTools.changeEnumValue(configEnum.DEGREE, partyMemberInfo.levelOfEducation);
changeData.study = await getStudent(bId, pmId); //学习相关数据
let time = moment(new Date()).format("YYYY");
let partyJoiningTime = time;
if (changeData.partyJoiningTime) partyJoiningTime = moment(partyMemberList.partyJoiningTime).format("YYYY")
if (changeData.partyJoiningTime) partyJoiningTime = moment(partyMemberInfo.partyJoiningTime).format("YYYY")
changeData.partyStanding = parseInt(time) - parseInt(partyJoiningTime) + "年";
if (partyMemberInfo.partyJoiningTime) {
changeData.partyStanding = Math.floor(moment().diff(partyMemberInfo.partyJoiningTime, 'years'))+'年';
changeData.partyJoiningTime = moment(partyMemberInfo.partyJoiningTime).format("YYYY年MM月DD日");
} else {
changeData.partyStanding = "-年";
changeData.partyJoiningTime = "-";
}
return changeData;
changeData.position = "-";
return {dataInfo:changeData};
}
......@@ -184,6 +195,68 @@ export async function getStudent(bId:number, pmId:string) {
}
/**
* 添加党员信息
* @param memberType
* @param param
* @returns
*/
export async function addMember(bId, memberType:number, param) {
let addInfo:any = {
pmId:getRandomId("member"),
bId,
etId:memberType,
isAdmin:0,
loginId:param.phone,
};//添加参数
for (let key in param) {
addInfo[key] = param[key];
}
const FuncName = "添加党员";
switch (memberType) {
case configEnum.ENTRYTYPE.正式党员:
eccFormParam(FuncName, CreateZSDYConfig, param);
addInfo.partyJoiningTime =moment(param.partyJoiningTime).format("YYYY-MM-DD");
param.partyPositionsName.forEach(itemId => {
verificationEnumTools.eccEnumValue(FuncName, "partyPositionsName", configEnum.PARTYPOSITIONS, itemId);
});
addInfo.partyPositionsName = JSON.stringify(param.partyPositionsName);
break;
case configEnum.ENTRYTYPE.入党申请:
eccFormParam(FuncName, CreateRDSQConfig, param);
addInfo.askForTime = moment(param.askForTime).format("YYYY-MM-DD");
addInfo.talkTime = moment(param.talkTime).format("YYYY-MM-DD");
break;
case configEnum.ENTRYTYPE.入党积极分子:
eccFormParam(FuncName, CreateRDJJFZConfig, param);
addInfo.askForTime = moment(param.askForTime).format("YYYY-MM-DD");
addInfo.listedAsActivistsTime = moment(param.listedAsActivistsTime).format("YYYY-MM-DD");
break;
case configEnum.ENTRYTYPE.发展对象:
eccFormParam(FuncName, CreateFZDXConfig, param);
addInfo.askForTime = moment(param.askForTime).format("YYYY-MM-DD");
addInfo.fzdxTime = moment(param.fzdxTime).format("YYYY-MM-DD");
break;
case configEnum.ENTRYTYPE.预备党员:
eccFormParam(FuncName, CreateYBDYConfig, param);
addInfo.askForTime = moment(param.askForTime).format("YYYY-MM-DD");
addInfo.yubeiTime = moment(param.yubeiTime).format("YYYY-MM-DD");
break;
}
verificationEnumTools.eccEnumValue(FuncName, "sex", configEnum.SEX, param.sex);
verificationEnumTools.eccEnumValue(FuncName, "levelOfEducation", configEnum.DEGREE, param.levelOfEducation);
verificationEnumTools.eccEnumValue(FuncName, "administrativePositionName", configEnum.ADMINISTRATIVEPOSITION, param.administrativePositionName);
addInfo.birthDate = moment(param.birthDate).format("YYYY-MM-DD");
addInfo.pwd = md5PwdStr(param.phone.slice(param.phone.length-6));
await operationalData(OPERATIONALDATATYPE.增加, TABLENAME.党员基础信息表, addInfo, {});
return {isSuccess:true};
}
......@@ -16,8 +16,9 @@ import moment = require("moment");
*/
export async function partyQualityList(bId:number) {
let dataYear = moment(new Date().valueOf()).format("YYYY");
let selectParam = {bId:{"%like%": bId}};
let clomun = ["tlId", "primaryIndicators", "secondaryIndicators", "thirdLevelContent", "thirdLevelScore", "currentScore", "completionProgress"];
let partyQualityData = await selectData(OPERATIONALDATATYPE.查询多个, TABLENAME.党建质量三级指标, {bId:{"%like%": bId}, dataYear}, clomun);
let partyQualityData = await selectData(OPERATIONALDATATYPE.查询多个, TABLENAME.党建质量三级指标, selectParam, clomun);
let partyQualityList = [];
for (let key in configEnum.PRIMARYINDICATORS) {
......@@ -25,7 +26,7 @@ export async function partyQualityList(bId:number) {
let anyKey:any = key;
if (isNaN(anyKey)) {
const EnumValue = parseInt(configEnum.PRIMARYINDICATORS[key])
primaryIndicatorsData["dataList"] = {key: anyKey, list: []};
primaryIndicatorsData["dataList"] = {key: anyKey, value:EnumValue, list: []};
primaryIndicatorsData["detail"] = {};
partyQualityData.forEach( info => {
......@@ -57,11 +58,11 @@ export async function partyQualityList(bId:number) {
let partyQuality = [];
partyQualityList.forEach( item => {
let {dataList, detail} = item;
let {key, list} = dataList;
let {dataList} = item;
let {key, value, list} = dataList;
let count = list.length;
let changeDataList = {};
let changeDataInfo:any = {};
let changeData:any = {totalScore:0, completionProgress:0, currentScore:0};
list.forEach( info => {
let {thirdLevelScore, currentScore, completionProgress, schedule} = info;
......@@ -73,21 +74,54 @@ export async function partyQualityList(bId:number) {
let completion = changeData.completionProgress/count;
if (completion == 100) changeData.schedule = "已完成";
changeData.completionProgress = Math.round(completion)+ "%"
changeData.completionProgress = Math.round(completion);
changeDataList["key"] = key;
changeDataList["list"] = changeData;
changeDataInfo.key = key;
changeDataInfo.value = value;
changeDataInfo.dataInfo = changeData;
partyQuality.push({dataList:changeDataList, detail});
partyQuality.push(changeDataInfo);
})
return partyQuality;
return {dataList:partyQuality};
}
export async function partyQualityInfo(bId:number, qualityId:number) {
verificationEnumTools.eccEnumValue("获取详情", "qualityId", configEnum.PRIMARYINDICATORS, qualityId);
let dataYear = moment(new Date().valueOf()).format("YYYY");
let selectParam = {bId:{"%like%": bId}, primaryIndicators:qualityId};
let clomun = ["tlId", "primaryIndicators", "secondaryIndicators", "thirdLevelContent", "thirdLevelScore", "currentScore", "completionProgress"];
let partyQualityData = await selectData(OPERATIONALDATATYPE.查询多个, TABLENAME.党建质量三级指标, selectParam, clomun);
let dataMap = {};
partyQualityData.forEach(info => {
if (!dataMap[info.secondaryIndicators]) dataMap[info.secondaryIndicators] = {state:1, content:info.thirdLevelContent};
else {
dataMap[info.secondaryIndicators].content += "<br>";
dataMap[info.secondaryIndicators].content += info.thirdLevelContent;
}
if (info.completionProgress < 100) dataMap[info.secondaryIndicators].state = 0;
});
let dataList = [];
for (let key in dataMap) {
let title = configEnum.SECONDARYINDICATORS[parseInt(key)];
dataList.push({
title,
content:dataMap[key].content,
schedule:dataMap[key].state == 1 ? "已完成" : "进行中"
});
}
return {dataList};
}
......
......@@ -3,12 +3,16 @@
*/
import { OPERATIONALDATATYPE, TABLENAME } from "../config/dbEnum";
import { selectData } from "../middleware/databaseSuccess";
import { operationalData, selectData } from "../middleware/databaseSuccess";
import { extractData } from "../util/piecemeal";
import * as splitResultConfig from "../config/splitResultConfig";
import * as configEnum from "../config/enum";
import * as verificationEnumTools from "../util/verificationEnum";
import moment = require("moment");
import { eccFormParam } from "../util/verificationParam";
import { CreateDJXFConfig } from "../config/eccFormParamConfig";
import { BizError } from "../util/bizError";
import { ERRORENUM } from "../config/errorEnum";
/**
* 获取党建先锋列表
......@@ -17,25 +21,33 @@ import moment = require("moment");
* @returns
*/
export async function partyVanguardList(bId:number, honorName:string) {
let param = {
isUse: 1,
};
if(honorName) param["honorName"] = {"%like%":honorName};
let clomun = ["pvId", "honorName", "honorType", "grantingRange", "grantingUnit", "grantTime"];
let param:any = {};
if (honorName) param.honorName = honorName;
let clomun = ["pvId", "honorName", "honorType", "grantingRange", "grantingUnit", "grantTime", "img", "content" ];
let partyVanguardData = await selectData(OPERATIONALDATATYPE.查询多个, TABLENAME.党建先锋表, param, clomun);
let partyVanguardList = [];
partyVanguardData.forEach( async info => {
let dataList = [];
partyVanguardData.forEach( info => {
let changeData:any = extractData(splitResultConfig.partyVanguardConfig, info);
changeData.honorType = verificationEnumTools.changeEnumValue(configEnum.HONORTYPE, info.honorType);
changeData.grantingRange = verificationEnumTools.changeEnumValue(configEnum.GRANTINGRANGE, info.grantingRange);
changeData.grantTime = moment(info.grantTime).format("YYYY-MM-DD");
changeData.content = info.content;
changeData.img = info.img;
let grantingUnitStr = "";
JSON.parse(info.grantingUnit).forEach(str => {
grantingUnitStr += `,${str}`;
});
changeData.grantingUnit = grantingUnitStr.replace(",", "");
partyVanguardList.push(changeData);
dataList.push(changeData);
});
return partyVanguardList;
return {dataList};
}
......@@ -46,14 +58,46 @@ export async function partyVanguardList(bId:number, honorName:string) {
*/
export async function partyVanguardDetsils(pvId:number) {
let param = {pvId};
let clomun = ["honorName", "honorType", "grantingRange", "grantingUnit", "grantTime"];
let clomun = ["pvId", "honorName", "honorType", "grantingRange", "grantingUnit", "grantTime", "img", "content" ];
let partyVanguardData = await selectData(OPERATIONALDATATYPE.查询单个, TABLENAME.党建先锋表, param, clomun);
if (!partyVanguardData || !partyVanguardData.pvId) throw new BizError(ERRORENUM.目标数据不存在);
let dataInfo:any = extractData(splitResultConfig.partyVanguardConfig, partyVanguardData);
dataInfo.honorType = verificationEnumTools.changeEnumValue(configEnum.HONORTYPE, partyVanguardData.honorType);
dataInfo.grantingRange = verificationEnumTools.changeEnumValue(configEnum.GRANTINGRANGE, partyVanguardData.grantingRange);
dataInfo.grantTime = moment(partyVanguardData.grantTime).format("YYYY-MM-DD");
dataInfo.content = partyVanguardData.content;
dataInfo.img = partyVanguardData.img;
let grantingUnitStr = "";
partyVanguardData.grantingUnit.forEach(str => {
grantingUnitStr += `,${str}`;
});
partyVanguardData.honorType = verificationEnumTools.changeEnumValue(configEnum.HONORTYPE, partyVanguardData.honorType);
partyVanguardData.grantingRange = verificationEnumTools.changeEnumValue(configEnum.GRANTINGRANGE, partyVanguardData.grantingRange);
partyVanguardData.grantTime = moment(partyVanguardData.grantTime).format("YYYY-MM-DD");
dataInfo.grantingUnit = grantingUnitStr.replace(",", "");
return partyVanguardData;
return { dataInfo }
}
export async function addPartyVanguard(bId, param) {
const FuncName = "添加先锋";
eccFormParam(FuncName, CreateDJXFConfig, param);
verificationEnumTools.eccEnumValue(FuncName, "honorType", configEnum.HONORTYPE, param.honorType);
verificationEnumTools.eccEnumValue(FuncName, "grantingRange", configEnum.GRANTINGRANGE, param.grantingRange);
let addInfo = {
honorName:param.honorName,// "荣誉名称1",
honorType:param.honorType,// "区级",
grantingRange:param.grantingRange,// "团体",
grantingUnit:JSON.stringify(param.grantingUnit),// "上海市*****单位",
grantTime:new Date(param.grantTime),// "2023-08-30"
content:param.content,// "内容"
img:param.img,// "图片
bId
};
await operationalData(OPERATIONALDATATYPE.增加, TABLENAME.党建先锋表, addInfo, {});
return {isSuccess:true}
}
......@@ -7,10 +7,19 @@ import { BizError } from '../util/bizError';
import * as sysTools from "../tools/system";
import { operationalData, selectData } from '../middleware/databaseSuccess';
import { OPERATIONALDATATYPE, TABLENAME } from '../config/dbEnum';
import { PARTYPOSITIONS } from '../config/enum';
const moment = require("moment");
function checkLeader(partyPositionsNames) {
for (let i = 0; i < partyPositionsNames.length; i++) {
if (partyPositionsNames[i] >= PARTYPOSITIONS.党总支书记) return true;
}
return false
}
export async function login(loginId:string, pwd:string) {
let clomun = ["pmId", "loginId", "pwd", "token", "bId"];
let clomun = ["pmId", "loginId", "pwd", "token", "bId", "administrativePositionName", "partyPositionsName"];
let loginInfo:any = await selectData(OPERATIONALDATATYPE.查询单个, TABLENAME.党员基础信息表, {loginId}, clomun);
if (!loginInfo) throw new BizError(ERRORENUM.账号不存在, `${loginId}账号非党员账号`);
......@@ -25,10 +34,13 @@ export async function login(loginId:string, pwd:string) {
await operationalData(OPERATIONALDATATYPE.修改, TABLENAME.党员基础信息表, updateLogin, {loginId});
let userType = checkLeader(JSON.parse(loginInfo.partyPositionsName) ) ? 2 : 1;
return {
userid: loginInfo.pmId,
token: Token,
name:loginInfo.name,
bId: loginInfo.bId,
userType,
};
}
......@@ -42,7 +54,7 @@ export async function login(loginId:string, pwd:string) {
* @param confirmPwd 确认新密码 未md5
* @returns {isSuccess:true}
*/
export async function changePassword(loginId:string, pwd:string, newPwd:string, confirmPwd:string ) {
export async function changePassword(loginId:string, pwd:string, newPwd:string, confirmPwd:string ) {
if (newPwd != confirmPwd) throw new BizError(ERRORENUM.密码不一致);
if (newPwd.search(/^[A-Za-z0-9]{6,18}$/) < 0) throw new BizError(ERRORENUM.密码只能由618位字符和数字组成);
......@@ -68,3 +80,4 @@ export async function login(loginId:string, pwd:string) {
......@@ -36,9 +36,11 @@ export enum PARTYPOSITIONSICON {
* 名册录入类型
*/
export enum ENTRYTYPE {
正式党员录入 = 1,
入党积极分子录入,
入党申请录入
正式党员 = 1,
预备党员,
发展对象,
入党积极分子,
入党申请
}
......@@ -53,4 +55,10 @@ export enum PARTYPOSITIONSICON {
统战委员,
组织委员,
宣传委员,
}
export enum PAYSTATE {
全部 =0,
已支付 = 1,
未支付 =2
}
\ No newline at end of file
......@@ -34,4 +34,6 @@ export enum TABLENAME {
课程类型='courseType',
学习强国='learningPower',
党建质量三级指标='thirdLevel',
党建通知='partyNotice'
}
\ No newline at end of file
......@@ -13,14 +13,141 @@
* 备注: 1.0
*/
export const CreateActivityConfig = {
partyActivityType:{type:"Number", notMustHave:true},//党建活动类型
activityStartTime:{type:"Number", notMustHave:true},//活动开始时间
activityEndTime:{type:"Number", notMustHave:true},//活动结束时间
partyActivityType:{type:"Number"},//党建活动类型
activityStartTime:{type:"Number"},//活动开始时间
activityEndTime:{type:"Number"},//活动结束时间
activityAdd:{type:"String", notMustHave:true},//活动地点
activityHost:{type:"[String]", notMustHave:true},//活动主持人
activityNoteTaker:{type:"[String]", notMustHave:true},//活动记录人
activityHost:{type:"String", notMustHave:true},//活动主持人
activityNoteTaker:{type:"String", notMustHave:true},//活动记录人
// leavePartyMember:{type:"[String]", notMustHave:true},//请假党员
participatingPartyMember:{type:"[String]", notMustHave:true},//参与党员
// participationRecord:{type:"String", notMustHave:true},//活动记录
};
export const UpdateActivityConfig = {
partyActivityType:{type:"Number"},//党建活动类型
activityStartTime:{type:"Number"},//活动开始时间
activityEndTime:{type:"Number"},//活动结束时间
activityAdd:{type:"String", notMustHave:true},//活动地点
activityHost:{type:"String", notMustHave:true},//活动主持人
activityNoteTaker:{type:"String", notMustHave:true},//活动记录人
leavePartyMember:{type:"[String]", notMustHave:true},//请假党员
signedInMember:{type:"[String]", notMustHave:true},//签到人员
log:{type:"String", notMustHave:true},//活动记录
participatingPartyMember:{type:"[String]", notMustHave:true},//参与党员
participationRecord:{type:"String", notMustHave:true},//活动记录
branchName:{type:"[Number]", notMustHave:true}, //支部名称
// participationRecord:{type:"String", notMustHave:true},//活动记录
};
/**
* 正式党员
*/
export const CreateZSDYConfig = {
name:{type:"String", notMustHave:true},//姓名
sex:{type:"Number", notMustHave:true},//性别 1男2女
birthDate:{type:"Number", notMustHave:true},//性别 1男2女
phone:{type:"String", notMustHave:true},//手机号码
levelOfEducation:{type:"Number", notMustHave:true},//文化程度
partyJoiningTime:{type:"Number", notMustHave:true},//入党时间
administrativePositionName:{type:"Number", notMustHave:true},//行政职务id
partyPositionsName:{type:"[Number]", notMustHave:true},//党内职务id
desc:{type:"String", notMustHave:true},//备注
}
/**
* 预备党员
*/
export const CreateYBDYConfig = {
name:{type:"String", notMustHave:true},//姓名
sex:{type:"Number", notMustHave:true},//性别 1男2女
birthDate:{type:"Number", notMustHave:true},//性别 1男2女
phone:{type:"String", notMustHave:true},//手机号码
levelOfEducation:{type:"Number", notMustHave:true},//文化程度
askForTime:{type:"Number", notMustHave:true},//申请入党时间
yubeiTime:{type:"Number", notMustHave:true},//预备党员时间
administrativePositionName:{type:"Number", notMustHave:true},//行政职务id
desc:{type:"String", notMustHave:true},//备注
}
/**
* 发展对象
*/
export const CreateFZDXConfig = {
name:{type:"String", notMustHave:true},//姓名
sex:{type:"Number", notMustHave:true},//性别 1男2女
birthDate:{type:"Number", notMustHave:true},//性别 1男2女
phone:{type:"String", notMustHave:true},//手机号码
levelOfEducation:{type:"Number", notMustHave:true},//文化程度
askForTime:{type:"Number", notMustHave:true},//申请入党时间
fzdxTime:{type:"Number", notMustHave:true},//发展对象时间
administrativePositionName:{type:"Number", notMustHave:true},//行政职务id
desc:{type:"String", notMustHave:true},//备注
}
/**
* 入党积极分子
*/
export const CreateRDJJFZConfig = {
name:{type:"String", notMustHave:true},//姓名
sex:{type:"Number", notMustHave:true},//性别 1男2女
birthDate:{type:"Number", notMustHave:true},//性别 1男2女
phone:{type:"String", notMustHave:true},//手机号码
levelOfEducation:{type:"Number", notMustHave:true},//文化程度
askForTime:{type:"Number", notMustHave:true},//申请入党时间
listedAsActivistsTime:{type:"Number", notMustHave:true},//列为积极分子时间
administrativePositionName:{type:"Number", notMustHave:true},//行政职务id
desc:{type:"String", notMustHave:true},//备注
}
/**
* 入党申请
*/
export const CreateRDSQConfig = {
name:{type:"String", notMustHave:true},//姓名
sex:{type:"Number", notMustHave:true},//性别 1男2女
birthDate:{type:"Number", notMustHave:true},//性别 1男2女
phone:{type:"String", notMustHave:true},//手机号码
levelOfEducation:{type:"Number", notMustHave:true},//文化程度
askForTime:{type:"Number", notMustHave:true},//申请入党时间
talkTime:{type:"Number", notMustHave:true},//谈话时间
administrativePositionName:{type:"Number", notMustHave:true},//行政职务id
desc:{type:"String", notMustHave:true},//备注
}
/**
* 支部制度
*/
export const CreateZBZDConfig = {
title:{type:"String", notMustHave:true},//制度标题
releaseTime:{type:"Number", notMustHave:true},//发布时间
periodTime:{type:"Number", notMustHave:true},//有效期
content:{type:"String", notMustHave:true},//内容
}
export const CreateDJXFConfig = {
honorName:{type:"String"},// "荣誉名称1",
honorType:{type:"Number"},// "区级",
grantingRange:{type:"Number", },// "团体",
grantingUnit:{type:"[String]"},// "上海市*****单位",
grantTime:{type:"Number"},// "2023-08-30"
content:{type:"String"},// "内容"
img:{type:"String"},// "图片
}
......@@ -20,8 +20,10 @@ export enum FILETYPE {
/**名册录入类型 */
export enum ENTRYTYPE {
正式党员 = 1,
预备党员,
发展对象,
入党积极分子,
预备党员
入党申请
}
......@@ -51,6 +53,14 @@ export enum BRANCHNAME {
牙防所第四支部
}
/**所属支部 */
export enum BRANCHNAMESTR {
第一支部 = 1,
第二支部,
第三支部,
第四支部
}
/**行政职务 */
export enum ADMINISTRATIVEPOSITION {
......@@ -91,7 +101,7 @@ export enum ADMINISTRATIVEPOSITION {
/**党内职务 */
export enum PARTYPOSITIONS {
党总支书记 = 4,
党总支书记 = 10,
党总支副书记,
党总支宣传委员,
党总支统战委员,
......@@ -154,8 +164,15 @@ export enum PARTYSTATE {
/**主题类型 */
export enum THEMETYPE {
理论学习 = 1,
实践学习
// 理论学习 = 1,
// 实践学习,
日常教育培训 =1,
主题党课活动,
骨干队伍培训,
支部工作会,
二十大精神,
三会一课
}
......@@ -225,6 +242,11 @@ export enum GRANTINGRANGE {
单位,
}
export enum PERSONHONORTYPE {
模范类型1 = 1,
模范类型2 = 2
}
/**
* 党员学习---------------------------
......@@ -255,4 +277,11 @@ export enum UPTYPE {
学习强国 = 6
}
export enum ACTIVITIESTYPE {
党建动态 = 1,
专题活动,
精神文明,
先进典型,
}
......@@ -14,7 +14,7 @@ export const partyInformationConfig = {
theme:{key:"资讯标题"},
branchName:{key:"支部名称"},
dataMonth:{key:"资讯时间"},
pbType:{key:"资讯类型"},
// pbType:{key:"资讯类型"},
};
......@@ -27,7 +27,7 @@ export const buildingDynamiconfig = {
theme:{key:"资讯标题"},
branchName:{key:"支部名称"},
dataMonth:{key:"资讯时间"},
pbType:{key:"资讯类型"},
// pbType:{key:"资讯类型"},
};
......@@ -150,7 +150,9 @@ export const partyVanguardConfig = {
honorType:{key:"荣誉类型"},
grantingRange:{key:"授予范围"},
grantingUnit:{key:"授予单位"},
grantTime:{key:"授予时间", changeDate:true}
grantTime:{key:"授予时间", changeDate:true},
img:{key:"图片地址"},
content:{key:"内容内容"},
}
......
import { partyQualityList } from "./biz/partyQuality";
import { initConfig, systemConfig} from "./config/systemConfig";
import { httpServer } from "./net/http_server";
import { initBasicData } from "./tools/dataInit";
......@@ -17,7 +18,9 @@ async function lanuch() {
lanuch();
function test() {
async function test() {
let pwd = md5PwdStr("admin");
console.log();
let data = await partyQualityList(1);
console.log()
}
\ No newline at end of file
import { OPERATIONALDATATYPE, TABLENAME } from "../config/dbEnum";
import { PARTYPOSITIONS } from "../config/enum";
import { ERRORCODEENUM, ERRORENUM } from "../config/errorEnum";
import { BizError } from "../util/bizError";
import { selectData } from "./databaseSuccess";
......@@ -11,6 +12,7 @@ import { selectData } from "./databaseSuccess";
* @returns
*/
export async function checkAppletToken(req, res, next) {
if (!req.headers) req.headers = {};
let ReqToken = req.headers.token;
let UserId = req.headers.userid;
......@@ -22,6 +24,35 @@ export async function checkAppletToken(req, res, next) {
if (!partyMemberInfo.token || partyMemberInfo.token != ReqToken) return next(new BizError(ERRORENUM.身份验证过期));
req.headers.userid = partyMemberInfo.pmId;
req.headers.bId = partyMemberInfo.bId;
next();
}
export async function checkAppletDWToken(req, res, next) {
if (!req.headers) req.headers = {};
let ReqToken = req.headers.token;
let UserId = req.headers.userid;
if(!UserId || !ReqToken) return next(new BizError(ERRORENUM.非法登录));
let partyMemberInfo = await selectData(OPERATIONALDATATYPE.查询单个, TABLENAME.党员基础信息表, {pmId: UserId}, ["pmId", "bId", "loginId", "token", "partyPositionsName"]);
if (!partyMemberInfo || !partyMemberInfo.pmId) return next(new BizError(ERRORENUM.身份验证失败));
if (!partyMemberInfo.token || partyMemberInfo.token != ReqToken) return next(new BizError(ERRORENUM.身份验证过期));
req.headers.userid = partyMemberInfo.pmId;
req.headers.bId = partyMemberInfo.bId;
//判断是否是领导
let isZZB = false;
JSON.parse(partyMemberInfo.partyPositionsName).forEach(itemId => {
if (itemId >= PARTYPOSITIONS.党总支书记 && itemId <= PARTYPOSITIONS.党总支纪检委员) {
isZZB = true;
}
});
if (!isZZB) {
throw new BizError(ERRORENUM.权限不足);
}
next();
}
\ No newline at end of file
/**
* 小程序端 党员入口 党建首页路由
* 小程序端
* 党建首页路由
*/
import * as baseBiz from '../../biz/base';
import * as asyncHandler from 'express-async-handler';
import { eccReqParamater } from '../../util/verificationParam';
import { checkAppletToken } from '../../middleware/user';
import { checkAppletToken, checkAppletDWToken } from '../../middleware/user';
export function setRouter(httpServer) {
httpServer.post('/yfs/applet/partymember/home', checkAppletToken, asyncHandler(homeBase));
httpServer.post('/yfs/applet/partymember/activities', checkAppletToken, asyncHandler(activitiesBase));
httpServer.post('/yfs/member/partymember/home', checkAppletToken, asyncHandler(member_home));
httpServer.post('/yfs/member/partymember/bottomhome', checkAppletToken, asyncHandler(member_home_bottom));
}
......@@ -19,10 +24,7 @@ export function setRouter(httpServer) {
* @param res
*/
async function homeBase(req, res) {
//优化点 bId可以根据中间件验证token时获取,无需前端传递bId参数 其他接口也一样
let reqConf = {bId:'Number'};
let {bId} = eccReqParamater(reqConf, req.body);
let bId = req.headers.bId;
let baseInfo = await baseBiz.homeData(bId);
res.success(baseInfo);
}
......@@ -34,10 +36,28 @@ async function homeBase(req, res) {
* @param res
*/
async function activitiesBase(req, res) {
let reqConf = {bId:'Number'};
let {bId} = eccReqParamater(reqConf, req.body);
let bId = req.headers.bId;
let activitiesInfo = await baseBiz.activitiesData(bId);
res.success(activitiesInfo);
}
async function member_home(req, res) {
let userid = req.headers.userid;
let bId = req.headers.bId;
let activitiesInfo = await baseBiz.memberHomeData(userid, bId);
res.success(activitiesInfo);
}
async function member_home_bottom(req, res) {
let reqConf = { activitiesType:'Number'};
let { activitiesType } = eccReqParamater(reqConf, req.body);
let bId = req.headers.bId;
let activitiesInfo = await baseBiz.memberHomeBottomData(bId, activitiesType);
res.success(activitiesInfo);
}
/**
* 小程序端 党员入口 支部制度
* 小程序端
* 支部制度
*/
import * as branchSystemBiz from '../../biz/branchSystem';
......@@ -7,10 +8,11 @@
import { eccReqParamater } from '../../util/verificationParam';
import { checkAppletToken } from '../../middleware/user';
export function setRouter(httpServer) {
export function setRouter(httpServer) {
httpServer.post('/yfs/applet/branchsystem/list', checkAppletToken, asyncHandler(getBranchSystem));
httpServer.post('/yfs/applet/branchsystem/detsils', checkAppletToken, asyncHandler(getBranchSystemDetsils));
}
httpServer.post('/yfs/applet/branchsystem/add', checkAppletToken, asyncHandler(addBranchSystemDetsils));
}
/**
......@@ -19,8 +21,9 @@ import { checkAppletToken } from '../../middleware/user';
* @param res
*/
async function getBranchSystem(req, res) {
let reqConf = {bId:'Number', systemTitle:'String'};
let {bId, systemTitle} = eccReqParamater(reqConf, req.body, ["systemTitle"]);
let reqConf = { systemTitle:'String'};
let { systemTitle} = eccReqParamater(reqConf, req.body, ["systemTitle"]);
let bId = req.headers.bId;
let result = await branchSystemBiz.branchSystemList(bId, systemTitle);
res.success(result);
......@@ -35,11 +38,21 @@ async function getBranchSystem(req, res) {
async function getBranchSystemDetsils(req, res) {
let reqConf = {bsId: 'Number'};
let {bsId} = eccReqParamater(reqConf, req.body);
let token = req.headers.token;
let userid = req.headers.userid;
let result = await branchSystemBiz.branchSystemDetsils(bsId);
res.success(result);
}
let result = await branchSystemBiz.branchSystemDetsils(bsId, token, userid);
/**
* 支部制度 制度细则
* @param req
* @param res
*/
async function addBranchSystemDetsils(req, res) {
let reqConf = {param: 'Object'};
let {param} = eccReqParamater(reqConf, req.body);
let bId = req.headers.bId;
let result = await branchSystemBiz.addOneBranchSystemDetsils(bId, param);
res.success(result);
}
/**
* 小程序端
* 党建首页路由
*/
import * as dwBiz from '../../biz/dw';
import * as asyncHandler from 'express-async-handler';
import { eccReqParamater } from '../../util/verificationParam';
import { checkAppletToken, checkAppletDWToken } from '../../middleware/user';
export function setRouter(httpServer) {
//总支部权限
//名册
httpServer.post('/yfs/dw/home', checkAppletDWToken, asyncHandler(homeBase));
httpServer.post('/yfs/dw/activities', checkAppletDWToken, asyncHandler(activitiesBase));
httpServer.post('/yfs/dw/member/partymember/list', checkAppletDWToken, asyncHandler(partymember_list));
httpServer.post('/yfs/dw/member/partymember/list/sublist', checkAppletDWToken, asyncHandler(partymember_sublist));
httpServer.post('/yfs/dw/member/partymember/typelist', checkAppletDWToken, asyncHandler(partymember_type_list));
httpServer.post('/yfs/dw/member/partymember/typelist/sublist', checkAppletDWToken, asyncHandler());
httpServer.post('/yfs/dw/applet/partyexpenses/list', checkAppletDWToken, asyncHandler());
httpServer.post('/yfs/dw/applet/partyexpenses/statis', checkAppletDWToken, asyncHandler());
httpServer.post('/yfs/dw/applet/partyexpenses/list', checkAppletDWToken, asyncHandler());
httpServer.post('/yfs/dw/applet/partyexpenses/list/sublist', checkAppletDWToken, asyncHandler());
httpServer.post('/yfs/dw/applet/partyexpenses/statis', checkAppletDWToken, asyncHandler());
httpServer.post('/yfs/applet/branchsystem/list', checkAppletToken, asyncHandler(getBranchSystem));
httpServer.post('/yfs/applet/branchsystem/detsils', checkAppletToken, asyncHandler(getBranchSystemDetsils));
httpServer.post('/yfs/applet/branchsystem/add', checkAppletToken, asyncHandler(addBranchSystemDetsils));
httpServer.post('/yfs/applet/organizationallife/list', checkAppletToken, asyncHandler(organizationalLifeList));
httpServer.post('/yfs/applet/organizationallife/add', checkAppletToken, asyncHandler(addDetails));
}
/**
*
* @param req
* @param res
*/
async function homeBase(req, res) {
let baseInfo = await dwBiz.homeData();
res.success(baseInfo);
}
/**
*
* @param req
* @param res
*/
async function activitiesBase(req, res) {
let activitiesInfo = await dwBiz.activitiesData();
res.success(activitiesInfo);
}
/**
*
* @param req
* @param res
*/
async function partymember_list(req, res) {
let activitiesInfo = await dwBiz.partymemberList();
res.success(activitiesInfo);
}
async function partymember_sublist(req, res) {
let reqConf = {bId:'Number', name:"String", partyPositionsName:"Number"};
let {bId, name, partyPositionsName} = eccReqParamater(reqConf, req.body, ["name", "partyPositionsName"]);
let activitiesInfo = await dwBiz.partymemberSublist(bId, name, partyPositionsName );
res.success(activitiesInfo);
}
/**
*
* @param req
* @param res
*/
async function partymember_type_list(req, res) {
let reqConf = {bId:'Number'};
let {bId} = eccReqParamater(reqConf, req.body);
let activitiesInfo = await dwBiz.partymemberTypeList(bId);
res.success(activitiesInfo);
}
/**
* 小程序端 党员入口 党员学习
* 小程序端
* 党员学习
*/
import * as memberLearningBiz from '../../biz/memberLearning';
......@@ -10,21 +11,21 @@ import { checkAppletToken } from '../../middleware/user';
export function setRouter(httpServer) {
httpServer.post('/yfs/applet/memberlearning/list', checkAppletToken, asyncHandler(getMemberLearning));
httpServer.post('/yfs/applet/memberlearning/branchranking', checkAppletToken, asyncHandler(getBranchRanking));
httpServer.post('/yfs/applet/memberlearning/monthranking', checkAppletToken, asyncHandler(getMonthRanking));
httpServer.post('/yfs/applet/memberlearning/ranking', checkAppletToken, asyncHandler(getRanking));
httpServer.post('/yfs/applet/memberlearning/updateschedule', checkAppletToken, asyncHandler(updateRateLearning));
httpServer.post('/yfs/applet/memberlearning/updatefileschedule', checkAppletToken, asyncHandler(updateFileRateLearning));
}
/**
* 党建先锋 视频课程与文字课程列表
* 本人 视频课程与文字课程列表
* @param req
* @param res
*/
async function getMemberLearning(req, res) {
let pmId = req.headers.userid;
let reqConf = {courseEntryType:'Number', courseTypeName:'Number', contentTitle:'String'};
let {courseEntryType, courseTypeName, contentTitle} = eccReqParamater(reqConf, req.body);
let {courseEntryType, courseTypeName, contentTitle} = eccReqParamater(reqConf, req.body, ["contentTitle"]);
let token = req.headers.token;
let userid = req.headers.userid;
......@@ -41,7 +42,7 @@ async function getMemberLearning(req, res) {
*/
async function getBranchRanking(req, res) {
let pmId = req.headers.userid;
let {bId} = eccReqParamater({bId:'Number'}, req.body);
let bId = req.headers.bId;
let result = await memberLearningBiz.branchRanking(pmId, bId);
res.success(result);
......@@ -53,7 +54,7 @@ async function getBranchRanking(req, res) {
* @param req
* @param res
*/
async function getMonthRanking(req, res) {
async function getRanking(req, res) {
let pmId = req.headers.userid;
let result = await memberLearningBiz.branchRanking(pmId);
res.success(result);
......
/**
* 小程序端 党员入口 组织生活路由
* 小程序端
* 组织生活路由
*/
import * as organizationalLifeBiz from '../../biz/organizationalLife';
......@@ -9,20 +10,26 @@ import { checkAppletToken } from '../../middleware/user';
export function setRouter(httpServer) {
httpServer.post('/yfs/applet/organizationallife/list', checkAppletToken, asyncHandler(organizationalLifeList));
httpServer.post('/yfs/applet/organizationallife/details', checkAppletToken, asyncHandler(detailsList));
httpServer.post('/yfs/applet/organizationallife/details', checkAppletToken, asyncHandler(details));
httpServer.post('/yfs/applet/organizationallife/add', checkAppletToken, asyncHandler(addDetails));
httpServer.post('/yfs/applet/organizationallife/update', checkAppletToken, asyncHandler(updateDetails));
httpServer.post('/yfs/applet/organizationallife/memberlist', checkAppletToken, asyncHandler(memberlist));
}
/**
* 组织生活列表
* @param req
* @param res
*/
async function organizationalLifeList(req, res) {
let reqConf = {bId:'Number', theme:'String', themeType:'Number', dataMonth:'String'};
let {bId, theme, themeType, dataMonth} = eccReqParamater(reqConf, req.body, ["theme","themeType","dataMonth"]);
let reqConf = {theme:'String', themeType:'Number'};
let {theme, themeType} = eccReqParamater(reqConf, req.body, ["theme","themeType"]);
let result = await organizationalLifeBiz.organizationalLifeList(bId, theme, themeType, dataMonth);
let bId = req.headers.bId;
let result = await organizationalLifeBiz.organizationalLifeList(bId, theme, themeType);
res.success(result);
}
......@@ -32,14 +39,49 @@ async function organizationalLifeList(req, res) {
* @param req
* @param res
*/
async function detailsList(req, res) {
async function details(req, res) {
let reqConf = {oId: 'Number' };
let {oId} = eccReqParamater(reqConf, req.body);
let token = req.headers.token;
let userid = req.headers.userid;
let bId = req.headers.bId;
let result = await organizationalLifeBiz.organlzationalLifeListDetsils(oId, token, userid, bId);
res.success(result);
}
/**
*
* @param req
* @param res
*/
async function addDetails(req, res) {
let reqConf = {param:"Object"};
let {param} = eccReqParamater(reqConf, req.body);
let bId = req.headers.bId;
let result = await organizationalLifeBiz.addOrg(bId, param);
res.success(result);
}
let result = await organizationalLifeBiz.organlzationalLifeListDetsils(oId, token, userid);
/**
*
* @param req
* @param res
*/
async function updateDetails(req, res) {
let reqConf = {oId:"Number", param:"Object"};
let {oId, param} = eccReqParamater(reqConf, req.body);
let bId = req.headers.bId;
let result = await organizationalLifeBiz.updateOrg(oId, param);
res.success(result);
}
async function memberlist(req, res) {
let bId = req.headers.bId;
let result = await organizationalLifeBiz.memberSelect(bId);
res.success(result);
}
\ No newline at end of file
/**
* 小程序端 党员入口 党建动态路由
* 小程序端
* 党建资讯 请求的是活动表
*/
import * as partyBuildingDynamicBiz from '../../biz/partyBuildingDynamic';
......@@ -14,15 +15,17 @@ export function setRouter(httpServer) {
/**
* 党建动态列表
* 党建资讯列表
* @param req
* @param res
*/
async function partyBuildingDynamicList(req, res) {
let reqConf = {bId:'Number', theme:'String', activityYear:'String', activityMonth:'String'};
let {bId, theme, activityYear, activityMonth} = eccReqParamater(reqConf, req.body, ["theme","activityYear","activityMonth"]);
let reqConf = {activitiesType:'Number'};
let {activitiesType} = eccReqParamater(reqConf, req.body);
let result = await partyBuildingDynamicBiz.partyBuildingDynamicList(bId, theme, activityYear, activityMonth);
let bId = req.headers.bId;
let result = await partyBuildingDynamicBiz.partyBuildingDynamicList(bId, activitiesType);
res.success(result);
}
......@@ -33,13 +36,10 @@ async function partyBuildingDynamicList(req, res) {
* @param res
*/
async function detailsList(req, res) {
let reqConf = {pbId: 'Number', pbType: 'Number'};
let {pbId, pbType} = eccReqParamater(reqConf, req.body);
let token = req.headers.token;
let userid = req.headers.userid;
let reqConf = {taId: 'Number'};
let {taId} = eccReqParamater(reqConf, req.body);
let result = await partyBuildingDynamicBiz.partyBuildingDynamicDetsils(pbId, pbType, token, userid);
let result = await partyBuildingDynamicBiz.partyBuildingDynamicDetsils(taId);
res.success(result);
}
......
/**
* 小程序端 党员入口 党费管理
* 小程序端
* 党费管理
*/
import * as partyExpensesBiz from '../../biz/partyExpenses';
import * as asyncHandler from 'express-async-handler';
import { eccReqParamater } from '../../util/verificationParam';
import { checkAppletToken } from '../../middleware/user';
export function setRouter(httpServer) {
httpServer.post('/yfs/applet/partyexpenses/list', checkAppletToken, asyncHandler(getPartyExpenses));
}
/**
* 党费列表
* @param req
* @param res
*/
* 党费列表
* @param req
* @param res
*/
async function getPartyExpenses(req, res) {
let reqConf = {bId:'Number', name:'String', payType:'Number', payableYear:'String', payableMonth:'String'};
let {bId, name, payType, payableYear, payableMonth} = eccReqParamater(reqConf, req.body, ["name", "payType", "payableYear", "payableMonth"]);
let result = await partyExpensesBiz.partyExpensesData(bId, name, payType, payableYear, payableMonth);
let reqConf = {payableYear:'Number', payType:"Number", payableMonth:'Number'};
let {payableYear, payableMonth, payType} = eccReqParamater(reqConf, req.body, ["payType"]);
let bId = req.headers.bId;
let result = await partyExpensesBiz.partyExpensesData(bId, payType, payableYear, payableMonth);
res.success(result);
}
\ No newline at end of file
/**
* 小程序端 党员入口 党员基础信息
* 小程序端
* 党员基础信息
*/
import * as partyMemberBiz from '../../biz/partyMember';
......@@ -8,8 +9,9 @@ import { eccReqParamater } from '../../util/verificationParam';
import { checkAppletToken } from '../../middleware/user';
export function setRouter(httpServer) {
httpServer.post('/yfs/applet/partymember/partymembername', checkAppletToken, asyncHandler(getPartyMemberName));
httpServer.post('/yfs/applet/partymember/detsils', checkAppletToken, asyncHandler(partyDetsils));
httpServer.post('/yfs/applet/partymember/partymembername', checkAppletToken, asyncHandler(get_party_member_name));
httpServer.post('/yfs/applet/partymember/detsils', checkAppletToken, asyncHandler(party_detsils));
httpServer.post('/yfs/applet/partymember/add', checkAppletToken, asyncHandler(add_member));
}
......@@ -18,7 +20,7 @@ export function setRouter(httpServer) {
* @param req
* @param res
*/
async function getPartyMemberName(req, res) {
async function get_party_member_name(req, res) {
let reqConf = {bId:'Number', name:'String'};
let {bId, name} = eccReqParamater(reqConf, req.body, ["name"]);
......@@ -32,7 +34,7 @@ async function getPartyMemberName(req, res) {
* @param req
* @param res
*/
async function partyDetsils(req, res) {
async function party_detsils(req, res) {
let reqConf = {bId: 'Number', pmId: 'String'};
let {bId, pmId} = eccReqParamater(reqConf, req.body);
......@@ -41,6 +43,21 @@ async function partyDetsils(req, res) {
}
/**
* 添加
* @param req
* @param res
*/
async function add_member(req, res) {
let reqConf = {memberType: 'Number', param: 'Object'};
let {memberType, param} = eccReqParamater(reqConf, req.body);
let bId = req.headers.bId;
let result = await partyMemberBiz.addMember(bId, memberType, param);
res.success(result);
}
/**
* 小程序端 党员入口 党建质量指数 三级指标
* 小程序端
* 党建质量指数 三级指标
*/
import * as partyQualityBiz from '../../biz/partyQuality';
......@@ -9,7 +10,7 @@ import { checkAppletToken } from '../../middleware/user';
export function setRouter(httpServer) {
httpServer.post('/yfs/applet/partyquality/list', checkAppletToken, asyncHandler(getPartyQuality));
// httpServer.post('/yfs/applet/partyquality/detsils', asyncHandler(getPartyVanguardDetsils));
httpServer.post('/yfs/applet/partyquality/detsils', asyncHandler(getPartyVanguardDetsils));
}
......@@ -19,9 +20,7 @@ export function setRouter(httpServer) {
* @param res
*/
async function getPartyQuality(req, res) {
let reqConf = {bId:'Number'};
let {bId} = eccReqParamater(reqConf, req.body);
let bId = req.headers.bId;
let result = await partyQualityBiz.partyQualityList(bId);
res.success(result);
}
......@@ -32,13 +31,13 @@ async function getPartyQuality(req, res) {
* @param req
* @param res
*/
// async function getPartyVanguardDetsils(req, res) {
// let reqConf = {pvId:'Number'};
// let {pvId} = eccReqParamater(reqConf, req.body);
// let result = await partyQualityBiz.partyVanguardDetsils(pvId);
// res.success(result);
// }
async function getPartyVanguardDetsils(req, res) {
let reqConf = {qualityId:'Number'};
let {qualityId} = eccReqParamater(reqConf, req.body);
let bId = req.headers.bId;
let result = await partyQualityBiz.partyQualityInfo(bId, qualityId);
res.success(result);
}
......
/**
* 小程序端 党员入口 党建先锋
* 小程序端
* 党建先锋
*/
import * as partyVanguardBiz from '../../biz/partyVanguard';
......@@ -10,6 +11,7 @@ import { checkAppletToken } from '../../middleware/user';
export function setRouter(httpServer) {
httpServer.post('/yfs/applet/partyvanguard/list', checkAppletToken, asyncHandler(getPartyVanguard));
httpServer.post('/yfs/applet/partyvanguard/detsils', checkAppletToken, asyncHandler(getPartyVanguardDetsils));
httpServer.post('/yfs/applet/partyvanguard/add', checkAppletToken, asyncHandler(addPartyVanguardDetsils));
}
......@@ -19,9 +21,10 @@ export function setRouter(httpServer) {
* @param res
*/
async function getPartyVanguard(req, res) {
let reqConf = {bId:'Number', honorName:'String'};
let {bId, honorName} = eccReqParamater(reqConf, req.body, ["honorName"]);
let reqConf = { honorName:'String'};
let {honorName} = eccReqParamater(reqConf, req.body, ["honorName"]);
let bId = req.headers.bId;
let result = await partyVanguardBiz.partyVanguardList(bId, honorName);
res.success(result);
}
......@@ -43,3 +46,21 @@ async function getPartyVanguardDetsils(req, res) {
/**
* 党建先锋 添加荣誉详情
* @param req
* @param res
*/
async function addPartyVanguardDetsils(req, res) {
let reqConf = {param:'Object'};
let {param} = eccReqParamater(reqConf, req.body);
let bId = req.headers.bId;
let result = await partyVanguardBiz.addPartyVanguard(bId, param);
res.success(result);
}
......@@ -15,15 +15,44 @@ export function setRouter(httpServer) {
httpServer.post('/yfs/applet/public/degree', asyncHandler(degreeType));
httpServer.post('/yfs/applet/public/administrativeposition', asyncHandler(administrativePosition));
httpServer.post('/yfs/applet/public/department', asyncHandler(department));
httpServer.post('/yfs/applet/public/degreetype', asyncHandler(degreeType));
httpServer.post('/yfs/applet/public/honortype', asyncHandler(honorType));
httpServer.post('/yfs/applet/public/themetype', asyncHandler(themeType));
httpServer.post('/yfs/applet/public/paytype', asyncHandler(payType));
httpServer.post('/yfs/applet/public/paytime', asyncHandler(getPayTime));
httpServer.post('/yfs/applet/public/coursetype', asyncHandler(courseType));
httpServer.post('/yfs/applet/public/activitytype', asyncHandler(activityType));
httpServer.post('/yfs/applet/public/grantingrange', asyncHandler(grantingRange));
httpServer.post('/yfs/applet/public/personhonortype', asyncHandler(personhonortype));
}
function personhonortype(req, res) {
let dataList = getEnumList(configEnum.PERSONHONORTYPE);
res.success(dataList);
}
function grantingRange(req, res) {
let dataList = getEnumList(configEnum.GRANTINGRANGE);
res.success(dataList);
}
/**
*
* @param req
* @param res
*/
function activityType(req, res) {
let dataList = getEnumList(configEnum.ACTIVITIESTYPE);
res.success(dataList);
}
/**
* 党内职务
......@@ -195,7 +224,7 @@ export function payTime() {
for(let i = nowYear; i >= smallYear; i--) {
yearList.push(i);
let yearmonth = [];
for(let m = 1; m <= 12; m++){
for(let m = 12; m >= 1; m--){
yearmonth.push(m);
}
monthList.push(yearmonth);
......
......@@ -145,7 +145,7 @@ async function initPartyMember() {
if (i == 2 && item) {
value = moment(item).format("YYYY-MM-DD");
}
if (i ==3) {
if (i ==3 ) {
let itemStr = `${item}`;
if(!addDataInfo.pmId) addDataInfo.pmId = md5PwdStr(itemStr.slice(itemStr.length-6));
if(!addDataInfo.pwd) addDataInfo.pwd = md5PwdStr(itemStr.slice(itemStr.length-6));
......
......@@ -166,4 +166,9 @@ export function getSMSCode() {
code += Math.floor(Math.random() * 10)
}
return code;
}
\ No newline at end of file
}
export function getRandomId(str) {
return md5(`${str}${new Date().valueOf()}${Math.ceil(Math.random()*1000000)}`);
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment