@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
|
@@ -454,7 +454,7 @@ var Router = class {
|
|
|
454
454
|
|
|
455
455
|
// src/facades.mts
|
|
456
456
|
var import_neko_scheduler = require("@devbro/neko-scheduler");
|
|
457
|
-
var
|
|
457
|
+
var import_neko_helper2 = require("@devbro/neko-helper");
|
|
458
458
|
var import_neko_context2 = require("@devbro/neko-context");
|
|
459
459
|
var import_neko_storage2 = require("@devbro/neko-storage");
|
|
460
460
|
var import_neko_mailer2 = require("@devbro/neko-mailer");
|
|
@@ -480,11 +480,11 @@ __export(queue_exports, {
|
|
|
480
480
|
DatabaseTransport: () => DatabaseTransport
|
|
481
481
|
});
|
|
482
482
|
__reExport(queue_exports, require("@devbro/neko-queue"));
|
|
483
|
+
var import_neko_helper = require("@devbro/neko-helper");
|
|
483
484
|
var DatabaseTransport = class {
|
|
484
485
|
static {
|
|
485
486
|
__name(this, "DatabaseTransport");
|
|
486
487
|
}
|
|
487
|
-
activeIntervals = /* @__PURE__ */ new Set();
|
|
488
488
|
config = {
|
|
489
489
|
queue_table: "queue_messages",
|
|
490
490
|
db_connection: "default",
|
|
@@ -493,14 +493,48 @@ var DatabaseTransport = class {
|
|
|
493
493
|
message_limit: 10
|
|
494
494
|
// messages per each fetch
|
|
495
495
|
};
|
|
496
|
-
|
|
496
|
+
channels = /* @__PURE__ */ new Map();
|
|
497
|
+
messageQueues = [];
|
|
498
|
+
repeater;
|
|
499
|
+
processMessage = /* @__PURE__ */ __name(async () => {
|
|
500
|
+
const conn = db(this.config.db_connection);
|
|
501
|
+
try {
|
|
502
|
+
await conn.connect();
|
|
503
|
+
let q = conn.getQuery();
|
|
504
|
+
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();
|
|
505
|
+
for (let msg of messages) {
|
|
506
|
+
try {
|
|
507
|
+
let callback = this.channels.get(msg.channel);
|
|
508
|
+
await callback(msg.message);
|
|
509
|
+
await q.table(this.config.queue_table).whereOp("id", "=", msg.id).update({
|
|
510
|
+
status: "processed",
|
|
511
|
+
updated_at: /* @__PURE__ */ new Date(),
|
|
512
|
+
last_tried_at: /* @__PURE__ */ new Date(),
|
|
513
|
+
retried_count: (msg.retried_count || 0) + 1
|
|
514
|
+
});
|
|
515
|
+
} catch (error) {
|
|
516
|
+
await q.table(this.config.queue_table).whereOp("id", "=", msg.id).update({
|
|
517
|
+
status: "failed",
|
|
518
|
+
last_tried_at: /* @__PURE__ */ new Date(),
|
|
519
|
+
retried_count: (msg.retried_count || 0) + 1,
|
|
520
|
+
process_message: error.message || "Error processing message"
|
|
521
|
+
});
|
|
522
|
+
}
|
|
523
|
+
}
|
|
524
|
+
} catch (error) {
|
|
525
|
+
logger().error("Error in DatabaseTransport listen interval:", {
|
|
526
|
+
error
|
|
527
|
+
});
|
|
528
|
+
} finally {
|
|
529
|
+
await conn.disconnect();
|
|
530
|
+
}
|
|
531
|
+
}, "processMessage");
|
|
532
|
+
constructor(config3 = {}) {
|
|
497
533
|
this.config = { ...this.config, ...config3 };
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
setMessageLimit(limit) {
|
|
503
|
-
this.config.message_limit = limit;
|
|
534
|
+
this.repeater = (0, import_neko_helper.createRepeater)(
|
|
535
|
+
this.processMessage,
|
|
536
|
+
this.config.listen_interval * 1e3
|
|
537
|
+
);
|
|
504
538
|
}
|
|
505
539
|
async dispatch(channel, message) {
|
|
506
540
|
const conn = db(this.config.db_connection);
|
|
@@ -518,50 +552,22 @@ var DatabaseTransport = class {
|
|
|
518
552
|
created_at: /* @__PURE__ */ new Date(),
|
|
519
553
|
updated_at: /* @__PURE__ */ new Date(),
|
|
520
554
|
last_tried_at: null,
|
|
521
|
-
process_message: ""
|
|
555
|
+
process_message: "",
|
|
556
|
+
retried_count: 0,
|
|
557
|
+
status: "pending"
|
|
522
558
|
});
|
|
523
559
|
} finally {
|
|
524
560
|
await conn.disconnect();
|
|
525
561
|
}
|
|
526
562
|
}
|
|
527
|
-
async
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
await conn.connect();
|
|
533
|
-
let q = conn.getQuery();
|
|
534
|
-
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();
|
|
535
|
-
for (let msg of messages) {
|
|
536
|
-
try {
|
|
537
|
-
await callback(msg.message);
|
|
538
|
-
await q.table(this.config.queue_table).whereOp("id", "=", msg.id).update({
|
|
539
|
-
processed: true,
|
|
540
|
-
updated_at: /* @__PURE__ */ new Date()
|
|
541
|
-
});
|
|
542
|
-
} catch (error) {
|
|
543
|
-
await q.table(this.config.queue_table).whereOp("id", "=", msg.id).update({
|
|
544
|
-
processed: false,
|
|
545
|
-
last_tried_at: /* @__PURE__ */ new Date(),
|
|
546
|
-
process_message: error.message || "Error processing message"
|
|
547
|
-
});
|
|
548
|
-
}
|
|
549
|
-
}
|
|
550
|
-
} catch (error) {
|
|
551
|
-
this.activeIntervals.delete(intervalId);
|
|
552
|
-
logger().error("Error in DatabaseTransport listen interval:", { error });
|
|
553
|
-
} finally {
|
|
554
|
-
await conn.disconnect();
|
|
555
|
-
}
|
|
556
|
-
}, this.config.listen_interval * 1e3);
|
|
557
|
-
this.activeIntervals.add(intervalId);
|
|
558
|
-
});
|
|
563
|
+
async registerListener(channel, callback) {
|
|
564
|
+
this.channels.set(channel, callback);
|
|
565
|
+
}
|
|
566
|
+
async startListening() {
|
|
567
|
+
this.repeater.start();
|
|
559
568
|
}
|
|
560
569
|
async stopListening() {
|
|
561
|
-
|
|
562
|
-
clearInterval(intervalId);
|
|
563
|
-
}
|
|
564
|
-
this.activeIntervals.clear();
|
|
570
|
+
this.repeater.stop();
|
|
565
571
|
}
|
|
566
572
|
};
|
|
567
573
|
|
|
@@ -584,19 +590,7 @@ var FlexibleFactory = class {
|
|
|
584
590
|
return ctor(...args);
|
|
585
591
|
}
|
|
586
592
|
};
|
|
587
|
-
|
|
588
|
-
static {
|
|
589
|
-
__name(this, "MailerFactory");
|
|
590
|
-
}
|
|
591
|
-
static instance = new FlexibleFactory();
|
|
592
|
-
static register(key, factory) {
|
|
593
|
-
_MailerFactory.instance.register(key, factory);
|
|
594
|
-
}
|
|
595
|
-
static create(key, ...args) {
|
|
596
|
-
return _MailerFactory.instance.create(key, ...args);
|
|
597
|
-
}
|
|
598
|
-
};
|
|
599
|
-
MailerFactory.register("logger", (opt) => {
|
|
593
|
+
import_neko_mailer.MailerProviderFactory.register("logger", (opt) => {
|
|
600
594
|
return new import_neko_mailer.FunctionProvider((mail) => {
|
|
601
595
|
logger().info({
|
|
602
596
|
msg: "Sending email",
|
|
@@ -604,32 +598,20 @@ MailerFactory.register("logger", (opt) => {
|
|
|
604
598
|
});
|
|
605
599
|
});
|
|
606
600
|
});
|
|
607
|
-
|
|
601
|
+
import_neko_mailer.MailerProviderFactory.register("ses", (opt) => {
|
|
608
602
|
return new import_neko_mailer.SESProvider(opt);
|
|
609
603
|
});
|
|
610
|
-
|
|
604
|
+
import_neko_mailer.MailerProviderFactory.register("smtp", (opt) => {
|
|
611
605
|
return new import_neko_mailer.SMTPProvider(opt);
|
|
612
606
|
});
|
|
613
|
-
|
|
607
|
+
import_neko_mailer.MailerProviderFactory.register("memory", (opt) => {
|
|
614
608
|
return new import_neko_mailer.MemoryProvider();
|
|
615
609
|
});
|
|
616
|
-
|
|
617
|
-
static {
|
|
618
|
-
__name(this, "QueueTransportFactory");
|
|
619
|
-
}
|
|
620
|
-
static instance = new FlexibleFactory();
|
|
621
|
-
static register(key, factory) {
|
|
622
|
-
_QueueTransportFactory.instance.register(key, factory);
|
|
623
|
-
}
|
|
624
|
-
static create(key, ...args) {
|
|
625
|
-
return _QueueTransportFactory.instance.create(key, ...args);
|
|
626
|
-
}
|
|
627
|
-
};
|
|
628
|
-
QueueTransportFactory.register("database", (opt) => {
|
|
610
|
+
import_neko_queue2.QueueTransportFactory.register("database", (opt) => {
|
|
629
611
|
let transport = new DatabaseTransport(opt);
|
|
630
612
|
return new import_neko_queue.QueueConnection(transport);
|
|
631
613
|
});
|
|
632
|
-
QueueTransportFactory.register("memory", (opt) => {
|
|
614
|
+
import_neko_queue2.QueueTransportFactory.register("memory", (opt) => {
|
|
633
615
|
let transport = new import_neko_queue2.MemoryTransport(opt);
|
|
634
616
|
return new import_neko_queue.QueueConnection(transport);
|
|
635
617
|
});
|
|
@@ -667,8 +649,8 @@ import_neko_storage.StorageProviderFactory.register("s3", (opt) => {
|
|
|
667
649
|
// src/facades.mts
|
|
668
650
|
var import_neko_cache2 = require("@devbro/neko-cache");
|
|
669
651
|
var import_neko_queue3 = require("@devbro/neko-queue");
|
|
670
|
-
var router = (0,
|
|
671
|
-
var scheduler = (0,
|
|
652
|
+
var router = (0, import_neko_helper2.createSingleton)(() => new Router());
|
|
653
|
+
var scheduler = (0, import_neko_helper2.createSingleton)(() => {
|
|
672
654
|
const rc = new import_neko_scheduler.Scheduler();
|
|
673
655
|
rc.setErrorHandler((err, job) => {
|
|
674
656
|
logger().error({
|
|
@@ -680,12 +662,15 @@ var scheduler = (0, import_neko_helper.createSingleton)(() => {
|
|
|
680
662
|
return rc;
|
|
681
663
|
});
|
|
682
664
|
var db = /* @__PURE__ */ __name((label = "default") => (0, import_neko_context2.ctx)().getOrThrow(["database", label]), "db");
|
|
683
|
-
var storage = (0,
|
|
665
|
+
var storage = (0, import_neko_helper2.createSingleton)((label = "default") => {
|
|
684
666
|
let storage_config = import_neko_config.config.get(["storages", label].join("."));
|
|
685
|
-
const provider = import_neko_storage2.StorageProviderFactory.create(
|
|
667
|
+
const provider = import_neko_storage2.StorageProviderFactory.create(
|
|
668
|
+
storage_config.provider,
|
|
669
|
+
storage_config.config
|
|
670
|
+
);
|
|
686
671
|
return new import_neko_storage2.Storage(provider);
|
|
687
672
|
});
|
|
688
|
-
var cli = (0,
|
|
673
|
+
var cli = (0, import_neko_helper2.createSingleton)(() => {
|
|
689
674
|
const [node, app, ...args] = process.argv;
|
|
690
675
|
return new import_clipanion.Cli({
|
|
691
676
|
binaryLabel: `My Application`,
|
|
@@ -693,7 +678,7 @@ var cli = (0, import_neko_helper.createSingleton)(() => {
|
|
|
693
678
|
binaryVersion: `1.0.0`
|
|
694
679
|
});
|
|
695
680
|
});
|
|
696
|
-
var httpServer = (0,
|
|
681
|
+
var httpServer = (0, import_neko_helper2.createSingleton)(() => {
|
|
697
682
|
const server = new http_exports.HttpServer();
|
|
698
683
|
server.setErrorHandler(async (err, req, res) => {
|
|
699
684
|
if (err instanceof http_exports.HttpError) {
|
|
@@ -728,7 +713,7 @@ var httpServer = (0, import_neko_helper.createSingleton)(() => {
|
|
|
728
713
|
server.setRouter(router());
|
|
729
714
|
return server;
|
|
730
715
|
});
|
|
731
|
-
var logger = (0,
|
|
716
|
+
var logger = (0, import_neko_helper2.createSingleton)((label) => {
|
|
732
717
|
const logger_config = import_neko_config.config.get(["loggers", label].join("."));
|
|
733
718
|
const rc = new import_neko_logger.Logger(logger_config);
|
|
734
719
|
rc.setExtrasFunction((message) => {
|
|
@@ -737,25 +722,28 @@ var logger = (0, import_neko_helper.createSingleton)((label) => {
|
|
|
737
722
|
});
|
|
738
723
|
return rc;
|
|
739
724
|
});
|
|
740
|
-
var mailer = (0,
|
|
725
|
+
var mailer = (0, import_neko_helper2.createSingleton)((label) => {
|
|
741
726
|
const mailer_config = import_neko_config.config.get(["mailer", label].join("."));
|
|
742
|
-
const provider =
|
|
727
|
+
const provider = import_neko_mailer2.MailerProviderFactory.create(
|
|
743
728
|
mailer_config.provider,
|
|
744
729
|
mailer_config.config
|
|
745
730
|
);
|
|
746
731
|
const rc = new import_neko_mailer2.Mailer(provider);
|
|
747
732
|
return rc;
|
|
748
733
|
});
|
|
749
|
-
var queue = (0,
|
|
734
|
+
var queue = (0, import_neko_helper2.createSingleton)((label) => {
|
|
750
735
|
const queue_config = import_neko_config.config.get(["queues", label].join("."));
|
|
751
736
|
if (!queue_config) {
|
|
752
737
|
throw new Error(`Queue configuration for '${label}' not found`);
|
|
753
738
|
}
|
|
754
|
-
const provider = QueueTransportFactory.create(
|
|
739
|
+
const provider = import_neko_queue3.QueueTransportFactory.create(
|
|
740
|
+
queue_config.provider,
|
|
741
|
+
queue_config.config
|
|
742
|
+
);
|
|
755
743
|
const rc = new import_neko_queue3.QueueConnection(provider);
|
|
756
744
|
return rc;
|
|
757
745
|
});
|
|
758
|
-
var cache = (0,
|
|
746
|
+
var cache = (0, import_neko_helper2.createSingleton)((label) => {
|
|
759
747
|
const cache_config = import_neko_config.config.get(["caches", label].join("."));
|
|
760
748
|
if (!cache_config) {
|
|
761
749
|
throw new Error(`Cache configuration for '${label}' not found`);
|
|
@@ -1617,7 +1617,7 @@ var Router = class {
|
|
|
1617
1617
|
|
|
1618
1618
|
// src/facades.mts
|
|
1619
1619
|
var import_neko_scheduler = require("@devbro/neko-scheduler");
|
|
1620
|
-
var
|
|
1620
|
+
var import_neko_helper2 = require("@devbro/neko-helper");
|
|
1621
1621
|
var import_neko_context2 = require("@devbro/neko-context");
|
|
1622
1622
|
var import_neko_storage2 = require("@devbro/neko-storage");
|
|
1623
1623
|
var import_neko_mailer2 = require("@devbro/neko-mailer");
|
|
@@ -1643,11 +1643,11 @@ __export(queue_exports, {
|
|
|
1643
1643
|
DatabaseTransport: () => DatabaseTransport
|
|
1644
1644
|
});
|
|
1645
1645
|
__reExport(queue_exports, require("@devbro/neko-queue"));
|
|
1646
|
+
var import_neko_helper = require("@devbro/neko-helper");
|
|
1646
1647
|
var DatabaseTransport = class {
|
|
1647
1648
|
static {
|
|
1648
1649
|
__name(this, "DatabaseTransport");
|
|
1649
1650
|
}
|
|
1650
|
-
activeIntervals = /* @__PURE__ */ new Set();
|
|
1651
1651
|
config = {
|
|
1652
1652
|
queue_table: "queue_messages",
|
|
1653
1653
|
db_connection: "default",
|
|
@@ -1656,14 +1656,48 @@ var DatabaseTransport = class {
|
|
|
1656
1656
|
message_limit: 10
|
|
1657
1657
|
// messages per each fetch
|
|
1658
1658
|
};
|
|
1659
|
-
|
|
1659
|
+
channels = /* @__PURE__ */ new Map();
|
|
1660
|
+
messageQueues = [];
|
|
1661
|
+
repeater;
|
|
1662
|
+
processMessage = /* @__PURE__ */ __name(async () => {
|
|
1663
|
+
const conn = db(this.config.db_connection);
|
|
1664
|
+
try {
|
|
1665
|
+
await conn.connect();
|
|
1666
|
+
let q = conn.getQuery();
|
|
1667
|
+
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();
|
|
1668
|
+
for (let msg of messages) {
|
|
1669
|
+
try {
|
|
1670
|
+
let callback = this.channels.get(msg.channel);
|
|
1671
|
+
await callback(msg.message);
|
|
1672
|
+
await q.table(this.config.queue_table).whereOp("id", "=", msg.id).update({
|
|
1673
|
+
status: "processed",
|
|
1674
|
+
updated_at: /* @__PURE__ */ new Date(),
|
|
1675
|
+
last_tried_at: /* @__PURE__ */ new Date(),
|
|
1676
|
+
retried_count: (msg.retried_count || 0) + 1
|
|
1677
|
+
});
|
|
1678
|
+
} catch (error) {
|
|
1679
|
+
await q.table(this.config.queue_table).whereOp("id", "=", msg.id).update({
|
|
1680
|
+
status: "failed",
|
|
1681
|
+
last_tried_at: /* @__PURE__ */ new Date(),
|
|
1682
|
+
retried_count: (msg.retried_count || 0) + 1,
|
|
1683
|
+
process_message: error.message || "Error processing message"
|
|
1684
|
+
});
|
|
1685
|
+
}
|
|
1686
|
+
}
|
|
1687
|
+
} catch (error) {
|
|
1688
|
+
logger().error("Error in DatabaseTransport listen interval:", {
|
|
1689
|
+
error
|
|
1690
|
+
});
|
|
1691
|
+
} finally {
|
|
1692
|
+
await conn.disconnect();
|
|
1693
|
+
}
|
|
1694
|
+
}, "processMessage");
|
|
1695
|
+
constructor(config8 = {}) {
|
|
1660
1696
|
this.config = { ...this.config, ...config8 };
|
|
1661
|
-
|
|
1662
|
-
|
|
1663
|
-
|
|
1664
|
-
|
|
1665
|
-
setMessageLimit(limit) {
|
|
1666
|
-
this.config.message_limit = limit;
|
|
1697
|
+
this.repeater = (0, import_neko_helper.createRepeater)(
|
|
1698
|
+
this.processMessage,
|
|
1699
|
+
this.config.listen_interval * 1e3
|
|
1700
|
+
);
|
|
1667
1701
|
}
|
|
1668
1702
|
async dispatch(channel, message) {
|
|
1669
1703
|
const conn = db(this.config.db_connection);
|
|
@@ -1681,50 +1715,22 @@ var DatabaseTransport = class {
|
|
|
1681
1715
|
created_at: /* @__PURE__ */ new Date(),
|
|
1682
1716
|
updated_at: /* @__PURE__ */ new Date(),
|
|
1683
1717
|
last_tried_at: null,
|
|
1684
|
-
process_message: ""
|
|
1718
|
+
process_message: "",
|
|
1719
|
+
retried_count: 0,
|
|
1720
|
+
status: "pending"
|
|
1685
1721
|
});
|
|
1686
1722
|
} finally {
|
|
1687
1723
|
await conn.disconnect();
|
|
1688
1724
|
}
|
|
1689
1725
|
}
|
|
1690
|
-
async
|
|
1691
|
-
|
|
1692
|
-
|
|
1693
|
-
|
|
1694
|
-
|
|
1695
|
-
await conn.connect();
|
|
1696
|
-
let q = conn.getQuery();
|
|
1697
|
-
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();
|
|
1698
|
-
for (let msg of messages) {
|
|
1699
|
-
try {
|
|
1700
|
-
await callback(msg.message);
|
|
1701
|
-
await q.table(this.config.queue_table).whereOp("id", "=", msg.id).update({
|
|
1702
|
-
processed: true,
|
|
1703
|
-
updated_at: /* @__PURE__ */ new Date()
|
|
1704
|
-
});
|
|
1705
|
-
} catch (error) {
|
|
1706
|
-
await q.table(this.config.queue_table).whereOp("id", "=", msg.id).update({
|
|
1707
|
-
processed: false,
|
|
1708
|
-
last_tried_at: /* @__PURE__ */ new Date(),
|
|
1709
|
-
process_message: error.message || "Error processing message"
|
|
1710
|
-
});
|
|
1711
|
-
}
|
|
1712
|
-
}
|
|
1713
|
-
} catch (error) {
|
|
1714
|
-
this.activeIntervals.delete(intervalId);
|
|
1715
|
-
logger().error("Error in DatabaseTransport listen interval:", { error });
|
|
1716
|
-
} finally {
|
|
1717
|
-
await conn.disconnect();
|
|
1718
|
-
}
|
|
1719
|
-
}, this.config.listen_interval * 1e3);
|
|
1720
|
-
this.activeIntervals.add(intervalId);
|
|
1721
|
-
});
|
|
1726
|
+
async registerListener(channel, callback) {
|
|
1727
|
+
this.channels.set(channel, callback);
|
|
1728
|
+
}
|
|
1729
|
+
async startListening() {
|
|
1730
|
+
this.repeater.start();
|
|
1722
1731
|
}
|
|
1723
1732
|
async stopListening() {
|
|
1724
|
-
|
|
1725
|
-
clearInterval(intervalId);
|
|
1726
|
-
}
|
|
1727
|
-
this.activeIntervals.clear();
|
|
1733
|
+
this.repeater.stop();
|
|
1728
1734
|
}
|
|
1729
1735
|
};
|
|
1730
1736
|
|
|
@@ -1747,19 +1753,7 @@ var FlexibleFactory = class {
|
|
|
1747
1753
|
return ctor(...args);
|
|
1748
1754
|
}
|
|
1749
1755
|
};
|
|
1750
|
-
|
|
1751
|
-
static {
|
|
1752
|
-
__name(this, "MailerFactory");
|
|
1753
|
-
}
|
|
1754
|
-
static instance = new FlexibleFactory();
|
|
1755
|
-
static register(key, factory) {
|
|
1756
|
-
_MailerFactory.instance.register(key, factory);
|
|
1757
|
-
}
|
|
1758
|
-
static create(key, ...args) {
|
|
1759
|
-
return _MailerFactory.instance.create(key, ...args);
|
|
1760
|
-
}
|
|
1761
|
-
};
|
|
1762
|
-
MailerFactory.register("logger", (opt) => {
|
|
1756
|
+
import_neko_mailer.MailerProviderFactory.register("logger", (opt) => {
|
|
1763
1757
|
return new import_neko_mailer.FunctionProvider((mail) => {
|
|
1764
1758
|
logger().info({
|
|
1765
1759
|
msg: "Sending email",
|
|
@@ -1767,32 +1761,20 @@ MailerFactory.register("logger", (opt) => {
|
|
|
1767
1761
|
});
|
|
1768
1762
|
});
|
|
1769
1763
|
});
|
|
1770
|
-
|
|
1764
|
+
import_neko_mailer.MailerProviderFactory.register("ses", (opt) => {
|
|
1771
1765
|
return new import_neko_mailer.SESProvider(opt);
|
|
1772
1766
|
});
|
|
1773
|
-
|
|
1767
|
+
import_neko_mailer.MailerProviderFactory.register("smtp", (opt) => {
|
|
1774
1768
|
return new import_neko_mailer.SMTPProvider(opt);
|
|
1775
1769
|
});
|
|
1776
|
-
|
|
1770
|
+
import_neko_mailer.MailerProviderFactory.register("memory", (opt) => {
|
|
1777
1771
|
return new import_neko_mailer.MemoryProvider();
|
|
1778
1772
|
});
|
|
1779
|
-
|
|
1780
|
-
static {
|
|
1781
|
-
__name(this, "QueueTransportFactory");
|
|
1782
|
-
}
|
|
1783
|
-
static instance = new FlexibleFactory();
|
|
1784
|
-
static register(key, factory) {
|
|
1785
|
-
_QueueTransportFactory.instance.register(key, factory);
|
|
1786
|
-
}
|
|
1787
|
-
static create(key, ...args) {
|
|
1788
|
-
return _QueueTransportFactory.instance.create(key, ...args);
|
|
1789
|
-
}
|
|
1790
|
-
};
|
|
1791
|
-
QueueTransportFactory.register("database", (opt) => {
|
|
1773
|
+
import_neko_queue2.QueueTransportFactory.register("database", (opt) => {
|
|
1792
1774
|
let transport = new DatabaseTransport(opt);
|
|
1793
1775
|
return new import_neko_queue.QueueConnection(transport);
|
|
1794
1776
|
});
|
|
1795
|
-
QueueTransportFactory.register("memory", (opt) => {
|
|
1777
|
+
import_neko_queue2.QueueTransportFactory.register("memory", (opt) => {
|
|
1796
1778
|
let transport = new import_neko_queue2.MemoryTransport(opt);
|
|
1797
1779
|
return new import_neko_queue.QueueConnection(transport);
|
|
1798
1780
|
});
|
|
@@ -1830,8 +1812,8 @@ import_neko_storage.StorageProviderFactory.register("s3", (opt) => {
|
|
|
1830
1812
|
// src/facades.mts
|
|
1831
1813
|
var import_neko_cache2 = require("@devbro/neko-cache");
|
|
1832
1814
|
var import_neko_queue3 = require("@devbro/neko-queue");
|
|
1833
|
-
var router = (0,
|
|
1834
|
-
var scheduler = (0,
|
|
1815
|
+
var router = (0, import_neko_helper2.createSingleton)(() => new Router());
|
|
1816
|
+
var scheduler = (0, import_neko_helper2.createSingleton)(() => {
|
|
1835
1817
|
const rc = new import_neko_scheduler.Scheduler();
|
|
1836
1818
|
rc.setErrorHandler((err, job) => {
|
|
1837
1819
|
logger().error({
|
|
@@ -1843,12 +1825,15 @@ var scheduler = (0, import_neko_helper.createSingleton)(() => {
|
|
|
1843
1825
|
return rc;
|
|
1844
1826
|
});
|
|
1845
1827
|
var db = /* @__PURE__ */ __name((label = "default") => (0, import_neko_context2.ctx)().getOrThrow(["database", label]), "db");
|
|
1846
|
-
var storage = (0,
|
|
1828
|
+
var storage = (0, import_neko_helper2.createSingleton)((label = "default") => {
|
|
1847
1829
|
let storage_config = import_neko_config.config.get(["storages", label].join("."));
|
|
1848
|
-
const provider = import_neko_storage2.StorageProviderFactory.create(
|
|
1830
|
+
const provider = import_neko_storage2.StorageProviderFactory.create(
|
|
1831
|
+
storage_config.provider,
|
|
1832
|
+
storage_config.config
|
|
1833
|
+
);
|
|
1849
1834
|
return new import_neko_storage2.Storage(provider);
|
|
1850
1835
|
});
|
|
1851
|
-
var cli = (0,
|
|
1836
|
+
var cli = (0, import_neko_helper2.createSingleton)(() => {
|
|
1852
1837
|
const [node, app, ...args] = process.argv;
|
|
1853
1838
|
return new import_clipanion.Cli({
|
|
1854
1839
|
binaryLabel: `My Application`,
|
|
@@ -1856,7 +1841,7 @@ var cli = (0, import_neko_helper.createSingleton)(() => {
|
|
|
1856
1841
|
binaryVersion: `1.0.0`
|
|
1857
1842
|
});
|
|
1858
1843
|
});
|
|
1859
|
-
var httpServer = (0,
|
|
1844
|
+
var httpServer = (0, import_neko_helper2.createSingleton)(() => {
|
|
1860
1845
|
const server = new http_exports.HttpServer();
|
|
1861
1846
|
server.setErrorHandler(async (err, req, res) => {
|
|
1862
1847
|
if (err instanceof http_exports.HttpError) {
|
|
@@ -1891,7 +1876,7 @@ var httpServer = (0, import_neko_helper.createSingleton)(() => {
|
|
|
1891
1876
|
server.setRouter(router());
|
|
1892
1877
|
return server;
|
|
1893
1878
|
});
|
|
1894
|
-
var logger = (0,
|
|
1879
|
+
var logger = (0, import_neko_helper2.createSingleton)((label) => {
|
|
1895
1880
|
const logger_config = import_neko_config.config.get(["loggers", label].join("."));
|
|
1896
1881
|
const rc = new import_neko_logger.Logger(logger_config);
|
|
1897
1882
|
rc.setExtrasFunction((message) => {
|
|
@@ -1900,25 +1885,28 @@ var logger = (0, import_neko_helper.createSingleton)((label) => {
|
|
|
1900
1885
|
});
|
|
1901
1886
|
return rc;
|
|
1902
1887
|
});
|
|
1903
|
-
var mailer = (0,
|
|
1888
|
+
var mailer = (0, import_neko_helper2.createSingleton)((label) => {
|
|
1904
1889
|
const mailer_config = import_neko_config.config.get(["mailer", label].join("."));
|
|
1905
|
-
const provider =
|
|
1890
|
+
const provider = import_neko_mailer2.MailerProviderFactory.create(
|
|
1906
1891
|
mailer_config.provider,
|
|
1907
1892
|
mailer_config.config
|
|
1908
1893
|
);
|
|
1909
1894
|
const rc = new import_neko_mailer2.Mailer(provider);
|
|
1910
1895
|
return rc;
|
|
1911
1896
|
});
|
|
1912
|
-
var queue = (0,
|
|
1897
|
+
var queue = (0, import_neko_helper2.createSingleton)((label) => {
|
|
1913
1898
|
const queue_config = import_neko_config.config.get(["queues", label].join("."));
|
|
1914
1899
|
if (!queue_config) {
|
|
1915
1900
|
throw new Error(`Queue configuration for '${label}' not found`);
|
|
1916
1901
|
}
|
|
1917
|
-
const provider = QueueTransportFactory.create(
|
|
1902
|
+
const provider = import_neko_queue3.QueueTransportFactory.create(
|
|
1903
|
+
queue_config.provider,
|
|
1904
|
+
queue_config.config
|
|
1905
|
+
);
|
|
1918
1906
|
const rc = new import_neko_queue3.QueueConnection(provider);
|
|
1919
1907
|
return rc;
|
|
1920
1908
|
});
|
|
1921
|
-
var cache = (0,
|
|
1909
|
+
var cache = (0, import_neko_helper2.createSingleton)((label) => {
|
|
1922
1910
|
const cache_config = import_neko_config.config.get(["caches", label].join("."));
|
|
1923
1911
|
if (!cache_config) {
|
|
1924
1912
|
throw new Error(`Cache configuration for '${label}' not found`);
|