@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.
Files changed (40) hide show
  1. package/dist/app/console/project/base_project/package.json.tpl +1 -1
  2. package/dist/app/console/project/base_project/src/app/models/index.ts.tpl +1 -0
  3. package/dist/app/console/project/base_project/src/config/caches.ts.tpl +7 -0
  4. package/dist/app/console/project/base_project/src/config/databases.ts.tpl +10 -6
  5. package/dist/app/console/project/base_project/src/config/default.mts.tpl +35 -0
  6. package/dist/app/console/project/base_project/src/config/loggers.ts.tpl +11 -7
  7. package/dist/app/console/project/base_project/src/config/mailer.ts.tpl +21 -1
  8. package/dist/app/console/project/base_project/src/config/queues.ts.tpl +7 -0
  9. package/dist/app/console/project/base_project/src/config/storages.ts.tpl +8 -4
  10. package/dist/app/console/project/base_project/tsconfig.json.tpl +7 -4
  11. package/dist/app/console/queue/queue_migration.tpl +2 -1
  12. package/dist/bin/app/console/DefaultCommand.cjs +53 -34
  13. package/dist/bin/app/console/KeyGenerateCommand.cjs +53 -34
  14. package/dist/bin/app/console/StartCommand.cjs +55 -36
  15. package/dist/bin/app/console/generate/GenerateControllerCommand.cjs +53 -34
  16. package/dist/bin/app/console/generate/index.cjs +53 -34
  17. package/dist/bin/app/console/index.cjs +54 -36
  18. package/dist/bin/app/console/migrate/GenerateMigrateCommand.cjs +53 -34
  19. package/dist/bin/app/console/migrate/MigrateCommand.cjs +52 -34
  20. package/dist/bin/app/console/migrate/MigrateRollbackCommand.cjs +52 -34
  21. package/dist/bin/app/console/migrate/index.cjs +52 -34
  22. package/dist/bin/app/console/queue/GenerateQueueMigrateCommand.cjs +53 -34
  23. package/dist/bin/cache.cjs +53 -34
  24. package/dist/bin/facades.cjs +52 -34
  25. package/dist/bin/factories.cjs +58 -39
  26. package/dist/bin/index.cjs +62 -43
  27. package/dist/bin/middlewares.cjs +52 -34
  28. package/dist/bin/queue.cjs +675 -18
  29. package/dist/facades.d.mts +2 -1
  30. package/dist/facades.mjs +12 -8
  31. package/dist/facades.mjs.map +1 -1
  32. package/dist/factories.d.mts +5 -5
  33. package/dist/factories.mjs +17 -10
  34. package/dist/factories.mjs.map +1 -1
  35. package/dist/queue.d.mts +8 -4
  36. package/dist/queue.mjs +26 -18
  37. package/dist/queue.mjs.map +1 -1
  38. package/package.json +1 -1
  39. package/dist/app/console/project/base_project/src/app/models/README.md.tpl +0 -1
  40. package/dist/app/console/project/base_project/src/config/default.ts.tpl +0 -42
@@ -566,36 +566,44 @@ var queue_exports = {};
566
566
  __export(queue_exports, {
567
567
  DatabaseTransport: () => DatabaseTransport
568
568
  });
569
- var import_neko_sql, DatabaseTransport;
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
- import_neko_sql = require("@devbro/neko-sql");
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.listenInterval = interval;
592
+ this.config.listen_interval = interval;
589
593
  }
590
594
  setMessageLimit(limit) {
591
- this.messageLimit = limit;
595
+ this.config.message_limit = limit;
592
596
  }
