@devbro/pashmak 0.1.18 → 0.1.20
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/project/base_project/package.json.tpl +1 -1
- package/dist/app/console/project/base_project/src/app/models/index.ts.tpl +1 -0
- package/dist/app/console/project/base_project/src/config/caches.ts.tpl +7 -0
- package/dist/app/console/project/base_project/src/config/databases.ts.tpl +10 -6
- package/dist/app/console/project/base_project/src/config/default.mts.tpl +35 -0
- package/dist/app/console/project/base_project/src/config/loggers.ts.tpl +11 -7
- package/dist/app/console/project/base_project/src/config/mailer.ts.tpl +21 -1
- package/dist/app/console/project/base_project/src/config/queues.ts.tpl +7 -0
- package/dist/app/console/project/base_project/src/config/storages.ts.tpl +8 -4
- package/dist/app/console/project/base_project/tsconfig.json.tpl +7 -4
- package/dist/app/console/queue/queue_migration.tpl +2 -1
- package/dist/bin/app/console/DefaultCommand.cjs +53 -34
- package/dist/bin/app/console/KeyGenerateCommand.cjs +53 -34
- package/dist/bin/app/console/StartCommand.cjs +55 -36
- package/dist/bin/app/console/generate/GenerateControllerCommand.cjs +53 -34
- package/dist/bin/app/console/generate/index.cjs +53 -34
- package/dist/bin/app/console/index.cjs +54 -36
- package/dist/bin/app/console/migrate/GenerateMigrateCommand.cjs +53 -34
- package/dist/bin/app/console/migrate/MigrateCommand.cjs +52 -34
- package/dist/bin/app/console/migrate/MigrateRollbackCommand.cjs +52 -34
- package/dist/bin/app/console/migrate/index.cjs +52 -34
- package/dist/bin/app/console/queue/GenerateQueueMigrateCommand.cjs +53 -34
- package/dist/bin/cache.cjs +53 -34
- package/dist/bin/facades.cjs +52 -34
- package/dist/bin/factories.cjs +58 -39
- package/dist/bin/index.cjs +62 -43
- package/dist/bin/middlewares.cjs +52 -34
- package/dist/bin/queue.cjs +675 -18
- package/dist/facades.d.mts +2 -1
- package/dist/facades.mjs +12 -8
- package/dist/facades.mjs.map +1 -1
- package/dist/factories.d.mts +5 -5
- package/dist/factories.mjs +17 -10
- package/dist/factories.mjs.map +1 -1
- package/dist/queue.d.mts +8 -4
- package/dist/queue.mjs +26 -18
- package/dist/queue.mjs.map +1 -1
- package/package.json +1 -1
- package/dist/app/console/project/base_project/src/app/models/README.md.tpl +0 -1
- package/dist/app/console/project/base_project/src/config/default.ts.tpl +0 -42
package/dist/bin/index.cjs
CHANGED
|
@@ -566,36 +566,44 @@ var queue_exports = {};
|
|
|
566
566
|
__export(queue_exports, {
|
|
567
567
|
DatabaseTransport: () => DatabaseTransport
|
|
568
568
|
});
|
|
569
|
-
var
|
|
569
|
+
var DatabaseTransport;
|
|
570
570
|
var init_queue = __esm({
|
|
571
571
|
"src/queue.mts"() {
|
|
572
572
|
"use strict";
|
|
573
573
|
__reExport(queue_exports, require("@devbro/neko-queue"));
|
|
574
|
-
|
|
574
|
+
init_facades();
|
|
575
575
|
DatabaseTransport = class {
|
|
576
|
-
constructor(db_config) {
|
|
577
|
-
this.db_config = db_config;
|
|
578
|
-
}
|
|
579
576
|
static {
|
|
580
577
|
__name(this, "DatabaseTransport");
|
|
581
578
|
}
|
|
582
|
-
listenInterval = 6e4;
|
|
583
|
-
// default to 1 minute
|
|
584
|
-
messageLimit = 100;
|
|
585
|
-
// default to 100 messages per fetch
|
|
586
579
|
activeIntervals = /* @__PURE__ */ new Set();
|
|
580
|
+
config = {
|
|
581
|
+
queue_table: "queue_messages",
|
|
582
|
+
db_connection: "default",
|
|
583
|
+
listen_interval: 60,
|
|
584
|
+
// seconds
|
|
585
|
+
message_limit: 10
|
|
586
|
+
// messages per each fetch
|
|
587
|
+
};
|
|
588
|
+
constructor(config10) {
|
|
589
|
+
this.config = { ...this.config, ...config10 };
|
|
590
|
+
}
|
|
587
591
|
setListenInterval(interval) {
|
|
588
|
-
this.
|
|
592
|
+
this.config.listen_interval = interval;
|
|
589
593
|
}
|
|
590
594
|
setMessageLimit(limit) {
|
|
591
|
-
this.
|
|
595
|
+
this.config.message_limit = limit;
|
|
592
596
|
}
|
|
593
597
|
async dispatch(channel, message) {
|
|
594
|
-
const conn =
|
|
598
|
+
const conn = db(this.config.db_connection);
|
|
595
599
|
try {
|
|
596
600
|
await conn.connect();
|
|
601
|
+
let schema = conn.getSchema();
|
|
602
|
+
if (await schema.tableExists(this.config.queue_table) === false) {
|
|
603
|
+
return;
|
|
604
|
+
}
|
|
597
605
|
let q = conn.getQuery();
|
|
598
|
-
await q.table(
|
|
606
|
+
await q.table(this.config.queue_table).insert({
|
|
599
607
|
channel,
|
|
600
608
|
message,
|
|
601
609
|
processed: false,
|
|
@@ -611,20 +619,20 @@ var init_queue = __esm({
|
|
|
611
619
|
async listen(channel, callback) {
|
|
612
620
|
return new Promise(async (resolve, reject) => {
|
|
613
621
|
const intervalId = setInterval(async () => {
|
|
614
|
-
const conn =
|
|
622
|
+
const conn = db(this.config.db_connection);
|
|
615
623
|
try {
|
|
616
624
|
await conn.connect();
|
|
617
625
|
let q = conn.getQuery();
|
|
618
|
-
let messages = await q.table(
|
|
626
|
+
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();
|
|
619
627
|
for (let msg of messages) {
|
|
620
628
|
try {
|
|
621
629
|
await callback(msg.message);
|
|
622
|
-
await q.table(
|
|
630
|
+
await q.table(this.config.queue_table).whereOp("id", "=", msg.id).update({
|
|
623
631
|
processed: true,
|
|
624
632
|
updated_at: /* @__PURE__ */ new Date()
|
|
625
633
|
});
|
|
626
634
|
} catch (error) {
|
|
627
|
-
await q.table(
|
|
635
|
+
await q.table(this.config.queue_table).whereOp("id", "=", msg.id).update({
|
|
628
636
|
processed: false,
|
|
629
637
|
last_tried_at: /* @__PURE__ */ new Date(),
|
|
630
638
|
process_message: error.message || "Error processing message"
|
|
@@ -633,11 +641,11 @@ var init_queue = __esm({
|
|
|
633
641
|
}
|
|
634
642
|
} catch (error) {
|
|
635
643
|
this.activeIntervals.delete(intervalId);
|
|
636
|
-
|
|
644
|
+
logger().error("Error in DatabaseTransport listen interval:", { error });
|
|
637
645
|
} finally {
|
|
638
646
|
await conn.disconnect();
|
|
639
647
|
}
|
|
640
|
-
}, this.
|
|
648
|
+
}, this.config.listen_interval * 1e3);
|
|
641
649
|
this.activeIntervals.add(intervalId);
|
|
642
650
|
});
|
|
643
651
|
}
|
|
@@ -652,7 +660,7 @@ var init_queue = __esm({
|
|
|
652
660
|
});
|
|
653
661
|
|
|
654
662
|
// src/factories.mts
|
|
655
|
-
var import_neko_mailer, import_neko_queue, import_neko_queue2, import_neko_cache, FlexibleFactory, MailerFactory,
|
|
663
|
+
var import_neko_mailer, import_neko_queue, import_neko_queue2, import_neko_cache, import_neko_storage, FlexibleFactory, MailerFactory, QueueTransportFactory, CacheProviderFactory;
|
|
656
664
|
var init_factories = __esm({
|
|
657
665
|
"src/factories.mts"() {
|
|
658
666
|
"use strict";
|
|
@@ -662,6 +670,7 @@ var init_factories = __esm({
|
|
|
662
670
|
import_neko_queue2 = require("@devbro/neko-queue");
|
|
663
671
|
init_queue();
|
|
664
672
|
import_neko_cache = require("@devbro/neko-cache");
|
|
673
|
+
import_neko_storage = require("@devbro/neko-storage");
|
|
665
674
|
FlexibleFactory = class {
|
|
666
675
|
static {
|
|
667
676
|
__name(this, "FlexibleFactory");
|
|
@@ -698,32 +707,32 @@ var init_factories = __esm({
|
|
|
698
707
|
});
|
|
699
708
|
});
|
|
700
709
|
});
|
|
701
|
-
MailerFactory.register("
|
|
710
|
+
MailerFactory.register("ses", (opt) => {
|
|
702
711
|
return new import_neko_mailer.SESProvider(opt);
|
|
703
712
|
});
|
|
704
|
-
MailerFactory.register("
|
|
713
|
+
MailerFactory.register("smtp", (opt) => {
|
|
705
714
|
return new import_neko_mailer.SMTPProvider(opt);
|
|
706
715
|
});
|
|
707
|
-
MailerFactory.register("
|
|
716
|
+
MailerFactory.register("memory", (opt) => {
|
|
708
717
|
return new import_neko_mailer.MemoryProvider();
|
|
709
718
|
});
|
|
710
|
-
|
|
719
|
+
QueueTransportFactory = class _QueueTransportFactory {
|
|
711
720
|
static {
|
|
712
|
-
__name(this, "
|
|
721
|
+
__name(this, "QueueTransportFactory");
|
|
713
722
|
}
|
|
714
723
|
static instance = new FlexibleFactory();
|
|
715
724
|
static register(key, factory) {
|
|
716
|
-
|
|
725
|
+
_QueueTransportFactory.instance.register(key, factory);
|
|
717
726
|
}
|
|
718
727
|
static create(key, ...args) {
|
|
719
|
-
return
|
|
728
|
+
return _QueueTransportFactory.instance.create(key, ...args);
|
|
720
729
|
}
|
|
721
730
|
};
|
|
722
|
-
|
|
731
|
+
QueueTransportFactory.register("database", (opt) => {
|
|
723
732
|
let transport = new DatabaseTransport(opt);
|
|
724
733
|
return new import_neko_queue.QueueConnection(transport);
|
|
725
734
|
});
|
|
726
|
-
|
|
735
|
+
QueueTransportFactory.register("memory", (opt) => {
|
|
727
736
|
let transport = new import_neko_queue2.MemoryTransport(opt);
|
|
728
737
|
return new import_neko_queue.QueueConnection(transport);
|
|
729
738
|
});
|
|
@@ -751,11 +760,17 @@ var init_factories = __esm({
|
|
|
751
760
|
CacheProviderFactory.register("disabled", (opt) => {
|
|
752
761
|
return new import_neko_cache.DisabledCacheProvider();
|
|
753
762
|
});
|
|
763
|
+
import_neko_storage.StorageProviderFactory.register("local", (opt) => {
|
|
764
|
+
return new import_neko_storage.LocalStorageProvider(opt);
|
|
765
|
+
});
|
|
766
|
+
import_neko_storage.StorageProviderFactory.register("s3", (opt) => {
|
|
767
|
+
return new import_neko_storage.AWSS3StorageProvider(opt);
|
|
768
|
+
});
|
|
754
769
|
}
|
|
755
770
|
});
|
|
756
771
|
|
|
757
772
|
// src/facades.mts
|
|
758
|
-
var import_neko_scheduler, import_neko_helper, import_neko_context2,
|
|
773
|
+
var import_neko_scheduler, import_neko_helper, import_neko_context2, import_neko_storage2, import_neko_mailer2, import_neko_config, import_clipanion, yup, import_neko_logger, import_neko_cache2, import_neko_queue3, router, scheduler, db, storage, cli, httpServer, logger, mailer, queue, cache;
|
|
759
774
|
var init_facades = __esm({
|
|
760
775
|
"src/facades.mts"() {
|
|
761
776
|
"use strict";
|
|
@@ -763,7 +778,7 @@ var init_facades = __esm({
|
|
|
763
778
|
import_neko_scheduler = require("@devbro/neko-scheduler");
|
|
764
779
|
import_neko_helper = require("@devbro/neko-helper");
|
|
765
780
|
import_neko_context2 = require("@devbro/neko-context");
|
|
766
|
-
|
|
781
|
+
import_neko_storage2 = require("@devbro/neko-storage");
|
|
767
782
|
import_neko_mailer2 = require("@devbro/neko-mailer");
|
|
768
783
|
import_neko_config = require("@devbro/neko-config");
|
|
769
784
|
import_clipanion = require("clipanion");
|
|
@@ -773,6 +788,7 @@ var init_facades = __esm({
|
|
|
773
788
|
import_neko_logger = require("@devbro/neko-logger");
|
|
774
789
|
init_factories();
|
|
775
790
|
import_neko_cache2 = require("@devbro/neko-cache");
|
|
791
|
+
import_neko_queue3 = require("@devbro/neko-queue");
|
|
776
792
|
router = (0, import_neko_helper.createSingleton)(() => new Router());
|
|
777
793
|
scheduler = (0, import_neko_helper.createSingleton)(() => {
|
|
778
794
|
const rc = new import_neko_scheduler.Scheduler();
|
|
@@ -786,9 +802,11 @@ var init_facades = __esm({
|
|
|
786
802
|
return rc;
|
|
787
803
|
});
|
|
788
804
|
db = /* @__PURE__ */ __name((label = "default") => (0, import_neko_context2.ctx)().getOrThrow(["database", label]), "db");
|
|
789
|
-
storage = (0, import_neko_helper.createSingleton)(
|
|
790
|
-
|
|
791
|
-
|
|
805
|
+
storage = (0, import_neko_helper.createSingleton)((label = "default") => {
|
|
806
|
+
let storage_config = import_neko_config.config.get(["storages", label].join("."));
|
|
807
|
+
const provider = import_neko_storage2.StorageProviderFactory.create(storage_config.provider, storage_config.config);
|
|
808
|
+
return new import_neko_storage2.Storage(provider);
|
|
809
|
+
});
|
|
792
810
|
cli = (0, import_neko_helper.createSingleton)(() => {
|
|
793
811
|
const [node, app, ...args] = process.argv;
|
|
794
812
|
return new import_clipanion.Cli({
|
|
@@ -843,7 +861,7 @@ var init_facades = __esm({
|
|
|
843
861
|
});
|
|
844
862
|
mailer = (0, import_neko_helper.createSingleton)((label) => {
|
|
845
863
|
const mailer_config = import_neko_config.config.get(["mailer", label].join("."));
|
|
846
|
-
|
|
864
|
+
const provider = MailerFactory.create(
|
|
847
865
|
mailer_config.provider,
|
|
848
866
|
mailer_config.config
|
|
849
867
|
);
|
|
@@ -855,7 +873,8 @@ var init_facades = __esm({
|
|
|
855
873
|
if (!queue_config) {
|
|
856
874
|
throw new Error(`Queue configuration for '${label}' not found`);
|
|
857
875
|
}
|
|
858
|
-
const
|
|
876
|
+
const provider = QueueTransportFactory.create(queue_config.provider, queue_config.config);
|
|
877
|
+
const rc = new import_neko_queue3.QueueConnection(provider);
|
|
859
878
|
return rc;
|
|
860
879
|
});
|
|
861
880
|
cache = (0, import_neko_helper.createSingleton)((label) => {
|
|
@@ -864,7 +883,7 @@ var init_facades = __esm({
|
|
|
864
883
|
throw new Error(`Cache configuration for '${label}' not found`);
|
|
865
884
|
}
|
|
866
885
|
const provider = CacheProviderFactory.create(
|
|
867
|
-
cache_config.
|
|
886
|
+
cache_config.provider,
|
|
868
887
|
cache_config.config
|
|
869
888
|
);
|
|
870
889
|
return new import_neko_cache2.Cache(provider);
|
|
@@ -2251,14 +2270,14 @@ var init_migrate = __esm({
|
|
|
2251
2270
|
});
|
|
2252
2271
|
|
|
2253
2272
|
// src/app/console/StartCommand.mts
|
|
2254
|
-
var import_clipanion5, import_neko_config5,
|
|
2273
|
+
var import_clipanion5, import_neko_config5, import_neko_sql, StartCommand;
|
|
2255
2274
|
var init_StartCommand = __esm({
|
|
2256
2275
|
"src/app/console/StartCommand.mts"() {
|
|
2257
2276
|
"use strict";
|
|
2258
2277
|
import_clipanion5 = require("clipanion");
|
|
2259
2278
|
import_neko_config5 = require("@devbro/neko-config");
|
|
2260
2279
|
init_facades();
|
|
2261
|
-
|
|
2280
|
+
import_neko_sql = require("@devbro/neko-sql");
|
|
2262
2281
|
StartCommand = class extends import_clipanion5.Command {
|
|
2263
2282
|
static {
|
|
2264
2283
|
__name(this, "StartCommand");
|
|
@@ -2278,7 +2297,7 @@ var init_StartCommand = __esm({
|
|
|
2278
2297
|
}
|
|
2279
2298
|
logger().info(`Starting Server
|
|
2280
2299
|
`);
|
|
2281
|
-
|
|
2300
|
+
import_neko_sql.PostgresqlConnection.defaults.idleTimeoutMillis = 1e4;
|
|
2282
2301
|
if (this.scheduler || this.all) {
|
|
2283
2302
|
logger().info(`starting scheduler
|
|
2284
2303
|
`);
|
|
@@ -2703,12 +2722,12 @@ var DatabaseServiceProvider_exports = {};
|
|
|
2703
2722
|
__export(DatabaseServiceProvider_exports, {
|
|
2704
2723
|
DatabaseServiceProvider: () => DatabaseServiceProvider
|
|
2705
2724
|
});
|
|
2706
|
-
var
|
|
2725
|
+
var import_neko_sql2, import_neko_orm, import_neko_context5, import_neko_config8, DatabaseServiceProvider;
|
|
2707
2726
|
var init_DatabaseServiceProvider = __esm({
|
|
2708
2727
|
"src/DatabaseServiceProvider.mts"() {
|
|
2709
2728
|
"use strict";
|
|
2710
2729
|
init_dist();
|
|
2711
|
-
|
|
2730
|
+
import_neko_sql2 = require("@devbro/neko-sql");
|
|
2712
2731
|
import_neko_orm = require("@devbro/neko-orm");
|
|
2713
2732
|
import_neko_context5 = require("@devbro/neko-context");
|
|
2714
2733
|
import_neko_config8 = require("@devbro/neko-config");
|
|
@@ -2745,7 +2764,7 @@ var init_DatabaseServiceProvider = __esm({
|
|
|
2745
2764
|
return _DatabaseServiceProvider.instance;
|
|
2746
2765
|
}
|
|
2747
2766
|
async getConnection(db_config) {
|
|
2748
|
-
const conn = new
|
|
2767
|
+
const conn = new import_neko_sql2.PostgresqlConnection(db_config);
|
|
2749
2768
|
if (!await conn.connect()) {
|
|
2750
2769
|
throw new Error("Failed to connect to the database");
|
|
2751
2770
|
}
|
package/dist/bin/middlewares.cjs
CHANGED
|
@@ -457,7 +457,7 @@ var Router = class {
|
|
|
457
457
|
var import_neko_scheduler = require("@devbro/neko-scheduler");
|
|
458
458
|
var import_neko_helper = require("@devbro/neko-helper");
|
|
459
459
|
var import_neko_context2 = require("@devbro/neko-context");
|
|
460
|
-
var
|
|
460
|
+
var import_neko_storage2 = require("@devbro/neko-storage");
|
|
461
461
|
var import_neko_mailer2 = require("@devbro/neko-mailer");
|
|
462
462
|
var import_neko_config = require("@devbro/neko-config");
|
|
463
463
|
var import_clipanion = require("clipanion");
|
|
@@ -481,31 +481,38 @@ __export(queue_exports, {
|
|
|
481
481
|
DatabaseTransport: () => DatabaseTransport
|
|
482
482
|
});
|
|
483
483
|
__reExport(queue_exports, require("@devbro/neko-queue"));
|
|
484
|
-
var import_neko_sql = require("@devbro/neko-sql");
|
|
485
484
|
var DatabaseTransport = class {
|
|
486
|
-
constructor(db_config) {
|
|
487
|
-
this.db_config = db_config;
|
|
488
|
-
}
|
|
489
485
|
static {
|
|
490
486
|
__name(this, "DatabaseTransport");
|
|
491
487
|
}
|
|
492
|
-
listenInterval = 6e4;
|
|
493
|
-
// default to 1 minute
|
|
494
|
-
messageLimit = 100;
|
|
495
|
-
// default to 100 messages per fetch
|
|
496
488
|
activeIntervals = /* @__PURE__ */ new Set();
|
|
489
|
+
config = {
|
|
490
|
+
queue_table: "queue_messages",
|
|
491
|
+
db_connection: "default",
|
|
492
|
+
listen_interval: 60,
|
|
493
|
+
// seconds
|
|
494
|
+
message_limit: 10
|
|
495
|
+
// messages per each fetch
|
|
496
|
+
};
|
|
497
|
+
constructor(config2) {
|
|
498
|
+
this.config = { ...this.config, ...config2 };
|
|
499
|
+
}
|
|
497
500
|
setListenInterval(interval) {
|
|
498
|
-
this.
|
|
501
|
+
this.config.listen_interval = interval;
|
|
499
502
|
}
|
|
500
503
|
setMessageLimit(limit) {
|
|
501
|
-
this.
|
|
504
|
+
this.config.message_limit = limit;
|
|
502
505
|
}
|
|
503
506
|
async dispatch(channel, message) {
|
|
504
|
-
const conn =
|
|
507
|
+
const conn = db(this.config.db_connection);
|
|
505
508
|
try {
|
|
506
509
|
await conn.connect();
|
|
510
|
+
let schema = conn.getSchema();
|
|
511
|
+
if (await schema.tableExists(this.config.queue_table) === false) {
|
|
512
|
+
return;
|
|
513
|
+
}
|
|
507
514
|
let q = conn.getQuery();
|
|
508
|
-
await q.table(
|
|
515
|
+
await q.table(this.config.queue_table).insert({
|
|
509
516
|
channel,
|
|
510
517
|
message,
|
|
511
518
|
processed: false,
|
|
@@ -521,20 +528,20 @@ var DatabaseTransport = class {
|
|
|
521
528
|
async listen(channel, callback) {
|
|
522
529
|
return new Promise(async (resolve, reject) => {
|
|
523
530
|
const intervalId = setInterval(async () => {
|
|
524
|
-
const conn =
|
|
531
|
+
const conn = db(this.config.db_connection);
|
|
525
532
|
try {
|
|
526
533
|
await conn.connect();
|
|
527
534
|
let q = conn.getQuery();
|
|
528
|
-
let messages = await q.table(
|
|
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();
|
|
529
536
|
for (let msg of messages) {
|
|
530
537
|
try {
|
|
531
538
|
await callback(msg.message);
|
|
532
|
-
await q.table(
|
|
539
|
+
await q.table(this.config.queue_table).whereOp("id", "=", msg.id).update({
|
|
533
540
|
processed: true,
|
|
534
541
|
updated_at: /* @__PURE__ */ new Date()
|
|
535
542
|
});
|
|
536
543
|
} catch (error) {
|
|
537
|
-
await q.table(
|
|
544
|
+
await q.table(this.config.queue_table).whereOp("id", "=", msg.id).update({
|
|
538
545
|
processed: false,
|
|
539
546
|
last_tried_at: /* @__PURE__ */ new Date(),
|
|
540
547
|
process_message: error.message || "Error processing message"
|
|
@@ -543,11 +550,11 @@ var DatabaseTransport = class {
|
|
|
543
550
|
}
|
|
544
551
|
} catch (error) {
|
|
545
552
|
this.activeIntervals.delete(intervalId);
|
|
546
|
-
|
|
553
|
+
logger().error("Error in DatabaseTransport listen interval:", { error });
|
|
547
554
|
} finally {
|
|
548
555
|
await conn.disconnect();
|
|
549
556
|
}
|
|
550
|
-
}, this.
|
|
557
|
+
}, this.config.listen_interval * 1e3);
|
|
551
558
|
this.activeIntervals.add(intervalId);
|
|
552
559
|
});
|
|
553
560
|
}
|
|
@@ -561,6 +568,7 @@ var DatabaseTransport = class {
|
|
|
561
568
|
|
|
562
569
|
// src/factories.mts
|
|
563
570
|
var import_neko_cache = require("@devbro/neko-cache");
|
|
571
|
+
var import_neko_storage = require("@devbro/neko-storage");
|
|
564
572
|
var FlexibleFactory = class {
|
|
565
573
|
static {
|
|
566
574
|
__name(this, "FlexibleFactory");
|
|
@@ -597,32 +605,32 @@ MailerFactory.register("logger", (opt) => {
|
|
|
597
605
|
});
|
|
598
606
|
});
|
|
599
607
|
});
|
|
600
|
-
MailerFactory.register("
|
|
608
|
+
MailerFactory.register("ses", (opt) => {
|
|
601
609
|
return new import_neko_mailer.SESProvider(opt);
|
|
602
610
|
});
|
|
603
|
-
MailerFactory.register("
|
|
611
|
+
MailerFactory.register("smtp", (opt) => {
|
|
604
612
|
return new import_neko_mailer.SMTPProvider(opt);
|
|
605
613
|
});
|
|
606
|
-
MailerFactory.register("
|
|
614
|
+
MailerFactory.register("memory", (opt) => {
|
|
607
615
|
return new import_neko_mailer.MemoryProvider();
|
|
608
616
|
});
|
|
609
|
-
var
|
|
617
|
+
var QueueTransportFactory = class _QueueTransportFactory {
|
|
610
618
|
static {
|
|
611
|
-
__name(this, "
|
|
619
|
+
__name(this, "QueueTransportFactory");
|
|
612
620
|
}
|
|
613
621
|
static instance = new FlexibleFactory();
|
|
614
622
|
static register(key, factory) {
|
|
615
|
-
|
|
623
|
+
_QueueTransportFactory.instance.register(key, factory);
|
|
616
624
|
}
|
|
617
625
|
static create(key, ...args) {
|
|
618
|
-
return
|
|
626
|
+
return _QueueTransportFactory.instance.create(key, ...args);
|
|
619
627
|
}
|
|
620
628
|
};
|
|
621
|
-
|
|
629
|
+
QueueTransportFactory.register("database", (opt) => {
|
|
622
630
|
let transport = new DatabaseTransport(opt);
|
|
623
631
|
return new import_neko_queue.QueueConnection(transport);
|
|
624
632
|
});
|
|
625
|
-
|
|
633
|
+
QueueTransportFactory.register("memory", (opt) => {
|
|
626
634
|
let transport = new import_neko_queue2.MemoryTransport(opt);
|
|
627
635
|
return new import_neko_queue.QueueConnection(transport);
|
|
628
636
|
});
|
|
@@ -650,9 +658,16 @@ CacheProviderFactory.register("file", (opt) => {
|
|
|
650
658
|
CacheProviderFactory.register("disabled", (opt) => {
|
|
651
659
|
return new import_neko_cache.DisabledCacheProvider();
|
|
652
660
|
});
|
|
661
|
+
import_neko_storage.StorageProviderFactory.register("local", (opt) => {
|
|
662
|
+
return new import_neko_storage.LocalStorageProvider(opt);
|
|
663
|
+
});
|
|
664
|
+
import_neko_storage.StorageProviderFactory.register("s3", (opt) => {
|
|
665
|
+
return new import_neko_storage.AWSS3StorageProvider(opt);
|
|
666
|
+
});
|
|
653
667
|
|
|
654
668
|
// src/facades.mts
|
|
655
669
|
var import_neko_cache2 = require("@devbro/neko-cache");
|
|
670
|
+
var import_neko_queue3 = require("@devbro/neko-queue");
|
|
656
671
|
var router = (0, import_neko_helper.createSingleton)(() => new Router());
|
|
657
672
|
var scheduler = (0, import_neko_helper.createSingleton)(() => {
|
|
658
673
|
const rc = new import_neko_scheduler.Scheduler();
|
|
@@ -666,9 +681,11 @@ var scheduler = (0, import_neko_helper.createSingleton)(() => {
|
|
|
666
681
|
return rc;
|
|
667
682
|
});
|
|
668
683
|
var db = /* @__PURE__ */ __name((label = "default") => (0, import_neko_context2.ctx)().getOrThrow(["database", label]), "db");
|
|
669
|
-
var storage = (0, import_neko_helper.createSingleton)(
|
|
670
|
-
|
|
671
|
-
);
|
|
684
|
+
var storage = (0, import_neko_helper.createSingleton)((label = "default") => {
|
|
685
|
+
let storage_config = import_neko_config.config.get(["storages", label].join("."));
|
|
686
|
+
const provider = import_neko_storage2.StorageProviderFactory.create(storage_config.provider, storage_config.config);
|
|
687
|
+
return new import_neko_storage2.Storage(provider);
|
|
688
|
+
});
|
|
672
689
|
var cli = (0, import_neko_helper.createSingleton)(() => {
|
|
673
690
|
const [node, app, ...args] = process.argv;
|
|
674
691
|
return new import_clipanion.Cli({
|
|
@@ -723,7 +740,7 @@ var logger = (0, import_neko_helper.createSingleton)((label) => {
|
|
|
723
740
|
});
|
|
724
741
|
var mailer = (0, import_neko_helper.createSingleton)((label) => {
|
|
725
742
|
const mailer_config = import_neko_config.config.get(["mailer", label].join("."));
|
|
726
|
-
|
|
743
|
+
const provider = MailerFactory.create(
|
|
727
744
|
mailer_config.provider,
|
|
728
745
|
mailer_config.config
|
|
729
746
|
);
|
|
@@ -735,7 +752,8 @@ var queue = (0, import_neko_helper.createSingleton)((label) => {
|
|
|
735
752
|
if (!queue_config) {
|
|
736
753
|
throw new Error(`Queue configuration for '${label}' not found`);
|
|
737
754
|
}
|
|
738
|
-
const
|
|
755
|
+
const provider = QueueTransportFactory.create(queue_config.provider, queue_config.config);
|
|
756
|
+
const rc = new import_neko_queue3.QueueConnection(provider);
|
|
739
757
|
return rc;
|
|
740
758
|
});
|
|
741
759
|
var cache = (0, import_neko_helper.createSingleton)((label) => {
|
|
@@ -744,7 +762,7 @@ var cache = (0, import_neko_helper.createSingleton)((label) => {
|
|
|
744
762
|
throw new Error(`Cache configuration for '${label}' not found`);
|
|
745
763
|
}
|
|
746
764
|
const provider = CacheProviderFactory.create(
|
|
747
|
-
cache_config.
|
|
765
|
+
cache_config.provider,
|
|
748
766
|
cache_config.config
|
|
749
767
|
);
|
|
750
768
|
return new import_neko_cache2.Cache(provider);
|