@devbro/pashmak 0.1.47 → 0.1.49

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 (42) hide show
  1. package/dist/DatabaseServiceProvider.d.mts +4 -1
  2. package/dist/DatabaseServiceProvider.mjs +5 -2
  3. package/dist/DatabaseServiceProvider.mjs.map +1 -1
  4. package/dist/app/console/StartCommand.d.mts +1 -0
  5. package/dist/app/console/StartCommand.mjs +5 -2
  6. package/dist/app/console/StartCommand.mjs.map +1 -1
  7. package/dist/app/console/generate/GenerateApiDocsCommand.d.mts +34 -2
  8. package/dist/app/console/generate/GenerateApiDocsCommand.mjs +183 -100
  9. package/dist/app/console/generate/GenerateApiDocsCommand.mjs.map +1 -1
  10. package/dist/app/console/project/base_project/src/config/storages.ts.tpl +2 -2
  11. package/dist/bin/DatabaseServiceProvider.cjs +8 -2
  12. package/dist/bin/app/console/DefaultCommand.cjs +64 -32
  13. package/dist/bin/app/console/KeyGenerateCommand.cjs +64 -32
  14. package/dist/bin/app/console/StartCommand.cjs +69 -34
  15. package/dist/bin/app/console/generate/GenerateApiDocsCommand.cjs +248 -133
  16. package/dist/bin/app/console/generate/GenerateControllerCommand.cjs +64 -32
  17. package/dist/bin/app/console/generate/index.cjs +248 -133
  18. package/dist/bin/app/console/index.cjs +253 -135
  19. package/dist/bin/app/console/migrate/GenerateMigrateCommand.cjs +64 -32
  20. package/dist/bin/app/console/migrate/MigrateCommand.cjs +64 -32
  21. package/dist/bin/app/console/migrate/MigrateRollbackCommand.cjs +64 -32
  22. package/dist/bin/app/console/migrate/index.cjs +64 -32
  23. package/dist/bin/app/console/queue/GenerateQueueMigrateCommand.cjs +64 -32
  24. package/dist/bin/cache.cjs +64 -32
  25. package/dist/bin/facades.cjs +64 -32
  26. package/dist/bin/factories.cjs +64 -32
  27. package/dist/bin/http.cjs +739 -0
  28. package/dist/bin/index.cjs +264 -141
  29. package/dist/bin/middlewares.cjs +66 -34
  30. package/dist/bin/queue.cjs +64 -32
  31. package/dist/bin/router.cjs +4 -8
  32. package/dist/config.d.mts +0 -1
  33. package/dist/facades.mjs +2 -13
  34. package/dist/facades.mjs.map +1 -1
  35. package/dist/factories.mjs +45 -2
  36. package/dist/factories.mjs.map +1 -1
  37. package/dist/http.d.mts +4 -0
  38. package/dist/http.mjs +20 -0
  39. package/dist/http.mjs.map +1 -1
  40. package/dist/queue.d.mts +1 -1
  41. package/dist/queue.mjs.map +1 -1
  42. package/package.json +1 -1
@@ -75,6 +75,7 @@ var MiddlewareFactory = class {
75
75
  };
76
76
 
77
77
  // ../neko-router/dist/CompiledRoute.mjs