593
597
  async dispatch(channel, message) {
594
- const conn = new import_neko_sql.PostgresqlConnection(this.db_config);
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("queue_messages").insert({
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 = new import_neko_sql.PostgresqlConnection(this.db_config);
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("queue_messages").whereOp("channel", "=", channel).whereOp("processed", "=", false).limit(this.messageLimit).orderBy("last_tried_at", "asc").get();
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("queue_messages").whereOp("id", "=", msg.id).update({
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("queue_messages").whereOp("id", "=", msg.id).update({
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
- reject(error);
644
+ logger().error("Error in DatabaseTransport listen interval:", { error });
637
645
  } finally {
638
646
  await conn.disconnect();
639
647
  }
640
- }, this.listenInterval);
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, QueueFactory, CacheProviderFactory;
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("SES", (opt) => {
710
+ MailerFactory.register("ses", (opt) => {
702
711
  return new import_neko_mailer.SESProvider(opt);
703
712
  });
704
- MailerFactory.register("SMTP", (opt) => {
713
+ MailerFactory.register("smtp", (opt) => {
705
714
  return new import_neko_mailer.SMTPProvider(opt);
706
715
  });
707
- MailerFactory.register("MEMORY", (opt) => {
716
+ MailerFactory.register("memory", (opt) => {
708
717
  return new import_neko_mailer.MemoryProvider();
709
718
  });
710
- QueueFactory = class _QueueFactory {
719
+ QueueTransportFactory = class _QueueTransportFactory {
711
720
  static {
712
- __name(this, "QueueFactory");
721
+ __name(this, "QueueTransportFactory");
713
722
  }
714
723
  static instance = new FlexibleFactory();
715
724
  static register(key, factory) {
716
- _QueueFactory.instance.register(key, factory);
725
+ _QueueTransportFactory.instance.register(key, factory);
717
726
  }
718
727
  static create(key, ...args) {
719
- return _QueueFactory.instance.create(key, ...args);
728
+ return _QueueTransportFactory.instance.create(key, ...args);
720
729
  }
721
730
  };
722
- QueueFactory.register("database", (opt) => {
731
+ QueueTransportFactory.register("database", (opt) => {
723
732
  let transport = new DatabaseTransport(opt);
724
733
  return new import_neko_queue.QueueConnection(transport);
725
734
  });
726
- QueueFactory.register("memory", (opt) => {
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, import_neko_storage, import_neko_mailer2, import_neko_config, import_clipanion, yup, import_neko_logger, import_neko_cache2, router, scheduler, db, storage, cli, httpServer, logger, mailer, queue, cache;
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
- import_neko_storage = require("@devbro/neko-storage");
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
- (label = "default") => import_neko_storage.StorageFactory.create(import_neko_config.config.get(["storages", label].join(".")))
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
- let provider = MailerFactory.create(
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 rc = QueueFactory.create(queue_config.type, queue_config);
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.type,
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, import_neko_sql2, StartCommand;
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
- import_neko_sql2 = require("@devbro/neko-sql");
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
- import_neko_sql2.PostgresqlConnection.defaults.idleTimeoutMillis = 1e4;
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 import_neko_sql3, import_neko_orm, import_neko_context5, import_neko_config8, DatabaseServiceProvider;
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
- import_neko_sql3 = require("@devbro/neko-sql");
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 import_neko_sql3.PostgresqlConnection(db_config);
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
  }
@@ -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 import_neko_storage = require("@devbro/neko-storage");
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.listenInterval = interval;
501
+ this.config.listen_interval = interval;
499
502
  }
500
503
  setMessageLimit(limit) {
501
- this.messageLimit = limit;
504
+ this.config.message_limit = limit;
502
505
  }
503
506
  async dispatch(channel, message) {
504
- const conn = new import_neko_sql.PostgresqlConnection(this.db_config);
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("queue_messages").insert({
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 = new import_neko_sql.PostgresqlConnection(this.db_config);
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("queue_messages").whereOp("channel", "=", channel).whereOp("processed", "=", false).limit(this.messageLimit).orderBy("last_tried_at", "asc").get();
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("queue_messages").whereOp("id", "=", msg.id).update({
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("queue_messages").whereOp("id", "=", msg.id).update({
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
- reject(error);
553
+ logger().error("Error in DatabaseTransport listen interval:", { error });
547
554
  } finally {
548
555
  await conn.disconnect();
549
556
  }
550
- }, this.listenInterval);
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("SES", (opt) => {
608
+ MailerFactory.register("ses", (opt) => {
601
609
  return new import_neko_mailer.SESProvider(opt);
602
610
  });
603
- MailerFactory.register("SMTP", (opt) => {
611
+ MailerFactory.register("smtp", (opt) => {
604
612
  return new import_neko_mailer.SMTPProvider(opt);
605
613
  });
606
- MailerFactory.register("MEMORY", (opt) => {
614
+ MailerFactory.register("memory", (opt) => {
607
615
  return new import_neko_mailer.MemoryProvider();
608
616
  });
609
- var QueueFactory = class _QueueFactory {
617
+ var QueueTransportFactory = class _QueueTransportFactory {
610
618
  static {
611
- __name(this, "QueueFactory");
619
+ __name(this, "QueueTransportFactory");
612
620
  }
613
621
  static instance = new FlexibleFactory();
614
622
  static register(key, factory) {
615
- _QueueFactory.instance.register(key, factory);
623
+ _QueueTransportFactory.instance.register(key, factory);
616
624
  }
617
625
  static create(key, ...args) {
618
- return _QueueFactory.instance.create(key, ...args);
626
+ return _QueueTransportFactory.instance.create(key, ...args);
619
627
  }
620
628
  };
621
- QueueFactory.register("database", (opt) => {
629
+ QueueTransportFactory.register("database", (opt) => {
622
630
  let transport = new DatabaseTransport(opt);
623
631
  return new import_neko_queue.QueueConnection(transport);
624
632
  });
625
- QueueFactory.register("memory", (opt) => {
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
- (label = "default") => import_neko_storage.StorageFactory.create(import_neko_config.config.get(["storages", label].join(".")))
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
- let provider = MailerFactory.create(
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 rc = QueueFactory.create(queue_config.type, queue_config);
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.type,
765
+ cache_config.provider,
748
766
  cache_config.config
749
767
  );
750
768
  return new import_neko_cache2.Cache(provider);