@volcanicminds/backend 0.6.5 → 0.7.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -386,3 +386,159 @@ So, in your `routes.ts` (under the section `config`) you'll can use something li
386
386
  body: { $ref: 'commonSchema#' },
387
387
  headers: { $ref: 'commonSchema#' }
388
388
  ```
389
+
390
+ ## Reset tokens on login
391
+
392
+ It's possible to specify that all JWT tokens belonging to the user who logs in are reset at each login. To enable this feature, it's necessary to add or change the property `reset_external_id_on_login` to `true` (the default is `false`).
393
+
394
+ ```ts
395
+ // src/config/general.ts
396
+ 'use strict'
397
+
398
+ module.exports = {
399
+ name: 'general',
400
+ enable: true,
401
+ options: {
402
+ reset_external_id_on_login: true
403
+ }
404
+ }
405
+ ```
406
+
407
+ ## Job Scheduler
408
+
409
+ It's possible to add a job scheduler. For more information, go to [Fastify Schedule](https://github.com/fastify/fastify-schedule). To enable this feature, it's necessary to add or change the property `scheduler` to `true` (the default is `false`).
410
+
411
+ ```ts
412
+ // src/config/general.ts
413
+ 'use strict'
414
+
415
+ module.exports = {
416
+ name: 'general',
417
+ enable: true,
418
+ options: {
419
+ scheduler: true
420
+ }
421
+ }
422
+ ```
423
+
424
+ All jobs are to be created and placed in appropriate files under the /src/schedules/ folder.
425
+ Each file name must follow the pattern \*.job.ts (for example, test.job.ts).
426
+
427
+ Inside each job, both the configuration part and the job to be executed must be included using this syntax:
428
+
429
+ ```ts
430
+ // src/schedules/test.job.ts
431
+ import { JobSchedule } from '@volcanicminds/backend'
432
+
433
+ export const schedule: JobSchedule = {
434
+ active: true,
435
+ interval: {
436
+ seconds: 2
437
+ }
438
+ }
439
+
440
+ export async function job() {
441
+ log.info('tick job 2 every 2 seconds')
442
+ }
443
+ ```
444
+
445
+ The job scheduling can have this configuration:
446
+
447
+ ```ts
448
+ export interface JobSchedule {
449
+ active: boolean // boolean (required)
450
+ type?: string // cron|interval, default: interval
451
+ async?: boolean // boolean, default: true
452
+ preventOverrun?: boolean // boolean, default: true
453
+
454
+ cron?: {
455
+ expression?: string // required if type = 'cron', use cron syntax (if not specified, cron will be disabled)
456
+ timezone?: string // optional, like "Europe/Rome" (to test)
457
+ }
458
+
459
+ interval?: {
460
+ days?: number // number, default 0
461
+ hours?: number // number, default 0
462
+ minutes?: number // number, default 0
463
+ seconds?: number // number, default 0
464
+ milliseconds?: number // number, default 0
465
+ runImmediately?: boolean // boolean, default: false
466
+ }
467
+ }
468
+ ```
469
+
470
+ The active property is a boolean and is mandatory.
471
+ The `type` property can have values of `cron` or `interval` (default).
472
+ If the type is **cron**, the properties defined under `cron` are also considered.
473
+ If the type is **interval**, the properties defined under `interval` are also considered.
474
+
475
+ For cron type, the `cron.expression` property is mandatory and indicates the scheduling to be executed.
476
+ The `timezone` property is considered experimental and should be defined, for example, as `"Europe/Rome"`.
477
+
478
+ Below an example:
479
+
480
+ ```ts
481
+ // src/schedules/test.job.ts
482
+ import { JobSchedule } from '@volcanicminds/backend'
483
+
484
+ export const schedule: JobSchedule = {
485
+ active: true,
486
+ type: 'cron',
487
+
488
+ // Run a task every 2 seconds
489
+ cron: {
490
+ expression: '*/2 * * * * *'
491
+ }
492
+ }
493
+ ```
494
+
495
+ Below the cron schema:
496
+
497
+ ```
498
+ ┌──────────────── (optional) second (0 - 59)
499
+ │ ┌────────────── minute (0 - 59)
500
+ │ │ ┌──────────── hour (0 - 23)
501
+ │ │ │ ┌────────── day of month (1 - 31)
502
+ │ │ │ │ ┌──────── month (1 - 12, January - December)
503
+ │ │ │ │ │ ┌────── day of week (0 - 6, Sunday-Monday, Sunday is equal 0 or 7)
504
+ │ │ │ │ │ │
505
+ │ │ │ │ │ │
506
+ * * * * * *
507
+
508
+ // f.e. for every 2 seconds
509
+ const expression = '*/2 * * * * *'
510
+
511
+ ```
512
+
513
+ A useful site that can be used to check a cron configuration is [crontab.guru](https://crontab.guru/)
514
+
515
+ For interval type, the sum of the properties `days, hours, minutes, seconds, milliseconds` (properly converted) must be equal to or greater than 1 second, otherwise the job will not be executed.
516
+
517
+ The `runImmediately` property indicates that the **interval** task will be executed for the first time immediately and not after the defined wait time.
518
+
519
+ Below an example:
520
+
521
+ ```ts
522
+ // src/schedules/test.job.ts
523
+ import { JobSchedule } from '@volcanicminds/backend'
524
+
525
+ export const schedule: JobSchedule = {
526
+ active: true,
527
+ type: 'interval',
528
+
529
+ // Run a task every 1h 5m 30s
530
+ interval: {
531
+ days: 0,
532
+ hours: 1,
533
+ minutes: 5,
534
+ seconds: 30,
535
+ milliseconds: 0,
536
+ runImmediately: false
537
+ }
538
+ }
539
+ ```
540
+
541
+ Other properties common to both types of jobs are:
542
+
543
+ - The **async** property, if true, indicates that a task will be executed as an async function.
544
+ - The **preventOverrun** property, if true, prevents the second instance of a task from being started while the first one is still running.
package/dist/index.js CHANGED
@@ -52,14 +52,17 @@ const loaderSchemas = __importStar(require("./lib/loader/schemas"));
52
52
  const loaderTracking = __importStar(require("./lib/loader/tracking"));
53
53
  const loaderTranslation = __importStar(require("./lib/loader/translation"));
54
54
  const loaderConfig = __importStar(require("./lib/loader/general"));
55
+ const loaderSchedules = __importStar(require("./lib/loader/schedules"));
55
56
  const fastify_1 = __importDefault(require("fastify"));
56
57
  const jwt_1 = __importDefault(require("@fastify/jwt"));
57
58
  const swagger_1 = __importDefault(require("@fastify/swagger"));
58
59
  const swagger_ui_1 = __importDefault(require("@fastify/swagger-ui"));
60
+ const schedule_1 = require("@fastify/schedule");
59
61
  const cors_1 = __importDefault(require("@fastify/cors"));
60
62
  const helmet_1 = __importDefault(require("@fastify/helmet"));
61
63
  const compress_1 = __importDefault(require("@fastify/compress"));
62
64
  const rate_limit_1 = __importDefault(require("@fastify/rate-limit"));
65
+ const multipart_1 = __importDefault(require("@fastify/multipart"));
63
66
  const server_1 = require("@apollo/server");
64
67
  const fastify_2 = __importStar(require("@as-integrations/fastify"));
65
68
  const context_1 = require("./lib/apollo/context");
@@ -156,6 +159,16 @@ function addFastifySwagger(server) {
156
159
  }
157
160
  });
158
161
  }
162
+ function addFastifySchedule(server) {
163
+ var _a;
164
+ return __awaiter(this, void 0, void 0, function* () {
165
+ const { scheduler = false } = ((_a = global.config) === null || _a === void 0 ? void 0 : _a.options) || {};
166
+ if (scheduler) {
167
+ log.trace('Add scheduler plugin');
168
+ yield server.register(schedule_1.fastifySchedule);
169
+ }
170
+ });
171
+ }
159
172
  const start = (decorators) => __awaiter(void 0, void 0, void 0, function* () {
160
173
  const begin = new Date().getTime();
161
174
  mark.print(logger_1.default);
@@ -172,10 +185,11 @@ const start = (decorators) => __awaiter(void 0, void 0, void 0, function* () {
172
185
  const loadRefreshJWT = (0, yn_1.default)(JWT_REFRESH, true);
173
186
  const loadApollo = (0, yn_1.default)(GRAPHQL, false);
174
187
  const plugins = loaderPlugins.load();
175
- !loadApollo && (plugins === null || plugins === void 0 ? void 0 : plugins.helmet) && (yield server.register(helmet_1.default));
176
- (plugins === null || plugins === void 0 ? void 0 : plugins.rateLimit) && (yield server.register(rate_limit_1.default));
188
+ !loadApollo && (plugins === null || plugins === void 0 ? void 0 : plugins.helmet) && (yield server.register(helmet_1.default, plugins.helmet || {}));
189
+ (plugins === null || plugins === void 0 ? void 0 : plugins.rateLimit) && (yield server.register(rate_limit_1.default, plugins.rateLimit || {}));
190
+ (plugins === null || plugins === void 0 ? void 0 : plugins.multipart) && (yield server.register(multipart_1.default, plugins.multipart || {}));
177
191
  (plugins === null || plugins === void 0 ? void 0 : plugins.cors) && (yield server.register(cors_1.default, plugins.cors || {}));
178
- (plugins === null || plugins === void 0 ? void 0 : plugins.compress) && (yield server.register(compress_1.default));
192
+ (plugins === null || plugins === void 0 ? void 0 : plugins.compress) && (yield server.register(compress_1.default, plugins.compress || {}));
179
193
  log.t && log.trace(`Add JWT - expiresIn: ${JWT_EXPIRES_IN}`);
180
194
  yield server.register(jwt_1.default, {
181
195
  secret: JWT_SECRET,
@@ -192,6 +206,8 @@ const start = (decorators) => __awaiter(void 0, void 0, void 0, function* () {
192
206
  yield addFastifySwagger(server);
193
207
  yield addApolloRouting(server, apollo);
194
208
  yield addFastifyRouting(server);
209
+ yield addFastifySchedule(server);
210
+ const schedules = loaderSchedules.load();
195
211
  decorators = Object.assign({ userManager: {
196
212
  isImplemented() {
197
213
  return false;
@@ -323,6 +339,7 @@ const start = (decorators) => __awaiter(void 0, void 0, void 0, function* () {
323
339
  loadSwagger && log.info(`Swagger ready ✨ at ${address}${process.env.SWAGGER_PREFIX_URL || '/documentation'}`);
324
340
  });
325
341
  global.server = server;
342
+ yield loaderSchedules.start(server, schedules);
326
343
  return server;
327
344
  });
328
345
  exports.start = start;
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,YAAY,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEZ,oDAA2B;AAC3B,gBAAM,CAAC,MAAM,EAAE,CAAA;AAEf,uDAA8B;AAyWrB,aAzWF,YAAE,CAyWE;AAxWX,+DAAsC;AACtC,sDAAuC;AACvC,8CAAmD;AAsW/B,gGAtWX,wBAAe,OAsWW;AArWnC,oEAAqD;AACrD,gEAAiD;AACjD,kEAAmD;AACnD,gEAAiD;AACjD,oEAAqD;AACrD,sEAAuD;AACvD,4EAA6D;AAC7D,mEAAoD;AAEpD,sDAAkD;AAClD,uDAAuC;AACvC,+DAAsC;AACtC,qEAA2C;AAE3C,yDAAgC;AAChC,6DAAoC;AACpC,iEAAwC;AACxC,qEAA2C;AAE3C,2CAA6C;AAC7C,oEAAkF;AAClF,kDAAmE;AACnE,uEAA8C;AAC9C,uEAA6C;AAG7C,MAAM,CAAC,GAAG,GAAG,gBAAM,CAAA;AAEnB,SAAe,YAAY,CAAC,MAAuB;;QACjD,GAAG,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAA;QAC1C,MAAM,MAAM,GAAG,IAAI,qBAAY,CAAY;YACzC,QAAQ,EAAR,mBAAQ;YACR,SAAS,EAAT,mBAAS;YACT,OAAO,EAAE,CAAC,IAAA,kCAAwB,EAAC,MAAM,CAAC,CAAC;SAC5C,CAAC,CAAA;QAEF,MAAM,MAAM,CAAC,KAAK,EAAE,CAAA;QAEpB,OAAO,MAAM,CAAA;IACf,CAAC;CAAA;AAED,SAAe,gBAAgB,CAAC,MAAuB,EAAE,MAAsC;;QAC7F,IAAI,MAAM,EAAE,CAAC;YACX,GAAG,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAA;YAC/B,MAAM,MAAM,CAAC,QAAQ,CAAC,IAAA,iBAAa,EAAC,MAAM,CAAC,EAAE;gBAC3C,OAAO,EAAE,2BAAiB;aAC3B,CAAC,CAAA;QASJ,CAAC;IACH,CAAC;CAAA;AAED,SAAe,iBAAiB,CAAC,MAAuB;;QACtD,GAAG,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAA;QAE9B,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;QACzB,aAAa,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;QAE3B,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,EAAE,CAAA;QAClC,MAAM,IAAI,YAAY,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC9C,CAAC;CAAA;AAED,SAAe,iBAAiB,CAAC,MAAuB;;QACtD,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,eAAe,EAAE,kBAAkB,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC,GAAG,CAAA;QAEtH,MAAM,WAAW,GAAG,IAAA,YAAE,EAAC,OAAO,EAAE,KAAK,CAAC,CAAA;QACtC,IAAI,WAAW,EAAE,CAAC;YAChB,GAAG,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAA;YAE/B,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;YACxB,MAAM,QAAQ,GAAG,EAAE,CAAC,YAAY,CAAC,eAAe,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAA;YAEzE,MAAM,MAAM,CAAC,QAAQ,CAAC,iBAAO,EAAE;gBAC7B,OAAO,EAAE;oBACP,IAAI,EAAE;wBACJ,KAAK,EAAE,aAAa,IAAI,4BAA4B;wBACpD,WAAW,EAAE,mBAAmB,IAAI,2CAA2C;wBAC/E,OAAO,EAAE,eAAe,IAAI,OAAO;qBACpC;oBACD,IAAI,EAAE,YAAY,IAAI,gBAAgB;oBACtC,OAAO,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC;oBAC1B,QAAQ,EAAE,CAAC,kBAAkB,CAAC;oBAC9B,QAAQ,EAAE,CAAC,kBAAkB,CAAC;iBAC/B;gBACD,OAAO,EAAE;oBACP,IAAI,EAAE;wBACJ,KAAK,EAAE,aAAa,IAAI,4BAA4B;wBACpD,WAAW,EAAE,mBAAmB,IAAI,2CAA2C;wBAC/E,OAAO,EAAE,eAAe,IAAI,OAAO;qBACpC;oBACD,OAAO,EAAE;wBACP;4BACE,GAAG,EAAE,YAAY,IAAI,uBAAuB;yBAC7C;qBACF;oBACD,UAAU,EAAE;wBACV,eAAe,EAAE;4BACf,MAAM,EAAE;gCACN,IAAI,EAAE,MAAM;gCACZ,MAAM,EAAE,QAAQ;6BACjB;yBACF;qBACF;iBACF;aACF,CAAC,CAAA;YAEF,MAAM,MAAM,CAAC,QAAQ,CAAC,oBAAS,EAAE;gBAC/B,WAAW,EAAE,kBAAkB,IAAI,gBAAgB;gBACnD,QAAQ,EAAE;oBACR,YAAY,EAAE,MAAM;oBACpB,WAAW,EAAE,IAAI;oBACjB,wBAAwB,EAAE,CAAC;iBAC5B;gBACD,IAAI,EAAE;oBACJ,IAAI,EAAE,WAAW;oBACjB,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;iBACzC;gBACD,KAAK,EAAE;oBACL,KAAK,EAAE,aAAa;iBACrB;aACK,CAAC,CAAA;QACX,CAAC;IACH,CAAC;CAAA;AAED,MAAM,KAAK,GAAG,CAAO,UAAU,EAAE,EAAE;IACjC,MAAM,KAAK,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,CAAA;IAClC,IAAI,CAAC,KAAK,CAAC,gBAAM,CAAC,CAAA;IAElB,MAAM,CAAC,MAAM,GAAG,YAAY,CAAC,IAAI,EAAE,CAAA;IACnC,MAAM,CAAC,KAAK,GAAG,WAAW,CAAC,IAAI,EAAE,CAAA;IACjC,MAAM,CAAC,CAAC,GAAG,iBAAiB,CAAC,IAAI,EAAE,CAAA;IAEnC,MAAM,EAAE,QAAQ,EAAE,cAAc,EAAE,GAAG,cAAc,CAAC,IAAI,EAAE,CAAA;IAC1D,MAAM,CAAC,QAAQ,GAAG,QAAQ,CAAA;IAC1B,MAAM,CAAC,cAAc,GAAG,cAAc,CAAA;IAEtC,MAAM,IAAI,GAAG,IAAA,YAAE,EAAC,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,WAAW,EAAE,gBAAM,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;IACxG,MAAM,MAAM,GAAoB,IAAA,iBAAO,GAAE,CAAA;IAEzC,MAAM,EAAE,IAAI,EAAE,IAAI,GAAG,SAAS,EAAE,IAAI,EAAE,IAAI,GAAG,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,GAAG,CAAA;IAC5E,MAAM,EACJ,UAAU,GAAG,EAAE,EACf,cAAc,GAAG,KAAK,EACtB,WAAW,GAAG,MAAM,EACpB,kBAAkB,GAAG,EAAE,EACvB,sBAAsB,GAAG,MAAM,EAChC,GAAG,OAAO,CAAC,GAAG,CAAA;IAEf,MAAM,cAAc,GAAG,IAAA,YAAE,EAAC,WAAW,EAAE,IAAI,CAAC,CAAA;IAC5C,MAAM,UAAU,GAAG,IAAA,YAAE,EAAC,OAAO,EAAE,KAAK,CAAC,CAAA;IACrC,MAAM,OAAO,GAAG,aAAa,CAAC,IAAI,EAAE,CAAA;IAGpC,CAAC,UAAU,KAAI,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,MAAM,CAAA,IAAI,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,gBAAM,CAAC,CAAC,CAAA;IACjE,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,SAAS,KAAI,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,oBAAS,CAAC,CAAC,CAAA;IACxD,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,IAAI,KAAI,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,cAAI,EAAE,OAAO,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,CAAA;IAClE,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,QAAQ,KAAI,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,kBAAQ,CAAC,CAAC,CAAA;IAGtD,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,wBAAwB,cAAc,EAAE,CAAC,CAAA;IAC5D,MAAM,MAAM,CAAC,QAAQ,CAAC,aAAY,EAAE;QAClC,MAAM,EAAE,UAAU;QAClB,IAAI,EAAE,EAAE,SAAS,EAAE,cAAc,EAAE;KACpC,CAAC,CAAA;IAEF,IAAI,cAAc,EAAE,CAAC;QACnB,MAAM,MAAM,CAAC,QAAQ,CAAC,aAAY,EAAE;YAClC,SAAS,EAAE,cAAc;YACzB,MAAM,EAAE,kBAAkB,IAAI,UAAU;YACxC,IAAI,EAAE,EAAE,SAAS,EAAE,sBAAsB,EAAE;SAC5C,CAAC,CAAA;IACJ,CAAC;IAED,MAAM,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,MAAM,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;IAC7D,MAAM,iBAAiB,CAAC,MAAM,CAAC,CAAA;IAC/B,MAAM,gBAAgB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACtC,MAAM,iBAAiB,CAAC,MAAM,CAAC,CAAA;IAG/B,UAAU,mBACR,WAAW,EAAE;YACX,aAAa;gBACX,OAAO,KAAK,CAAA;YACd,CAAC;YACD,WAAW,CAAC,IAAS;gBACnB,MAAM,IAAI,KAAK,CAAC,uEAAuE,CAAC,CAAA;YAC1F,CAAC;YACD,UAAU,CAAC,IAAS;gBAClB,MAAM,IAAI,KAAK,CAAC,uEAAuE,CAAC,CAAA;YAC1F,CAAC;YACD,eAAe,CAAC,IAAS;gBACvB,MAAM,IAAI,KAAK,CAAC,uEAAuE,CAAC,CAAA;YAC1F,CAAC;YACD,cAAc,CAAC,EAAU,EAAE,IAAS;gBAClC,MAAM,IAAI,KAAK,CAAC,uEAAuE,CAAC,CAAA;YAC1F,CAAC;YACD,gBAAgB,CAAC,EAAU;gBACzB,MAAM,IAAI,KAAK,CAAC,uEAAuE,CAAC,CAAA;YAC1F,CAAC;YACD,mBAAmB,CAAC,KAAa;gBAC/B,MAAM,IAAI,KAAK,CAAC,uEAAuE,CAAC,CAAA;YAC1F,CAAC;YACD,+BAA+B,CAAC,IAAY;gBAC1C,MAAM,IAAI,KAAK,CAAC,uEAAuE,CAAC,CAAA;YAC1F,CAAC;YACD,gCAAgC,CAAC,IAAY;gBAC3C,MAAM,IAAI,KAAK,CAAC,uEAAuE,CAAC,CAAA;YAC1F,CAAC;YACD,sBAAsB,CAAC,QAAgB;gBACrC,MAAM,IAAI,KAAK,CAAC,uEAAuE,CAAC,CAAA;YAC1F,CAAC;YACD,wBAAwB,CAAC,UAAkB;gBACzC,MAAM,IAAI,KAAK,CAAC,uEAAuE,CAAC,CAAA;YAC1F,CAAC;YACD,sBAAsB,CAAC,KAAa,EAAE,QAAgB;gBACpD,MAAM,IAAI,KAAK,CAAC,uEAAuE,CAAC,CAAA;YAC1F,CAAC;YACD,cAAc,CAAC,KAAa,EAAE,QAAgB,EAAE,WAAmB;gBACjE,MAAM,IAAI,KAAK,CAAC,uEAAuE,CAAC,CAAA;YAC1F,CAAC;YACD,cAAc,CAAC,KAAa;gBAC1B,MAAM,IAAI,KAAK,CAAC,uEAAuE,CAAC,CAAA;YAC1F,CAAC;YACD,gBAAgB,CAAC,IAAS;gBACxB,MAAM,IAAI,KAAK,CAAC,uEAAuE,CAAC,CAAA;YAC1F,CAAC;YACD,aAAa,CAAC,IAAS,EAAE,QAAgB;gBACvC,MAAM,IAAI,KAAK,CAAC,uEAAuE,CAAC,CAAA;YAC1F,CAAC;YACD,aAAa,CAAC,EAAU,EAAE,MAAc;gBACtC,MAAM,IAAI,KAAK,CAAC,uEAAuE,CAAC,CAAA;YAC1F,CAAC;YACD,eAAe,CAAC,IAAS;gBACvB,MAAM,IAAI,KAAK,CAAC,uEAAuE,CAAC,CAAA;YAC1F,CAAC;YACD,UAAU,CAAC,IAAS;gBAClB,MAAM,IAAI,KAAK,CAAC,uEAAuE,CAAC,CAAA;YAC1F,CAAC;YACD,SAAS,CAAC,IAAS;gBACjB,MAAM,IAAI,KAAK,CAAC,uEAAuE,CAAC,CAAA;YAC1F,CAAC;YACD,eAAe,CAAC,EAAU;gBACxB,MAAM,IAAI,KAAK,CAAC,uEAAuE,CAAC,CAAA;YAC1F,CAAC;SACgB,EACnB,YAAY,EAAE;YACZ,aAAa;gBACX,OAAO,KAAK,CAAA;YACd,CAAC;YACD,YAAY,CAAC,IAAS;gBACpB,MAAM,IAAI,KAAK,CAAC,uEAAuE,CAAC,CAAA;YAC1F,CAAC;YACD,WAAW,CAAC,IAAS;gBACnB,MAAM,IAAI,KAAK,CAAC,uEAAuE,CAAC,CAAA;YAC1F,CAAC;YACD,eAAe,CAAC,EAAU;gBACxB,MAAM,IAAI,KAAK,CAAC,uEAAuE,CAAC,CAAA;YAC1F,CAAC;YACD,eAAe,CAAC,EAAU,EAAE,KAAU;gBACpC,MAAM,IAAI,KAAK,CAAC,uEAAuE,CAAC,CAAA;YAC1F,CAAC;YACD,iBAAiB,CAAC,EAAU;gBAC1B,MAAM,IAAI,KAAK,CAAC,uEAAuE,CAAC,CAAA;YAC1F,CAAC;YACD,yBAAyB,CAAC,EAAU;gBAClC,MAAM,IAAI,KAAK,CAAC,uEAAuE,CAAC,CAAA;YAC1F,CAAC;YACD,cAAc,CAAC,EAAU,EAAE,MAAc;gBACvC,MAAM,IAAI,KAAK,CAAC,uEAAuE,CAAC,CAAA;YAC1F,CAAC;YACD,gBAAgB,CAAC,EAAU;gBACzB,MAAM,IAAI,KAAK,CAAC,uEAAuE,CAAC,CAAA;YAC1F,CAAC;YACD,UAAU,CAAC,IAAS;gBAClB,MAAM,IAAI,KAAK,CAAC,uEAAuE,CAAC,CAAA;YAC1F,CAAC;YACD,SAAS,CAAC,IAAS;gBACjB,MAAM,IAAI,KAAK,CAAC,uEAAuE,CAAC,CAAA;YAC1F,CAAC;YACD,eAAe,CAAC,EAAU;gBACxB,MAAM,IAAI,KAAK,CAAC,uEAAuE,CAAC,CAAA;YAC1F,CAAC;SACiB,EACpB,eAAe,EAAE;YACf,aAAa;gBACX,OAAO,KAAK,CAAA;YACd,CAAC;YACD,kBAAkB;gBAChB,MAAM,IAAI,KAAK,CAAC,uEAAuE,CAAC,CAAA;YAC1F,CAAC;YACD,UAAU,CAAC,UAAU,EAAE,QAAQ;gBAC7B,MAAM,IAAI,KAAK,CAAC,uEAAuE,CAAC,CAAA;YAC1F,CAAC;YACD,SAAS,CAAC,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY;gBACpE,MAAM,IAAI,KAAK,CAAC,uEAAuE,CAAC,CAAA;YAC1F,CAAC;SACoB,IACpB,UAAU,CACd,CAAA;IAED,MAAM,OAAO,CAAC,GAAG,CACf,MAAM,CAAC,IAAI,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAO,GAAG,EAAE,EAAE;QAC9C,MAAM,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,CAAA;IAC7C,CAAC,CAAA,CAAC,CACH,CAAA;IAED,MAAM,MAAM;SACT,MAAM,CAAC;QACN,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC;QAClB,IAAI,EAAE,IAAI;KACX,CAAC;SACD,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE;QAChB,MAAM,OAAO,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,KAAK,CAAC,GAAG,GAAG,CAAA;QACpD,GAAG,CAAC,IAAI,CAAC,uBAAuB,OAAO,MAAM,CAAC,CAAA;QAC9C,GAAG,CAAC,IAAI,CAAC,sBAAsB,OAAO,EAAE,CAAC,CAAA;QAEzC,MAAM,WAAW,GAAG,IAAA,YAAE,EAAC,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,CAAA;QAClD,WAAW,IAAI,GAAG,CAAC,IAAI,CAAC,sBAAsB,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,kBAAkB,IAAI,gBAAgB,EAAE,CAAC,CAAA;IAC/G,CAAC,CAAC,CAAA;IAEJ,MAAM,CAAC,MAAM,GAAG,MAAM,CAAA;IACtB,OAAO,MAAM,CAAA;AACf,CAAC,CAAA,CAAA;AA6BY,sBAAK;AAClB,MAAM,CAAC,OAAO,GAAG,EAAE,EAAE,EAAF,YAAE,EAAE,KAAK,EAAE,eAAe,EAAf,wBAAe,EAAE,CAAA;AAC/C,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,EAAE,EAAE,EAAF,YAAE,EAAE,KAAK,EAAE,eAAe,EAAf,wBAAe,EAAE,CAAA;AACtD,MAAM,CAAC,OAAO,CAAC,OAAO,GAAG,EAAE,EAAE,EAAF,YAAE,EAAE,KAAK,EAAE,eAAe,EAAf,wBAAe,EAAE,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"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"}
@@ -3,7 +3,8 @@ module.exports = {
3
3
  name: 'general',
4
4
  enable: true,
5
5
  options: {
6
- reset_external_id_on_login: false
6
+ reset_external_id_on_login: false,
7
+ scheduler: false
7
8
  }
8
9
  };
9
10
  //# sourceMappingURL=general.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"general.js","sourceRoot":"","sources":["../../../lib/config/general.ts"],"names":[],"mappings":"AAAA,YAAY,CAAA;AAEZ,MAAM,CAAC,OAAO,GAAG;IACf,IAAI,EAAE,SAAS;IACf,MAAM,EAAE,IAAI;IACZ,OAAO,EAAE;QACP,0BAA0B,EAAE,KAAK;KAClC;CACF,CAAA"}
1
+ {"version":3,"file":"general.js","sourceRoot":"","sources":["../../../lib/config/general.ts"],"names":[],"mappings":"AAAA,YAAY,CAAA;AAEZ,MAAM,CAAC,OAAO,GAAG;IACf,IAAI,EAAE,SAAS;IACf,MAAM,EAAE,IAAI;IACZ,OAAO,EAAE;QACP,0BAA0B,EAAE,KAAK;QACjC,SAAS,EAAE,KAAK;KACjB;CACF,CAAA"}
@@ -52,6 +52,11 @@ module.exports = [
52
52
  name: 'compress',
53
53
  enable: false,
54
54
  options: {}
55
+ },
56
+ {
57
+ name: 'multipart',
58
+ enable: false,
59
+ options: {}
55
60
  }
56
61
  ];
57
62
  //# sourceMappingURL=plugins.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"plugins.js","sourceRoot":"","sources":["../../../lib/config/plugins.ts"],"names":[],"mappings":"AAAA,YAAY,CAAA;AAEZ,MAAM,CAAC,OAAO,GAAG;IACf;QACE,IAAI,EAAE,MAAM;QACZ,MAAM,EAAE,IAAI;QACZ,OAAO,EAAE;YACP,MAAM,EAAE,GAAG;YACX,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,CAAC;YACrE,MAAM,EAAE,QAAQ;YAChB,WAAW,EAAE,IAAI;YACjB,cAAc,EAAE;gBACd,QAAQ;gBACR,iBAAiB;gBACjB,kBAAkB;gBAClB,cAAc;gBACd,gBAAgB;gBAChB,eAAe;gBACf,QAAQ;gBACR,SAAS;gBACT,SAAS;gBACT,QAAQ;gBACR,YAAY;gBACZ,aAAa;aACd;YACD,cAAc,EAAE;gBACd,QAAQ;gBACR,iBAAiB;gBACjB,kBAAkB;gBAClB,cAAc;gBACd,gBAAgB;gBAChB,eAAe;gBACf,QAAQ;gBACR,SAAS;gBACT,SAAS;gBACT,QAAQ;gBACR,YAAY;gBACZ,aAAa;aACd;SACF;KACF;IACD;QACE,IAAI,EAAE,WAAW;QACjB,MAAM,EAAE,KAAK;QACb,OAAO,EAAE,EAAE;KACZ;IACD;QACE,IAAI,EAAE,QAAQ;QACd,MAAM,EAAE,KAAK;QACb,OAAO,EAAE,EAAE;KACZ;IACD;QACE,IAAI,EAAE,UAAU;QAChB,MAAM,EAAE,KAAK;QACb,OAAO,EAAE,EAAE;KACZ;CACF,CAAA"}
1
+ {"version":3,"file":"plugins.js","sourceRoot":"","sources":["../../../lib/config/plugins.ts"],"names":[],"mappings":"AAAA,YAAY,CAAA;AAEZ,MAAM,CAAC,OAAO,GAAG;IACf;QACE,IAAI,EAAE,MAAM;QACZ,MAAM,EAAE,IAAI;QACZ,OAAO,EAAE;YACP,MAAM,EAAE,GAAG;YACX,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,CAAC;YACrE,MAAM,EAAE,QAAQ;YAChB,WAAW,EAAE,IAAI;YACjB,cAAc,EAAE;gBACd,QAAQ;gBACR,iBAAiB;gBACjB,kBAAkB;gBAClB,cAAc;gBACd,gBAAgB;gBAChB,eAAe;gBACf,QAAQ;gBACR,SAAS;gBACT,SAAS;gBACT,QAAQ;gBACR,YAAY;gBACZ,aAAa;aACd;YACD,cAAc,EAAE;gBACd,QAAQ;gBACR,iBAAiB;gBACjB,kBAAkB;gBAClB,cAAc;gBACd,gBAAgB;gBAChB,eAAe;gBACf,QAAQ;gBACR,SAAS;gBACT,SAAS;gBACT,QAAQ;gBACR,YAAY;gBACZ,aAAa;aACd;SACF;KACF;IACD;QACE,IAAI,EAAE,WAAW;QACjB,MAAM,EAAE,KAAK;QACb,OAAO,EAAE,EAAE;KACZ;IACD;QACE,IAAI,EAAE,QAAQ;QACd,MAAM,EAAE,KAAK;QACb,OAAO,EAAE,EAAE;KACZ;IACD;QACE,IAAI,EAAE,UAAU;QAChB,MAAM,EAAE,KAAK;QACb,OAAO,EAAE,EAAE;KACZ;IACD;QACE,IAAI,EAAE,WAAW;QACjB,MAAM,EAAE,KAAK;QACb,OAAO,EAAE,EAAE;KACZ;CACF,CAAA"}
@@ -8,7 +8,8 @@ function load() {
8
8
  name: 'general',
9
9
  enable: true,
10
10
  options: {
11
- reset_external_id_on_login: false
11
+ reset_external_id_on_login: false,
12
+ scheduler: false
12
13
  }
13
14
  };
14
15
  const patterns = (0, path_1.normalizePatterns)(['..', 'config', 'general.{ts,js}'], ['src', 'config', 'general.{ts,js}']);
@@ -1 +1 @@
1
- {"version":3,"file":"general.js","sourceRoot":"","sources":["../../../lib/loader/general.ts"],"names":[],"mappings":";;;AACA,uCAAgD;AAChD,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;AAE5B,SAAgB,IAAI;IAClB,MAAM,aAAa,GAAkB;QACnC,IAAI,EAAE,SAAS;QACf,MAAM,EAAE,IAAI;QACZ,OAAO,EAAE;YACP,0BAA0B,EAAE,KAAK;SAClC;KACF,CAAA;IAED,MAAM,QAAQ,GAAG,IAAA,wBAAiB,EAAC,CAAC,IAAI,EAAE,QAAQ,EAAE,iBAAiB,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,iBAAiB,CAAC,CAAC,CAAA;IAC7G,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC3B,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,cAAc,GAAG,OAAO,CAAC,CAAA;QAC5C,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAS,EAAE,EAAE;YACvC,MAAM,MAAM,GAAkB,OAAO,CAAC,CAAC,CAAC,CAAA;YAExC,IAAI,MAAM,CAAC,IAAI,KAAK,aAAa,CAAC,IAAI,EAAE,CAAC;gBACvC,aAAa,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAA;gBACpC,aAAa,CAAC,OAAO,mCAChB,aAAa,CAAC,OAAO,GACrB,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC,CAC1B,CAAA;YACH,CAAC;QACH,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,8BAA8B,CAAC,CAAA;IAClD,OAAO,aAAa,CAAA;AACtB,CAAC;AA3BD,oBA2BC"}
1
+ {"version":3,"file":"general.js","sourceRoot":"","sources":["../../../lib/loader/general.ts"],"names":[],"mappings":";;;AACA,uCAAgD;AAChD,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;AAE5B,SAAgB,IAAI;IAClB,MAAM,aAAa,GAAkB;QACnC,IAAI,EAAE,SAAS;QACf,MAAM,EAAE,IAAI;QACZ,OAAO,EAAE;YACP,0BAA0B,EAAE,KAAK;YACjC,SAAS,EAAE,KAAK;SACjB;KACF,CAAA;IAED,MAAM,QAAQ,GAAG,IAAA,wBAAiB,EAAC,CAAC,IAAI,EAAE,QAAQ,EAAE,iBAAiB,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,iBAAiB,CAAC,CAAC,CAAA;IAC7G,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC3B,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,cAAc,GAAG,OAAO,CAAC,CAAA;QAC5C,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAS,EAAE,EAAE;YACvC,MAAM,MAAM,GAAkB,OAAO,CAAC,CAAC,CAAC,CAAA;YAExC,IAAI,MAAM,CAAC,IAAI,KAAK,aAAa,CAAC,IAAI,EAAE,CAAC;gBACvC,aAAa,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAA;gBACpC,aAAa,CAAC,OAAO,mCAChB,aAAa,CAAC,OAAO,GACrB,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC,CAC1B,CAAA;YACH,CAAC;QACH,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,8BAA8B,CAAC,CAAA;IAClD,OAAO,aAAa,CAAA;AACtB,CAAC;AA5BD,oBA4BC"}
@@ -49,7 +49,7 @@ function load() {
49
49
  if (!(config === null || config === void 0 ? void 0 : config.security) && reqAuth) {
50
50
  config.security = 'bearer';
51
51
  }
52
- const { title = '', description = '', enable = (0, yn_1.default)(defaultConfig.enable, true), deprecated = (0, yn_1.default)(defaultConfig.deprecated, false), tags = defaultConfig.tags, version = defaultConfig.version || '', security = defaultConfig.security, query, params, body, response } = config || {};
52
+ const { title = '', description = '', enable = (0, yn_1.default)(defaultConfig.enable, true), deprecated = (0, yn_1.default)(defaultConfig.deprecated, false), tags = defaultConfig.tags, version = defaultConfig.version || '', security = defaultConfig.security, query, params, body, response, consumes } = config || {};
53
53
  const endpoint = `${dir}${pathName.replace(/\/+$/, '')}`;
54
54
  const method = methodCase.toUpperCase();
55
55
  const num = index + 1;
@@ -93,6 +93,8 @@ function load() {
93
93
  doc.params = params;
94
94
  if (body)
95
95
  doc.body = body;
96
+ if (consumes)
97
+ doc.consumes = consumes;
96
98
  validRoutes.push({
97
99
  handler,
98
100
  method,
@@ -1 +1 @@
1
- {"version":3,"file":"router.js","sourceRoot":"","sources":["../../../lib/loader/router.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"router.js","sourceRoot":"","sources":["../../../lib/loader/router.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,117 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.start = exports.load = void 0;
7
+ const lodash_1 = __importDefault(require("lodash"));
8
+ const path_1 = require("../util/path");
9
+ const toad_scheduler_1 = require("toad-scheduler");
10
+ const glob = require('glob');
11
+ const path = require('path');
12
+ function load() {
13
+ const patterns = (0, path_1.normalizePatterns)(['..', 'schedules', '*.job.{ts,js}'], ['src', 'schedules', '*.job.{ts,js}']);
14
+ const jobs = [];
15
+ const jobScheduleDefaults = {
16
+ active: false,
17
+ type: 'interval',
18
+ async: true,
19
+ preventOverrun: true,
20
+ cron: {},
21
+ interval: {
22
+ days: 0,
23
+ hours: 0,
24
+ minutes: 0,
25
+ seconds: 0,
26
+ milliseconds: 0,
27
+ runImmediately: false
28
+ }
29
+ };
30
+ patterns.forEach((pattern) => {
31
+ log.t && log.trace('Looking for ' + pattern);
32
+ glob.sync(pattern).forEach((f) => {
33
+ var _a;
34
+ log.t && log.trace(`* Add job schedule from ${f}`);
35
+ const jobName = path.basename(f, path.extname(f));
36
+ let { job, schedule: s } = require(f);
37
+ let isLoadedAndEnabled = false;
38
+ if (s && s.active) {
39
+ isLoadedAndEnabled = true;
40
+ let schedule = lodash_1.default.cloneDeep(jobScheduleDefaults);
41
+ schedule = lodash_1.default.merge(schedule, s);
42
+ if (!job || typeof job !== 'function') {
43
+ log.t && log.error(`* Job ${jobName} `);
44
+ isLoadedAndEnabled = false;
45
+ }
46
+ if (!schedule.type || !['cron', 'interval'].includes(schedule.type)) {
47
+ log.t && log.error(`* Job ${jobName}: schedule.type must be cron or interval`);
48
+ isLoadedAndEnabled = false;
49
+ }
50
+ if (schedule.type === 'cron' && !((_a = schedule.cron) === null || _a === void 0 ? void 0 : _a.expression)) {
51
+ log.t && log.error(`* Job ${jobName}: schedule.cron.expression not defined`);
52
+ isLoadedAndEnabled = false;
53
+ }
54
+ if (schedule.type === 'interval') {
55
+ const { days = 0, hours = 0, minutes = 0, seconds = 0, milliseconds = 0 } = schedule.interval || {};
56
+ const totalIntervalMs = milliseconds + 1000 * (seconds + 60 * (minutes + 60 * (hours + 24 * days)));
57
+ if (totalIntervalMs < 1000) {
58
+ log.t && log.error(`* Job ${jobName}: schedule.interval must have a total greater or equal to 1s`);
59
+ isLoadedAndEnabled = false;
60
+ }
61
+ }
62
+ isLoadedAndEnabled &&
63
+ jobs.push({
64
+ jobName,
65
+ schedule,
66
+ job
67
+ });
68
+ }
69
+ log.t && log.trace(`* Job schedule ${jobName} ${isLoadedAndEnabled ? 'enabled' : 'disabled'}`);
70
+ });
71
+ });
72
+ log.d && log.debug(`Schedule Jobs loaded: ${(jobs === null || jobs === void 0 ? void 0 : jobs.length) || 0}`);
73
+ return jobs;
74
+ }
75
+ exports.load = load;
76
+ function start(server, jobs) {
77
+ if (jobs.length > 0) {
78
+ log.trace('* Job schedule attach all tasks');
79
+ jobs.forEach((job) => {
80
+ const { schedule, job: fn, jobName } = job;
81
+ let task = null;
82
+ if (schedule.async) {
83
+ task = new toad_scheduler_1.AsyncTask(jobName, fn, (err) => {
84
+ log.error(`Job ${jobName} throws an error`);
85
+ log.error(err);
86
+ });
87
+ }
88
+ else {
89
+ task = new toad_scheduler_1.Task(jobName, fn);
90
+ }
91
+ if (schedule.type === 'cron') {
92
+ const taskJob = new toad_scheduler_1.CronJob({
93
+ cronExpression: schedule.cron.expression,
94
+ timezone: schedule.cron.tomezone
95
+ }, task, {
96
+ preventOverrun: schedule.preventOverrun
97
+ });
98
+ server.schedule.addCronJob(taskJob);
99
+ }
100
+ else {
101
+ const taskJob = new toad_scheduler_1.SimpleIntervalJob({
102
+ days: schedule.interval.days || 0,
103
+ hours: schedule.interval.hours || 0,
104
+ minutes: schedule.interval.minutes || 0,
105
+ seconds: schedule.interval.seconds || 0,
106
+ milliseconds: schedule.interval.milliseconds || 0,
107
+ runImmediately: schedule.interval.runImmediately
108
+ }, task, {
109
+ preventOverrun: schedule.preventOverrun
110
+ });
111
+ server.scheduler.addSimpleIntervalJob(taskJob);
112
+ }
113
+ });
114
+ }
115
+ }
116
+ exports.start = start;
117
+ //# sourceMappingURL=schedules.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schedules.js","sourceRoot":"","sources":["../../../lib/loader/schedules.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.job = exports.schedule = void 0;
13
+ exports.schedule = {
14
+ active: false,
15
+ interval: {
16
+ seconds: 10
17
+ }
18
+ };
19
+ function job() {
20
+ return __awaiter(this, void 0, void 0, function* () {
21
+ log.info('tick job TEST every 10 seconds');
22
+ });
23
+ }
24
+ exports.job = job;
25
+ //# sourceMappingURL=test.job.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test.job.js","sourceRoot":"","sources":["../../../lib/schedules/test.job.ts"],"names":[],"mappings":";;;;;;;;;;;;AAEa,QAAA,QAAQ,GAAgB;IACnC,MAAM,EAAE,KAAK;IACb,QAAQ,EAAE;QACR,OAAO,EAAE,EAAE;KACZ;CACF,CAAA;AAED,SAAsB,GAAG;;QACvB,GAAG,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAA;IAC5C,CAAC;CAAA;AAFD,kBAEC"}
package/dist/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@volcanicminds/backend",
3
- "version": "0.6.5",
3
+ "version": "0.7.1",
4
4
  "codename": "turin",
5
5
  "license": "MIT",
6
6
  "description": "The volcanic (minds) backend",
@@ -47,39 +47,45 @@
47
47
  "test": "yarn test:full",
48
48
  "test:full": "cross-env PORT=2231 NODE_ENV=memory BROWSER=false mocha ./test/index.spec.ts -t 100000",
49
49
  "reset": "yarn && yarn upgrade && yarn compile",
50
- "upgrade-deps": "yarn upgrade-interactive"
50
+ "upgrade-deps": "yarn upgrade-interactive",
51
+ "upgrade-pkg": "yarn npm-upgrade"
51
52
  },
52
53
  "dependencies": {
53
- "@apollo/server": "^4.9.3",
54
- "@as-integrations/fastify": "^1.3.2",
55
- "@fastify/compress": "^6.4.0",
56
- "@fastify/cors": "^8.4.0",
57
- "@fastify/helmet": "^10.1.1",
58
- "@fastify/jwt": "^6.7.1",
59
- "@fastify/rate-limit": "^7.6.0",
60
- "@fastify/swagger": "^8.10.1",
61
- "@fastify/swagger-ui": "^1.9.3",
62
- "@types/node": "^20.7.0",
54
+ "@apollo/server": "^4.10.0",
55
+ "@as-integrations/fastify": "^2.1.1",
56
+ "@fastify/compress": "^7.0.0",
57
+ "@fastify/cors": "^9.0.1",
58
+ "@fastify/helmet": "^11.1.1",
59
+ "@fastify/jwt": "^8.0.0",
60
+ "@fastify/multipart": "^8.1.0",
61
+ "@fastify/rate-limit": "^9.1.0",
62
+ "@fastify/schedule": "^4.1.1",
63
+ "@fastify/swagger": "^8.14.0",
64
+ "@fastify/swagger-ui": "^3.0.0",
65
+ "@types/node": "^20.11.20",
63
66
  "dayjs": "^1.11.10",
64
- "dotenv": "^16.3.1",
65
- "fastify": "^4.23.2",
66
- "glob": "^8.1.0",
67
+ "dotenv": "^16.4.5",
68
+ "fastify": "^4.26.1",
69
+ "glob": "^10.3.10",
67
70
  "graphql": "^16.8.1",
68
71
  "i18n": "^0.15.1",
69
- "nanoid": "^4.0.2",
70
- "object-sizeof": "^1.6.3",
71
- "pino": "^8.15.1",
72
- "pino-pretty": "^9.4.1",
72
+ "lodash": "^4.17.21",
73
+ "nanoid": "^5.0.6",
74
+ "object-sizeof": "^2.6.4",
75
+ "pino": "^8.19.0",
76
+ "pino-pretty": "^10.3.1",
73
77
  "root-require": "^0.3.1",
74
- "semver": "^7.5.4"
78
+ "semver": "^7.6.0",
79
+ "toad-scheduler": "^3.0.1"
75
80
  },
76
81
  "devDependencies": {
77
- "@types/mocha": "^10.0.1",
82
+ "@types/mocha": "^10.0.6",
78
83
  "cross-env": "^7.0.3",
79
84
  "expect": "^29.7.0",
80
- "mocha": "^10.2.0",
81
- "nodemon": "^2.0.22",
82
- "ts-node": "^10.9.1",
85
+ "mocha": "^10.3.0",
86
+ "nodemon": "^3.1.0",
87
+ "npm-upgrade": "^3.1.0",
88
+ "ts-node": "^10.9.2",
83
89
  "typescript": "^5.3.3"
84
90
  },
85
91
  "repository": {
package/index.d.ts CHANGED
@@ -10,5 +10,7 @@ export {
10
10
  Route,
11
11
  RouteConfig,
12
12
  ConfiguredRoute,
13
- UserManagement
13
+ UserManagement,
14
+ TokenManagement,
15
+ JobSchedule
14
16
  } from './types/global'
package/index.ts CHANGED
@@ -15,16 +15,19 @@ import * as loaderSchemas from './lib/loader/schemas'
15
15
  import * as loaderTracking from './lib/loader/tracking'
16
16
  import * as loaderTranslation from './lib/loader/translation'
17
17
  import * as loaderConfig from './lib/loader/general'
18
+ import * as loaderSchedules from './lib/loader/schedules'
18
19
 
19
20
  import fastify, { FastifyInstance } from 'fastify'
20
21
  import jwtValidator from '@fastify/jwt'
21
22
  import swagger from '@fastify/swagger'
22
23
  import swaggerUI from '@fastify/swagger-ui'
24
+ import { fastifySchedule } from '@fastify/schedule'
23
25
 
24
26
  import cors from '@fastify/cors'
25
27
  import helmet from '@fastify/helmet'
26
28
  import compress from '@fastify/compress'
27
29
  import rateLimit from '@fastify/rate-limit'
30
+ import multipart from '@fastify/multipart'
28
31
 
29
32
  import { ApolloServer } from '@apollo/server'
30
33
  import fastifyApollo, { fastifyApolloDrainPlugin } from '@as-integrations/fastify'
@@ -137,6 +140,15 @@ async function addFastifySwagger(server: FastifyInstance) {
137
140
  }
138
141
  }
139
142
 
143
+ async function addFastifySchedule(server: FastifyInstance) {
144
+ const { scheduler = false } = global.config?.options || {}
145
+ if (scheduler) {
146
+ log.trace('Add scheduler plugin')
147
+
148
+ await server.register(fastifySchedule)
149
+ }
150
+ }
151
+
140
152
  const start = async (decorators) => {
141
153
  const begin = new Date().getTime()
142
154
  mark.print(logger)
@@ -166,10 +178,11 @@ const start = async (decorators) => {
166
178
  const plugins = loaderPlugins.load()
167
179
 
168
180
  // Helmet is not usable with Apollo Server
169
- !loadApollo && plugins?.helmet && (await server.register(helmet))
170
- plugins?.rateLimit && (await server.register(rateLimit))
181
+ !loadApollo && plugins?.helmet && (await server.register(helmet, plugins.helmet || {}))
182
+ plugins?.rateLimit && (await server.register(rateLimit, plugins.rateLimit || {}))
183
+ plugins?.multipart && (await server.register(multipart, plugins.multipart || {}))
171
184
  plugins?.cors && (await server.register(cors, plugins.cors || {}))
172
- plugins?.compress && (await server.register(compress))
185
+ plugins?.compress && (await server.register(compress, plugins.compress || {}))
173
186
 
174
187
  // JWT Validator
175
188
  log.t && log.trace(`Add JWT - expiresIn: ${JWT_EXPIRES_IN}`)
@@ -190,6 +203,9 @@ const start = async (decorators) => {
190
203
  await addFastifySwagger(server)
191
204
  await addApolloRouting(server, apollo)
192
205
  await addFastifyRouting(server)
206
+ await addFastifySchedule(server)
207
+
208
+ const schedules = loaderSchedules.load()
193
209
 
194
210
  // defaults
195
211
  decorators = {
@@ -334,6 +350,9 @@ const start = async (decorators) => {
334
350
  })
335
351
 
336
352
  global.server = server
353
+
354
+ // Ok, it's time to start the scheduler jobs
355
+ await loaderSchedules.start(server, schedules)
337
356
  return server
338
357
  }
339
358
 
@@ -350,7 +369,8 @@ export {
350
369
  RouteConfig,
351
370
  ConfiguredRoute,
352
371
  UserManagement,
353
- TokenManagement
372
+ TokenManagement,
373
+ JobSchedule
354
374
  } from './types/global'
355
375
 
356
376
  /**
@@ -4,6 +4,7 @@ module.exports = {
4
4
  name: 'general',
5
5
  enable: true,
6
6
  options: {
7
- reset_external_id_on_login: false
7
+ reset_external_id_on_login: false,
8
+ scheduler: false
8
9
  }
9
10
  }
@@ -53,5 +53,10 @@ module.exports = [
53
53
  name: 'compress',
54
54
  enable: false,
55
55
  options: {}
56
+ },
57
+ {
58
+ name: 'multipart',
59
+ enable: false,
60
+ options: {}
56
61
  }
57
62
  ]
@@ -7,7 +7,8 @@ export function load() {
7
7
  name: 'general',
8
8
  enable: true,
9
9
  options: {
10
- reset_external_id_on_login: false
10
+ reset_external_id_on_login: false,
11
+ scheduler: false
11
12
  }
12
13
  }
13
14
 
@@ -67,7 +67,8 @@ export function load(): ConfiguredRoute[] {
67
67
  query,
68
68
  params,
69
69
  body,
70
- response
70
+ response,
71
+ consumes
71
72
  } = config || {}
72
73
 
73
74
  // adjust something
@@ -129,11 +130,13 @@ export function load(): ConfiguredRoute[] {
129
130
  querystring: any | undefined
130
131
  params: any | undefined
131
132
  body: any | undefined
133
+ consumes: any | undefined
132
134
  }
133
135
 
134
136
  if (query) doc.querystring = query
135
137
  if (params) doc.params = params
136
138
  if (body) doc.body = body
139
+ if (consumes) doc.consumes = consumes
137
140
 
138
141
  validRoutes.push({
139
142
  handler,
@@ -0,0 +1,141 @@
1
+ import _ from 'lodash'
2
+ import { JobSchedule } from '../../types/global'
3
+ import { normalizePatterns } from '../util/path'
4
+ import { CronJob, SimpleIntervalJob, Task, AsyncTask } from 'toad-scheduler'
5
+
6
+ const glob = require('glob')
7
+ const path = require('path')
8
+
9
+ export function load(): any[] {
10
+ const patterns = normalizePatterns(['..', 'schedules', '*.job.{ts,js}'], ['src', 'schedules', '*.job.{ts,js}'])
11
+ const jobs: any = []
12
+
13
+ const jobScheduleDefaults: JobSchedule = {
14
+ active: false, // boolean (required)
15
+ type: 'interval', // cron|interval, default: interval
16
+ async: true, // boolean, default: true
17
+ preventOverrun: true, // boolean, default: true
18
+
19
+ cron: {
20
+ // expression: null // required if type = 'cron', use cron syntax (if not specified cron will be disabled)
21
+ // timezone: null // optional, like "Europe/Rome" (to test)
22
+ },
23
+
24
+ interval: {
25
+ days: 0, // number, default 0
26
+ hours: 0, // number, default 0
27
+ minutes: 0, // number, default 0
28
+ seconds: 0, // number, default 0
29
+ milliseconds: 0, // number, default 0
30
+ runImmediately: false // boolean, default: false
31
+ }
32
+ }
33
+
34
+ patterns.forEach((pattern) => {
35
+ log.t && log.trace('Looking for ' + pattern)
36
+ glob.sync(pattern).forEach((f: string) => {
37
+ log.t && log.trace(`* Add job schedule from ${f}`)
38
+
39
+ const jobName = path.basename(f, path.extname(f))
40
+ let { job, schedule: s } = require(f)
41
+
42
+ let isLoadedAndEnabled = false
43
+ if (s && s.active) {
44
+ isLoadedAndEnabled = true
45
+
46
+ // apply defaults
47
+
48
+ let schedule = _.cloneDeep(jobScheduleDefaults)
49
+ schedule = _.merge(schedule, s)
50
+
51
+ if (!job || typeof job !== 'function') {
52
+ log.t && log.error(`* Job ${jobName} `)
53
+ isLoadedAndEnabled = false
54
+ }
55
+
56
+ if (!schedule.type || !['cron', 'interval'].includes(schedule.type)) {
57
+ log.t && log.error(`* Job ${jobName}: schedule.type must be cron or interval`)
58
+ isLoadedAndEnabled = false
59
+ }
60
+
61
+ if (schedule.type === 'cron' && !schedule.cron?.expression) {
62
+ log.t && log.error(`* Job ${jobName}: schedule.cron.expression not defined`)
63
+ isLoadedAndEnabled = false
64
+ }
65
+
66
+ if (schedule.type === 'interval') {
67
+ const { days = 0, hours = 0, minutes = 0, seconds = 0, milliseconds = 0 } = schedule.interval || {}
68
+ const totalIntervalMs = milliseconds + 1000 * (seconds + 60 * (minutes + 60 * (hours + 24 * days)))
69
+
70
+ if (totalIntervalMs < 1000) {
71
+ log.t && log.error(`* Job ${jobName}: schedule.interval must have a total greater or equal to 1s`)
72
+ isLoadedAndEnabled = false
73
+ }
74
+ }
75
+
76
+ isLoadedAndEnabled &&
77
+ jobs.push({
78
+ jobName,
79
+ schedule,
80
+ job
81
+ })
82
+ }
83
+
84
+ log.t && log.trace(`* Job schedule ${jobName} ${isLoadedAndEnabled ? 'enabled' : 'disabled'}`)
85
+ })
86
+ })
87
+
88
+ log.d && log.debug(`Schedule Jobs loaded: ${jobs?.length || 0}`)
89
+ return jobs
90
+ }
91
+
92
+ export function start(server: any, jobs: any[]) {
93
+ if (jobs.length > 0) {
94
+ log.trace('* Job schedule attach all tasks')
95
+
96
+ jobs.forEach((job) => {
97
+ const { schedule, job: fn, jobName } = job
98
+
99
+ let task: Task | AsyncTask | null = null
100
+
101
+ if (schedule.async) {
102
+ task = new AsyncTask(jobName, fn, (err) => {
103
+ log.error(`Job ${jobName} throws an error`)
104
+ log.error(err)
105
+ })
106
+ } else {
107
+ task = new Task(jobName, fn)
108
+ }
109
+
110
+ if (schedule.type === 'cron') {
111
+ const taskJob = new CronJob(
112
+ {
113
+ cronExpression: schedule.cron.expression,
114
+ timezone: schedule.cron.tomezone
115
+ },
116
+ task,
117
+ {
118
+ preventOverrun: schedule.preventOverrun
119
+ }
120
+ )
121
+ server.schedule.addCronJob(taskJob)
122
+ } else {
123
+ const taskJob = new SimpleIntervalJob(
124
+ {
125
+ days: schedule.interval.days || 0,
126
+ hours: schedule.interval.hours || 0,
127
+ minutes: schedule.interval.minutes || 0,
128
+ seconds: schedule.interval.seconds || 0,
129
+ milliseconds: schedule.interval.milliseconds || 0,
130
+ runImmediately: schedule.interval.runImmediately
131
+ },
132
+ task,
133
+ {
134
+ preventOverrun: schedule.preventOverrun
135
+ }
136
+ )
137
+ server.scheduler.addSimpleIntervalJob(taskJob)
138
+ }
139
+ })
140
+ }
141
+ }
@@ -0,0 +1,12 @@
1
+ import { JobSchedule } from '../../types/global'
2
+
3
+ export const schedule: JobSchedule = {
4
+ active: false,
5
+ interval: {
6
+ seconds: 10
7
+ }
8
+ }
9
+
10
+ export async function job() {
11
+ log.info('tick job TEST every 10 seconds')
12
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@volcanicminds/backend",
3
- "version": "0.6.5",
3
+ "version": "0.7.1",
4
4
  "codename": "turin",
5
5
  "license": "MIT",
6
6
  "description": "The volcanic (minds) backend",
@@ -47,39 +47,45 @@
47
47
  "test": "yarn test:full",
48
48
  "test:full": "cross-env PORT=2231 NODE_ENV=memory BROWSER=false mocha ./test/index.spec.ts -t 100000",
49
49
  "reset": "yarn && yarn upgrade && yarn compile",
50
- "upgrade-deps": "yarn upgrade-interactive"
50
+ "upgrade-deps": "yarn upgrade-interactive",
51
+ "upgrade-pkg": "yarn npm-upgrade"
51
52
  },
52
53
  "dependencies": {
53
- "@apollo/server": "^4.9.3",
54
- "@as-integrations/fastify": "^1.3.2",
55
- "@fastify/compress": "^6.4.0",
56
- "@fastify/cors": "^8.4.0",
57
- "@fastify/helmet": "^10.1.1",
58
- "@fastify/jwt": "^6.7.1",
59
- "@fastify/rate-limit": "^7.6.0",
60
- "@fastify/swagger": "^8.10.1",
61
- "@fastify/swagger-ui": "^1.9.3",
62
- "@types/node": "^20.7.0",
54
+ "@apollo/server": "^4.10.0",
55
+ "@as-integrations/fastify": "^2.1.1",
56
+ "@fastify/compress": "^7.0.0",
57
+ "@fastify/cors": "^9.0.1",
58
+ "@fastify/helmet": "^11.1.1",
59
+ "@fastify/jwt": "^8.0.0",
60
+ "@fastify/multipart": "^8.1.0",
61
+ "@fastify/rate-limit": "^9.1.0",
62
+ "@fastify/schedule": "^4.1.1",
63
+ "@fastify/swagger": "^8.14.0",
64
+ "@fastify/swagger-ui": "^3.0.0",
65
+ "@types/node": "^20.11.20",
63
66
  "dayjs": "^1.11.10",
64
- "dotenv": "^16.3.1",
65
- "fastify": "^4.23.2",
66
- "glob": "^8.1.0",
67
+ "dotenv": "^16.4.5",
68
+ "fastify": "^4.26.1",
69
+ "glob": "^10.3.10",
67
70
  "graphql": "^16.8.1",
68
71
  "i18n": "^0.15.1",
69
- "nanoid": "^4.0.2",
70
- "object-sizeof": "^1.6.3",
71
- "pino": "^8.15.1",
72
- "pino-pretty": "^9.4.1",
72
+ "lodash": "^4.17.21",
73
+ "nanoid": "^5.0.6",
74
+ "object-sizeof": "^2.6.4",
75
+ "pino": "^8.19.0",
76
+ "pino-pretty": "^10.3.1",
73
77
  "root-require": "^0.3.1",
74
- "semver": "^7.5.4"
78
+ "semver": "^7.6.0",
79
+ "toad-scheduler": "^3.0.1"
75
80
  },
76
81
  "devDependencies": {
77
- "@types/mocha": "^10.0.1",
82
+ "@types/mocha": "^10.0.6",
78
83
  "cross-env": "^7.0.3",
79
84
  "expect": "^29.7.0",
80
- "mocha": "^10.2.0",
81
- "nodemon": "^2.0.22",
82
- "ts-node": "^10.9.1",
85
+ "mocha": "^10.3.0",
86
+ "nodemon": "^3.1.0",
87
+ "npm-upgrade": "^3.1.0",
88
+ "ts-node": "^10.9.2",
83
89
  "typescript": "^5.3.3"
84
90
  },
85
91
  "repository": {
package/types/global.d.ts CHANGED
@@ -39,6 +39,7 @@ export interface RouteConfig {
39
39
  query?: any
40
40
  body?: any
41
41
  response?: any
42
+ consumes?: any
42
43
  }
43
44
 
44
45
  export interface Route {
@@ -55,6 +56,28 @@ export interface GeneralConfig {
55
56
  enable: boolean
56
57
  options: {
57
58
  reset_external_id_on_login: boolean
59
+ scheduler: boolean
60
+ }
61
+ }
62
+
63
+ export interface JobSchedule {
64
+ active: boolean // boolean (required)
65
+ type?: string // cron|interval, default: interval
66
+ async?: boolean // boolean, default: true
67
+ preventOverrun?: boolean // boolean, default: true
68
+
69
+ cron?: {
70
+ expression?: string // required if type = 'cron', use cron syntax (if not specified cron will be disabled)
71
+ timezone?: string // optional, like "Europe/Rome" (to test)
72
+ }
73
+
74
+ interval?: {
75
+ days?: number // number, default 0
76
+ hours?: number // number, default 0
77
+ minutes?: number // number, default 0
78
+ seconds?: number // number, default 0
79
+ milliseconds?: number // number, default 0
80
+ runImmediately?: boolean // boolean, default: false
58
81
  }
59
82
  }
60
83
 
@@ -79,6 +102,7 @@ export interface ConfiguredRoute {
79
102
  querystring?: any
80
103
  body?: any
81
104
  response?: any
105
+ consumes?: any
82
106
  }
83
107
  }
84
108