commit
62a3603890
8 changed files with 1235 additions and 0 deletions
@ -0,0 +1,3 @@ |
|||||||
|
node_modules |
||||||
|
dist |
||||||
|
.idea |
@ -0,0 +1,20 @@ |
|||||||
|
import Operation from '../services/operation.js' |
||||||
|
import cron from 'node-cron' |
||||||
|
|
||||||
|
const operation = new Operation() |
||||||
|
|
||||||
|
export default function (fastify, opts, done) { |
||||||
|
cron.schedule(`00 00 07 * * *`, async () => { |
||||||
|
await operation.sanaEnter(fastify.req, fastify.reply) |
||||||
|
}); |
||||||
|
|
||||||
|
cron.schedule(`00 00 16 * * *`, async () => { |
||||||
|
await operation.sanaExit(fastify.req, fastify.reply) |
||||||
|
}); |
||||||
|
|
||||||
|
fastify.get('/enter', operation.sanaEnter()); |
||||||
|
|
||||||
|
fastify.get('/exit', operation.sanaExit()); |
||||||
|
|
||||||
|
done(); |
||||||
|
}; |
@ -0,0 +1,46 @@ |
|||||||
|
import { InternalServerErrorException } from '@nestjs/common'; |
||||||
|
import Redis from 'ioredis' |
||||||
|
|
||||||
|
class RedisService { |
||||||
|
constructor(redisPort, redisHost) { |
||||||
|
if (RedisService.instance) |
||||||
|
return RedisService.instance |
||||||
|
|
||||||
|
this.redis = new Redis({ |
||||||
|
port: redisPort, |
||||||
|
host: redisHost, |
||||||
|
}); |
||||||
|
|
||||||
|
RedisService.instance = this |
||||||
|
|
||||||
|
Object.freeze(this) |
||||||
|
} |
||||||
|
|
||||||
|
async setex(key, expiry, value) { |
||||||
|
try { |
||||||
|
this.redis.setex(key, expiry, value); |
||||||
|
} catch (err) { |
||||||
|
throw new InternalServerErrorException(err) |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
async set(key, value) { |
||||||
|
try { |
||||||
|
this.redis.set(key, value); |
||||||
|
} catch (err) { |
||||||
|
throw new InternalServerErrorException(err) |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
async get(key) { |
||||||
|
try { |
||||||
|
return this.redis.get(key); |
||||||
|
} catch (err) { |
||||||
|
throw new InternalServerErrorException(err) |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
const redis = new RedisService(6379, 'localhost') |
||||||
|
|
||||||
|
export default redis |
@ -0,0 +1,992 @@ |
|||||||
|
{ |
||||||
|
"name": "sanarollcall", |
||||||
|
"version": "1.0.0", |
||||||
|
"lockfileVersion": 3, |
||||||
|
"requires": true, |
||||||
|
"packages": { |
||||||
|
"": { |
||||||
|
"name": "sanarollcall", |
||||||
|
"version": "1.0.0", |
||||||
|
"license": "ISC", |
||||||
|
"dependencies": { |
||||||
|
"@nestjs/common": "^11.0.13", |
||||||
|
"async": "^3.2.6", |
||||||
|
"axios": "^1.8.4", |
||||||
|
"fastify": "^5.2.2", |
||||||
|
"form-data": "^4.0.2", |
||||||
|
"ioredis": "^5.6.0", |
||||||
|
"lodash": "^4.17.21", |
||||||
|
"node-cron": "^3.0.3" |
||||||
|
} |
||||||
|
}, |
||||||
|
"node_modules/@fastify/ajv-compiler": { |
||||||
|
"version": "4.0.2", |
||||||
|
"resolved": "https://registry.npmjs.org/@fastify/ajv-compiler/-/ajv-compiler-4.0.2.tgz", |
||||||
|
"integrity": "sha512-Rkiu/8wIjpsf46Rr+Fitd3HRP+VsxUFDDeag0hs9L0ksfnwx2g7SPQQTFL0E8Qv+rfXzQOxBJnjUB9ITUDjfWQ==", |
||||||
|
"funding": [ |
||||||
|
{ |
||||||
|
"type": "github", |
||||||
|
"url": "https://github.com/sponsors/fastify" |
||||||
|
}, |
||||||
|
{ |
||||||
|
"type": "opencollective", |
||||||
|
"url": "https://opencollective.com/fastify" |
||||||
|
} |
||||||
|
], |
||||||
|
"dependencies": { |
||||||
|
"ajv": "^8.12.0", |
||||||
|
"ajv-formats": "^3.0.1", |
||||||
|
"fast-uri": "^3.0.0" |
||||||
|
} |
||||||
|
}, |
||||||
|
"node_modules/@fastify/error": { |
||||||
|
"version": "4.1.0", |
||||||
|
"resolved": "https://registry.npmjs.org/@fastify/error/-/error-4.1.0.tgz", |
||||||
|
"integrity": "sha512-KeFcciOr1eo/YvIXHP65S94jfEEqn1RxTRBT1aJaHxY5FK0/GDXYozsQMMWlZoHgi8i0s+YtrLsgj/JkUUjSkQ==", |
||||||
|
"funding": [ |
||||||
|
{ |
||||||
|
"type": "github", |
||||||
|
"url": "https://github.com/sponsors/fastify" |
||||||
|
}, |
||||||
|
{ |
||||||
|
"type": "opencollective", |
||||||
|
"url": "https://opencollective.com/fastify" |
||||||
|
} |
||||||
|
] |
||||||
|
}, |
||||||
|
"node_modules/@fastify/fast-json-stringify-compiler": { |
||||||
|
"version": "5.0.2", |
||||||
|
"resolved": "https://registry.npmjs.org/@fastify/fast-json-stringify-compiler/-/fast-json-stringify-compiler-5.0.2.tgz", |
||||||
|
"integrity": "sha512-YdR7gqlLg1xZAQa+SX4sMNzQHY5pC54fu9oC5aYSUqBhyn6fkLkrdtKlpVdCNPlwuUuXA1PjFTEmvMF6ZVXVGw==", |
||||||
|
"funding": [ |
||||||
|
{ |
||||||
|
"type": "github", |
||||||
|
"url": "https://github.com/sponsors/fastify" |
||||||
|
}, |
||||||
|
{ |
||||||
|
"type": "opencollective", |
||||||
|
"url": "https://opencollective.com/fastify" |
||||||
|
} |
||||||
|
], |
||||||
|
"dependencies": { |
||||||
|
"fast-json-stringify": "^6.0.0" |
||||||
|
} |
||||||
|
}, |
||||||
|
"node_modules/@fastify/forwarded": { |
||||||
|
"version": "3.0.0", |
||||||
|
"resolved": "https://registry.npmjs.org/@fastify/forwarded/-/forwarded-3.0.0.tgz", |
||||||
|
"integrity": "sha512-kJExsp4JCms7ipzg7SJ3y8DwmePaELHxKYtg+tZow+k0znUTf3cb+npgyqm8+ATZOdmfgfydIebPDWM172wfyA==" |
||||||
|
}, |
||||||
|
"node_modules/@fastify/merge-json-schemas": { |
||||||
|
"version": "0.2.1", |
||||||
|
"resolved": "https://registry.npmjs.org/@fastify/merge-json-schemas/-/merge-json-schemas-0.2.1.tgz", |
||||||
|
"integrity": "sha512-OA3KGBCy6KtIvLf8DINC5880o5iBlDX4SxzLQS8HorJAbqluzLRn80UXU0bxZn7UOFhFgpRJDasfwn9nG4FG4A==", |
||||||
|
"funding": [ |
||||||
|
{ |
||||||
|
"type": "github", |
||||||
|
"url": "https://github.com/sponsors/fastify" |
||||||
|
}, |
||||||
|
{ |
||||||
|
"type": "opencollective", |
||||||
|
"url": "https://opencollective.com/fastify" |
||||||
|
} |
||||||
|
], |
||||||
|
"dependencies": { |
||||||
|
"dequal": "^2.0.3" |
||||||
|
} |
||||||
|
}, |
||||||
|
"node_modules/@fastify/proxy-addr": { |
||||||
|
"version": "5.0.0", |
||||||
|
"resolved": "https://registry.npmjs.org/@fastify/proxy-addr/-/proxy-addr-5.0.0.tgz", |
||||||
|
"integrity": "sha512-37qVVA1qZ5sgH7KpHkkC4z9SK6StIsIcOmpjvMPXNb3vx2GQxhZocogVYbr2PbbeLCQxYIPDok307xEvRZOzGA==", |
||||||
|
"dependencies": { |
||||||
|
"@fastify/forwarded": "^3.0.0", |
||||||
|
"ipaddr.js": "^2.1.0" |
||||||
|
} |
||||||
|
}, |
||||||
|
"node_modules/@ioredis/commands": { |
||||||
|
"version": "1.2.0", |
||||||
|
"resolved": "https://registry.npmjs.org/@ioredis/commands/-/commands-1.2.0.tgz", |
||||||
|
"integrity": "sha512-Sx1pU8EM64o2BrqNpEO1CNLtKQwyhuXuqyfH7oGKCk+1a33d2r5saW8zNwm3j6BTExtjrv2BxTgzzkMwts6vGg==" |
||||||
|
}, |
||||||
|
"node_modules/@lukeed/csprng": { |
||||||
|
"version": "1.1.0", |
||||||
|
"resolved": "https://registry.npmjs.org/@lukeed/csprng/-/csprng-1.1.0.tgz", |
||||||
|
"integrity": "sha512-Z7C/xXCiGWsg0KuKsHTKJxbWhpI3Vs5GwLfOean7MGyVFGqdRgBbAjOCh6u4bbjPc/8MJ2pZmK/0DLdCbivLDA==", |
||||||
|
"engines": { |
||||||
|
"node": ">=8" |
||||||
|
} |
||||||
|
}, |
||||||
|
"node_modules/@nestjs/common": { |
||||||
|
"version": "11.0.13", |
||||||
|
"resolved": "https://registry.npmjs.org/@nestjs/common/-/common-11.0.13.tgz", |
||||||
|
"integrity": "sha512-cXqXJPQTcJIYqT8GtBYqjYY9sklCBqp/rh9z1R40E60gWnsU598YIQWkojSFRI9G7lT/+uF+jqSrg/CMPBk7QQ==", |
||||||
|
"dependencies": { |
||||||
|
"iterare": "1.2.1", |
||||||
|
"tslib": "2.8.1", |
||||||
|
"uid": "2.0.2" |
||||||
|
}, |
||||||
|
"funding": { |
||||||
|
"type": "opencollective", |
||||||
|
"url": "https://opencollective.com/nest" |
||||||
|
}, |
||||||
|
"peerDependencies": { |
||||||
|
"class-transformer": "*", |
||||||
|
"class-validator": "*", |
||||||
|
"reflect-metadata": "^0.1.12 || ^0.2.0", |
||||||
|
"rxjs": "^7.1.0" |
||||||
|
}, |
||||||
|
"peerDependenciesMeta": { |
||||||
|
"class-transformer": { |
||||||
|
"optional": true |
||||||
|
}, |
||||||
|
"class-validator": { |
||||||
|
"optional": true |
||||||
|
} |
||||||
|
} |
||||||
|
}, |
||||||
|
"node_modules/abstract-logging": { |
||||||
|
"version": "2.0.1", |
||||||
|
"resolved": "https://registry.npmjs.org/abstract-logging/-/abstract-logging-2.0.1.tgz", |
||||||
|
"integrity": "sha512-2BjRTZxTPvheOvGbBslFSYOUkr+SjPtOnrLP33f+VIWLzezQpZcqVg7ja3L4dBXmzzgwT+a029jRx5PCi3JuiA==" |
||||||
|
}, |
||||||
|
"node_modules/ajv": { |
||||||
|
"version": "8.17.1", |
||||||
|
"resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", |
||||||
|
"integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", |
||||||
|
"dependencies": { |
||||||
|
"fast-deep-equal": "^3.1.3", |
||||||
|
"fast-uri": "^3.0.1", |
||||||
|
"json-schema-traverse": "^1.0.0", |
||||||
|
"require-from-string": "^2.0.2" |
||||||
|
}, |
||||||
|
"funding": { |
||||||
|
"type": "github", |
||||||
|
"url": "https://github.com/sponsors/epoberezkin" |
||||||
|
} |
||||||
|
}, |
||||||
|
"node_modules/ajv-formats": { |
||||||
|
"version": "3.0.1", |
||||||
|
"resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-3.0.1.tgz", |
||||||
|
"integrity": "sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==", |
||||||
|
"dependencies": { |
||||||
|
"ajv": "^8.0.0" |
||||||
|
}, |
||||||
|
"peerDependencies": { |
||||||
|
"ajv": "^8.0.0" |
||||||
|
}, |
||||||
|
"peerDependenciesMeta": { |
||||||
|
"ajv": { |
||||||
|
"optional": true |
||||||
|
} |
||||||
|
} |
||||||
|
}, |
||||||
|
"node_modules/async": { |
||||||
|
"version": "3.2.6", |
||||||
|
"resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz", |
||||||
|
"integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==" |
||||||
|
}, |
||||||
|
"node_modules/asynckit": { |
||||||
|
"version": "0.4.0", |
||||||
|
"resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", |
||||||
|
"integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" |
||||||
|
}, |
||||||
|
"node_modules/atomic-sleep": { |
||||||
|
"version": "1.0.0", |
||||||
|
"resolved": "https://registry.npmjs.org/atomic-sleep/-/atomic-sleep-1.0.0.tgz", |
||||||
|
"integrity": "sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==", |
||||||
|
"engines": { |
||||||
|
"node": ">=8.0.0" |
||||||
|
} |
||||||
|
}, |
||||||
|
"node_modules/avvio": { |
||||||
|
"version": "9.1.0", |
||||||
|
"resolved": "https://registry.npmjs.org/avvio/-/avvio-9.1.0.tgz", |
||||||
|
"integrity": "sha512-fYASnYi600CsH/j9EQov7lECAniYiBFiiAtBNuZYLA2leLe9qOvZzqYHFjtIj6gD2VMoMLP14834LFWvr4IfDw==", |
||||||
|
"dependencies": { |
||||||
|
"@fastify/error": "^4.0.0", |
||||||
|
"fastq": "^1.17.1" |
||||||
|
} |
||||||
|
}, |
||||||
|
"node_modules/axios": { |
||||||
|
"version": "1.8.4", |
||||||
|
"resolved": "https://registry.npmjs.org/axios/-/axios-1.8.4.tgz", |
||||||
|
"integrity": "sha512-eBSYY4Y68NNlHbHBMdeDmKNtDgXWhQsJcGqzO3iLUM0GraQFSS9cVgPX5I9b3lbdFKyYoAEGAZF1DwhTaljNAw==", |
||||||
|
"dependencies": { |
||||||
|
"follow-redirects": "^1.15.6", |
||||||
|
"form-data": "^4.0.0", |
||||||
|
"proxy-from-env": "^1.1.0" |
||||||
|
} |
||||||
|
}, |
||||||
|
"node_modules/call-bind-apply-helpers": { |
||||||
|
"version": "1.0.2", |
||||||
|
"resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", |
||||||
|
"integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", |
||||||
|
"dependencies": { |
||||||
|
"es-errors": "^1.3.0", |
||||||
|
"function-bind": "^1.1.2" |
||||||
|
}, |
||||||
|
"engines": { |
||||||
|
"node": ">= 0.4" |
||||||
|
} |
||||||
|
}, |
||||||
|
"node_modules/cluster-key-slot": { |
||||||
|
"version": "1.1.2", |
||||||
|
"resolved": "https://registry.npmjs.org/cluster-key-slot/-/cluster-key-slot-1.1.2.tgz", |
||||||
|
"integrity": "sha512-RMr0FhtfXemyinomL4hrWcYJxmX6deFdCxpJzhDttxgO1+bcCnkk+9drydLVDmAMG7NE6aN/fl4F7ucU/90gAA==", |
||||||
|
"engines": { |
||||||
|
"node": ">=0.10.0" |
||||||
|
} |
||||||
|
}, |
||||||
|
"node_modules/combined-stream": { |
||||||
|
"version": "1.0.8", |
||||||
|
"resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", |
||||||
|
"integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", |
||||||
|
"dependencies": { |
||||||
|
"delayed-stream": "~1.0.0" |
||||||
|
}, |
||||||
|
"engines": { |
||||||
|
"node": ">= 0.8" |
||||||
|
} |
||||||
|
}, |
||||||
|
"node_modules/cookie": { |
||||||
|
"version": "1.0.2", |
||||||
|
"resolved": "https://registry.npmjs.org/cookie/-/cookie-1.0.2.tgz", |
||||||
|
"integrity": "sha512-9Kr/j4O16ISv8zBBhJoi4bXOYNTkFLOqSL3UDB0njXxCXNezjeyVrJyGOWtgfs/q2km1gwBcfH8q1yEGoMYunA==", |
||||||
|
"engines": { |
||||||
|
"node": ">=18" |
||||||
|
} |
||||||
|
}, |
||||||
|
"node_modules/debug": { |
||||||
|
"version": "4.4.0", |
||||||
|
"resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", |
||||||
|
"integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", |
||||||
|
"dependencies": { |
||||||
|
"ms": "^2.1.3" |
||||||
|
}, |
||||||
|
"engines": { |
||||||
|
"node": ">=6.0" |
||||||
|
}, |
||||||
|
"peerDependenciesMeta": { |
||||||
|
"supports-color": { |
||||||
|
"optional": true |
||||||
|
} |
||||||
|
} |
||||||
|
}, |
||||||
|
"node_modules/delayed-stream": { |
||||||
|
"version": "1.0.0", |
||||||
|
"resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", |
||||||
|
"integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", |
||||||
|
"engines": { |
||||||
|
"node": ">=0.4.0" |
||||||
|
} |
||||||
|
}, |
||||||
|
"node_modules/denque": { |
||||||
|
"version": "2.1.0", |
||||||
|
"resolved": "https://registry.npmjs.org/denque/-/denque-2.1.0.tgz", |
||||||
|
"integrity": "sha512-HVQE3AAb/pxF8fQAoiqpvg9i3evqug3hoiwakOyZAwJm+6vZehbkYXZ0l4JxS+I3QxM97v5aaRNhj8v5oBhekw==", |
||||||
|
"engines": { |
||||||
|
"node": ">=0.10" |
||||||
|
} |
||||||
|
}, |
||||||
|
"node_modules/dequal": { |
||||||
|
"version": "2.0.3", |
||||||
|
"resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", |
||||||
|
"integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", |
||||||
|
"engines": { |
||||||
|
"node": ">=6" |
||||||
|
} |
||||||
|
}, |
||||||
|
"node_modules/dunder-proto": { |
||||||
|
"version": "1.0.1", |
||||||
|
"resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", |
||||||
|
"integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", |
||||||
|
"dependencies": { |
||||||
|
"call-bind-apply-helpers": "^1.0.1", |
||||||
|
"es-errors": "^1.3.0", |
||||||
|
"gopd": "^1.2.0" |
||||||
|
}, |
||||||
|
"engines": { |
||||||
|
"node": ">= 0.4" |
||||||
|
} |
||||||
|
}, |
||||||
|
"node_modules/es-define-property": { |
||||||
|
"version": "1.0.1", |
||||||
|
"resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", |
||||||
|
"integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", |
||||||
|
"engines": { |
||||||
|
"node": ">= 0.4" |
||||||
|
} |
||||||
|
}, |
||||||
|
"node_modules/es-errors": { |
||||||
|
"version": "1.3.0", |
||||||
|
"resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", |
||||||
|
"integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", |
||||||
|
"engines": { |
||||||
|
"node": ">= 0.4" |
||||||
|
} |
||||||
|
}, |
||||||
|
"node_modules/es-object-atoms": { |
||||||
|
"version": "1.1.1", |
||||||
|
"resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", |
||||||
|
"integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", |
||||||
|
"dependencies": { |
||||||
|
"es-errors": "^1.3.0" |
||||||
|
}, |
||||||
|
"engines": { |
||||||
|
"node": ">= 0.4" |
||||||
|
} |
||||||
|
}, |
||||||
|
"node_modules/es-set-tostringtag": { |
||||||
|
"version": "2.1.0", |
||||||
|
"resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", |
||||||
|
"integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", |
||||||
|
"dependencies": { |
||||||
|
"es-errors": "^1.3.0", |
||||||
|
"get-intrinsic": "^1.2.6", |
||||||
|
"has-tostringtag": "^1.0.2", |
||||||
|
"hasown": "^2.0.2" |
||||||
|
}, |
||||||
|
"engines": { |
||||||
|
"node": ">= 0.4" |
||||||
|
} |
||||||
|
}, |
||||||
|
"node_modules/fast-decode-uri-component": { |
||||||
|
"version": "1.0.1", |
||||||
|
"resolved": "https://registry.npmjs.org/fast-decode-uri-component/-/fast-decode-uri-component-1.0.1.tgz", |
||||||
|
"integrity": "sha512-WKgKWg5eUxvRZGwW8FvfbaH7AXSh2cL+3j5fMGzUMCxWBJ3dV3a7Wz8y2f/uQ0e3B6WmodD3oS54jTQ9HVTIIg==" |
||||||
|
}, |
||||||
|
"node_modules/fast-deep-equal": { |
||||||
|
"version": "3.1.3", |
||||||
|
"resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", |
||||||
|
"integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" |
||||||
|
}, |
||||||
|
"node_modules/fast-json-stringify": { |
||||||
|
"version": "6.0.1", |
||||||
|
"resolved": "https://registry.npmjs.org/fast-json-stringify/-/fast-json-stringify-6.0.1.tgz", |
||||||
|
"integrity": "sha512-s7SJE83QKBZwg54dIbD5rCtzOBVD43V1ReWXXYqBgwCwHLYAAT0RQc/FmrQglXqWPpz6omtryJQOau5jI4Nrvg==", |
||||||
|
"funding": [ |
||||||
|
{ |
||||||
|
"type": "github", |
||||||
|
"url": "https://github.com/sponsors/fastify" |
||||||
|
}, |
||||||
|
{ |
||||||
|
"type": "opencollective", |
||||||
|
"url": "https://opencollective.com/fastify" |
||||||
|
} |
||||||
|
], |
||||||
|
"dependencies": { |
||||||
|
"@fastify/merge-json-schemas": "^0.2.0", |
||||||
|
"ajv": "^8.12.0", |
||||||
|
"ajv-formats": "^3.0.1", |
||||||
|
"fast-uri": "^3.0.0", |
||||||
|
"json-schema-ref-resolver": "^2.0.0", |
||||||
|
"rfdc": "^1.2.0" |
||||||
|
} |
||||||
|
}, |
||||||
|
"node_modules/fast-querystring": { |
||||||
|
"version": "1.1.2", |
||||||
|
"resolved": "https://registry.npmjs.org/fast-querystring/-/fast-querystring-1.1.2.tgz", |
||||||
|
"integrity": "sha512-g6KuKWmFXc0fID8WWH0jit4g0AGBoJhCkJMb1RmbsSEUNvQ+ZC8D6CUZ+GtF8nMzSPXnhiePyyqqipzNNEnHjg==", |
||||||
|
"dependencies": { |
||||||
|
"fast-decode-uri-component": "^1.0.1" |
||||||
|
} |
||||||
|
}, |
||||||
|
"node_modules/fast-redact": { |
||||||
|
"version": "3.5.0", |
||||||
|
"resolved": "https://registry.npmjs.org/fast-redact/-/fast-redact-3.5.0.tgz", |
||||||
|
"integrity": "sha512-dwsoQlS7h9hMeYUq1W++23NDcBLV4KqONnITDV9DjfS3q1SgDGVrBdvvTLUotWtPSD7asWDV9/CmsZPy8Hf70A==", |
||||||
|
"engines": { |
||||||
|
"node": ">=6" |
||||||
|
} |
||||||
|
}, |
||||||
|
"node_modules/fast-uri": { |
||||||
|
"version": "3.0.6", |
||||||
|
"resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.6.tgz", |
||||||
|
"integrity": "sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw==", |
||||||
|
"funding": [ |
||||||
|
{ |
||||||
|
"type": "github", |
||||||
|
"url": "https://github.com/sponsors/fastify" |
||||||
|
}, |
||||||
|
{ |
||||||
|
"type": "opencollective", |
||||||
|
"url": "https://opencollective.com/fastify" |
||||||
|
} |
||||||
|
] |
||||||
|
}, |
||||||
|
"node_modules/fastify": { |
||||||
|
"version": "5.2.2", |
||||||
|
"resolved": "https://registry.npmjs.org/fastify/-/fastify-5.2.2.tgz", |
||||||
|
"integrity": "sha512-22T/PnhquWozuFXg3Ish4md5ipsF1Nx1mJ9ulLdZPXSk14WFj/wMlyNB/yll9sQOojKRgOIxT2inK3Xpjg5hyw==", |
||||||
|
"funding": [ |
||||||
|
{ |
||||||
|
"type": "github", |
||||||
|
"url": "https://github.com/sponsors/fastify" |
||||||
|
}, |
||||||
|
{ |
||||||
|
"type": "opencollective", |
||||||
|
"url": "https://opencollective.com/fastify" |
||||||
|
} |
||||||
|
], |
||||||
|
"dependencies": { |
||||||
|
"@fastify/ajv-compiler": "^4.0.0", |
||||||
|
"@fastify/error": "^4.0.0", |
||||||
|
"@fastify/fast-json-stringify-compiler": "^5.0.0", |
||||||
|
"@fastify/proxy-addr": "^5.0.0", |
||||||
|
"abstract-logging": "^2.0.1", |
||||||
|
"avvio": "^9.0.0", |
||||||
|
"fast-json-stringify": "^6.0.0", |
||||||
|
"find-my-way": "^9.0.0", |
||||||
|
"light-my-request": "^6.0.0", |
||||||
|
"pino": "^9.0.0", |
||||||
|
"process-warning": "^4.0.0", |
||||||
|
"rfdc": "^1.3.1", |
||||||
|
"secure-json-parse": "^3.0.1", |
||||||
|
"semver": "^7.6.0", |
||||||
|
"toad-cache": "^3.7.0" |
||||||
|
} |
||||||
|
}, |
||||||
|
"node_modules/fastq": { |
||||||
|
"version": "1.19.1", |
||||||
|
"resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz", |
||||||
|
"integrity": "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==", |
||||||
|
"dependencies": { |
||||||
|
"reusify": "^1.0.4" |
||||||
|
} |
||||||
|
}, |
||||||
|
"node_modules/find-my-way": { |
||||||
|
"version": "9.3.0", |
||||||
|
"resolved": "https://registry.npmjs.org/find-my-way/-/find-my-way-9.3.0.tgz", |
||||||
|
"integrity": "sha512-eRoFWQw+Yv2tuYlK2pjFS2jGXSxSppAs3hSQjfxVKxM5amECzIgYYc1FEI8ZmhSh/Ig+FrKEz43NLRKJjYCZVg==", |
||||||
|
"dependencies": { |
||||||
|
"fast-deep-equal": "^3.1.3", |
||||||
|
"fast-querystring": "^1.0.0", |
||||||
|
"safe-regex2": "^5.0.0" |
||||||
|
}, |
||||||
|
"engines": { |
||||||
|
"node": ">=20" |
||||||
|
} |
||||||
|
}, |
||||||
|
"node_modules/follow-redirects": { |
||||||
|
"version": "1.15.9", |
||||||
|
"resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz", |
||||||
|
"integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==", |
||||||
|
"funding": [ |
||||||
|
{ |
||||||
|
"type": "individual", |
||||||
|
"url": "https://github.com/sponsors/RubenVerborgh" |
||||||
|
} |
||||||
|
], |
||||||
|
"engines": { |
||||||
|
"node": ">=4.0" |
||||||
|
}, |
||||||
|
"peerDependenciesMeta": { |
||||||
|
"debug": { |
||||||
|
"optional": true |
||||||
|
} |
||||||
|
} |
||||||
|
}, |
||||||
|
"node_modules/form-data": { |
||||||
|
"version": "4.0.2", |
||||||
|
"resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.2.tgz", |
||||||
|
"integrity": "sha512-hGfm/slu0ZabnNt4oaRZ6uREyfCj6P4fT/n6A1rGV+Z0VdGXjfOhVUpkn6qVQONHGIFwmveGXyDs75+nr6FM8w==", |
||||||
|
"dependencies": { |
||||||
|
"asynckit": "^0.4.0", |
||||||
|
"combined-stream": "^1.0.8", |
||||||
|
"es-set-tostringtag": "^2.1.0", |
||||||
|
"mime-types": "^2.1.12" |
||||||
|
}, |
||||||
|
"engines": { |
||||||
|
"node": ">= 6" |
||||||
|
} |
||||||
|
}, |
||||||
|
"node_modules/function-bind": { |
||||||
|
"version": "1.1.2", |
||||||
|
"resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", |
||||||
|
"integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", |
||||||
|
"funding": { |
||||||
|
"url": "https://github.com/sponsors/ljharb" |
||||||
|
} |
||||||
|
}, |
||||||
|
"node_modules/get-intrinsic": { |
||||||
|
"version": "1.3.0", |
||||||
|
"resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", |
||||||
|
"integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", |
||||||
|
"dependencies": { |
||||||
|
"call-bind-apply-helpers": "^1.0.2", |
||||||
|
"es-define-property": "^1.0.1", |
||||||
|
"es-errors": "^1.3.0", |
||||||
|
"es-object-atoms": "^1.1.1", |
||||||
|
"function-bind": "^1.1.2", |
||||||
|
"get-proto": "^1.0.1", |
||||||
|
"gopd": "^1.2.0", |
||||||
|
"has-symbols": "^1.1.0", |
||||||
|
"hasown": "^2.0.2", |
||||||
|
"math-intrinsics": "^1.1.0" |
||||||
|
}, |
||||||
|
"engines": { |
||||||
|
"node": ">= 0.4" |
||||||
|
}, |
||||||
|
"funding": { |
||||||
|
"url": "https://github.com/sponsors/ljharb" |
||||||
|
} |
||||||
|
}, |
||||||
|
"node_modules/get-proto": { |
||||||
|
"version": "1.0.1", |
||||||
|
"resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", |
||||||
|
"integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", |
||||||
|
"dependencies": { |
||||||
|
"dunder-proto": "^1.0.1", |
||||||
|
"es-object-atoms": "^1.0.0" |
||||||
|
}, |
||||||
|
"engines": { |
||||||
|
"node": ">= 0.4" |
||||||
|
} |
||||||
|
}, |
||||||
|
"node_modules/gopd": { |
||||||
|
"version": "1.2.0", |
||||||
|
"resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", |
||||||
|
"integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", |
||||||
|
"engines": { |
||||||
|
"node": ">= 0.4" |
||||||
|
}, |
||||||
|
"funding": { |
||||||
|
"url": "https://github.com/sponsors/ljharb" |
||||||
|
} |
||||||
|
}, |
||||||
|
"node_modules/has-symbols": { |
||||||
|
"version": "1.1.0", |
||||||
|
"resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", |
||||||
|
"integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", |
||||||
|
"engines": { |
||||||
|
"node": ">= 0.4" |
||||||
|
}, |
||||||
|
"funding": { |
||||||
|
"url": "https://github.com/sponsors/ljharb" |
||||||
|
} |
||||||
|
}, |
||||||
|
"node_modules/has-tostringtag": { |
||||||
|
"version": "1.0.2", |
||||||
|
"resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", |
||||||
|
"integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", |
||||||
|
"dependencies": { |
||||||
|
"has-symbols": "^1.0.3" |
||||||
|
}, |
||||||
|
"engines": { |
||||||
|
"node": ">= 0.4" |
||||||
|
}, |
||||||
|
"funding": { |
||||||
|
"url": "https://github.com/sponsors/ljharb" |
||||||
|
} |
||||||
|
}, |
||||||
|
"node_modules/hasown": { |
||||||
|
"version": "2.0.2", |
||||||
|
"resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", |
||||||
|
"integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", |
||||||
|
"dependencies": { |
||||||
|
"function-bind": "^1.1.2" |
||||||
|
}, |
||||||
|
"engines": { |
||||||
|
"node": ">= 0.4" |
||||||
|
} |
||||||
|
}, |
||||||
|
"node_modules/ioredis": { |
||||||
|
"version": "5.6.0", |
||||||
|
"resolved": "https://registry.npmjs.org/ioredis/-/ioredis-5.6.0.tgz", |
||||||
|
"integrity": "sha512-tBZlIIWbndeWBWCXWZiqtOF/yxf6yZX3tAlTJ7nfo5jhd6dctNxF7QnYlZLZ1a0o0pDoen7CgZqO+zjNaFbJAg==", |
||||||
|
"dependencies": { |
||||||
|
"@ioredis/commands": "^1.1.1", |
||||||
|
"cluster-key-slot": "^1.1.0", |
||||||
|
"debug": "^4.3.4", |
||||||
|
"denque": "^2.1.0", |
||||||
|
"lodash.defaults": "^4.2.0", |
||||||
|
"lodash.isarguments": "^3.1.0", |
||||||
|
"redis-errors": "^1.2.0", |
||||||
|
"redis-parser": "^3.0.0", |
||||||
|
"standard-as-callback": "^2.1.0" |
||||||
|
}, |
||||||
|
"engines": { |
||||||
|
"node": ">=12.22.0" |
||||||
|
}, |
||||||
|
"funding": { |
||||||
|
"type": "opencollective", |
||||||
|
"url": "https://opencollective.com/ioredis" |
||||||
|
} |
||||||
|
}, |
||||||
|
"node_modules/ipaddr.js": { |
||||||
|
"version": "2.2.0", |
||||||
|
"resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.2.0.tgz", |
||||||
|
"integrity": "sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA==", |
||||||
|
"engines": { |
||||||
|
"node": ">= 10" |
||||||
|
} |
||||||
|
}, |
||||||
|
"node_modules/iterare": { |
||||||
|
"version": "1.2.1", |
||||||
|
"resolved": "https://registry.npmjs.org/iterare/-/iterare-1.2.1.tgz", |
||||||
|
"integrity": "sha512-RKYVTCjAnRthyJes037NX/IiqeidgN1xc3j1RjFfECFp28A1GVwK9nA+i0rJPaHqSZwygLzRnFlzUuHFoWWy+Q==", |
||||||
|
"engines": { |
||||||
|
"node": ">=6" |
||||||
|
} |
||||||
|
}, |
||||||
|
"node_modules/json-schema-ref-resolver": { |
||||||
|
"version": "2.0.1", |
||||||
|
"resolved": "https://registry.npmjs.org/json-schema-ref-resolver/-/json-schema-ref-resolver-2.0.1.tgz", |
||||||
|
"integrity": "sha512-HG0SIB9X4J8bwbxCbnd5FfPEbcXAJYTi1pBJeP/QPON+w8ovSME8iRG+ElHNxZNX2Qh6eYn1GdzJFS4cDFfx0Q==", |
||||||
|
"funding": [ |
||||||
|
{ |
||||||
|
"type": "github", |
||||||
|
"url": "https://github.com/sponsors/fastify" |
||||||
|
}, |
||||||
|
{ |
||||||
|
"type": "opencollective", |
||||||
|
"url": "https://opencollective.com/fastify" |
||||||
|
} |
||||||
|
], |
||||||
|
"dependencies": { |
||||||
|
"dequal": "^2.0.3" |
||||||
|
} |
||||||
|
}, |
||||||
|
"node_modules/json-schema-traverse": { |
||||||
|
"version": "1.0.0", |
||||||
|
"resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", |
||||||
|
"integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" |
||||||
|
}, |
||||||
|
"node_modules/light-my-request": { |
||||||
|
"version": "6.6.0", |
||||||
|
"resolved": "https://registry.npmjs.org/light-my-request/-/light-my-request-6.6.0.tgz", |
||||||
|
"integrity": "sha512-CHYbu8RtboSIoVsHZ6Ye4cj4Aw/yg2oAFimlF7mNvfDV192LR7nDiKtSIfCuLT7KokPSTn/9kfVLm5OGN0A28A==", |
||||||
|
"funding": [ |
||||||
|
{ |
||||||
|
"type": "github", |
||||||
|
"url": "https://github.com/sponsors/fastify" |
||||||
|
}, |
||||||
|
{ |
||||||
|
"type": "opencollective", |
||||||
|
"url": "https://opencollective.com/fastify" |
||||||
|
} |
||||||
|
], |
||||||
|
"dependencies": { |
||||||
|
"cookie": "^1.0.1", |
||||||
|
"process-warning": "^4.0.0", |
||||||
|
"set-cookie-parser": "^2.6.0" |
||||||
|
} |
||||||
|
}, |
||||||
|
"node_modules/lodash": { |
||||||
|
"version": "4.17.21", |
||||||
|
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", |
||||||
|
"integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" |
||||||
|
}, |
||||||
|
"node_modules/lodash.defaults": { |
||||||
|
"version": "4.2.0", |
||||||
|
"resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz", |
||||||
|
"integrity": "sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==" |
||||||
|
}, |
||||||
|
"node_modules/lodash.isarguments": { |
||||||
|
"version": "3.1.0", |
||||||
|
"resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz", |
||||||
|
"integrity": "sha512-chi4NHZlZqZD18a0imDHnZPrDeBbTtVN7GXMwuGdRH9qotxAjYs3aVLKc7zNOG9eddR5Ksd8rvFEBc9SsggPpg==" |
||||||
|
}, |
||||||
|
"node_modules/math-intrinsics": { |
||||||
|
"version": "1.1.0", |
||||||
|
"resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", |
||||||
|
"integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", |
||||||
|
"engines": { |
||||||
|
"node": ">= 0.4" |
||||||
|
} |
||||||
|
}, |
||||||
|
"node_modules/mime-db": { |
||||||
|
"version": "1.52.0", |
||||||
|
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", |
||||||
|
"integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", |
||||||
|
"engines": { |
||||||
|
"node": ">= 0.6" |
||||||
|
} |
||||||
|
}, |
||||||
|
"node_modules/mime-types": { |
||||||
|
"version": "2.1.35", |
||||||
|
"resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", |
||||||
|
"integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", |
||||||
|
"dependencies": { |
||||||
|
"mime-db": "1.52.0" |
||||||
|
}, |
||||||
|
"engines": { |
||||||
|
"node": ">= 0.6" |
||||||
|
} |
||||||
|
}, |
||||||
|
"node_modules/ms": { |
||||||
|
"version": "2.1.3", |
||||||
|
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", |
||||||
|
"integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" |
||||||
|
}, |
||||||
|
"node_modules/node-cron": { |
||||||
|
"version": "3.0.3", |
||||||
|
"resolved": "https://registry.npmjs.org/node-cron/-/node-cron-3.0.3.tgz", |
||||||
|
"integrity": "sha512-dOal67//nohNgYWb+nWmg5dkFdIwDm8EpeGYMekPMrngV3637lqnX0lbUcCtgibHTz6SEz7DAIjKvKDFYCnO1A==", |
||||||
|
"dependencies": { |
||||||
|
"uuid": "8.3.2" |
||||||
|
}, |
||||||
|
"engines": { |
||||||
|
"node": ">=6.0.0" |
||||||
|
} |
||||||
|
}, |
||||||
|
"node_modules/on-exit-leak-free": { |
||||||
|
"version": "2.1.2", |
||||||
|
"resolved": "https://registry.npmjs.org/on-exit-leak-free/-/on-exit-leak-free-2.1.2.tgz", |
||||||
|
"integrity": "sha512-0eJJY6hXLGf1udHwfNftBqH+g73EU4B504nZeKpz1sYRKafAghwxEJunB2O7rDZkL4PGfsMVnTXZ2EjibbqcsA==", |
||||||
|
"engines": { |
||||||
|
"node": ">=14.0.0" |
||||||
|
} |
||||||
|
}, |
||||||
|
"node_modules/pino": { |
||||||
|
"version": "9.6.0", |
||||||
|
"resolved": "https://registry.npmjs.org/pino/-/pino-9.6.0.tgz", |
||||||
|
"integrity": "sha512-i85pKRCt4qMjZ1+L7sy2Ag4t1atFcdbEt76+7iRJn1g2BvsnRMGu9p8pivl9fs63M2kF/A0OacFZhTub+m/qMg==", |
||||||
|
"dependencies": { |
||||||
|
"atomic-sleep": "^1.0.0", |
||||||
|
"fast-redact": "^3.1.1", |
||||||
|
"on-exit-leak-free": "^2.1.0", |
||||||
|
"pino-abstract-transport": "^2.0.0", |
||||||
|
"pino-std-serializers": "^7.0.0", |
||||||
|
"process-warning": "^4.0.0", |
||||||
|
"quick-format-unescaped": "^4.0.3", |
||||||
|
"real-require": "^0.2.0", |
||||||
|
"safe-stable-stringify": "^2.3.1", |
||||||
|
"sonic-boom": "^4.0.1", |
||||||
|
"thread-stream": "^3.0.0" |
||||||
|
}, |
||||||
|
"bin": { |
||||||
|
"pino": "bin.js" |
||||||
|
} |
||||||
|
}, |
||||||
|
"node_modules/pino-abstract-transport": { |
||||||
|
"version": "2.0.0", |
||||||
|
"resolved": "https://registry.npmjs.org/pino-abstract-transport/-/pino-abstract-transport-2.0.0.tgz", |
||||||
|
"integrity": "sha512-F63x5tizV6WCh4R6RHyi2Ml+M70DNRXt/+HANowMflpgGFMAym/VKm6G7ZOQRjqN7XbGxK1Lg9t6ZrtzOaivMw==", |
||||||
|
"dependencies": { |
||||||
|
"split2": "^4.0.0" |
||||||
|
} |
||||||
|
}, |
||||||
|
"node_modules/pino-std-serializers": { |
||||||
|
"version": "7.0.0", |
||||||
|
"resolved": "https://registry.npmjs.org/pino-std-serializers/-/pino-std-serializers-7.0.0.tgz", |
||||||
|
"integrity": "sha512-e906FRY0+tV27iq4juKzSYPbUj2do2X2JX4EzSca1631EB2QJQUqGbDuERal7LCtOpxl6x3+nvo9NPZcmjkiFA==" |
||||||
|
}, |
||||||
|
"node_modules/process-warning": { |
||||||
|
"version": "4.0.1", |
||||||
|
"resolved": "https://registry.npmjs.org/process-warning/-/process-warning-4.0.1.tgz", |
||||||
|
"integrity": "sha512-3c2LzQ3rY9d0hc1emcsHhfT9Jwz0cChib/QN89oME2R451w5fy3f0afAhERFZAwrbDU43wk12d0ORBpDVME50Q==", |
||||||
|
"funding": [ |
||||||
|
{ |
||||||
|
"type": "github", |
||||||
|
"url": "https://github.com/sponsors/fastify" |
||||||
|
}, |
||||||
|
{ |
||||||
|
"type": "opencollective", |
||||||
|
"url": "https://opencollective.com/fastify" |
||||||
|
} |
||||||
|
] |
||||||
|
}, |
||||||
|
"node_modules/proxy-from-env": { |
||||||
|
"version": "1.1.0", |
||||||
|
"resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", |
||||||
|
"integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" |
||||||
|
}, |
||||||
|
"node_modules/quick-format-unescaped": { |
||||||
|
"version": "4.0.4", |
||||||
|
"resolved": "https://registry.npmjs.org/quick-format-unescaped/-/quick-format-unescaped-4.0.4.tgz", |
||||||
|
"integrity": "sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==" |
||||||
|
}, |
||||||
|
"node_modules/real-require": { |
||||||
|
"version": "0.2.0", |
||||||
|
"resolved": "https://registry.npmjs.org/real-require/-/real-require-0.2.0.tgz", |
||||||
|
"integrity": "sha512-57frrGM/OCTLqLOAh0mhVA9VBMHd+9U7Zb2THMGdBUoZVOtGbJzjxsYGDJ3A9AYYCP4hn6y1TVbaOfzWtm5GFg==", |
||||||
|
"engines": { |
||||||
|
"node": ">= 12.13.0" |
||||||
|
} |
||||||
|
}, |
||||||
|
"node_modules/redis-errors": { |
||||||
|
"version": "1.2.0", |
||||||
|
"resolved": "https://registry.npmjs.org/redis-errors/-/redis-errors-1.2.0.tgz", |
||||||
|
"integrity": "sha512-1qny3OExCf0UvUV/5wpYKf2YwPcOqXzkwKKSmKHiE6ZMQs5heeE/c8eXK+PNllPvmjgAbfnsbpkGZWy8cBpn9w==", |
||||||
|
"engines": { |
||||||
|
"node": ">=4" |
||||||
|
} |
||||||
|
}, |
||||||
|
"node_modules/redis-parser": { |
||||||
|
"version": "3.0.0", |
||||||
|
"resolved": "https://registry.npmjs.org/redis-parser/-/redis-parser-3.0.0.tgz", |
||||||
|
"integrity": "sha512-DJnGAeenTdpMEH6uAJRK/uiyEIH9WVsUmoLwzudwGJUwZPp80PDBWPHXSAGNPwNvIXAbe7MSUB1zQFugFml66A==", |
||||||
|
"dependencies": { |
||||||
|
"redis-errors": "^1.0.0" |
||||||
|
}, |
||||||
|
"engines": { |
||||||
|
"node": ">=4" |
||||||
|
} |
||||||
|
}, |
||||||
|
"node_modules/reflect-metadata": { |
||||||
|
"version": "0.2.2", |
||||||
|
"resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.2.2.tgz", |
||||||
|
"integrity": "sha512-urBwgfrvVP/eAyXx4hluJivBKzuEbSQs9rKWCrCkbSxNv8mxPcUZKeuoF3Uy4mJl3Lwprp6yy5/39VWigZ4K6Q==", |
||||||
|
"peer": true |
||||||
|
}, |
||||||
|
"node_modules/require-from-string": { |
||||||
|
"version": "2.0.2", |
||||||
|
"resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", |
||||||
|
"integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", |
||||||
|
"engines": { |
||||||
|
"node": ">=0.10.0" |
||||||
|
} |
||||||
|
}, |
||||||
|
"node_modules/ret": { |
||||||
|
"version": "0.5.0", |
||||||
|
"resolved": "https://registry.npmjs.org/ret/-/ret-0.5.0.tgz", |
||||||
|
"integrity": "sha512-I1XxrZSQ+oErkRR4jYbAyEEu2I0avBvvMM5JN+6EBprOGRCs63ENqZ3vjavq8fBw2+62G5LF5XelKwuJpcvcxw==", |
||||||
|
"engines": { |
||||||
|
"node": ">=10" |
||||||
|
} |
||||||
|
}, |
||||||
|
"node_modules/reusify": { |
||||||
|
"version": "1.1.0", |
||||||
|
"resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", |
||||||
|
"integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==", |
||||||
|
"engines": { |
||||||
|
"iojs": ">=1.0.0", |
||||||
|
"node": ">=0.10.0" |
||||||
|
} |
||||||
|
}, |
||||||
|
"node_modules/rfdc": { |
||||||
|
"version": "1.4.1", |
||||||
|
"resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.4.1.tgz", |
||||||
|
"integrity": "sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==" |
||||||
|
}, |
||||||
|
"node_modules/rxjs": { |
||||||
|
"version": "7.8.2", |
||||||
|
"resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.2.tgz", |
||||||
|
"integrity": "sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==", |
||||||
|
"peer": true, |
||||||
|
"dependencies": { |
||||||
|
"tslib": "^2.1.0" |
||||||
|
} |
||||||
|
}, |
||||||
|
"node_modules/safe-regex2": { |
||||||
|
"version": "5.0.0", |
||||||
|
"resolved": "https://registry.npmjs.org/safe-regex2/-/safe-regex2-5.0.0.tgz", |
||||||
|
"integrity": "sha512-YwJwe5a51WlK7KbOJREPdjNrpViQBI3p4T50lfwPuDhZnE3XGVTlGvi+aolc5+RvxDD6bnUmjVsU9n1eboLUYw==", |
||||||
|
"funding": [ |
||||||
|
{ |
||||||
|
"type": "github", |
||||||
|
"url": "https://github.com/sponsors/fastify" |
||||||
|
}, |
||||||
|
{ |
||||||
|
"type": "opencollective", |
||||||
|
"url": "https://opencollective.com/fastify" |
||||||
|
} |
||||||
|
], |
||||||
|
"dependencies": { |
||||||
|
"ret": "~0.5.0" |
||||||
|
} |
||||||
|
}, |
||||||
|
"node_modules/safe-stable-stringify": { |
||||||
|
"version": "2.5.0", |
||||||
|
"resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.5.0.tgz", |
||||||
|
"integrity": "sha512-b3rppTKm9T+PsVCBEOUR46GWI7fdOs00VKZ1+9c1EWDaDMvjQc6tUwuFyIprgGgTcWoVHSKrU8H31ZHA2e0RHA==", |
||||||
|
"engines": { |
||||||
|
"node": ">=10" |
||||||
|
} |
||||||
|
}, |
||||||
|
"node_modules/secure-json-parse": { |
||||||
|
"version": "3.0.2", |
||||||
|
"resolved": "https://registry.npmjs.org/secure-json-parse/-/secure-json-parse-3.0.2.tgz", |
||||||
|
"integrity": "sha512-H6nS2o8bWfpFEV6U38sOSjS7bTbdgbCGU9wEM6W14P5H0QOsz94KCusifV44GpHDTu2nqZbuDNhTzu+mjDSw1w==", |
||||||
|
"funding": [ |
||||||
|
{ |
||||||
|
"type": "github", |
||||||
|
"url": "https://github.com/sponsors/fastify" |
||||||
|
}, |
||||||
|
{ |
||||||
|
"type": "opencollective", |
||||||
|
"url": "https://opencollective.com/fastify" |
||||||
|
} |
||||||
|
] |
||||||
|
}, |
||||||
|
"node_modules/semver": { |
||||||
|
"version": "7.7.1", |
||||||
|
"resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", |
||||||
|
"integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", |
||||||
|
"bin": { |
||||||
|
"semver": "bin/semver.js" |
||||||
|
}, |
||||||
|
"engines": { |
||||||
|
"node": ">=10" |
||||||
|
} |
||||||
|
}, |
||||||
|
"node_modules/set-cookie-parser": { |
||||||
|
"version": "2.7.1", |
||||||
|
"resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.7.1.tgz", |
||||||
|
"integrity": "sha512-IOc8uWeOZgnb3ptbCURJWNjWUPcO3ZnTTdzsurqERrP6nPyv+paC55vJM0LpOlT2ne+Ix+9+CRG1MNLlyZ4GjQ==" |
||||||
|
}, |
||||||
|
"node_modules/sonic-boom": { |
||||||
|
"version": "4.2.0", |
||||||
|
"resolved": "https://registry.npmjs.org/sonic-boom/-/sonic-boom-4.2.0.tgz", |
||||||
|
"integrity": "sha512-INb7TM37/mAcsGmc9hyyI6+QR3rR1zVRu36B0NeGXKnOOLiZOfER5SA+N7X7k3yUYRzLWafduTDvJAfDswwEww==", |
||||||
|
"dependencies": { |
||||||
|
"atomic-sleep": "^1.0.0" |
||||||
|
} |
||||||
|
}, |
||||||
|
"node_modules/split2": { |
||||||
|
"version": "4.2.0", |
||||||
|
"resolved": "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz", |
||||||
|
"integrity": "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==", |
||||||
|
"engines": { |
||||||
|
"node": ">= 10.x" |
||||||
|
} |
||||||
|
}, |
||||||
|
"node_modules/standard-as-callback": { |
||||||
|
"version": "2.1.0", |
||||||
|
"resolved": "https://registry.npmjs.org/standard-as-callback/-/standard-as-callback-2.1.0.tgz", |
||||||
|
"integrity": "sha512-qoRRSyROncaz1z0mvYqIE4lCd9p2R90i6GxW3uZv5ucSu8tU7B5HXUP1gG8pVZsYNVaXjk8ClXHPttLyxAL48A==" |
||||||
|
}, |
||||||
|
"node_modules/thread-stream": { |
||||||
|
"version": "3.1.0", |
||||||
|
"resolved": "https://registry.npmjs.org/thread-stream/-/thread-stream-3.1.0.tgz", |
||||||
|
"integrity": "sha512-OqyPZ9u96VohAyMfJykzmivOrY2wfMSf3C5TtFJVgN+Hm6aj+voFhlK+kZEIv2FBh1X6Xp3DlnCOfEQ3B2J86A==", |
||||||
|
"dependencies": { |
||||||
|
"real-require": "^0.2.0" |
||||||
|
} |
||||||
|
}, |
||||||
|
"node_modules/toad-cache": { |
||||||
|
"version": "3.7.0", |
||||||
|
"resolved": "https://registry.npmjs.org/toad-cache/-/toad-cache-3.7.0.tgz", |
||||||
|
"integrity": "sha512-/m8M+2BJUpoJdgAHoG+baCwBT+tf2VraSfkBgl0Y00qIWt41DJ8R5B8nsEw0I58YwF5IZH6z24/2TobDKnqSWw==", |
||||||
|
"engines": { |
||||||
|
"node": ">=12" |
||||||
|
} |
||||||
|
}, |
||||||
|
"node_modules/tslib": { |
||||||
|
"version": "2.8.1", |
||||||
|
"resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", |
||||||
|
"integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==" |
||||||
|
}, |
||||||
|
"node_modules/uid": { |
||||||
|
"version": "2.0.2", |
||||||
|
"resolved": "https://registry.npmjs.org/uid/-/uid-2.0.2.tgz", |
||||||
|
"integrity": "sha512-u3xV3X7uzvi5b1MncmZo3i2Aw222Zk1keqLA1YkHldREkAhAqi65wuPfe7lHx8H/Wzy+8CE7S7uS3jekIM5s8g==", |
||||||
|
"dependencies": { |
||||||
|
"@lukeed/csprng": "^1.0.0" |
||||||
|
}, |
||||||
|
"engines": { |
||||||
|
"node": ">=8" |
||||||
|
} |
||||||
|
}, |
||||||
|
"node_modules/uuid": { |
||||||
|
"version": "8.3.2", |
||||||
|
"resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", |
||||||
|
"integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", |
||||||
|
"bin": { |
||||||
|
"uuid": "dist/bin/uuid" |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,23 @@ |
|||||||
|
{ |
||||||
|
"name": "sanarollcall", |
||||||
|
"version": "1.0.0", |
||||||
|
"description": "", |
||||||
|
"main": "index.js", |
||||||
|
"type": "module", |
||||||
|
"scripts": { |
||||||
|
"test": "echo \"Error: no test specified\" && exit 1" |
||||||
|
}, |
||||||
|
"keywords": [], |
||||||
|
"author": "", |
||||||
|
"license": "ISC", |
||||||
|
"dependencies": { |
||||||
|
"@nestjs/common": "^11.0.13", |
||||||
|
"async": "^3.2.6", |
||||||
|
"axios": "^1.8.4", |
||||||
|
"fastify": "^5.2.2", |
||||||
|
"form-data": "^4.0.2", |
||||||
|
"ioredis": "^5.6.0", |
||||||
|
"lodash": "^4.17.21", |
||||||
|
"node-cron": "^3.0.3" |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,15 @@ |
|||||||
|
import Fastify from 'fastify' |
||||||
|
import index from './controller/index.js'; |
||||||
|
|
||||||
|
const fastify = Fastify({ |
||||||
|
logger: true |
||||||
|
}) |
||||||
|
|
||||||
|
fastify.register(index) |
||||||
|
|
||||||
|
try { |
||||||
|
await fastify.listen({ port: 3000 }) |
||||||
|
} catch (err) { |
||||||
|
fastify.log.error(err) |
||||||
|
process.exit(1) |
||||||
|
} |
@ -0,0 +1,75 @@ |
|||||||
|
import {setTimeout as sleep} from 'node:timers/promises'; |
||||||
|
import _ from "lodash"; |
||||||
|
import async from "async"; |
||||||
|
import RollCall from './rollCall.js' |
||||||
|
|
||||||
|
const date = new Date() |
||||||
|
|
||||||
|
const todayDay = (date.toString()).split(' ')[0]; |
||||||
|
const todayMonth = (date.toString()).split(' ')[1]; |
||||||
|
const todayDayNum = (date.toString()).split(' ')[2]; |
||||||
|
const todayYear = (date.toString()).split(' ')[3]; |
||||||
|
|
||||||
|
const todayDate = _.join([todayYear, todayMonth, todayDayNum], '-'); |
||||||
|
|
||||||
|
export default class Operation { |
||||||
|
constructor() { |
||||||
|
this.rollCall = new RollCall() |
||||||
|
|
||||||
|
this.usersList = [ |
||||||
|
{nationalId: '0019717601', password: '10591059'}, |
||||||
|
{nationalId: '0021028834', password: '13771998'}, |
||||||
|
{nationalId: '0082506949', password: '688630'}, |
||||||
|
{nationalId: '0023414162', password: '638369'}, |
||||||
|
{nationalId: '2980817538', password: '825447'} |
||||||
|
] |
||||||
|
} |
||||||
|
|
||||||
|
async sanaEnter(req, res) { |
||||||
|
if ( |
||||||
|
['Thu', 'Fri'].includes(todayDay) |
||||||
|
|| |
||||||
|
['2025-Jan-14', '2025-Jan-28', '2025-Feb-10', '2025-Feb-19', '2025-Feb-20'].includes(todayDate) |
||||||
|
) |
||||||
|
return {} |
||||||
|
|
||||||
|
await async.each(this.usersList, async ({nationalId ,password}, cb) => { |
||||||
|
sleep(Math.floor(Math.random() * 100 / 2) * 60 * 1000) |
||||||
|
.then(async _ => { |
||||||
|
await this.rollCall.login({ nationalId ,password}) |
||||||
|
await this.rollCall.operation({ enter: true, nationalId}) |
||||||
|
}) |
||||||
|
.catch(err => console.error(err)) |
||||||
|
cb() |
||||||
|
}) |
||||||
|
|
||||||
|
return {} |
||||||
|
} |
||||||
|
|
||||||
|
async sanaExit(req, res) { |
||||||
|
if ( |
||||||
|
['Thu', 'Fri'].includes(todayDay) |
||||||
|
|| |
||||||
|
['2025-Jan-14', '2025-Jan-28', '2025-Feb-10', '2025-Feb-19', '2025-Feb-20'].includes(todayDate) |
||||||
|
) |
||||||
|
return {} |
||||||
|
|
||||||
|
await async.each(this.usersList, async ({nationalId ,password}, cb) => { |
||||||
|
const timer = Math.floor(Math.random() * 100 / 2) * 60 * 1000 |
||||||
|
console.log('$$$$$$$$$$$', timer) |
||||||
|
sleep(timer) |
||||||
|
.then(async _ => { |
||||||
|
await this.rollCall.login({ nationalId ,password}) |
||||||
|
await this.rollCall.operation({ enter: false, nationalId}) |
||||||
|
}) |
||||||
|
.catch(err => console.error(err)) |
||||||
|
cb() |
||||||
|
}) |
||||||
|
|
||||||
|
return {} |
||||||
|
} |
||||||
|
|
||||||
|
async test() { |
||||||
|
console.log(123123132) |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,61 @@ |
|||||||
|
import axios from 'axios' |
||||||
|
import FormData from 'form-data'; |
||||||
|
import redis from "../infrastructure/redisSetup.js"; |
||||||
|
|
||||||
|
export default class RollCall { |
||||||
|
async login({ nationalId , password }) { |
||||||
|
let bodyFormData = new FormData(); |
||||||
|
|
||||||
|
bodyFormData.append('dir', ''); |
||||||
|
bodyFormData.append('kindlogin', ''); |
||||||
|
bodyFormData.append('uname', nationalId); |
||||||
|
bodyFormData.append('passcode', password); |
||||||
|
|
||||||
|
const result = await axios({ |
||||||
|
method: 'POST', |
||||||
|
url: 'https://tap.sanaoffice.ir/load/login', |
||||||
|
data: bodyFormData, |
||||||
|
headers: { 'Content-Type': `multipart/form-data; boundary=${bodyFormData._boundary}` }, |
||||||
|
validateStatus: null, |
||||||
|
}) |
||||||
|
|
||||||
|
await redis.set(`sanaOffice_${nationalId}`, JSON.stringify(result.headers['set-cookie'])) |
||||||
|
|
||||||
|
return result.error ? |
||||||
|
{ |
||||||
|
error: result.error, |
||||||
|
statusCode: result.status, |
||||||
|
message: result.error?.message |
||||||
|
|| |
||||||
|
"خطا در لاگین" |
||||||
|
} : { message: "success" }; |
||||||
|
} |
||||||
|
|
||||||
|
async operation({nationalId, enter}) { |
||||||
|
let cookies = await redis.get(`sanaOffice_${nationalId}`); |
||||||
|
if (!cookies) return {statusCode:403,message:"کاربر لاگین نیست"} |
||||||
|
|
||||||
|
const lat = +(35.701766 + Math.random() * 0.00001).toPrecision(8) |
||||||
|
const lang = +(51.392069 + Math.random() * 0.00001).toPrecision(8) |
||||||
|
|
||||||
|
const result = await axios({ |
||||||
|
method: 'GET', |
||||||
|
url: `https://tap.sanaoffice.ir/load/tap?kind=${encodeURIComponent(enter ? 'ورود' : 'خروج')}&lat=${lat}&lang=${lang}`, |
||||||
|
headers: { |
||||||
|
cookie: JSON.parse(cookies) |
||||||
|
}, |
||||||
|
validateStatus: null, |
||||||
|
}); |
||||||
|
|
||||||
|
console.log(result) |
||||||
|
|
||||||
|
return result.error ? |
||||||
|
{ |
||||||
|
error: result.error, |
||||||
|
statusCode: result.status, |
||||||
|
message: result.error?.message |
||||||
|
|| |
||||||
|
"خطا در ورود" |
||||||
|
} : { message: "success" }; |
||||||
|
} |
||||||
|
} |
Loading…
Reference in new issue