78
+ var import_neko_helper = require("@devbro/neko-helper");
78
79
  var CompiledRoute = class {
79
80
  static {
80
81
  __name(this, "CompiledRoute");
@@ -95,7 +96,7 @@ var CompiledRoute = class {
95
96
  for (const middleware of [...this.globalMiddlewares, ...this.route.getMiddlewares()]) {
96
97
  if (middleware instanceof Middleware) {
97
98
  this.middlewares.push(middleware);
98
- } else if (this.isClass(middleware)) {
99
+ } else if ((0, import_neko_helper.isClass)(middleware)) {
99
100
  this.middlewares.push(middleware.getInstance({}));
100
101
  } else if (typeof middleware === "function") {
101
102
  this.middlewares.push(MiddlewareFactory.create(middleware));
@@ -104,13 +105,8 @@ var CompiledRoute = class {
104
105
  }
105
106
  }
106
107
  }
107
- isClass(func) {
108
- return typeof func === "function" && /^class\s/.test(Function.prototype.toString.call(func));
109
- }
110
108
  async run() {
111
- let rc = await this.runMiddlewares(this.middlewares, this.request, this.response);
112
- this.response.end();
113
- return rc;
109
+ return await this.runMiddlewares(this.middlewares, this.request, this.response);
114
110
  }
115
111
  prepareOutputJsonFormat(obj) {
116
112
  function traverse(value) {
@@ -244,7 +240,7 @@ var Route = class {
244
240
  i = start;
245
241
  } else if (char === "*") {
246
242
  let start = i + 1;
247
- while (start < path2.length && /[a-zA-Z0-9_\.]/.test(path2[start])) {
243
+ while (start < path2.length && /[a-zA-Z0-9_]/.test(path2[start])) {
248
244
  start++;
249
245
  }
250
246
  tokens.push({ type: "WILDCARD", value: path2.slice(i + 1, start) });
@@ -459,7 +455,7 @@ var import_errors = require("@devbro/neko-http/errors");
459
455
 
460
456
  // src/facades.mts
461
457
  var import_neko_scheduler = require("@devbro/neko-scheduler");
462
- var import_neko_helper2 = require("@devbro/neko-helper");
458
+ var import_neko_helper3 = require("@devbro/neko-helper");
463
459
  var import_neko_context3 = require("@devbro/neko-context");
464
460
  var import_neko_storage2 = require("@devbro/neko-storage");
465
461
  var import_neko_mailer2 = require("@devbro/neko-mailer");
@@ -468,7 +464,24 @@ var import_clipanion = require("clipanion");
468
464
 
469
465
  // src/http.mts
470
466
  var http_exports = {};
467
+ __export(http_exports, {
468
+ handleHttpErrors: () => handleHttpErrors
469
+ });
470
+ var import_neko_http = require("@devbro/neko-http");
471
471
  __reExport(http_exports, require("@devbro/neko-http"));
472
+ async function handleHttpErrors(err, req, res) {
473
+ if (err instanceof import_neko_http.HttpError) {
474
+ res.writeHead(err.statusCode, { "Content-Type": "application/json" });
475
+ res.write(JSON.stringify({ message: err.message, error: err.code }));
476
+ logger().warn({ msg: "HttpError: " + err.message, err });
477
+ return;
478
+ } else {
479
+ logger().error({ msg: "Error: " + err.message, err });
480
+ }
481
+ res.writeHead(500, { "Content-Type": "application/json" });
482
+ res.write(JSON.stringify({ error: "Internal Server Error" }));
483
+ }
484
+ __name(handleHttpErrors, "handleHttpErrors");
472
485
 
473
486
  // src/facades.mts
474
487
  var import_neko_logger = require("@devbro/neko-logger");
@@ -483,7 +496,7 @@ __export(queue_exports, {
483
496
  DatabaseTransport: () => DatabaseTransport
484
497
  });
485
498
  __reExport(queue_exports, require("@devbro/neko-queue"));
486
- var import_neko_helper = require("@devbro/neko-helper");
499
+ var import_neko_helper2 = require("@devbro/neko-helper");
487
500
  var import_neko_context2 = require("@devbro/neko-context");
488
501
  var DatabaseTransport = class {
489
502
  static {
@@ -544,7 +557,7 @@ var DatabaseTransport = class {
544
557
  }, "processMessage");
545
558
  constructor(config2 = {}) {
546
559
  this.config = { ...this.config, ...config2 };
547
- this.repeater = (0, import_neko_helper.createRepeater)(
560
+ this.repeater = (0, import_neko_helper2.createRepeater)(
548
561
  this.processMessage,
549
562
  this.config.listen_interval * 1e3
550
563
  );
@@ -612,6 +625,24 @@ import_neko_queue.QueueTransportFactory.register("database", (opt) => {
612
625
  import_neko_queue.QueueTransportFactory.register("memory", (opt) => {
613
626
  return new import_neko_queue.MemoryTransport(opt);
614
627
  });
628
+ import_neko_queue.QueueTransportFactory.register("sqs", (opt) => {
629
+ return new import_neko_queue.AwsSqsTransport(opt);
630
+ });
631
+ import_neko_queue.QueueTransportFactory.register("amqp", (opt) => {
632
+ return new import_neko_queue.AmqpTransport(opt);
633
+ });
634
+ import_neko_queue.QueueTransportFactory.register("redis", (opt) => {
635
+ return new import_neko_queue.RedisTransport(opt);
636
+ });
637
+ import_neko_queue.QueueTransportFactory.register("async", (opt) => {
638
+ return new import_neko_queue.AsyncTransport();
639
+ });
640
+ import_neko_queue.QueueTransportFactory.register("azure_service_bus", (opt) => {
641
+ return new import_neko_queue.AzureServiceBusTransport(opt);
642
+ });
643
+ import_neko_queue.QueueTransportFactory.register("google_pubsub", (opt) => {
644
+ return new import_neko_queue.GooglePubSubTransport(opt);
645
+ });
615
646
  var CacheProviderFactory = class _CacheProviderFactory {
616
647
  static {
617
648
  __name(this, "CacheProviderFactory");
@@ -642,12 +673,24 @@ import_neko_storage.StorageProviderFactory.register("local", (opt) => {
642
673
  import_neko_storage.StorageProviderFactory.register("s3", (opt) => {
643
674
  return new import_neko_storage.AWSS3StorageProvider(opt);
644
675
  });
676
+ import_neko_storage.StorageProviderFactory.register("gcp", (opt) => {
677
+ return new import_neko_storage.GCPStorageProvider(opt);
678
+ });
679
+ import_neko_storage.StorageProviderFactory.register("azure", (opt) => {
680
+ return new import_neko_storage.AzureBlobStorageProvider(opt);
681
+ });
682
+ import_neko_storage.StorageProviderFactory.register("ftp", (opt) => {
683
+ return new import_neko_storage.FTPStorageProvider(opt);
684
+ });
685
+ import_neko_storage.StorageProviderFactory.register("sftp", (opt) => {
686
+ return new import_neko_storage.SFTPStorageProvider(opt);
687
+ });
645
688
 
646
689
  // src/facades.mts
647
690
  var import_neko_cache2 = require("@devbro/neko-cache");
648
691
  var import_neko_queue2 = require("@devbro/neko-queue");
649
- var router = (0, import_neko_helper2.createSingleton)(() => new Router());
650
- var scheduler = (0, import_neko_helper2.createSingleton)(() => {
692
+ var router = (0, import_neko_helper3.createSingleton)(() => new Router());
693
+ var scheduler = (0, import_neko_helper3.createSingleton)(() => {
651
694
  const rc = new import_neko_scheduler.Scheduler();
652
695
  rc.setErrorHandler((err, job) => {
653
696
  logger().error({
@@ -659,7 +702,7 @@ var scheduler = (0, import_neko_helper2.createSingleton)(() => {
659
702
  return rc;
660
703
  });
661
704
  var db = /* @__PURE__ */ __name((label = "default") => (0, import_neko_context3.ctx)().getOrThrow(["database", label]), "db");
662
- var storage = (0, import_neko_helper2.createSingleton)((label = "default") => {
705
+ var storage = (0, import_neko_helper3.createSingleton)((label = "default") => {
663
706
  let storage_config = import_neko_config.config.get(["storages", label].join("."));
664
707
  const provider = import_neko_storage2.StorageProviderFactory.create(
665
708
  storage_config.provider,
@@ -667,7 +710,7 @@ var storage = (0, import_neko_helper2.createSingleton)((label = "default") => {
667
710
  );
668
711
  return new import_neko_storage2.Storage(provider);
669
712
  });
670
- var cli = (0, import_neko_helper2.createSingleton)(() => {
713
+ var cli = (0, import_neko_helper3.createSingleton)(() => {
671
714
  const [node, app, ...args] = process.argv;
672
715
  return new import_clipanion.Cli({
673
716
  binaryLabel: `My Application`,
@@ -675,24 +718,13 @@ var cli = (0, import_neko_helper2.createSingleton)(() => {
675
718
  binaryVersion: `1.0.0`
676
719
  });
677
720
  });
678
- var httpServer = (0, import_neko_helper2.createSingleton)(() => {
721
+ var httpServer = (0, import_neko_helper3.createSingleton)(() => {
679
722
  const server = new http_exports.HttpServer();
680
- server.setErrorHandler(async (err, req, res) => {
681
- if (err instanceof http_exports.HttpError) {
682
- res.writeHead(err.statusCode, { "Content-Type": "application/json" });
683
- res.end(JSON.stringify({ message: err.message, error: err.code }));
684
- logger().warn({ msg: "HttpError: " + err.message, err });
685
- return;
686
- } else {
687
- logger().error({ msg: "Error: " + err.message, err });
688
- }
689
- res.writeHead(500, { "Content-Type": "" });
690
- res.end(JSON.stringify({ error: "Internal Server Error" }));
691
- });
723
+ server.setErrorHandler(handleHttpErrors);
692
724
  server.setRouter(router());
693
725
  return server;
694
726
  });
695
- var logger = (0, import_neko_helper2.createSingleton)((label) => {
727
+ var logger = (0, import_neko_helper3.createSingleton)((label) => {
696
728
  const logger_config = import_neko_config.config.get(["loggers", label].join("."));
697
729
  const rc = new import_neko_logger.Logger(logger_config);
698
730
  rc.setExtrasFunction((message) => {
@@ -701,7 +733,7 @@ var logger = (0, import_neko_helper2.createSingleton)((label) => {
701
733
  });
702
734
  return rc;
703
735
  });
704
- var mailer = (0, import_neko_helper2.createSingleton)((label) => {
736
+ var mailer = (0, import_neko_helper3.createSingleton)((label) => {
705
737
  const mailer_config = import_neko_config.config.get(["mailer", label].join("."));
706
738
  const provider = import_neko_mailer2.MailerProviderFactory.create(
707
739
  mailer_config.provider,
@@ -710,7 +742,7 @@ var mailer = (0, import_neko_helper2.createSingleton)((label) => {
710
742
  const rc = new import_neko_mailer2.Mailer(provider);
711
743
  return rc;
712
744
  });
713
- var queue = (0, import_neko_helper2.createSingleton)((label) => {
745
+ var queue = (0, import_neko_helper3.createSingleton)((label) => {
714
746
  const queue_config = import_neko_config.config.get(["queues", label].join("."));
715
747
  if (!queue_config) {
716
748
  throw new Error(`Queue configuration for '${label}' not found`);
@@ -721,7 +753,7 @@ var queue = (0, import_neko_helper2.createSingleton)((label) => {
721
753
  );
722
754
  return new import_neko_queue2.QueueConnection(provider);
723
755
  });
724
- var cache = (0, import_neko_helper2.createSingleton)((label) => {
756
+ var cache = (0, import_neko_helper3.createSingleton)((label) => {
725
757
  const cache_config = import_neko_config.config.get(["caches", label].join("."));
726
758
  if (!cache_config) {
727
759
  throw new Error(`Cache configuration for '${label}' not found`);
@@ -734,7 +766,7 @@ var cache = (0, import_neko_helper2.createSingleton)((label) => {
734
766
  });
735
767
 
736
768
  // src/middlewares.mts
737
- var import_neko_http = require("@devbro/neko-http");
769
+ var import_neko_http2 = require("@devbro/neko-http");
738
770
  function cors(options = {}) {
739
771
  return async (req, res, next) => {
740
772
  const allowedOrigins = options.allowedOrigins || ["*"];
@@ -815,7 +847,7 @@ var RateLimiterMiddleware = class _RateLimiterMiddleware extends Middleware {
815
847
  );
816
848
  }
817
849
  if (count > this.params.maxRequests) {
818
- throw new import_neko_http.HttpTooManyRequestsError(
850
+ throw new import_neko_http2.HttpTooManyRequestsError(
819
851
  "Too many requests. Please try again later."
820
852
  );
821
853
  }
@@ -78,6 +78,7 @@ var MiddlewareFactory = class {
78
78
  };
79
79
 
80
80
  // ../neko-router/dist/CompiledRoute.mjs
81
+ var import_neko_helper = require("@devbro/neko-helper");
81
82
  var CompiledRoute = class {
82
83
  static {
83
84
  __name(this, "CompiledRoute");
@@ -98,7 +99,7 @@ var CompiledRoute = class {
98
99
  for (const middleware of [...this.globalMiddlewares, ...this.route.getMiddlewares()]) {
99
100
  if (middleware instanceof Middleware) {
100
101
  this.middlewares.push(middleware);
101
- } else if (this.isClass(middleware)) {
102
+ } else if ((0, import_neko_helper.isClass)(middleware)) {
102
103
  this.middlewares.push(middleware.getInstance({}));
103
104
  } else if (typeof middleware === "function") {
104
105
  this.middlewares.push(MiddlewareFactory.create(middleware));
@@ -107,13 +108,8 @@ var CompiledRoute = class {
107
108
  }
108
109
  }
109
110
  }
110
- isClass(func) {
111
- return typeof func === "function" && /^class\s/.test(Function.prototype.toString.call(func));
112
- }
113
111
  async run() {
114
- let rc = await this.runMiddlewares(this.middlewares, this.request, this.response);
115
- this.response.end();
116
- return rc;
112
+ return await this.runMiddlewares(this.middlewares, this.request, this.response);
117
113
  }
118
114
  prepareOutputJsonFormat(obj) {
119
115
  function traverse(value) {
@@ -247,7 +243,7 @@ var Route = class {
247
243
  i = start;
248
244
  } else if (char === "*") {
249
245
  let start = i + 1;
250
- while (start < path2.length && /[a-zA-Z0-9_\.]/.test(path2[start])) {
246
+ while (start < path2.length && /[a-zA-Z0-9_]/.test(path2[start])) {
251
247
  start++;
252
248
  }
253
249
  tokens.push({ type: "WILDCARD", value: path2.slice(i + 1, start) });
@@ -458,7 +454,7 @@ var Router = class {
458
454
 
459
455
  // src/facades.mts
460
456
  var import_neko_scheduler = require("@devbro/neko-scheduler");
461
- var import_neko_helper = require("@devbro/neko-helper");
457
+ var import_neko_helper2 = require("@devbro/neko-helper");
462
458
  var import_neko_context2 = require("@devbro/neko-context");
463
459
  var import_neko_storage2 = require("@devbro/neko-storage");
464
460
  var import_neko_mailer2 = require("@devbro/neko-mailer");
@@ -467,7 +463,24 @@ var import_clipanion = require("clipanion");
467
463
 
468
464
  // src/http.mts
469
465
  var http_exports = {};
466
+ __export(http_exports, {
467
+ handleHttpErrors: () => handleHttpErrors
468
+ });
469
+ var import_neko_http = require("@devbro/neko-http");
470
470
  __reExport(http_exports, require("@devbro/neko-http"));
471
+ async function handleHttpErrors(err, req, res) {
472
+ if (err instanceof import_neko_http.HttpError) {
473
+ res.writeHead(err.statusCode, { "Content-Type": "application/json" });
474
+ res.write(JSON.stringify({ message: err.message, error: err.code }));
475
+ logger().warn({ msg: "HttpError: " + err.message, err });
476
+ return;
477
+ } else {
478
+ logger().error({ msg: "Error: " + err.message, err });
479
+ }
480
+ res.writeHead(500, { "Content-Type": "application/json" });
481
+ res.write(JSON.stringify({ error: "Internal Server Error" }));
482
+ }
483
+ __name(handleHttpErrors, "handleHttpErrors");
471
484
 
472
485
  // src/facades.mts
473
486
  var import_neko_logger = require("@devbro/neko-logger");
@@ -508,6 +521,24 @@ import_neko_queue.QueueTransportFactory.register("database", (opt) => {
508
521
  import_neko_queue.QueueTransportFactory.register("memory", (opt) => {
509
522
  return new import_neko_queue.MemoryTransport(opt);
510
523
  });
524
+ import_neko_queue.QueueTransportFactory.register("sqs", (opt) => {
525
+ return new import_neko_queue.AwsSqsTransport(opt);
526
+ });
527
+ import_neko_queue.QueueTransportFactory.register("amqp", (opt) => {
528
+ return new import_neko_queue.AmqpTransport(opt);
529
+ });
530
+ import_neko_queue.QueueTransportFactory.register("redis", (opt) => {
531
+ return new import_neko_queue.RedisTransport(opt);
532
+ });
533
+ import_neko_queue.QueueTransportFactory.register("async", (opt) => {
534
+ return new import_neko_queue.AsyncTransport();
535
+ });
536
+ import_neko_queue.QueueTransportFactory.register("azure_service_bus", (opt) => {
537
+ return new import_neko_queue.AzureServiceBusTransport(opt);
538
+ });
539
+ import_neko_queue.QueueTransportFactory.register("google_pubsub", (opt) => {
540
+ return new import_neko_queue.GooglePubSubTransport(opt);
541
+ });
511
542
  var CacheProviderFactory = class _CacheProviderFactory {
512
543
  static {
513
544
  __name(this, "CacheProviderFactory");
@@ -538,12 +569,24 @@ import_neko_storage.StorageProviderFactory.register("local", (opt) => {
538
569
  import_neko_storage.StorageProviderFactory.register("s3", (opt) => {
539
570
  return new import_neko_storage.AWSS3StorageProvider(opt);
540
571
  });
572
+ import_neko_storage.StorageProviderFactory.register("gcp", (opt) => {
573
+ return new import_neko_storage.GCPStorageProvider(opt);
574
+ });
575
+ import_neko_storage.StorageProviderFactory.register("azure", (opt) => {
576
+ return new import_neko_storage.AzureBlobStorageProvider(opt);
577
+ });
578
+ import_neko_storage.StorageProviderFactory.register("ftp", (opt) => {
579
+ return new import_neko_storage.FTPStorageProvider(opt);
580
+ });
581
+ import_neko_storage.StorageProviderFactory.register("sftp", (opt) => {
582
+ return new import_neko_storage.SFTPStorageProvider(opt);
583
+ });
541
584
 
542
585
  // src/facades.mts
543
586
  var import_neko_cache2 = require("@devbro/neko-cache");
544
587
  var import_neko_queue2 = require("@devbro/neko-queue");
545
- var router = (0, import_neko_helper.createSingleton)(() => new Router());
546
- var scheduler = (0, import_neko_helper.createSingleton)(() => {
588
+ var router = (0, import_neko_helper2.createSingleton)(() => new Router());
589
+ var scheduler = (0, import_neko_helper2.createSingleton)(() => {
547
590
  const rc = new import_neko_scheduler.Scheduler();
548
591
  rc.setErrorHandler((err, job) => {
549
592
  logger().error({
@@ -555,7 +598,7 @@ var scheduler = (0, import_neko_helper.createSingleton)(() => {
555
598
  return rc;
556
599
  });
557
600
  var db = /* @__PURE__ */ __name((label = "default") => (0, import_neko_context2.ctx)().getOrThrow(["database", label]), "db");
558
- var storage = (0, import_neko_helper.createSingleton)((label = "default") => {
601
+ var storage = (0, import_neko_helper2.createSingleton)((label = "default") => {
559
602
  let storage_config = import_neko_config.config.get(["storages", label].join("."));
560
603
  const provider = import_neko_storage2.StorageProviderFactory.create(
561
604
  storage_config.provider,
@@ -563,7 +606,7 @@ var storage = (0, import_neko_helper.createSingleton)((label = "default") => {
563
606
  );
564
607
  return new import_neko_storage2.Storage(provider);
565
608
  });
566
- var cli = (0, import_neko_helper.createSingleton)(() => {
609
+ var cli = (0, import_neko_helper2.createSingleton)(() => {
567
610
  const [node, app, ...args] = process.argv;
568
611
  return new import_clipanion.Cli({
569
612
  binaryLabel: `My Application`,
@@ -571,24 +614,13 @@ var cli = (0, import_neko_helper.createSingleton)(() => {
571
614
  binaryVersion: `1.0.0`
572
615
  });
573
616
  });
574
- var httpServer = (0, import_neko_helper.createSingleton)(() => {
617
+ var httpServer = (0, import_neko_helper2.createSingleton)(() => {
575
618
  const server = new http_exports.HttpServer();
576
- server.setErrorHandler(async (err, req, res) => {
577
- if (err instanceof http_exports.HttpError) {
578
- res.writeHead(err.statusCode, { "Content-Type": "application/json" });
579
- res.end(JSON.stringify({ message: err.message, error: err.code }));
580
- logger().warn({ msg: "HttpError: " + err.message, err });
581
- return;
582
- } else {
583
- logger().error({ msg: "Error: " + err.message, err });
584
- }
585
- res.writeHead(500, { "Content-Type": "" });
586
- res.end(JSON.stringify({ error: "Internal Server Error" }));
587
- });
619
+ server.setErrorHandler(handleHttpErrors);
588
620
  server.setRouter(router());
589
621
  return server;
590
622
  });
591
- var logger = (0, import_neko_helper.createSingleton)((label) => {
623
+ var logger = (0, import_neko_helper2.createSingleton)((label) => {
592
624
  const logger_config = import_neko_config.config.get(["loggers", label].join("."));
593
625
  const rc = new import_neko_logger.Logger(logger_config);
594
626
  rc.setExtrasFunction((message) => {
@@ -597,7 +629,7 @@ var logger = (0, import_neko_helper.createSingleton)((label) => {
597
629
  });
598
630
  return rc;
599
631
  });
600
- var mailer = (0, import_neko_helper.createSingleton)((label) => {
632
+ var mailer = (0, import_neko_helper2.createSingleton)((label) => {
601
633
  const mailer_config = import_neko_config.config.get(["mailer", label].join("."));
602
634
  const provider = import_neko_mailer2.MailerProviderFactory.create(
603
635
  mailer_config.provider,
@@ -606,7 +638,7 @@ var mailer = (0, import_neko_helper.createSingleton)((label) => {
606
638
  const rc = new import_neko_mailer2.Mailer(provider);
607
639
  return rc;
608
640
  });
609
- var queue = (0, import_neko_helper.createSingleton)((label) => {
641
+ var queue = (0, import_neko_helper2.createSingleton)((label) => {
610
642
  const queue_config = import_neko_config.config.get(["queues", label].join("."));
611
643
  if (!queue_config) {
612
644
  throw new Error(`Queue configuration for '${label}' not found`);
@@ -617,7 +649,7 @@ var queue = (0, import_neko_helper.createSingleton)((label) => {
617
649
  );
618
650
  return new import_neko_queue2.QueueConnection(provider);
619
651
  });
620
- var cache = (0, import_neko_helper.createSingleton)((label) => {
652
+ var cache = (0, import_neko_helper2.createSingleton)((label) => {
621
653
  const cache_config = import_neko_config.config.get(["caches", label].join("."));
622
654
  if (!cache_config) {
623
655
  throw new Error(`Cache configuration for '${label}' not found`);
@@ -630,7 +662,7 @@ var cache = (0, import_neko_helper.createSingleton)((label) => {
630
662
  });
631
663
 
632
664
  // src/queue.mts
633
- var import_neko_helper2 = require("@devbro/neko-helper");
665
+ var import_neko_helper3 = require("@devbro/neko-helper");
634
666
  var import_neko_context3 = require("@devbro/neko-context");
635
667
  var DatabaseTransport = class {
636
668
  static {
@@ -691,7 +723,7 @@ var DatabaseTransport = class {
691
723
  }, "processMessage");
692
724
  constructor(config2 = {}) {
693
725
  this.config = { ...this.config, ...config2 };
694
- this.repeater = (0, import_neko_helper2.createRepeater)(
726
+ this.repeater = (0, import_neko_helper3.createRepeater)(
695
727
  this.processMessage,
696
728
  this.config.listen_interval * 1e3
697
729
  );
@@ -91,6 +91,7 @@ var MiddlewareFactory = class {
91
91
  };
92
92
 
93
93
  // ../neko-router/dist/CompiledRoute.mjs
94
+ var import_neko_helper = require("@devbro/neko-helper");
94
95
  var CompiledRoute = class {
95
96
  static {
96
97
  __name(this, "CompiledRoute");
@@ -111,7 +112,7 @@ var CompiledRoute = class {
111
112
  for (const middleware of [...this.globalMiddlewares, ...this.route.getMiddlewares()]) {
112
113
  if (middleware instanceof Middleware) {
113
114
  this.middlewares.push(middleware);
114
- } else if (this.isClass(middleware)) {
115
+ } else if ((0, import_neko_helper.isClass)(middleware)) {
115
116
  this.middlewares.push(middleware.getInstance({}));
116
117
  } else if (typeof middleware === "function") {
117
118
  this.middlewares.push(MiddlewareFactory.create(middleware));
@@ -120,13 +121,8 @@ var CompiledRoute = class {
120
121
  }
121
122
  }
122
123
  }
123
- isClass(func) {
124
- return typeof func === "function" && /^class\s/.test(Function.prototype.toString.call(func));
125
- }
126
124
  async run() {
127
- let rc = await this.runMiddlewares(this.middlewares, this.request, this.response);
128
- this.response.end();
129
- return rc;
125
+ return await this.runMiddlewares(this.middlewares, this.request, this.response);
130
126
  }
131
127
  prepareOutputJsonFormat(obj) {
132
128
  function traverse(value) {
@@ -363,7 +359,7 @@ var Route = class {
363
359
  i = start;
364
360
  } else if (char === "*") {
365
361
  let start = i + 1;
366
- while (start < path2.length && /[a-zA-Z0-9_\.]/.test(path2[start])) {
362
+ while (start < path2.length && /[a-zA-Z0-9_]/.test(path2[start])) {
367
363
  start++;
368
364
  }
369
365
  tokens.push({ type: "WILDCARD", value: path2.slice(i + 1, start) });
package/dist/config.d.mts CHANGED
@@ -1,6 +1,5 @@
1
1
  export * from '@devbro/neko-config';
2
2
  import '@devbro/neko-context';
3
- import '@devbro/neko-http';
4
3
  import '@devbro/neko-helper';
5
4
  import '@devbro/neko-logger';
6
5
  import '@devbro/neko-mailer';
package/dist/facades.mjs CHANGED
@@ -11,7 +11,7 @@ import {
11
11
  } from "@devbro/neko-mailer";
12
12
  import { config } from "@devbro/neko-config";
13
13
  import { Cli } from "clipanion";
14
- import { HttpServer, HttpError } from "./http.mjs";
14
+ import { HttpServer, handleHttpErrors } from "./http.mjs";
15
15
  import { Logger } from "@devbro/neko-logger";
16
16
  import { CacheProviderFactory } from "./factories.mjs";
17
17
  import { Cache } from "@devbro/neko-cache";
@@ -47,18 +47,7 @@ const cli = createSingleton(() => {
47
47
  });
48
48
  const httpServer = createSingleton(() => {
49
49
  const server = new HttpServer();
50
- server.setErrorHandler(async (err, req, res) => {
51
- if (err instanceof HttpError) {
52
- res.writeHead(err.statusCode, { "Content-Type": "application/json" });
53
- res.end(JSON.stringify({ message: err.message, error: err.code }));
54
- logger().warn({ msg: "HttpError: " + err.message, err });
55
- return;
56
- } else {
57
- logger().error({ msg: "Error: " + err.message, err });
58
- }
59
- res.writeHead(500, { "Content-Type": "" });
60
- res.end(JSON.stringify({ error: "Internal Server Error" }));
61
- });
50
+ server.setErrorHandler(handleHttpErrors);
62
51
  server.setRouter(router());
63
52
  return server;
64
53
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/facades.mts"],"sourcesContent":["import { Router } from \"./router.mjs\";\nimport { Schedule, Scheduler } from \"@devbro/neko-scheduler\";\nimport { createSingleton } from \"@devbro/neko-helper\";\nimport { ctx, ctxSafe } from \"@devbro/neko-context\";\nimport { Connection } from \"@devbro/neko-sql\";\nimport { Storage, StorageProviderFactory } from \"@devbro/neko-storage\";\nimport {\n Mailer,\n MailerProvider,\n MailerProviderFactory,\n} from \"@devbro/neko-mailer\";\nimport { config } from \"@devbro/neko-config\";\nimport { Cli } from \"clipanion\";\nimport { HttpServer, HttpError } from \"./http.mjs\";\nimport * as yup from \"yup\";\nimport { Logger } from \"@devbro/neko-logger\";\nimport { CacheProviderFactory } from \"./factories.mjs\";\nimport { Cache } from \"@devbro/neko-cache\";\nimport { QueueConnection, QueueTransportFactory } from \"@devbro/neko-queue\";\n\nexport const router = createSingleton<Router>(() => new Router());\nexport const scheduler = createSingleton<Scheduler>(() => {\n const rc = new Scheduler();\n rc.setErrorHandler((err: any, job: Schedule) => {\n logger().error({\n msg: \"Scheduled job error\",\n err,\n job_name: job.getName(),\n });\n });\n return rc;\n});\nexport const db = (label = \"default\") =>\n ctx().getOrThrow<Connection>([\"database\", label]);\n\nexport const storage = createSingleton<Storage>((label: string = \"default\") => {\n let storage_config: any = config.get([\"storages\", label].join(\".\"));\n\n const provider = StorageProviderFactory.create(\n storage_config.provider,\n storage_config.config,\n );\n\n return new Storage(provider);\n});\n\nexport const cli = createSingleton<Cli>(() => {\n const [node, app, ...args] = process.argv;\n return new Cli({\n binaryLabel: `My Application`,\n binaryName: `${node} ${app}`,\n binaryVersion: `1.0.0`,\n });\n});\n\nexport const httpServer = createSingleton<HttpServer>(() => {\n const server = new HttpServer();\n\n server.setErrorHandler(async (err: Error, req: any, res: any) => {\n if (err instanceof HttpError) {\n res.writeHead(err.statusCode, { \"Content-Type\": \"application/json\" });\n res.end(JSON.stringify({ message: err.message, error: err.code }));\n logger().warn({ msg: \"HttpError: \" + err.message, err });\n return;\n } else {\n logger().error({ msg: \"Error: \" + err.message, err });\n }\n res.writeHead(500, { \"Content-Type\": \"\" });\n res.end(JSON.stringify({ error: \"Internal Server Error\" }));\n });\n server.setRouter(router());\n\n return server;\n});\n\nexport const logger = createSingleton<Logger>((label) => {\n const logger_config: any = config.get([\"loggers\", label].join(\".\"));\n const rc = new Logger(logger_config);\n rc.setExtrasFunction((message: any) => {\n message.requestId = ctxSafe()?.get(\"requestId\") || \"N/A\";\n return message;\n });\n\n return rc;\n});\n\nexport const mailer = createSingleton((label) => {\n const mailer_config: any = config.get([\"mailer\", label].join(\".\"));\n\n const provider: MailerProvider = MailerProviderFactory.create(\n mailer_config.provider,\n mailer_config.config,\n );\n\n const rc = new Mailer(provider);\n return rc;\n});\n\nexport const queue = createSingleton((label) => {\n const queue_config: any = config.get([\"queues\", label].join(\".\"));\n if (!queue_config) {\n throw new Error(`Queue configuration for '${label}' not found`);\n }\n const provider = QueueTransportFactory.create(\n queue_config.provider,\n queue_config.config,\n );\n return new QueueConnection(provider);\n});\n\nexport const cache = createSingleton((label) => {\n const cache_config: any = config.get([\"caches\", label].join(\".\"));\n if (!cache_config) {\n throw new Error(`Cache configuration for '${label}' not found`);\n }\n const provider = CacheProviderFactory.create(\n cache_config.provider,\n cache_config.config,\n );\n\n return new Cache(provider);\n});\n"],"mappings":";;AAAA,SAAS,cAAc;AACvB,SAAmB,iBAAiB;AACpC,SAAS,uBAAuB;AAChC,SAAS,KAAK,eAAe;AAE7B,SAAS,SAAS,8BAA8B;AAChD;AAAA,EACE;AAAA,EAEA;AAAA,OACK;AACP,SAAS,cAAc;AACvB,SAAS,WAAW;AACpB,SAAS,YAAY,iBAAiB;AAEtC,SAAS,cAAc;AACvB,SAAS,4BAA4B;AACrC,SAAS,aAAa;AACtB,SAAS,iBAAiB,6BAA6B;AAEhD,MAAM,SAAS,gBAAwB,MAAM,IAAI,OAAO,CAAC;AACzD,MAAM,YAAY,gBAA2B,MAAM;AACxD,QAAM,KAAK,IAAI,UAAU;AACzB,KAAG,gBAAgB,CAAC,KAAU,QAAkB;AAC9C,WAAO,EAAE,MAAM;AAAA,MACb,KAAK;AAAA,MACL;AAAA,MACA,UAAU,IAAI,QAAQ;AAAA,IACxB,CAAC;AAAA,EACH,CAAC;AACD,SAAO;AACT,CAAC;AACM,MAAM,KAAK,wBAAC,QAAQ,cACzB,IAAI,EAAE,WAAuB,CAAC,YAAY,KAAK,CAAC,GADhC;AAGX,MAAM,UAAU,gBAAyB,CAAC,QAAgB,cAAc;AAC7E,MAAI,iBAAsB,OAAO,IAAI,CAAC,YAAY,KAAK,EAAE,KAAK,GAAG,CAAC;AAElE,QAAM,WAAW,uBAAuB;AAAA,IACtC,eAAe;AAAA,IACf,eAAe;AAAA,EACjB;AAEA,SAAO,IAAI,QAAQ,QAAQ;AAC7B,CAAC;AAEM,MAAM,MAAM,gBAAqB,MAAM;AAC5C,QAAM,CAAC,MAAM,KAAK,GAAG,IAAI,IAAI,QAAQ;AACrC,SAAO,IAAI,IAAI;AAAA,IACb,aAAa;AAAA,IACb,YAAY,GAAG,IAAI,IAAI,GAAG;AAAA,IAC1B,eAAe;AAAA,EACjB,CAAC;AACH,CAAC;AAEM,MAAM,aAAa,gBAA4B,MAAM;AAC1D,QAAM,SAAS,IAAI,WAAW;AAE9B,SAAO,gBAAgB,OAAO,KAAY,KAAU,QAAa;AAC/D,QAAI,eAAe,WAAW;AAC5B,UAAI,UAAU,IAAI,YAAY,EAAE,gBAAgB,mBAAmB,CAAC;AACpE,UAAI,IAAI,KAAK,UAAU,EAAE,SAAS,IAAI,SAAS,OAAO,IAAI,KAAK,CAAC,CAAC;AACjE,aAAO,EAAE,KAAK,EAAE,KAAK,gBAAgB,IAAI,SAAS,IAAI,CAAC;AACvD;AAAA,IACF,OAAO;AACL,aAAO,EAAE,MAAM,EAAE,KAAK,YAAY,IAAI,SAAS,IAAI,CAAC;AAAA,IACtD;AACA,QAAI,UAAU,KAAK,EAAE,gBAAgB,GAAG,CAAC;AACzC,QAAI,IAAI,KAAK,UAAU,EAAE,OAAO,wBAAwB,CAAC,CAAC;AAAA,EAC5D,CAAC;AACD,SAAO,UAAU,OAAO,CAAC;AAEzB,SAAO;AACT,CAAC;AAEM,MAAM,SAAS,gBAAwB,CAAC,UAAU;AACvD,QAAM,gBAAqB,OAAO,IAAI,CAAC,WAAW,KAAK,EAAE,KAAK,GAAG,CAAC;AAClE,QAAM,KAAK,IAAI,OAAO,aAAa;AACnC,KAAG,kBAAkB,CAAC,YAAiB;AACrC,YAAQ,YAAY,QAAQ,GAAG,IAAI,WAAW,KAAK;AACnD,WAAO;AAAA,EACT,CAAC;AAED,SAAO;AACT,CAAC;AAEM,MAAM,SAAS,gBAAgB,CAAC,UAAU;AAC/C,QAAM,gBAAqB,OAAO,IAAI,CAAC,UAAU,KAAK,EAAE,KAAK,GAAG,CAAC;AAEjE,QAAM,WAA2B,sBAAsB;AAAA,IACrD,cAAc;AAAA,IACd,cAAc;AAAA,EAChB;AAEA,QAAM,KAAK,IAAI,OAAO,QAAQ;AAC9B,SAAO;AACT,CAAC;AAEM,MAAM,QAAQ,gBAAgB,CAAC,UAAU;AAC9C,QAAM,eAAoB,OAAO,IAAI,CAAC,UAAU,KAAK,EAAE,KAAK,GAAG,CAAC;AAChE,MAAI,CAAC,cAAc;AACjB,UAAM,IAAI,MAAM,4BAA4B,KAAK,aAAa;AAAA,EAChE;AACA,QAAM,WAAW,sBAAsB;AAAA,IACrC,aAAa;AAAA,IACb,aAAa;AAAA,EACf;AACA,SAAO,IAAI,gBAAgB,QAAQ;AACrC,CAAC;AAEM,MAAM,QAAQ,gBAAgB,CAAC,UAAU;AAC9C,QAAM,eAAoB,OAAO,IAAI,CAAC,UAAU,KAAK,EAAE,KAAK,GAAG,CAAC;AAChE,MAAI,CAAC,cAAc;AACjB,UAAM,IAAI,MAAM,4BAA4B,KAAK,aAAa;AAAA,EAChE;AACA,QAAM,WAAW,qBAAqB;AAAA,IACpC,aAAa;AAAA,IACb,aAAa;AAAA,EACf;AAEA,SAAO,IAAI,MAAM,QAAQ;AAC3B,CAAC;","names":[]}
1
+ {"version":3,"sources":["../src/facades.mts"],"sourcesContent":["import { Router } from \"./router.mjs\";\nimport { Schedule, Scheduler } from \"@devbro/neko-scheduler\";\nimport { createSingleton } from \"@devbro/neko-helper\";\nimport { ctx, ctxSafe } from \"@devbro/neko-context\";\nimport { Connection } from \"@devbro/neko-sql\";\nimport { Storage, StorageProviderFactory } from \"@devbro/neko-storage\";\nimport {\n Mailer,\n MailerProvider,\n MailerProviderFactory,\n} from \"@devbro/neko-mailer\";\nimport { config } from \"@devbro/neko-config\";\nimport { Cli } from \"clipanion\";\nimport { HttpServer, HttpError, handleHttpErrors } from \"./http.mjs\";\nimport * as yup from \"yup\";\nimport { Logger } from \"@devbro/neko-logger\";\nimport { CacheProviderFactory } from \"./factories.mjs\";\nimport { Cache } from \"@devbro/neko-cache\";\nimport { QueueConnection, QueueTransportFactory } from \"@devbro/neko-queue\";\n\nexport const router = createSingleton<Router>(() => new Router());\nexport const scheduler = createSingleton<Scheduler>(() => {\n const rc = new Scheduler();\n rc.setErrorHandler((err: any, job: Schedule) => {\n logger().error({\n msg: \"Scheduled job error\",\n err,\n job_name: job.getName(),\n });\n });\n return rc;\n});\nexport const db = (label = \"default\") =>\n ctx().getOrThrow<Connection>([\"database\", label]);\n\nexport const storage = createSingleton<Storage>((label: string = \"default\") => {\n let storage_config: any = config.get([\"storages\", label].join(\".\"));\n\n const provider = StorageProviderFactory.create(\n storage_config.provider,\n storage_config.config,\n );\n\n return new Storage(provider);\n});\n\nexport const cli = createSingleton<Cli>(() => {\n const [node, app, ...args] = process.argv;\n return new Cli({\n binaryLabel: `My Application`,\n binaryName: `${node} ${app}`,\n binaryVersion: `1.0.0`,\n });\n});\n\nexport const httpServer = createSingleton<HttpServer>(() => {\n const server = new HttpServer();\n\n server.setErrorHandler(handleHttpErrors);\n server.setRouter(router());\n\n return server;\n});\n\nexport const logger = createSingleton<Logger>((label) => {\n const logger_config: any = config.get([\"loggers\", label].join(\".\"));\n const rc = new Logger(logger_config);\n rc.setExtrasFunction((message: any) => {\n message.requestId = ctxSafe()?.get(\"requestId\") || \"N/A\";\n return message;\n });\n\n return rc;\n});\n\nexport const mailer = createSingleton((label) => {\n const mailer_config: any = config.get([\"mailer\", label].join(\".\"));\n\n const provider: MailerProvider = MailerProviderFactory.create(\n mailer_config.provider,\n mailer_config.config,\n );\n\n const rc = new Mailer(provider);\n return rc;\n});\n\nexport const queue = createSingleton((label) => {\n const queue_config: any = config.get([\"queues\", label].join(\".\"));\n if (!queue_config) {\n throw new Error(`Queue configuration for '${label}' not found`);\n }\n const provider = QueueTransportFactory.create(\n queue_config.provider,\n queue_config.config,\n );\n return new QueueConnection(provider);\n});\n\nexport const cache = createSingleton((label) => {\n const cache_config: any = config.get([\"caches\", label].join(\".\"));\n if (!cache_config) {\n throw new Error(`Cache configuration for '${label}' not found`);\n }\n const provider = CacheProviderFactory.create(\n cache_config.provider,\n cache_config.config,\n );\n\n return new Cache(provider);\n});\n"],"mappings":"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","names":[]}
@@ -6,7 +6,16 @@ import {
6
6
  MemoryProvider,
7
7
  MailerProviderFactory
8
8
  } from "@devbro/neko-mailer";
9
- import { MemoryTransport, QueueTransportFactory } from "@devbro/neko-queue";
9
+ import {
10
+ MemoryTransport,
11
+ QueueTransportFactory,
12
+ AwsSqsTransport,
13
+ AmqpTransport,
14
+ RedisTransport,
15
+ AsyncTransport,
16
+ AzureServiceBusTransport,
17
+ GooglePubSubTransport
18
+ } from "@devbro/neko-queue";
10
19
  import { DatabaseTransport } from "./queue.mjs";
11
20
  import {
12
21
  MemoryCacheProvider,
@@ -17,7 +26,11 @@ import {
17
26
  import {
18
27
  AWSS3StorageProvider,
19
28
  LocalStorageProvider,
20
- StorageProviderFactory
29
+ StorageProviderFactory,
30
+ GCPStorageProvider,
31
+ AzureBlobStorageProvider,
32
+ FTPStorageProvider,
33
+ SFTPStorageProvider
21
34
  } from "@devbro/neko-storage";
22
35
  class FlexibleFactory {
23
36
  static {
@@ -50,6 +63,24 @@ QueueTransportFactory.register("database", (opt) => {
50
63
  QueueTransportFactory.register("memory", (opt) => {
51
64
  return new MemoryTransport(opt);
52
65
  });
66
+ QueueTransportFactory.register("sqs", (opt) => {
67
+ return new AwsSqsTransport(opt);
68
+ });
69
+ QueueTransportFactory.register("amqp", (opt) => {
70
+ return new AmqpTransport(opt);
71
+ });
72
+ QueueTransportFactory.register("redis", (opt) => {
73
+ return new RedisTransport(opt);
74
+ });
75
+ QueueTransportFactory.register("async", (opt) => {
76
+ return new AsyncTransport();
77
+ });
78
+ QueueTransportFactory.register("azure_service_bus", (opt) => {
79
+ return new AzureServiceBusTransport(opt);
80
+ });
81
+ QueueTransportFactory.register("google_pubsub", (opt) => {
82
+ return new GooglePubSubTransport(opt);
83
+ });
53
84
  class CacheProviderFactory {
54
85
  static {
55
86
  __name(this, "CacheProviderFactory");
@@ -80,6 +111,18 @@ StorageProviderFactory.register("local", (opt) => {
80
111
  StorageProviderFactory.register("s3", (opt) => {
81
112
  return new AWSS3StorageProvider(opt);
82
113
  });
114
+ StorageProviderFactory.register("gcp", (opt) => {
115
+ return new GCPStorageProvider(opt);
116
+ });
117
+ StorageProviderFactory.register("azure", (opt) => {
118
+ return new AzureBlobStorageProvider(opt);
119
+ });
120
+ StorageProviderFactory.register("ftp", (opt) => {
121
+ return new FTPStorageProvider(opt);
122
+ });
123
+ StorageProviderFactory.register("sftp", (opt) => {
124
+ return new SFTPStorageProvider(opt);
125
+ });
83
126
  export {
84
127
  CacheProviderFactory,
85
128
  FlexibleFactory
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/factories.mts"],"sourcesContent":["import {\n SESProvider,\n SMTPProvider,\n MemoryProvider,\n MailerProviderFactory,\n} from \"@devbro/neko-mailer\";\nimport { MemoryTransport, QueueTransportFactory } from \"@devbro/neko-queue\";\nimport { DatabaseTransport } from \"./queue.mjs\";\nimport {\n CacheProviderInterface,\n MemoryCacheProvider,\n RedisCacheProvider,\n FileCacheProvider,\n DisabledCacheProvider,\n} from \"@devbro/neko-cache\";\nimport {\n AWSS3StorageProvider,\n LocalStorageProvider,\n StorageProviderFactory,\n} from \"@devbro/neko-storage\";\n\nexport class FlexibleFactory<T> {\n registry: Map<string, any> = new Map();\n\n register<T>(key: string, ctor: (...args: any[]) => T) {\n this.registry.set(key, ctor);\n }\n\n create<T>(key: string, ...args: any[]): T {\n const ctor = this.registry.get(key);\n if (!ctor) {\n throw new Error(`No factory registered for key: ${key}`);\n }\n return ctor(...args);\n }\n}\n\nMailerProviderFactory.register(\"ses\", (opt) => {\n return new SESProvider(opt);\n});\n\nMailerProviderFactory.register(\"smtp\", (opt) => {\n return new SMTPProvider(opt);\n});\n\nMailerProviderFactory.register(\"memory\", (opt) => {\n return new MemoryProvider();\n});\n\nQueueTransportFactory.register(\"database\", (opt) => {\n return new DatabaseTransport(opt);\n});\n\nQueueTransportFactory.register(\"memory\", (opt) => {\n return new MemoryTransport(opt);\n});\n\n// CACHE\nexport class CacheProviderFactory {\n static instance: FlexibleFactory<CacheProviderInterface> =\n new FlexibleFactory<CacheProviderInterface>();\n\n static register(\n key: string,\n factory: (...args: any[]) => CacheProviderInterface,\n ): void {\n CacheProviderFactory.instance.register(key, factory);\n }\n\n static create<T>(key: string, ...args: any[]): CacheProviderInterface {\n return CacheProviderFactory.instance.create(key, ...args);\n }\n}\n\nCacheProviderFactory.register(\"memory\", (opt) => {\n return new MemoryCacheProvider(opt);\n});\n\nCacheProviderFactory.register(\"redis\", (opt) => {\n return new RedisCacheProvider(opt);\n});\n\nCacheProviderFactory.register(\"file\", (opt) => {\n return new FileCacheProvider(opt);\n});\n\nCacheProviderFactory.register(\"disabled\", (opt) => {\n return new DisabledCacheProvider();\n});\n\nStorageProviderFactory.register(\"local\", (opt) => {\n return new LocalStorageProvider(opt);\n});\n\nStorageProviderFactory.register(\"s3\", (opt) => {\n return new AWSS3StorageProvider(opt);\n});\n"],"mappings":";;AAAA;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP,SAAS,iBAAiB,6BAA6B;AACvD,SAAS,yBAAyB;AAClC;AAAA,EAEE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAEA,MAAM,gBAAmB;AAAA,EArBhC,OAqBgC;AAAA;AAAA;AAAA,EAC9B,WAA6B,oBAAI,IAAI;AAAA,EAErC,SAAY,KAAa,MAA6B;AACpD,SAAK,SAAS,IAAI,KAAK,IAAI;AAAA,EAC7B;AAAA,EAEA,OAAU,QAAgB,MAAgB;AACxC,UAAM,OAAO,KAAK,SAAS,IAAI,GAAG;AAClC,QAAI,CAAC,MAAM;AACT,YAAM,IAAI,MAAM,kCAAkC,GAAG,EAAE;AAAA,IACzD;AACA,WAAO,KAAK,GAAG,IAAI;AAAA,EACrB;AACF;AAEA,sBAAsB,SAAS,OAAO,CAAC,QAAQ;AAC7C,SAAO,IAAI,YAAY,GAAG;AAC5B,CAAC;AAED,sBAAsB,SAAS,QAAQ,CAAC,QAAQ;AAC9C,SAAO,IAAI,aAAa,GAAG;AAC7B,CAAC;AAED,sBAAsB,SAAS,UAAU,CAAC,QAAQ;AAChD,SAAO,IAAI,eAAe;AAC5B,CAAC;AAED,sBAAsB,SAAS,YAAY,CAAC,QAAQ;AAClD,SAAO,IAAI,kBAAkB,GAAG;AAClC,CAAC;AAED,sBAAsB,SAAS,UAAU,CAAC,QAAQ;AAChD,SAAO,IAAI,gBAAgB,GAAG;AAChC,CAAC;AAGM,MAAM,qBAAqB;AAAA,EA1DlC,OA0DkC;AAAA;AAAA;AAAA,EAChC,OAAO,WACL,IAAI,gBAAwC;AAAA,EAE9C,OAAO,SACL,KACA,SACM;AACN,yBAAqB,SAAS,SAAS,KAAK,OAAO;AAAA,EACrD;AAAA,EAEA,OAAO,OAAU,QAAgB,MAAqC;AACpE,WAAO,qBAAqB,SAAS,OAAO,KAAK,GAAG,IAAI;AAAA,EAC1D;AACF;AAEA,qBAAqB,SAAS,UAAU,CAAC,QAAQ;AAC/C,SAAO,IAAI,oBAAoB,GAAG;AACpC,CAAC;AAED,qBAAqB,SAAS,SAAS,CAAC,QAAQ;AAC9C,SAAO,IAAI,mBAAmB,GAAG;AACnC,CAAC;AAED,qBAAqB,SAAS,QAAQ,CAAC,QAAQ;AAC7C,SAAO,IAAI,kBAAkB,GAAG;AAClC,CAAC;AAED,qBAAqB,SAAS,YAAY,CAAC,QAAQ;AACjD,SAAO,IAAI,sBAAsB;AACnC,CAAC;AAED,uBAAuB,SAAS,SAAS,CAAC,QAAQ;AAChD,SAAO,IAAI,qBAAqB,GAAG;AACrC,CAAC;AAED,uBAAuB,SAAS,MAAM,CAAC,QAAQ;AAC7C,SAAO,IAAI,qBAAqB,GAAG;AACrC,CAAC;","names":[]}
1
+ {"version":3,"sources":["../src/factories.mts"],"sourcesContent":["import {\n SESProvider,\n SMTPProvider,\n MemoryProvider,\n MailerProviderFactory,\n} from \"@devbro/neko-mailer\";\nimport {\n MemoryTransport,\n QueueTransportFactory,\n AwsSqsTransport,\n AmqpTransport,\n RedisTransport,\n AsyncTransport,\n AzureServiceBusTransport,\n GooglePubSubTransport,\n} from \"@devbro/neko-queue\";\nimport { DatabaseTransport } from \"./queue.mjs\";\nimport {\n CacheProviderInterface,\n MemoryCacheProvider,\n RedisCacheProvider,\n FileCacheProvider,\n DisabledCacheProvider,\n} from \"@devbro/neko-cache\";\nimport {\n AWSS3StorageProvider,\n LocalStorageProvider,\n StorageProviderFactory,\n GCPStorageProvider,\n AzureBlobStorageProvider,\n FTPStorageProvider,\n SFTPStorageProvider,\n} from \"@devbro/neko-storage\";\n\nexport class FlexibleFactory<T> {\n registry: Map<string, any> = new Map();\n\n register<T>(key: string, ctor: (...args: any[]) => T) {\n this.registry.set(key, ctor);\n }\n\n create<T>(key: string, ...args: any[]): T {\n const ctor = this.registry.get(key);\n if (!ctor) {\n throw new Error(`No factory registered for key: ${key}`);\n }\n return ctor(...args);\n }\n}\n\nMailerProviderFactory.register(\"ses\", (opt) => {\n return new SESProvider(opt);\n});\n\nMailerProviderFactory.register(\"smtp\", (opt) => {\n return new SMTPProvider(opt);\n});\n\nMailerProviderFactory.register(\"memory\", (opt) => {\n return new MemoryProvider();\n});\n\n// Queue\n\nQueueTransportFactory.register(\"database\", (opt) => {\n return new DatabaseTransport(opt);\n});\n\nQueueTransportFactory.register(\"memory\", (opt) => {\n return new MemoryTransport(opt);\n});\n\nQueueTransportFactory.register(\"sqs\", (opt) => {\n return new AwsSqsTransport(opt);\n});\n\nQueueTransportFactory.register(\"amqp\", (opt) => {\n return new AmqpTransport(opt);\n});\n\nQueueTransportFactory.register(\"redis\", (opt) => {\n return new RedisTransport(opt);\n});\n\nQueueTransportFactory.register(\"async\", (opt) => {\n return new AsyncTransport();\n});\n\nQueueTransportFactory.register(\"azure_service_bus\", (opt) => {\n return new AzureServiceBusTransport(opt);\n});\n\nQueueTransportFactory.register(\"google_pubsub\", (opt) => {\n return new GooglePubSubTransport(opt);\n});\n\n// CACHE\nexport class CacheProviderFactory {\n static instance: FlexibleFactory<CacheProviderInterface> =\n new FlexibleFactory<CacheProviderInterface>();\n\n static register(\n key: string,\n factory: (...args: any[]) => CacheProviderInterface,\n ): void {\n CacheProviderFactory.instance.register(key, factory);\n }\n\n static create<T>(key: string, ...args: any[]): CacheProviderInterface {\n return CacheProviderFactory.instance.create(key, ...args);\n }\n}\n\nCacheProviderFactory.register(\"memory\", (opt) => {\n return new MemoryCacheProvider(opt);\n});\n\nCacheProviderFactory.register(\"redis\", (opt) => {\n return new RedisCacheProvider(opt);\n});\n\nCacheProviderFactory.register(\"file\", (opt) => {\n return new FileCacheProvider(opt);\n});\n\nCacheProviderFactory.register(\"disabled\", (opt) => {\n return new DisabledCacheProvider();\n});\n\nStorageProviderFactory.register(\"local\", (opt) => {\n return new LocalStorageProvider(opt);\n});\n\nStorageProviderFactory.register(\"s3\", (opt) => {\n return new AWSS3StorageProvider(opt);\n});\n\nStorageProviderFactory.register(\"gcp\", (opt) => {\n return new GCPStorageProvider(opt);\n});\n\nStorageProviderFactory.register(\"azure\", (opt) => {\n return new AzureBlobStorageProvider(opt);\n});\n\nStorageProviderFactory.register(\"ftp\", (opt) => {\n return new FTPStorageProvider(opt);\n});\n\nStorageProviderFactory.register(\"sftp\", (opt) => {\n return new SFTPStorageProvider(opt);\n});\n"],"mappings":"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","names":[]}
package/dist/http.d.mts CHANGED
@@ -1 +1,5 @@
1
1
  export * from '@devbro/neko-http';
2
+
3
+ declare function handleHttpErrors(err: Error, req: any, res: any): Promise<void>;
4
+
5
+ export { handleHttpErrors };