@devbro/pashmak 0.1.20 → 0.1.22
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/dist/app/console/queue/queue_migration.tpl +1 -1
- package/dist/bin/app/console/DefaultCommand.cjs +76 -88
- package/dist/bin/app/console/KeyGenerateCommand.cjs +76 -88
- package/dist/bin/app/console/StartCommand.cjs +76 -88
- package/dist/bin/app/console/generate/GenerateControllerCommand.cjs +76 -88
- package/dist/bin/app/console/generate/index.cjs +76 -88
- package/dist/bin/app/console/index.cjs +76 -88
- package/dist/bin/app/console/migrate/GenerateMigrateCommand.cjs +76 -88
- package/dist/bin/app/console/migrate/MigrateCommand.cjs +76 -88
- package/dist/bin/app/console/migrate/MigrateRollbackCommand.cjs +76 -88
- package/dist/bin/app/console/migrate/index.cjs +76 -88
- package/dist/bin/app/console/queue/GenerateQueueMigrateCommand.cjs +76 -88
- package/dist/bin/cache.cjs +76 -88
- package/dist/bin/facades.cjs +76 -88
- package/dist/bin/factories.cjs +68 -84
- package/dist/bin/index.cjs +79 -91
- package/dist/bin/middlewares.cjs +76 -88
- package/dist/bin/queue.cjs +66 -78
- package/dist/facades.mjs +15 -10
- package/dist/facades.mjs.map +1 -1
- package/dist/factories.d.mts +1 -13
- package/dist/factories.mjs +13 -34
- package/dist/factories.mjs.map +1 -1
- package/dist/queue.d.mts +11 -5
- package/dist/queue.mjs +51 -45
- package/dist/queue.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -11,7 +11,7 @@ export default class {{className}} extends Migration {
|
|
|
11
11
|
table.datetimeTz('last_tried_at').nullable(true);
|
|
12
12
|
table.text('process_message').default('');
|
|
13
13
|
table.string('status').default('pending');
|
|
14
|
-
table.
|
|
14
|
+
table.integer('retried_count').default(0);
|
|
15
15
|
});
|
|
16
16
|
}
|
|
17
17
|
|
|
@@ -455,7 +455,7 @@ var Router = class {
|
|
|
455
455
|
|
|
456
456
|
// src/facades.mts
|
|
457
457
|
var import_neko_scheduler = require("@devbro/neko-scheduler");
|
|
458
|
-
var
|
|
458
|
+
var import_neko_helper2 = require("@devbro/neko-helper");
|
|
459
459
|
var import_neko_context2 = require("@devbro/neko-context");
|
|
460
460
|
var import_neko_storage2 = require("@devbro/neko-storage");
|
|
461
461
|
var import_neko_mailer2 = require("@devbro/neko-mailer");
|
|
@@ -481,11 +481,11 @@ __export(queue_exports, {
|
|
|
481
481
|
DatabaseTransport: () => DatabaseTransport
|
|
482
482
|
});
|
|
483
483
|
__reExport(queue_exports, require("@devbro/neko-queue"));
|
|
484
|
+
var import_neko_helper = require("@devbro/neko-helper");
|
|
484
485
|
var DatabaseTransport = class {
|
|
485
486
|
static {
|
|
486
487
|
__name(this, "DatabaseTransport");
|
|
487
488
|
}
|
|
488
|
-
activeIntervals = /* @__PURE__ */ new Set();
|
|
489
489
|
config = {
|
|
490
490
|
queue_table: "queue_messages",
|
|
491
491
|
db_connection: "default",
|
|
@@ -494,14 +494,48 @@ var DatabaseTransport = class {
|
|
|
494
494
|
message_limit: 10
|
|
495
495
|
// messages per each fetch
|
|
496
496
|
};
|
|
497
|
-
|
|
497
|
+
channels = /* @__PURE__ */ new Map();
|
|
498
|
+
messageQueues = [];
|
|
499
|
+
repeater;
|
|
500
|
+
processMessage = /* @__PURE__ */ __name(async () => {
|
|
501
|
+
const conn = db(this.config.db_connection);
|
|
502
|
+
try {
|
|
503
|
+
await conn.connect();
|
|
504
|
+
let q = conn.getQuery();
|
|
505
|
+
let messages = await q.table(this.config.queue_table).whereOp("channel", "in", Array.from(this.channels.keys())).whereOp("status", "in", ["pending", "failed"]).limit(this.config.message_limit).orderBy("last_tried_at", "asc").get();
|
|
506
|
+
for (let msg of messages) {
|
|
507
|
+
try {
|
|
508
|
+
let callback = this.channels.get(msg.channel);
|
|
509
|
+
await callback(msg.message);
|
|
510
|
+
await q.table(this.config.queue_table).whereOp("id", "=", msg.id).update({
|
|
511
|
+
status: "processed",
|
|
512
|
+
updated_at: /* @__PURE__ */ new Date(),
|
|
513
|
+
last_tried_at: /* @__PURE__ */ new Date(),
|
|
514
|
+
retried_count: (msg.retried_count || 0) + 1
|
|
515
|
+
});
|
|
516
|
+
} catch (error) {
|
|
517
|
+
await q.table(this.config.queue_table).whereOp("id", "=", msg.id).update({
|
|
518
|
+
status: "failed",
|
|
519
|
+
last_tried_at: /* @__PURE__ */ new Date(),
|
|
520
|
+
retried_count: (msg.retried_count || 0) + 1,
|
|
521
|
+
process_message: error.message || "Error processing message"
|
|
522
|
+
});
|
|
523
|
+
}
|
|
524
|
+
}
|
|
525
|
+
} catch (error) {
|
|
526
|
+
logger().error("Error in DatabaseTransport listen interval:", {
|
|
527
|
+
error
|
|
528
|
+
});
|
|
529
|
+
} finally {
|
|
530
|
+
await conn.disconnect();
|
|
531
|
+
}
|
|
532
|
+
}, "processMessage");
|
|
533
|
+
constructor(config2 = {}) {
|
|
498
534
|
this.config = { ...this.config, ...config2 };
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
setMessageLimit(limit) {
|
|
504
|
-
this.config.message_limit = limit;
|
|
535
|
+
this.repeater = (0, import_neko_helper.createRepeater)(
|
|
536
|
+
this.processMessage,
|
|
537
|
+
this.config.listen_interval * 1e3
|
|
538
|
+
);
|
|
505
539
|
}
|
|
506
540
|
async dispatch(channel, message) {
|
|
507
541
|
const conn = db(this.config.db_connection);
|
|
@@ -519,50 +553,22 @@ var DatabaseTransport = class {
|
|
|
519
553
|
created_at: /* @__PURE__ */ new Date(),
|
|
520
554
|
updated_at: /* @__PURE__ */ new Date(),
|
|
521
555
|
last_tried_at: null,
|
|
522
|
-
process_message: ""
|
|
556
|
+
process_message: "",
|
|
557
|
+
retried_count: 0,
|
|
558
|
+
status: "pending"
|
|
523
559
|
});
|
|
524
560
|
} finally {
|
|
525
561
|
await conn.disconnect();
|
|
526
562
|
}
|
|
527
563
|
}
|
|
528
|
-
async
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
await conn.connect();
|
|
534
|
-
let q = conn.getQuery();
|
|
535
|
-
let messages = await q.table(this.config.queue_table).whereOp("channel", "=", channel).whereOp("processed", "=", false).limit(this.config.message_limit).orderBy("last_tried_at", "asc").get();
|
|
536
|
-
for (let msg of messages) {
|
|
537
|
-
try {
|
|
538
|
-
await callback(msg.message);
|
|
539
|
-
await q.table(this.config.queue_table).whereOp("id", "=", msg.id).update({
|
|
540
|
-
processed: true,
|
|
541
|
-
updated_at: /* @__PURE__ */ new Date()
|
|
542
|
-
});
|
|
543
|
-
} catch (error) {
|
|
544
|
-
await q.table(this.config.queue_table).whereOp("id", "=", msg.id).update({
|
|
545
|
-
processed: false,
|
|
546
|
-
last_tried_at: /* @__PURE__ */ new Date(),
|
|
547
|
-
process_message: error.message || "Error processing message"
|
|
548
|
-
});
|
|
549
|
-
}
|
|
550
|
-
}
|
|
551
|
-
} catch (error) {
|
|
552
|
-
this.activeIntervals.delete(intervalId);
|
|
553
|
-
logger().error("Error in DatabaseTransport listen interval:", { error });
|
|
554
|
-
} finally {
|
|
555
|
-
await conn.disconnect();
|
|
556
|
-
}
|
|
557
|
-
}, this.config.listen_interval * 1e3);
|
|
558
|
-
this.activeIntervals.add(intervalId);
|
|
559
|
-
});
|
|
564
|
+
async registerListener(channel, callback) {
|
|
565
|
+
this.channels.set(channel, callback);
|
|
566
|
+
}
|
|
567
|
+
async startListening() {
|
|
568
|
+
this.repeater.start();
|
|
560
569
|
}
|
|
561
570
|
async stopListening() {
|
|
562
|
-
|
|
563
|
-
clearInterval(intervalId);
|
|
564
|
-
}
|
|
565
|
-
this.activeIntervals.clear();
|
|
571
|
+
this.repeater.stop();
|
|
566
572
|
}
|
|
567
573
|
};
|
|
568
574
|
|
|
@@ -585,19 +591,7 @@ var FlexibleFactory = class {
|
|
|
585
591
|
return ctor(...args);
|
|
586
592
|
}
|
|
587
593
|
};
|
|
588
|
-
|
|
589
|
-
static {
|
|
590
|
-
__name(this, "MailerFactory");
|
|
591
|
-
}
|
|
592
|
-
static instance = new FlexibleFactory();
|
|
593
|
-
static register(key, factory) {
|
|
594
|
-
_MailerFactory.instance.register(key, factory);
|
|
595
|
-
}
|
|
596
|
-
static create(key, ...args) {
|
|
597
|
-
return _MailerFactory.instance.create(key, ...args);
|
|
598
|
-
}
|
|
599
|
-
};
|
|
600
|
-
MailerFactory.register("logger", (opt) => {
|
|
594
|
+
import_neko_mailer.MailerProviderFactory.register("logger", (opt) => {
|
|
601
595
|
return new import_neko_mailer.FunctionProvider((mail) => {
|
|
602
596
|
logger().info({
|
|
603
597
|
msg: "Sending email",
|
|
@@ -605,32 +599,20 @@ MailerFactory.register("logger", (opt) => {
|
|
|
605
599
|
});
|
|
606
600
|
});
|
|
607
601
|
});
|
|
608
|
-
|
|
602
|
+
import_neko_mailer.MailerProviderFactory.register("ses", (opt) => {
|
|
609
603
|
return new import_neko_mailer.SESProvider(opt);
|
|
610
604
|
});
|
|
611
|
-
|
|
605
|
+
import_neko_mailer.MailerProviderFactory.register("smtp", (opt) => {
|
|
612
606
|
return new import_neko_mailer.SMTPProvider(opt);
|
|
613
607
|
});
|
|
614
|
-
|
|
608
|
+
import_neko_mailer.MailerProviderFactory.register("memory", (opt) => {
|
|
615
609
|
return new import_neko_mailer.MemoryProvider();
|
|
616
610
|
});
|
|
617
|
-
|
|
618
|
-
static {
|
|
619
|
-
__name(this, "QueueTransportFactory");
|
|
620
|
-
}
|
|
621
|
-
static instance = new FlexibleFactory();
|
|
622
|
-
static register(key, factory) {
|
|
623
|
-
_QueueTransportFactory.instance.register(key, factory);
|
|
624
|
-
}
|
|
625
|
-
static create(key, ...args) {
|
|
626
|
-
return _QueueTransportFactory.instance.create(key, ...args);
|
|
627
|
-
}
|
|
628
|
-
};
|
|
629
|
-
QueueTransportFactory.register("database", (opt) => {
|
|
611
|
+
import_neko_queue2.QueueTransportFactory.register("database", (opt) => {
|
|
630
612
|
let transport = new DatabaseTransport(opt);
|
|
631
613
|
return new import_neko_queue.QueueConnection(transport);
|
|
632
614
|
});
|
|
633
|
-
QueueTransportFactory.register("memory", (opt) => {
|
|
615
|
+
import_neko_queue2.QueueTransportFactory.register("memory", (opt) => {
|
|
634
616
|
let transport = new import_neko_queue2.MemoryTransport(opt);
|
|
635
617
|
return new import_neko_queue.QueueConnection(transport);
|
|
636
618
|
});
|
|
@@ -668,8 +650,8 @@ import_neko_storage.StorageProviderFactory.register("s3", (opt) => {
|
|
|
668
650
|
// src/facades.mts
|
|
669
651
|
var import_neko_cache2 = require("@devbro/neko-cache");
|
|
670
652
|
var import_neko_queue3 = require("@devbro/neko-queue");
|
|
671
|
-
var router = (0,
|
|
672
|
-
var scheduler = (0,
|
|
653
|
+
var router = (0, import_neko_helper2.createSingleton)(() => new Router());
|
|
654
|
+
var scheduler = (0, import_neko_helper2.createSingleton)(() => {
|
|
673
655
|
const rc = new import_neko_scheduler.Scheduler();
|
|
674
656
|
rc.setErrorHandler((err, job) => {
|
|
675
657
|
logger().error({
|
|
@@ -681,12 +663,15 @@ var scheduler = (0, import_neko_helper.createSingleton)(() => {
|
|
|
681
663
|
return rc;
|
|
682
664
|
});
|
|
683
665
|
var db = /* @__PURE__ */ __name((label = "default") => (0, import_neko_context2.ctx)().getOrThrow(["database", label]), "db");
|
|
684
|
-
var storage = (0,
|
|
666
|
+
var storage = (0, import_neko_helper2.createSingleton)((label = "default") => {
|
|
685
667
|
let storage_config = import_neko_config.config.get(["storages", label].join("."));
|
|
686
|
-
const provider = import_neko_storage2.StorageProviderFactory.create(
|
|
668
|
+
const provider = import_neko_storage2.StorageProviderFactory.create(
|
|
669
|
+
storage_config.provider,
|
|
670
|
+
storage_config.config
|
|
671
|
+
);
|
|
687
672
|
return new import_neko_storage2.Storage(provider);
|
|
688
673
|
});
|
|
689
|
-
var cli = (0,
|
|
674
|
+
var cli = (0, import_neko_helper2.createSingleton)(() => {
|
|
690
675
|
const [node, app, ...args] = process.argv;
|
|
691
676
|
return new import_clipanion.Cli({
|
|
692
677
|
binaryLabel: `My Application`,
|
|
@@ -694,7 +679,7 @@ var cli = (0, import_neko_helper.createSingleton)(() => {
|
|
|
694
679
|
binaryVersion: `1.0.0`
|
|
695
680
|
});
|
|
696
681
|
});
|
|
697
|
-
var httpServer = (0,
|
|
682
|
+
var httpServer = (0, import_neko_helper2.createSingleton)(() => {
|
|
698
683
|
const server = new http_exports.HttpServer();
|
|
699
684
|
server.setErrorHandler(async (err, req, res) => {
|
|
700
685
|
if (err instanceof http_exports.HttpError) {
|
|
@@ -729,7 +714,7 @@ var httpServer = (0, import_neko_helper.createSingleton)(() => {
|
|
|
729
714
|
server.setRouter(router());
|
|
730
715
|
return server;
|
|
731
716
|
});
|
|
732
|
-
var logger = (0,
|
|
717
|
+
var logger = (0, import_neko_helper2.createSingleton)((label) => {
|
|
733
718
|
const logger_config = import_neko_config.config.get(["loggers", label].join("."));
|
|
734
719
|
const rc = new import_neko_logger.Logger(logger_config);
|
|
735
720
|
rc.setExtrasFunction((message) => {
|
|
@@ -738,25 +723,28 @@ var logger = (0, import_neko_helper.createSingleton)((label) => {
|
|
|
738
723
|
});
|
|
739
724
|
return rc;
|
|
740
725
|
});
|
|
741
|
-
var mailer = (0,
|
|
726
|
+
var mailer = (0, import_neko_helper2.createSingleton)((label) => {
|
|
742
727
|
const mailer_config = import_neko_config.config.get(["mailer", label].join("."));
|
|
743
|
-
const provider =
|
|
728
|
+
const provider = import_neko_mailer2.MailerProviderFactory.create(
|
|
744
729
|
mailer_config.provider,
|
|
745
730
|
mailer_config.config
|
|
746
731
|
);
|
|
747
732
|
const rc = new import_neko_mailer2.Mailer(provider);
|
|
748
733
|
return rc;
|
|
749
734
|
});
|
|
750
|
-
var queue = (0,
|
|
735
|
+
var queue = (0, import_neko_helper2.createSingleton)((label) => {
|
|
751
736
|
const queue_config = import_neko_config.config.get(["queues", label].join("."));
|
|
752
737
|
if (!queue_config) {
|
|
753
738
|
throw new Error(`Queue configuration for '${label}' not found`);
|
|
754
739
|
}
|
|
755
|
-
const provider = QueueTransportFactory.create(
|
|
740
|
+
const provider = import_neko_queue3.QueueTransportFactory.create(
|
|
741
|
+
queue_config.provider,
|
|
742
|
+
queue_config.config
|
|
743
|
+
);
|
|
756
744
|
const rc = new import_neko_queue3.QueueConnection(provider);
|
|
757
745
|
return rc;
|
|
758
746
|
});
|
|
759
|
-
var cache = (0,
|
|
747
|
+
var cache = (0, import_neko_helper2.createSingleton)((label) => {
|
|
760
748
|
const cache_config = import_neko_config.config.get(["caches", label].join("."));
|
|
761
749
|
if (!cache_config) {
|
|
762
750
|
throw new Error(`Cache configuration for '${label}' not found`);
|
|
@@ -458,7 +458,7 @@ var Router = class {
|
|
|
458
458
|
|
|
459
459
|
// src/facades.mts
|
|
460
460
|
var import_neko_scheduler = require("@devbro/neko-scheduler");
|
|
461
|
-
var
|
|
461
|
+
var import_neko_helper2 = require("@devbro/neko-helper");
|
|
462
462
|
var import_neko_context2 = require("@devbro/neko-context");
|
|
463
463
|
var import_neko_storage2 = require("@devbro/neko-storage");
|
|
464
464
|
var import_neko_mailer2 = require("@devbro/neko-mailer");
|
|
@@ -484,11 +484,11 @@ __export(queue_exports, {
|
|
|
484
484
|
DatabaseTransport: () => DatabaseTransport
|
|
485
485
|
});
|
|
486
486
|
__reExport(queue_exports, require("@devbro/neko-queue"));
|
|
487
|
+
var import_neko_helper = require("@devbro/neko-helper");
|
|
487
488
|
var DatabaseTransport = class {
|
|
488
489
|
static {
|
|
489
490
|
__name(this, "DatabaseTransport");
|
|
490
491
|
}
|
|
491
|
-
activeIntervals = /* @__PURE__ */ new Set();
|
|
492
492
|
config = {
|
|
493
493
|
queue_table: "queue_messages",
|
|
494
494
|
db_connection: "default",
|
|
@@ -497,14 +497,48 @@ var DatabaseTransport = class {
|
|
|
497
497
|
message_limit: 10
|
|
498
498
|
// messages per each fetch
|
|
499
499
|
};
|
|
500
|
-
|
|
500
|
+
channels = /* @__PURE__ */ new Map();
|
|
501
|
+
messageQueues = [];
|
|
502
|
+
repeater;
|
|
503
|
+
processMessage = /* @__PURE__ */ __name(async () => {
|
|
504
|
+
const conn = db(this.config.db_connection);
|
|
505
|
+
try {
|
|
506
|
+
await conn.connect();
|
|
507
|
+
let q = conn.getQuery();
|
|
508
|
+
let messages = await q.table(this.config.queue_table).whereOp("channel", "in", Array.from(this.channels.keys())).whereOp("status", "in", ["pending", "failed"]).limit(this.config.message_limit).orderBy("last_tried_at", "asc").get();
|
|
509
|
+
for (let msg of messages) {
|
|
510
|
+
try {
|
|
511
|
+
let callback = this.channels.get(msg.channel);
|
|
512
|
+
await callback(msg.message);
|
|
513
|
+
await q.table(this.config.queue_table).whereOp("id", "=", msg.id).update({
|
|
514
|
+
status: "processed",
|
|
515
|
+
updated_at: /* @__PURE__ */ new Date(),
|
|
516
|
+
last_tried_at: /* @__PURE__ */ new Date(),
|
|
517
|
+
retried_count: (msg.retried_count || 0) + 1
|
|
518
|
+
});
|
|
519
|
+
} catch (error) {
|
|
520
|
+
await q.table(this.config.queue_table).whereOp("id", "=", msg.id).update({
|
|
521
|
+
status: "failed",
|
|
522
|
+
last_tried_at: /* @__PURE__ */ new Date(),
|
|
523
|
+
retried_count: (msg.retried_count || 0) + 1,
|
|
524
|
+
process_message: error.message || "Error processing message"
|
|
525
|
+
});
|
|
526
|
+
}
|
|
527
|
+
}
|
|
528
|
+
} catch (error) {
|
|
529
|
+
logger().error("Error in DatabaseTransport listen interval:", {
|
|
530
|
+
error
|
|
531
|
+
});
|
|
532
|
+
} finally {
|
|
533
|
+
await conn.disconnect();
|
|
534
|
+
}
|
|
535
|
+
}, "processMessage");
|
|
536
|
+
constructor(config2 = {}) {
|
|
501
537
|
this.config = { ...this.config, ...config2 };
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
setMessageLimit(limit) {
|
|
507
|
-
this.config.message_limit = limit;
|
|
538
|
+
this.repeater = (0, import_neko_helper.createRepeater)(
|
|
539
|
+
this.processMessage,
|
|
540
|
+
this.config.listen_interval * 1e3
|
|
541
|
+
);
|
|
508
542
|
}
|
|
509
543
|
async dispatch(channel, message) {
|
|
510
544
|
const conn = db(this.config.db_connection);
|
|
@@ -522,50 +556,22 @@ var DatabaseTransport = class {
|
|
|
522
556
|
created_at: /* @__PURE__ */ new Date(),
|
|
523
557
|
updated_at: /* @__PURE__ */ new Date(),
|
|
524
558
|
last_tried_at: null,
|
|
525
|
-
process_message: ""
|
|
559
|
+
process_message: "",
|
|
560
|
+
retried_count: 0,
|
|
561
|
+
status: "pending"
|
|
526
562
|
});
|
|
527
563
|
} finally {
|
|
528
564
|
await conn.disconnect();
|
|
529
565
|
}
|
|
530
566
|
}
|
|
531
|
-
async
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
await conn.connect();
|
|
537
|
-
let q = conn.getQuery();
|
|
538
|
-
let messages = await q.table(this.config.queue_table).whereOp("channel", "=", channel).whereOp("processed", "=", false).limit(this.config.message_limit).orderBy("last_tried_at", "asc").get();
|
|
539
|
-
for (let msg of messages) {
|
|
540
|
-
try {
|
|
541
|
-
await callback(msg.message);
|
|
542
|
-
await q.table(this.config.queue_table).whereOp("id", "=", msg.id).update({
|
|
543
|
-
processed: true,
|
|
544
|
-
updated_at: /* @__PURE__ */ new Date()
|
|
545
|
-
});
|
|
546
|
-
} catch (error) {
|
|
547
|
-
await q.table(this.config.queue_table).whereOp("id", "=", msg.id).update({
|
|
548
|
-
processed: false,
|
|
549
|
-
last_tried_at: /* @__PURE__ */ new Date(),
|
|
550
|
-
process_message: error.message || "Error processing message"
|
|
551
|
-
});
|
|
552
|
-
}
|
|
553
|
-
}
|
|
554
|
-
} catch (error) {
|
|
555
|
-
this.activeIntervals.delete(intervalId);
|
|
556
|
-
logger().error("Error in DatabaseTransport listen interval:", { error });
|
|
557
|
-
} finally {
|
|
558
|
-
await conn.disconnect();
|
|
559
|
-
}
|
|
560
|
-
}, this.config.listen_interval * 1e3);
|
|
561
|
-
this.activeIntervals.add(intervalId);
|
|
562
|
-
});
|
|
567
|
+
async registerListener(channel, callback) {
|
|
568
|
+
this.channels.set(channel, callback);
|
|
569
|
+
}
|
|
570
|
+
async startListening() {
|
|
571
|
+
this.repeater.start();
|
|
563
572
|
}
|
|
564
573
|
async stopListening() {
|
|
565
|
-
|
|
566
|
-
clearInterval(intervalId);
|
|
567
|
-
}
|
|
568
|
-
this.activeIntervals.clear();
|
|
574
|
+
this.repeater.stop();
|
|
569
575
|
}
|
|
570
576
|
};
|
|
571
577
|
|
|
@@ -588,19 +594,7 @@ var FlexibleFactory = class {
|
|
|
588
594
|
return ctor(...args);
|
|
589
595
|
}
|
|
590
596
|
};
|
|
591
|
-
|
|
592
|
-
static {
|
|
593
|
-
__name(this, "MailerFactory");
|
|
594
|
-
}
|
|
595
|
-
static instance = new FlexibleFactory();
|
|
596
|
-
static register(key, factory) {
|
|
597
|
-
_MailerFactory.instance.register(key, factory);
|
|
598
|
-
}
|
|
599
|
-
static create(key, ...args) {
|
|
600
|
-
return _MailerFactory.instance.create(key, ...args);
|
|
601
|
-
}
|
|
602
|
-
};
|
|
603
|
-
MailerFactory.register("logger", (opt) => {
|
|
597
|
+
import_neko_mailer.MailerProviderFactory.register("logger", (opt) => {
|
|
604
598
|
return new import_neko_mailer.FunctionProvider((mail) => {
|
|
605
599
|
logger().info({
|
|
606
600
|
msg: "Sending email",
|
|
@@ -608,32 +602,20 @@ MailerFactory.register("logger", (opt) => {
|
|
|
608
602
|
});
|
|
609
603
|
});
|
|
610
604
|
});
|
|
611
|
-
|
|
605
|
+
import_neko_mailer.MailerProviderFactory.register("ses", (opt) => {
|
|
612
606
|
return new import_neko_mailer.SESProvider(opt);
|
|
613
607
|
});
|
|
614
|
-
|
|
608
|
+
import_neko_mailer.MailerProviderFactory.register("smtp", (opt) => {
|
|
615
609
|
return new import_neko_mailer.SMTPProvider(opt);
|
|
616
610
|
});
|
|
617
|
-
|
|
611
|
+
import_neko_mailer.MailerProviderFactory.register("memory", (opt) => {
|
|
618
612
|
return new import_neko_mailer.MemoryProvider();
|
|
619
613
|
});
|
|
620
|
-
|
|
621
|
-
static {
|
|
622
|
-
__name(this, "QueueTransportFactory");
|
|
623
|
-
}
|
|
624
|
-
static instance = new FlexibleFactory();
|
|
625
|
-
static register(key, factory) {
|
|
626
|
-
_QueueTransportFactory.instance.register(key, factory);
|
|
627
|
-
}
|
|
628
|
-
static create(key, ...args) {
|
|
629
|
-
return _QueueTransportFactory.instance.create(key, ...args);
|
|
630
|
-
}
|
|
631
|
-
};
|
|
632
|
-
QueueTransportFactory.register("database", (opt) => {
|
|
614
|
+
import_neko_queue2.QueueTransportFactory.register("database", (opt) => {
|
|
633
615
|
let transport = new DatabaseTransport(opt);
|
|
634
616
|
return new import_neko_queue.QueueConnection(transport);
|
|
635
617
|
});
|
|
636
|
-
QueueTransportFactory.register("memory", (opt) => {
|
|
618
|
+
import_neko_queue2.QueueTransportFactory.register("memory", (opt) => {
|
|
637
619
|
let transport = new import_neko_queue2.MemoryTransport(opt);
|
|
638
620
|
return new import_neko_queue.QueueConnection(transport);
|
|
639
621
|
});
|
|
@@ -671,8 +653,8 @@ import_neko_storage.StorageProviderFactory.register("s3", (opt) => {
|
|
|
671
653
|
// src/facades.mts
|
|
672
654
|
var import_neko_cache2 = require("@devbro/neko-cache");
|
|
673
655
|
var import_neko_queue3 = require("@devbro/neko-queue");
|
|
674
|
-
var router = (0,
|
|
675
|
-
var scheduler = (0,
|
|
656
|
+
var router = (0, import_neko_helper2.createSingleton)(() => new Router());
|
|
657
|
+
var scheduler = (0, import_neko_helper2.createSingleton)(() => {
|
|
676
658
|
const rc = new import_neko_scheduler.Scheduler();
|
|
677
659
|
rc.setErrorHandler((err, job) => {
|
|
678
660
|
logger().error({
|
|
@@ -684,12 +666,15 @@ var scheduler = (0, import_neko_helper.createSingleton)(() => {
|
|
|
684
666
|
return rc;
|
|
685
667
|
});
|
|
686
668
|
var db = /* @__PURE__ */ __name((label = "default") => (0, import_neko_context2.ctx)().getOrThrow(["database", label]), "db");
|
|
687
|
-
var storage = (0,
|
|
669
|
+
var storage = (0, import_neko_helper2.createSingleton)((label = "default") => {
|
|
688
670
|
let storage_config = import_neko_config.config.get(["storages", label].join("."));
|
|
689
|
-
const provider = import_neko_storage2.StorageProviderFactory.create(
|
|
671
|
+
const provider = import_neko_storage2.StorageProviderFactory.create(
|
|
672
|
+
storage_config.provider,
|
|
673
|
+
storage_config.config
|
|
674
|
+
);
|
|
690
675
|
return new import_neko_storage2.Storage(provider);
|
|
691
676
|
});
|
|
692
|
-
var cli = (0,
|
|
677
|
+
var cli = (0, import_neko_helper2.createSingleton)(() => {
|
|
693
678
|
const [node, app, ...args] = process.argv;
|
|
694
679
|
return new import_clipanion.Cli({
|
|
695
680
|
binaryLabel: `My Application`,
|
|
@@ -697,7 +682,7 @@ var cli = (0, import_neko_helper.createSingleton)(() => {
|
|
|
697
682
|
binaryVersion: `1.0.0`
|
|
698
683
|
});
|
|
699
684
|
});
|
|
700
|
-
var httpServer = (0,
|
|
685
|
+
var httpServer = (0, import_neko_helper2.createSingleton)(() => {
|
|
701
686
|
const server = new http_exports.HttpServer();
|
|
702
687
|
server.setErrorHandler(async (err, req, res) => {
|
|
703
688
|
if (err instanceof http_exports.HttpError) {
|
|
@@ -732,7 +717,7 @@ var httpServer = (0, import_neko_helper.createSingleton)(() => {
|
|
|
732
717
|
server.setRouter(router());
|
|
733
718
|
return server;
|
|
734
719
|
});
|
|
735
|
-
var logger = (0,
|
|
720
|
+
var logger = (0, import_neko_helper2.createSingleton)((label) => {
|
|
736
721
|
const logger_config = import_neko_config.config.get(["loggers", label].join("."));
|
|
737
722
|
const rc = new import_neko_logger.Logger(logger_config);
|
|
738
723
|
rc.setExtrasFunction((message) => {
|
|
@@ -741,25 +726,28 @@ var logger = (0, import_neko_helper.createSingleton)((label) => {
|
|
|
741
726
|
});
|
|
742
727
|
return rc;
|
|
743
728
|
});
|
|
744
|
-
var mailer = (0,
|
|
729
|
+
var mailer = (0, import_neko_helper2.createSingleton)((label) => {
|
|
745
730
|
const mailer_config = import_neko_config.config.get(["mailer", label].join("."));
|
|
746
|
-
const provider =
|
|
731
|
+
const provider = import_neko_mailer2.MailerProviderFactory.create(
|
|
747
732
|
mailer_config.provider,
|
|
748
733
|
mailer_config.config
|
|
749
734
|
);
|
|
750
735
|
const rc = new import_neko_mailer2.Mailer(provider);
|
|
751
736
|
return rc;
|
|
752
737
|
});
|
|
753
|
-
var queue = (0,
|
|
738
|
+
var queue = (0, import_neko_helper2.createSingleton)((label) => {
|
|
754
739
|
const queue_config = import_neko_config.config.get(["queues", label].join("."));
|
|
755
740
|
if (!queue_config) {
|
|
756
741
|
throw new Error(`Queue configuration for '${label}' not found`);
|
|
757
742
|
}
|
|
758
|
-
const provider = QueueTransportFactory.create(
|
|
743
|
+
const provider = import_neko_queue3.QueueTransportFactory.create(
|
|
744
|
+
queue_config.provider,
|
|
745
|
+
queue_config.config
|
|
746
|
+
);
|
|
759
747
|
const rc = new import_neko_queue3.QueueConnection(provider);
|
|
760
748
|
return rc;
|
|
761
749
|
});
|
|
762
|
-
var cache = (0,
|
|
750
|
+
var cache = (0, import_neko_helper2.createSingleton)((label) => {
|
|
763
751
|
const cache_config = import_neko_config.config.get(["caches", label].join("."));
|
|
764
752
|
if (!cache_config) {
|
|
765
753
|
throw new Error(`Cache configuration for '${label}' not found`);
|