diff --git a/packages/medusa/package.json b/packages/medusa/package.json index 236b5cd7c9..4a737a4786 100644 --- a/packages/medusa/package.json +++ b/packages/medusa/package.json @@ -77,6 +77,7 @@ "medusa-test-utils": "^1.1.37", "morgan": "^1.9.1", "multer": "^1.4.2", + "node-schedule": "^2.1.0", "passport": "^0.4.0", "passport-http-bearer": "^1.0.1", "passport-jwt": "^4.0.0", diff --git a/packages/medusa/src/commands/start.js b/packages/medusa/src/commands/start.js index af05e924d3..0b78911cd9 100644 --- a/packages/medusa/src/commands/start.js +++ b/packages/medusa/src/commands/start.js @@ -3,11 +3,15 @@ import "regenerator-runtime/runtime" import express from "express" import { track } from "medusa-telemetry" +import { scheduleJob } from "node-schedule" import loaders from "../loaders" import Logger from "../loaders/logger" -export default async function({ port, directory }) { +const EVERY_SIXTH_HOUR = "* */6 * * *" +const CRON_SCHEDULE = EVERY_SIXTH_HOUR + +export default async function ({ port, directory }) { async function start() { track("CLI_START") @@ -15,7 +19,7 @@ export default async function({ port, directory }) { const { dbConnection } = await loaders({ directory, expressApp: app }) const serverActivity = Logger.activity(`Creating server`) - const server = app.listen(port, err => { + const server = app.listen(port, (err) => { if (err) { return } @@ -23,6 +27,10 @@ export default async function({ port, directory }) { track("CLI_START_COMPLETED") }) + scheduleJob(CRON_SCHEDULE, () => { + track("PING") + }) + return { dbConnection, server } } diff --git a/yarn.lock b/yarn.lock index c11ea95495..1ca27176e0 100644 --- a/yarn.lock +++ b/yarn.lock @@ -11950,6 +11950,14 @@ cron-parser@^2.13.0: is-nan "^1.3.0" moment-timezone "^0.5.31" +cron-parser@^3.5.0: + version "3.5.0" + resolved "https://registry.yarnpkg.com/cron-parser/-/cron-parser-3.5.0.tgz#b1a9da9514c0310aa7ef99c2f3f1d0f8c235257c" + integrity sha512-wyVZtbRs6qDfFd8ap457w3XVntdvqcwBGxBoTvJQH9KGVKL/fB+h2k3C8AqiVxvUQKN1Ps/Ns46CNViOpVDhfQ== + dependencies: + is-nan "^1.3.2" + luxon "^1.26.0" + cross-env@^5.2.1: version "5.2.1" resolved "https://registry.npmjs.org/cross-env/-/cross-env-5.2.1.tgz" @@ -17157,7 +17165,7 @@ is-module@^1.0.0: resolved "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz" integrity sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE= -is-nan@^1.3.0: +is-nan@^1.3.0, is-nan@^1.3.2: version "1.3.2" resolved "https://registry.npmjs.org/is-nan/-/is-nan-1.3.2.tgz" integrity sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w== @@ -19771,6 +19779,11 @@ lolex@^5.0.0: dependencies: "@sinonjs/commons" "^1.7.0" +long-timeout@0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/long-timeout/-/long-timeout-0.1.1.tgz#9721d788b47e0bcb5a24c2e2bee1a0da55dab514" + integrity sha1-lyHXiLR+C8taJMLivuGg2lXatRQ= + longest-streak@^2.0.1: version "2.0.4" resolved "https://registry.npmjs.org/longest-streak/-/longest-streak-2.0.4.tgz" @@ -19878,6 +19891,11 @@ lunr-mutable-indexes@2.3.2: resolved "https://registry.npmjs.org/lunr/-/lunr-2.3.9.tgz" integrity sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow== +luxon@^1.26.0: + version "1.28.0" + resolved "https://registry.yarnpkg.com/luxon/-/luxon-1.28.0.tgz#e7f96daad3938c06a62de0fb027115d251251fbf" + integrity sha512-TfTiyvZhwBYM/7QdAVDh+7dBTBA29v4ik0Ce9zda3Mnf8on1S5KJI8P2jKFZ8+5C0jhmr0KwJEO/Wdpm0VeWJQ== + lz-string@^1.4.4: version "1.4.4" resolved "https://registry.npmjs.org/lz-string/-/lz-string-1.4.4.tgz" @@ -21264,6 +21282,15 @@ node-releases@^2.0.1: resolved "https://registry.npmjs.org/node-releases/-/node-releases-2.0.1.tgz" integrity sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA== +node-schedule@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/node-schedule/-/node-schedule-2.1.0.tgz#068ae38d7351c330616f7fe7cdb05036f977cbaf" + integrity sha512-nl4JTiZ7ZQDc97MmpTq9BQjYhq7gOtoh7SiPH069gBFBj0PzD8HI7zyFs6rzqL8Y5tTiEEYLxgtbx034YPrbyQ== + dependencies: + cron-parser "^3.5.0" + long-timeout "0.1.1" + sorted-array-functions "^1.3.0" + nodemon@^2.0.1: version "2.0.15" resolved "https://registry.npmjs.org/nodemon/-/nodemon-2.0.15.tgz" @@ -25736,6 +25763,11 @@ sort-keys@^2.0.0: dependencies: is-plain-obj "^1.0.0" +sorted-array-functions@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/sorted-array-functions/-/sorted-array-functions-1.3.0.tgz#8605695563294dffb2c9796d602bd8459f7a0dd5" + integrity sha512-2sqgzeFlid6N4Z2fUQ1cvFmTOLRi/sEDzSQ0OKYchqgoPmQBVyM3959qYx3fpS6Esef80KjmpgPeEr028dP3OA== + source-list-map@^2.0.0: version "2.0.1" resolved "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz" @@ -27493,10 +27525,10 @@ typeorm@^0.2.29, typeorm@^0.2.31: yargs "^17.0.1" zen-observable-ts "^1.0.0" -typescript@^3.7.3, typescript@^4.5.0: - version "4.6.3" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.6.3.tgz#eefeafa6afdd31d725584c67a0eaba80f6fc6c6c" - integrity sha512-yNIatDa5iaofVozS/uQJEl3JRWLKKGJKh6Yaiv0GLGSuhpFJe7P3SbHZ8/yjAHRQwKRoA6YZqlfjXWmVzoVSMw== +typescript@^3.7.3: + version "3.9.10" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.9.10.tgz#70f3910ac7a51ed6bef79da7800690b19bf778b8" + integrity sha512-w6fIxVE/H1PkLKcCPsFqKE7Kv7QUwhU8qQY2MueZXWx5cPZdwFupLgKK3vntcK98BtNHZtAF4LA/yl2a7k8R6Q== typescript@^4.1.3: version "4.4.2"