@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`);
|
package/dist/bin/cache.cjs
CHANGED
|
@@ -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`);
|