diff --git a/package-lock.json b/package-lock.json index 61508a2..e7c83eb 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,8 +9,8 @@ "version": "1.0.0", "license": "GPL-3.0", "dependencies": { - "@logtail/node": "^0.4.16", - "@sentry/node": "^7.80.1", + "@logtail/node": "^0.4.21", + "@sentry/node": "^7.112.2", "@teknologi-umum/nedb-promises": "^5.0.3", "@teknologi-umum/pesto": "^1.0.0", "carret": "^1.0.4", @@ -20,9 +20,9 @@ "got": "^12.6.0", "kleur": "^4.1.5", "mongoose": "^8.2.4", - "qrcode": "^1.5.1", - "sanitize-html": "^2.12.1", - "telegraf": "^4.15.0", + "qrcode": "^1.5.3", + "sanitize-html": "^2.13.0", + "telegraf": "^4.16.3", "tempura": "^0.4.0" }, "devDependencies": { @@ -177,22 +177,22 @@ } }, "node_modules/@logtail/core": { - "version": "0.4.16", - "resolved": "https://registry.npmjs.org/@logtail/core/-/core-0.4.16.tgz", - "integrity": "sha512-L6osqjntQzSE2PBSGbv0En/JRUyr4yTy1R61wY+UxzidjVpd3bY6ybvOdLOz0tufPcytM+QrL/cg93yLEVbcAA==", + "version": "0.4.21", + "resolved": "https://registry.npmjs.org/@logtail/core/-/core-0.4.21.tgz", + "integrity": "sha512-QDq194+24bwi4e+a/pxyf4X67NewhTvBmh9iwM2NhbSVSQz4Fo8xQn1Ul8zuUrXETycu/Od2D8wT2tZFNFx/7A==", "dependencies": { - "@logtail/tools": "^0.4.16", - "@logtail/types": "^0.4.14", + "@logtail/tools": "^0.4.21", + "@logtail/types": "^0.4.20", "serialize-error": "^8.1.0" } }, "node_modules/@logtail/node": { - "version": "0.4.16", - "resolved": "https://registry.npmjs.org/@logtail/node/-/node-0.4.16.tgz", - "integrity": "sha512-MvOrexrLOdMRotodKCFweqg2Nqs+nl8FDYH1Iovzs3N4yPgJynjzRy2PtjciI3lfw95LTZc3arTDRinof8cZrg==", + "version": "0.4.21", + "resolved": "https://registry.npmjs.org/@logtail/node/-/node-0.4.21.tgz", + "integrity": "sha512-zpwkhJgcYaM+vsjotHRJthc0ot1vP0CAVy+fwrkL8XjfdC3NHiWb6f0agQpHlqdRX8RTsAbcYpWNXKPpFB5U9Q==", "dependencies": { - "@logtail/core": "^0.4.16", - "@logtail/types": "^0.4.14", + "@logtail/core": "^0.4.21", + "@logtail/types": "^0.4.20", "@msgpack/msgpack": "^2.5.1", "@types/stack-trace": "^0.0.29", "cross-fetch": "^3.0.4", @@ -202,20 +202,17 @@ } }, "node_modules/@logtail/tools": { - "version": "0.4.16", - "resolved": "https://registry.npmjs.org/@logtail/tools/-/tools-0.4.16.tgz", - "integrity": "sha512-jHCktK5mbKih8d7//87km+FUzvttdf5QSQ4enisChPjmslFHljs/cp9T0o16AyZ08H5471QWtH5neykZWOY06g==", + "version": "0.4.21", + "resolved": "https://registry.npmjs.org/@logtail/tools/-/tools-0.4.21.tgz", + "integrity": "sha512-xIaolScUwJEikllopGphxBX0lVlN/rA8pLAZiNCMNJXpPbwitoFKLW3w4qRuYdKoFCCJZKwOdwEqU2Fv0i9Cuw==", "dependencies": { - "@logtail/types": "^0.4.14" + "@logtail/types": "^0.4.20" } }, "node_modules/@logtail/types": { - "version": "0.4.14", - "resolved": "https://registry.npmjs.org/@logtail/types/-/types-0.4.14.tgz", - "integrity": "sha512-oRAER5vmUyW1rK56EoL+GotVbbCDgttVvg0F9i08WOD6/PjiGcsPH7wNHNYGdvB/KdAXxAhD4+81ZShNKFkZdg==", - "dependencies": { - "js": "^0.1.0" - } + "version": "0.4.20", + "resolved": "https://registry.npmjs.org/@logtail/types/-/types-0.4.20.tgz", + "integrity": "sha512-nYsum10eJMTo+ySBlYXvSrvgD1NDCVUeOlxLBbelq3XUmHu9L48VNR3P0BOmhLamYCTEgjatTj0PyPLfjL1W9g==" }, "node_modules/@mongodb-js/saslprep": { "version": "1.1.5", @@ -290,59 +287,73 @@ } }, "node_modules/@sentry-internal/tracing": { - "version": "7.80.1", - "resolved": "https://registry.npmjs.org/@sentry-internal/tracing/-/tracing-7.80.1.tgz", - "integrity": "sha512-5gZ4LPIj2vpQl2/dHBM4uXMi9OI5E0VlOhJQt0foiuN6JJeiOjdpJFcfVqJk69wrc0deVENTtgKKktxqMwVeWQ==", + "version": "7.112.2", + "resolved": "https://registry.npmjs.org/@sentry-internal/tracing/-/tracing-7.112.2.tgz", + "integrity": "sha512-fT1Y46J4lfXZkgFkb03YMNeIEs2xS6jdKMoukMFQfRfVvL9fSWEbTgZpHPd/YTT8r2i082XzjtAoQNgklm/0Hw==", "dependencies": { - "@sentry/core": "7.80.1", - "@sentry/types": "7.80.1", - "@sentry/utils": "7.80.1" + "@sentry/core": "7.112.2", + "@sentry/types": "7.112.2", + "@sentry/utils": "7.112.2" }, "engines": { "node": ">=8" } }, "node_modules/@sentry/core": { - "version": "7.80.1", - "resolved": "https://registry.npmjs.org/@sentry/core/-/core-7.80.1.tgz", - "integrity": "sha512-3Yh+O9Q86MxwIuJFYtuSSoUCpdx99P1xDAqL0FIPTJ+ekaVMiUJq9NmyaNh9uN2myPSmxvEXW6q3z37zta9ZHg==", + "version": "7.112.2", + "resolved": "https://registry.npmjs.org/@sentry/core/-/core-7.112.2.tgz", + "integrity": "sha512-gHPCcJobbMkk0VR18J65WYQTt3ED4qC6X9lHKp27Ddt63E+MDGkG6lvYBU1LS8cV7CdyBGC1XXDCfor61GvLsA==", + "dependencies": { + "@sentry/types": "7.112.2", + "@sentry/utils": "7.112.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@sentry/integrations": { + "version": "7.112.2", + "resolved": "https://registry.npmjs.org/@sentry/integrations/-/integrations-7.112.2.tgz", + "integrity": "sha512-ioC2yyU6DqtLkdmWnm87oNvdn2+9oKctJeA4t+jkS6JaJ10DcezjCwiLscX4rhB9aWJV3IWF7Op0O6K3w0t2Hg==", "dependencies": { - "@sentry/types": "7.80.1", - "@sentry/utils": "7.80.1" + "@sentry/core": "7.112.2", + "@sentry/types": "7.112.2", + "@sentry/utils": "7.112.2", + "localforage": "^1.8.1" }, "engines": { "node": ">=8" } }, "node_modules/@sentry/node": { - "version": "7.80.1", - "resolved": "https://registry.npmjs.org/@sentry/node/-/node-7.80.1.tgz", - "integrity": "sha512-0NWfcZMlyQphKWsvyzfhGm2dCBk5DUPqOGW/vGx18G4tCCYtFcAIj/mCp/4XOEcZRPQgb9vkm+sidGD6DnwWlA==", + "version": "7.112.2", + "resolved": "https://registry.npmjs.org/@sentry/node/-/node-7.112.2.tgz", + "integrity": "sha512-MNzkqER8jc2xOS3ArkCLH5hakzu15tcjeC7qjU7rQ1Ms4WuV+MG0docSRESux0/p23Qjzf9tZOc8C5Eq+Sxduw==", "dependencies": { - "@sentry-internal/tracing": "7.80.1", - "@sentry/core": "7.80.1", - "@sentry/types": "7.80.1", - "@sentry/utils": "7.80.1", - "https-proxy-agent": "^5.0.0" + "@sentry-internal/tracing": "7.112.2", + "@sentry/core": "7.112.2", + "@sentry/integrations": "7.112.2", + "@sentry/types": "7.112.2", + "@sentry/utils": "7.112.2" }, "engines": { "node": ">=8" } }, "node_modules/@sentry/types": { - "version": "7.80.1", - "resolved": "https://registry.npmjs.org/@sentry/types/-/types-7.80.1.tgz", - "integrity": "sha512-CVu4uPVTOI3U9kYiOdA085R7jX5H1oVODbs9y+A8opJ0dtJTMueCXgZyE8oXQ0NjGVs6HEeaLkOuiV0mj8X3yw==", + "version": "7.112.2", + "resolved": "https://registry.npmjs.org/@sentry/types/-/types-7.112.2.tgz", + "integrity": "sha512-kCMLt7yhY5OkWE9MeowlTNmox9pqDxcpvqguMo4BDNZM5+v9SEb1AauAdR78E1a1V8TyCzjBD7JDfXWhvpYBcQ==", "engines": { "node": ">=8" } }, "node_modules/@sentry/utils": { - "version": "7.80.1", - "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-7.80.1.tgz", - "integrity": "sha512-bfFm2e/nEn+b9++QwjNEYCbS7EqmteT8uf0XUs7PljusSimIqqxDtK1pfD9zjynPgC8kW/fVBKv0pe2LufomeA==", + "version": "7.112.2", + "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-7.112.2.tgz", + "integrity": "sha512-OjLh0hx0t1EcL4ZIjf+4svlmmP+tHUDGcr5qpFWH78tjmkPW4+cqPuZCZfHSuWcDdeiaXi8TnYoVRqDcJKK/eQ==", "dependencies": { - "@sentry/types": "7.80.1" + "@sentry/types": "7.112.2" }, "engines": { "node": ">=8" @@ -422,9 +433,9 @@ } }, "node_modules/@telegraf/types": { - "version": "6.9.1", - "resolved": "https://registry.npmjs.org/@telegraf/types/-/types-6.9.1.tgz", - "integrity": "sha512-bzqwhicZq401T0e09tu8b1KvGfJObPmzKU/iKCT5V466AsAZZWQrBYQ5edbmD1VZuHLEwopoOVY5wPP4HaLtug==" + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@telegraf/types/-/types-7.1.0.tgz", + "integrity": "sha512-kGevOIbpMcIlCDeorKGpwZmdH7kHbqlk/Yj6dEpJMKEQw5lk0KVQY0OLXaCswy8GqlIVLd5625OB+rAntP9xVw==" }, "node_modules/@types/http-cache-semantics": { "version": "4.0.1", @@ -499,17 +510,6 @@ "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, - "node_modules/agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", - "dependencies": { - "debug": "4" - }, - "engines": { - "node": ">= 6.0.0" - } - }, "node_modules/ajv": { "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", @@ -1701,18 +1701,6 @@ "node": ">=10.19.0" } }, - "node_modules/https-proxy-agent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", - "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==", - "dependencies": { - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" - } - }, "node_modules/husky": { "version": "8.0.3", "resolved": "https://registry.npmjs.org/husky/-/husky-8.0.3.tgz", @@ -1898,17 +1886,6 @@ "node": ">=8" } }, - "node_modules/js": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/js/-/js-0.1.0.tgz", - "integrity": "sha512-ZBbGYOpact8QAH9RprFWL4RAESYwbDodxiuDjOnzwzzk9pBzKycoifGuUrHHcDixE/eLMKPHRaXenTgu1qXBqA==", - "dependencies": { - "commander": "~1.1.1" - }, - "bin": { - "js": "bin/js" - } - }, "node_modules/js-yaml": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", @@ -1921,17 +1898,6 @@ "js-yaml": "bin/js-yaml.js" } }, - "node_modules/js/node_modules/commander": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-1.1.1.tgz", - "integrity": "sha512-71Rod2AhcH3JhkBikVpNd0pA+fWsmAaVoti6OR38T76chA7vE3pSerS0Jor4wDw+tOueD2zLVvFOw5H0Rcj7rA==", - "dependencies": { - "keypress": "0.1.x" - }, - "engines": { - "node": ">= 0.6.x" - } - }, "node_modules/json-buffer": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", @@ -1963,11 +1929,6 @@ "node": ">=12.0.0" } }, - "node_modules/keypress": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/keypress/-/keypress-0.1.0.tgz", - "integrity": "sha512-x0yf9PL/nx9Nw9oLL8ZVErFAk85/lslwEP7Vz7s5SI1ODXZIgit3C5qyWjw4DxOuO/3Hb4866SQh28a1V1d+WA==" - }, "node_modules/keyv": { "version": "4.5.4", "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", @@ -2631,9 +2592,9 @@ } }, "node_modules/qrcode": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/qrcode/-/qrcode-1.5.1.tgz", - "integrity": "sha512-nS8NJ1Z3md8uTjKtP+SGGhfqmTCs5flU/xR623oI0JX+Wepz9R8UrRVCTBTJm3qGw3rH6jJ6MUHjkDx15cxSSg==", + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/qrcode/-/qrcode-1.5.3.tgz", + "integrity": "sha512-puyri6ApkEHYiVl4CFzo1tDkAZ+ATcnbJrJ6RiBM1Fhctdn/ix9MTE3hRph33omisEbC/2fcfemsseiKgBPKZg==", "dependencies": { "dijkstrajs": "^1.0.1", "encode-utf8": "^1.0.3", @@ -2923,9 +2884,9 @@ } }, "node_modules/sanitize-html": { - "version": "2.12.1", - "resolved": "https://registry.npmjs.org/sanitize-html/-/sanitize-html-2.12.1.tgz", - "integrity": "sha512-Plh+JAn0UVDpBRP/xEjsk+xDCoOvMBwQUf/K+/cBAVuTbtX8bj2VB7S1sL1dssVpykqp0/KPSesHrqXtokVBpA==", + "version": "2.13.0", + "resolved": "https://registry.npmjs.org/sanitize-html/-/sanitize-html-2.13.0.tgz", + "integrity": "sha512-Xff91Z+4Mz5QiNSLdLWwjgBDm5b1RU6xBT0+12rapjiaR7SwfRdjw8f+6Rir2MXKLrDicRFHdb51hGOAxmsUIA==", "dependencies": { "deepmerge": "^4.2.2", "escape-string-regexp": "^4.0.0", @@ -3086,15 +3047,15 @@ } }, "node_modules/telegraf": { - "version": "4.15.0", - "resolved": "https://registry.npmjs.org/telegraf/-/telegraf-4.15.0.tgz", - "integrity": "sha512-jOQhpMZxZ7gTD1/pIQkXHv0BNVRMfn0xtRHnxHv6GQdeISMErzzAe82rMm78ZPSwwKCS4vVu3n/c2LMY8UFiKg==", + "version": "4.16.3", + "resolved": "https://registry.npmjs.org/telegraf/-/telegraf-4.16.3.tgz", + "integrity": "sha512-yjEu2NwkHlXu0OARWoNhJlIjX09dRktiMQFsM678BAH/PEPVwctzL67+tvXqLCRQQvm3SDtki2saGO9hLlz68w==", "dependencies": { - "@telegraf/types": "^6.9.1", + "@telegraf/types": "^7.1.0", "abort-controller": "^3.0.0", "debug": "^4.3.4", "mri": "^1.2.0", - "node-fetch": "^2.6.8", + "node-fetch": "^2.7.0", "p-timeout": "^4.1.0", "safe-compare": "^1.1.4", "sandwich-stream": "^2.0.2" @@ -3107,9 +3068,9 @@ } }, "node_modules/telegraf/node_modules/node-fetch": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.9.tgz", - "integrity": "sha512-DJm/CJkZkRjKKj4Zi4BsKVZh3ValV5IR5s7LVZnW+6YMh0W1BfNA8XSs6DLMGYlId5F3KnA70uu2qepcR08Qqg==", + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", "dependencies": { "whatwg-url": "^5.0.0" }, @@ -3584,22 +3545,22 @@ } }, "@logtail/core": { - "version": "0.4.16", - "resolved": "https://registry.npmjs.org/@logtail/core/-/core-0.4.16.tgz", - "integrity": "sha512-L6osqjntQzSE2PBSGbv0En/JRUyr4yTy1R61wY+UxzidjVpd3bY6ybvOdLOz0tufPcytM+QrL/cg93yLEVbcAA==", + "version": "0.4.21", + "resolved": "https://registry.npmjs.org/@logtail/core/-/core-0.4.21.tgz", + "integrity": "sha512-QDq194+24bwi4e+a/pxyf4X67NewhTvBmh9iwM2NhbSVSQz4Fo8xQn1Ul8zuUrXETycu/Od2D8wT2tZFNFx/7A==", "requires": { - "@logtail/tools": "^0.4.16", - "@logtail/types": "^0.4.14", + "@logtail/tools": "^0.4.21", + "@logtail/types": "^0.4.20", "serialize-error": "^8.1.0" } }, "@logtail/node": { - "version": "0.4.16", - "resolved": "https://registry.npmjs.org/@logtail/node/-/node-0.4.16.tgz", - "integrity": "sha512-MvOrexrLOdMRotodKCFweqg2Nqs+nl8FDYH1Iovzs3N4yPgJynjzRy2PtjciI3lfw95LTZc3arTDRinof8cZrg==", + "version": "0.4.21", + "resolved": "https://registry.npmjs.org/@logtail/node/-/node-0.4.21.tgz", + "integrity": "sha512-zpwkhJgcYaM+vsjotHRJthc0ot1vP0CAVy+fwrkL8XjfdC3NHiWb6f0agQpHlqdRX8RTsAbcYpWNXKPpFB5U9Q==", "requires": { - "@logtail/core": "^0.4.16", - "@logtail/types": "^0.4.14", + "@logtail/core": "^0.4.21", + "@logtail/types": "^0.4.20", "@msgpack/msgpack": "^2.5.1", "@types/stack-trace": "^0.0.29", "cross-fetch": "^3.0.4", @@ -3609,20 +3570,17 @@ } }, "@logtail/tools": { - "version": "0.4.16", - "resolved": "https://registry.npmjs.org/@logtail/tools/-/tools-0.4.16.tgz", - "integrity": "sha512-jHCktK5mbKih8d7//87km+FUzvttdf5QSQ4enisChPjmslFHljs/cp9T0o16AyZ08H5471QWtH5neykZWOY06g==", + "version": "0.4.21", + "resolved": "https://registry.npmjs.org/@logtail/tools/-/tools-0.4.21.tgz", + "integrity": "sha512-xIaolScUwJEikllopGphxBX0lVlN/rA8pLAZiNCMNJXpPbwitoFKLW3w4qRuYdKoFCCJZKwOdwEqU2Fv0i9Cuw==", "requires": { - "@logtail/types": "^0.4.14" + "@logtail/types": "^0.4.20" } }, "@logtail/types": { - "version": "0.4.14", - "resolved": "https://registry.npmjs.org/@logtail/types/-/types-0.4.14.tgz", - "integrity": "sha512-oRAER5vmUyW1rK56EoL+GotVbbCDgttVvg0F9i08WOD6/PjiGcsPH7wNHNYGdvB/KdAXxAhD4+81ZShNKFkZdg==", - "requires": { - "js": "^0.1.0" - } + "version": "0.4.20", + "resolved": "https://registry.npmjs.org/@logtail/types/-/types-0.4.20.tgz", + "integrity": "sha512-nYsum10eJMTo+ySBlYXvSrvgD1NDCVUeOlxLBbelq3XUmHu9L48VNR3P0BOmhLamYCTEgjatTj0PyPLfjL1W9g==" }, "@mongodb-js/saslprep": { "version": "1.1.5", @@ -3685,47 +3643,58 @@ } }, "@sentry-internal/tracing": { - "version": "7.80.1", - "resolved": "https://registry.npmjs.org/@sentry-internal/tracing/-/tracing-7.80.1.tgz", - "integrity": "sha512-5gZ4LPIj2vpQl2/dHBM4uXMi9OI5E0VlOhJQt0foiuN6JJeiOjdpJFcfVqJk69wrc0deVENTtgKKktxqMwVeWQ==", + "version": "7.112.2", + "resolved": "https://registry.npmjs.org/@sentry-internal/tracing/-/tracing-7.112.2.tgz", + "integrity": "sha512-fT1Y46J4lfXZkgFkb03YMNeIEs2xS6jdKMoukMFQfRfVvL9fSWEbTgZpHPd/YTT8r2i082XzjtAoQNgklm/0Hw==", "requires": { - "@sentry/core": "7.80.1", - "@sentry/types": "7.80.1", - "@sentry/utils": "7.80.1" + "@sentry/core": "7.112.2", + "@sentry/types": "7.112.2", + "@sentry/utils": "7.112.2" } }, "@sentry/core": { - "version": "7.80.1", - "resolved": "https://registry.npmjs.org/@sentry/core/-/core-7.80.1.tgz", - "integrity": "sha512-3Yh+O9Q86MxwIuJFYtuSSoUCpdx99P1xDAqL0FIPTJ+ekaVMiUJq9NmyaNh9uN2myPSmxvEXW6q3z37zta9ZHg==", + "version": "7.112.2", + "resolved": "https://registry.npmjs.org/@sentry/core/-/core-7.112.2.tgz", + "integrity": "sha512-gHPCcJobbMkk0VR18J65WYQTt3ED4qC6X9lHKp27Ddt63E+MDGkG6lvYBU1LS8cV7CdyBGC1XXDCfor61GvLsA==", "requires": { - "@sentry/types": "7.80.1", - "@sentry/utils": "7.80.1" + "@sentry/types": "7.112.2", + "@sentry/utils": "7.112.2" + } + }, + "@sentry/integrations": { + "version": "7.112.2", + "resolved": "https://registry.npmjs.org/@sentry/integrations/-/integrations-7.112.2.tgz", + "integrity": "sha512-ioC2yyU6DqtLkdmWnm87oNvdn2+9oKctJeA4t+jkS6JaJ10DcezjCwiLscX4rhB9aWJV3IWF7Op0O6K3w0t2Hg==", + "requires": { + "@sentry/core": "7.112.2", + "@sentry/types": "7.112.2", + "@sentry/utils": "7.112.2", + "localforage": "^1.8.1" } }, "@sentry/node": { - "version": "7.80.1", - "resolved": "https://registry.npmjs.org/@sentry/node/-/node-7.80.1.tgz", - "integrity": "sha512-0NWfcZMlyQphKWsvyzfhGm2dCBk5DUPqOGW/vGx18G4tCCYtFcAIj/mCp/4XOEcZRPQgb9vkm+sidGD6DnwWlA==", + "version": "7.112.2", + "resolved": "https://registry.npmjs.org/@sentry/node/-/node-7.112.2.tgz", + "integrity": "sha512-MNzkqER8jc2xOS3ArkCLH5hakzu15tcjeC7qjU7rQ1Ms4WuV+MG0docSRESux0/p23Qjzf9tZOc8C5Eq+Sxduw==", "requires": { - "@sentry-internal/tracing": "7.80.1", - "@sentry/core": "7.80.1", - "@sentry/types": "7.80.1", - "@sentry/utils": "7.80.1", - "https-proxy-agent": "^5.0.0" + "@sentry-internal/tracing": "7.112.2", + "@sentry/core": "7.112.2", + "@sentry/integrations": "7.112.2", + "@sentry/types": "7.112.2", + "@sentry/utils": "7.112.2" } }, "@sentry/types": { - "version": "7.80.1", - "resolved": "https://registry.npmjs.org/@sentry/types/-/types-7.80.1.tgz", - "integrity": "sha512-CVu4uPVTOI3U9kYiOdA085R7jX5H1oVODbs9y+A8opJ0dtJTMueCXgZyE8oXQ0NjGVs6HEeaLkOuiV0mj8X3yw==" + "version": "7.112.2", + "resolved": "https://registry.npmjs.org/@sentry/types/-/types-7.112.2.tgz", + "integrity": "sha512-kCMLt7yhY5OkWE9MeowlTNmox9pqDxcpvqguMo4BDNZM5+v9SEb1AauAdR78E1a1V8TyCzjBD7JDfXWhvpYBcQ==" }, "@sentry/utils": { - "version": "7.80.1", - "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-7.80.1.tgz", - "integrity": "sha512-bfFm2e/nEn+b9++QwjNEYCbS7EqmteT8uf0XUs7PljusSimIqqxDtK1pfD9zjynPgC8kW/fVBKv0pe2LufomeA==", + "version": "7.112.2", + "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-7.112.2.tgz", + "integrity": "sha512-OjLh0hx0t1EcL4ZIjf+4svlmmP+tHUDGcr5qpFWH78tjmkPW4+cqPuZCZfHSuWcDdeiaXi8TnYoVRqDcJKK/eQ==", "requires": { - "@sentry/types": "7.80.1" + "@sentry/types": "7.112.2" } }, "@sindresorhus/is": { @@ -3782,9 +3751,9 @@ } }, "@telegraf/types": { - "version": "6.9.1", - "resolved": "https://registry.npmjs.org/@telegraf/types/-/types-6.9.1.tgz", - "integrity": "sha512-bzqwhicZq401T0e09tu8b1KvGfJObPmzKU/iKCT5V466AsAZZWQrBYQ5edbmD1VZuHLEwopoOVY5wPP4HaLtug==" + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@telegraf/types/-/types-7.1.0.tgz", + "integrity": "sha512-kGevOIbpMcIlCDeorKGpwZmdH7kHbqlk/Yj6dEpJMKEQw5lk0KVQY0OLXaCswy8GqlIVLd5625OB+rAntP9xVw==" }, "@types/http-cache-semantics": { "version": "4.0.1", @@ -3848,14 +3817,6 @@ "dev": true, "requires": {} }, - "agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", - "requires": { - "debug": "4" - } - }, "ajv": { "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", @@ -4707,15 +4668,6 @@ "resolve-alpn": "^1.2.0" } }, - "https-proxy-agent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", - "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==", - "requires": { - "agent-base": "6", - "debug": "4" - } - }, "husky": { "version": "8.0.3", "resolved": "https://registry.npmjs.org/husky/-/husky-8.0.3.tgz", @@ -4850,24 +4802,6 @@ "istanbul-lib-report": "^3.0.0" } }, - "js": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/js/-/js-0.1.0.tgz", - "integrity": "sha512-ZBbGYOpact8QAH9RprFWL4RAESYwbDodxiuDjOnzwzzk9pBzKycoifGuUrHHcDixE/eLMKPHRaXenTgu1qXBqA==", - "requires": { - "commander": "~1.1.1" - }, - "dependencies": { - "commander": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-1.1.1.tgz", - "integrity": "sha512-71Rod2AhcH3JhkBikVpNd0pA+fWsmAaVoti6OR38T76chA7vE3pSerS0Jor4wDw+tOueD2zLVvFOw5H0Rcj7rA==", - "requires": { - "keypress": "0.1.x" - } - } - } - }, "js-yaml": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", @@ -4905,11 +4839,6 @@ "resolved": "https://registry.npmjs.org/kareem/-/kareem-2.5.1.tgz", "integrity": "sha512-7jFxRVm+jD+rkq3kY0iZDJfsO2/t4BBPeEb2qKn2lR/9KhuksYk5hxzfRYWMPV8P/x2d0kHD306YyWLzjjH+uA==" }, - "keypress": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/keypress/-/keypress-0.1.0.tgz", - "integrity": "sha512-x0yf9PL/nx9Nw9oLL8ZVErFAk85/lslwEP7Vz7s5SI1ODXZIgit3C5qyWjw4DxOuO/3Hb4866SQh28a1V1d+WA==" - }, "keyv": { "version": "4.5.4", "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", @@ -5345,9 +5274,9 @@ "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==" }, "qrcode": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/qrcode/-/qrcode-1.5.1.tgz", - "integrity": "sha512-nS8NJ1Z3md8uTjKtP+SGGhfqmTCs5flU/xR623oI0JX+Wepz9R8UrRVCTBTJm3qGw3rH6jJ6MUHjkDx15cxSSg==", + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/qrcode/-/qrcode-1.5.3.tgz", + "integrity": "sha512-puyri6ApkEHYiVl4CFzo1tDkAZ+ATcnbJrJ6RiBM1Fhctdn/ix9MTE3hRph33omisEbC/2fcfemsseiKgBPKZg==", "requires": { "dijkstrajs": "^1.0.1", "encode-utf8": "^1.0.3", @@ -5544,9 +5473,9 @@ "integrity": "sha512-jLYV0DORrzY3xaz/S9ydJL6Iz7essZeAfnAavsJ+zsJGZ1MOnsS52yRjU3uF3pJa/lla7+wisp//fxOwOH8SKQ==" }, "sanitize-html": { - "version": "2.12.1", - "resolved": "https://registry.npmjs.org/sanitize-html/-/sanitize-html-2.12.1.tgz", - "integrity": "sha512-Plh+JAn0UVDpBRP/xEjsk+xDCoOvMBwQUf/K+/cBAVuTbtX8bj2VB7S1sL1dssVpykqp0/KPSesHrqXtokVBpA==", + "version": "2.13.0", + "resolved": "https://registry.npmjs.org/sanitize-html/-/sanitize-html-2.13.0.tgz", + "integrity": "sha512-Xff91Z+4Mz5QiNSLdLWwjgBDm5b1RU6xBT0+12rapjiaR7SwfRdjw8f+6Rir2MXKLrDicRFHdb51hGOAxmsUIA==", "requires": { "deepmerge": "^4.2.2", "escape-string-regexp": "^4.0.0", @@ -5665,24 +5594,24 @@ } }, "telegraf": { - "version": "4.15.0", - "resolved": "https://registry.npmjs.org/telegraf/-/telegraf-4.15.0.tgz", - "integrity": "sha512-jOQhpMZxZ7gTD1/pIQkXHv0BNVRMfn0xtRHnxHv6GQdeISMErzzAe82rMm78ZPSwwKCS4vVu3n/c2LMY8UFiKg==", + "version": "4.16.3", + "resolved": "https://registry.npmjs.org/telegraf/-/telegraf-4.16.3.tgz", + "integrity": "sha512-yjEu2NwkHlXu0OARWoNhJlIjX09dRktiMQFsM678BAH/PEPVwctzL67+tvXqLCRQQvm3SDtki2saGO9hLlz68w==", "requires": { - "@telegraf/types": "^6.9.1", + "@telegraf/types": "^7.1.0", "abort-controller": "^3.0.0", "debug": "^4.3.4", "mri": "^1.2.0", - "node-fetch": "^2.6.8", + "node-fetch": "^2.7.0", "p-timeout": "^4.1.0", "safe-compare": "^1.1.4", "sandwich-stream": "^2.0.2" }, "dependencies": { "node-fetch": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.9.tgz", - "integrity": "sha512-DJm/CJkZkRjKKj4Zi4BsKVZh3ValV5IR5s7LVZnW+6YMh0W1BfNA8XSs6DLMGYlId5F3KnA70uu2qepcR08Qqg==", + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", "requires": { "whatwg-url": "^5.0.0" } diff --git a/package.json b/package.json index c6a737e..44aff7b 100644 --- a/package.json +++ b/package.json @@ -24,8 +24,8 @@ "#utils/*": "./src/utils/*" }, "dependencies": { - "@logtail/node": "^0.4.16", - "@sentry/node": "^7.80.1", + "@logtail/node": "^0.4.21", + "@sentry/node": "^7.112.2", "@teknologi-umum/nedb-promises": "^5.0.3", "@teknologi-umum/pesto": "^1.0.0", "carret": "^1.0.4", @@ -35,9 +35,9 @@ "got": "^12.6.0", "kleur": "^4.1.5", "mongoose": "^8.2.4", - "qrcode": "^1.5.1", - "sanitize-html": "^2.12.1", - "telegraf": "^4.15.0", + "qrcode": "^1.5.3", + "sanitize-html": "^2.13.0", + "telegraf": "^4.16.3", "tempura": "^0.4.0" }, "devDependencies": { diff --git a/src/app.js b/src/app.js index 4e28a4b..2c16ba0 100644 --- a/src/app.js +++ b/src/app.js @@ -36,10 +36,10 @@ Sentry.init({ enabled: process.env.NODE_ENV === "production", environment: process.env.NODE_ENV, sampleRate: 1.0, - tracesSampleRate: 0.2, + tracesSampleRate: 0.5, integrations: [ - new Sentry.Integrations.Http({ tracing: true }), - new Sentry.Integrations.Undici(), + Sentry.nativeNodeFetchIntegration(), + Sentry.httpIntegration({ tracing: true }), ...Sentry.autoDiscoverNodePerformanceMonitoringIntegrations() ] }); diff --git a/src/services/eval/crypto.js b/src/services/eval/crypto.js index a5b3b89..eeb61a2 100644 --- a/src/services/eval/crypto.js +++ b/src/services/eval/crypto.js @@ -1,5 +1,3 @@ -import got from "got"; - export async function fetchCryptoCurrency(cryptoSymbol) { if (typeof cryptoSymbol !== "string") { throw "Simbol mata uang crypto harus berupa string"; @@ -7,30 +5,25 @@ export async function fetchCryptoCurrency(cryptoSymbol) { if (!/^[A-Z]{3,8}(?:IDR|USDT)$/.test(cryptoSymbol)) { throw `Simbol mata uang crypto ${cryptoSymbol} tidak valid`; } + const requestSearchParams = new URLSearchParams(); + requestSearchParams.set("symbol", cryptoSymbol.toUpperCase()); + const response = await fetch(`https://gold.teknologiumum.com/crypto?${requestSearchParams.toString()}`); - const { statusCode, body } = await got.get( - `https://indodax.com/api/ticker/${cryptoSymbol.toLowerCase()}`, - { - responseType: "json", - throwHttpErrors: false - } - ); - - if (statusCode !== 200) { + if (response.status !== 200) { throw `Gagal mendapatkan data crypto ${cryptoSymbol}`; } - - if (body.error_description !== undefined) { - throw body.error_description; - } - + const body = await response.json(); return { - last: parseFloat(body.ticker.last), - buy: parseFloat(body.ticker.buy), - sell: parseFloat(body.ticker.sell), - high: parseFloat(body.ticker.high), - low: parseFloat(body.ticker.low) + symbol: body.symbol, + base_currency: body.base_currency, + quote_currency: body.quote_currency, + open: parseFloat(body.open), + high: parseFloat(body.high), + low: parseFloat(body.low), + last: parseFloat(body.last), + volume: parseFloat(body.volume), + date: new Date(body.date) }; } diff --git a/src/services/eval/currency.js b/src/services/eval/currency.js index 2a4cd91..300cefa 100644 --- a/src/services/eval/currency.js +++ b/src/services/eval/currency.js @@ -1,4 +1,3 @@ -import got from "got"; import { SingleValueCache } from "#utils/cache.js"; // cache TTL: 10 minutes @@ -9,18 +8,13 @@ const cache = new SingleValueCache(cacheTtl); async function getCurrencyDictionary() { const c = await cache.getOrCreate(async () => { - const { statusCode, body } = await got.get( - "https://gold.teknologiumum.com/currencies", - { - responseType: "json", - throwHttpErrors: false - } - ); + const response = await fetch("https://gold.teknologiumum.com/currencies"); - if (statusCode !== 200) { + if (response.status !== 200) { throw "Gagal mendapatkan data forex"; } + const body = await response.json(); return body.reduce((currencyBySymbol, currency) => { currencyBySymbol[currency.name] = currency; diff --git a/src/services/eval/stock.js b/src/services/eval/stock.js index 177a594..d5434b4 100644 --- a/src/services/eval/stock.js +++ b/src/services/eval/stock.js @@ -1,5 +1,3 @@ -import got from "got"; - export async function fetchStock(stockCode) { if (typeof stockCode !== "string") throw "Kode saham harus berupa string"; if (!/^[A-Z]{4}(?:-[A-Z][A-Z\d]{0,2})?$/.test(stockCode)) { @@ -9,19 +7,17 @@ export async function fetchStock(stockCode) { const requestSearchParams = new URLSearchParams(); requestSearchParams.set("stockCode", stockCode); - const { statusCode, body } = await got.get( - `https://gold.teknologiumum.com/stock?${requestSearchParams.toString()}`, - { - responseType: "json", - throwHttpErrors: false - } + const response = await fetch( + `https://gold.teknologiumum.com/stock?${requestSearchParams.toString()}` ); - if (statusCode !== 200) { + if (response.status !== 200) { throw `Gagal mendapatkan data saham ${stockCode}`; } - const response = { + const body = await response.json(); + + const mappedResponse = { name: body.symbol, close: body.close, previous: body.open, @@ -31,8 +27,7 @@ export async function fetchStock(stockCode) { value: body.close }; + if (mappedResponse.name === "") throw stockCode; - if (response.name === "") throw stockCode; - - return response; + return mappedResponse; } diff --git a/src/services/snap/utils.js b/src/services/snap/utils.js index 4e751e5..0a35a18 100644 --- a/src/services/snap/utils.js +++ b/src/services/snap/utils.js @@ -1,4 +1,3 @@ -import got from "got"; import { DEFAULT_HEADERS } from "#utils/http.js"; import { ERR_EMPTY_CODE, @@ -27,10 +26,9 @@ export async function generateImage(code, lang) { } const linenr = code.split("\n").length; - const { body } = await got.post("https://graphene.teknologiumum.com/api", { + const response = await fetch("https://graphene.teknologiumum.com/api", { headers: DEFAULT_HEADERS, - http2: true, - json: { + body: JSON.stringify({ code: code.replace(/^\s+|\s+$/g, ""), // trim extranous whitespace at the end of the code lang: lang === "" ? null : lang, theme: "github-dark-dimmed", @@ -41,15 +39,9 @@ export async function generateImage(code, lang) { colour: "#A0ADB6", radius: 4 } - }, - responseType: "buffer", - timeout: { - request: 60_000 - }, - retry: { - limit: 3 - } + }), + cache: "no-cache" }); - return body; + return Buffer.from(await response.arrayBuffer()); } diff --git a/src/uptime.js b/src/uptime.js index 3306e6c..29f32ea 100644 --- a/src/uptime.js +++ b/src/uptime.js @@ -1,5 +1,4 @@ import dotenv from "dotenv"; -import got from "got"; import * as Sentry from "@sentry/node"; import { pathTo } from "#utils/path.js"; @@ -17,7 +16,7 @@ async function run(url) { searchParams.set("ping", "0"); searchParams.set("status", "up"); - await got.get(url + "?" + searchParams.toString()); + await fetch(url + "?" + searchParams.toString()); } for (;;) {