@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
@@ -77,6 +77,7 @@ var MiddlewareFactory = class {
77
77
  };
78
78
 
79
79
  // ../neko-router/dist/CompiledRoute.mjs
80
+ var import_neko_helper = require("@devbro/neko-helper");
80
81
  var CompiledRoute = class {
81
82
  static {
82
83
  __name(this, "CompiledRoute");
@@ -97,7 +98,7 @@ var CompiledRoute = class {
97
98
  for (const middleware of [...this.globalMiddlewares, ...this.route.getMiddlewares()]) {
98
99
  if (middleware instanceof Middleware) {
99
100
  this.middlewares.push(middleware);
100
- } else if (this.isClass(middleware)) {
101
+ } else if ((0, import_neko_helper.isClass)(middleware)) {
101
102
  this.middlewares.push(middleware.getInstance({}));
102
103
  } else if (typeof middleware === "function") {
103
104
  this.middlewares.push(MiddlewareFactory.create(middleware));
@@ -106,13 +107,8 @@ var CompiledRoute = class {
106
107
  }
107
108
  }
108
109
  }
109
- isClass(func) {
110
- return typeof func === "function" && /^class\s/.test(Function.prototype.toString.call(func));
111
- }
112
110
  async run() {
113
- let rc = await this.runMiddlewares(this.middlewares, this.request, this.response);
114
- this.response.end();
115
- return rc;
111
+ return await this.runMiddlewares(this.middlewares, this.request, this.response);
116
112
  }
117
113
  prepareOutputJsonFormat(obj) {
118
114
  function traverse(value) {
@@ -246,7 +242,7 @@ var Route = class {
246
242
  i = start;
247
243
  } else if (char === "*") {
248
244
  let start = i + 1;
249
- while (start < path3.length && /[a-zA-Z0-9_\.]/.test(path3[start])) {
245
+ while (start < path3.length && /[a-zA-Z0-9_]/.test(path3[start])) {
250
246
  start++;
251
247
  }
252
248
  tokens.push({ type: "WILDCARD", value: path3.slice(i + 1, start) });
@@ -457,7 +453,7 @@ var Router = class {
457
453
 
458
454
  // src/facades.mts
459
455
  var import_neko_scheduler = require("@devbro/neko-scheduler");
460
- var import_neko_helper2 = require("@devbro/neko-helper");
456
+ var import_neko_helper3 = require("@devbro/neko-helper");
461
457
  var import_neko_context3 = require("@devbro/neko-context");
462
458
  var import_neko_storage2 = require("@devbro/neko-storage");
463
459
  var import_neko_mailer2 = require("@devbro/neko-mailer");
@@ -466,7 +462,24 @@ var import_clipanion = require("clipanion");
466
462
 
467
463
  // src/http.mts
468
464
  var http_exports = {};
465
+ __export(http_exports, {
466
+ handleHttpErrors: () => handleHttpErrors
467
+ });
468
+ var import_neko_http = require("@devbro/neko-http");
469
469
  __reExport(http_exports, require("@devbro/neko-http"));
470
+ async function handleHttpErrors(err, req, res) {
471
+ if (err instanceof import_neko_http.HttpError) {
472
+ res.writeHead(err.statusCode, { "Content-Type": "application/json" });
473
+ res.write(JSON.stringify({ message: err.message, error: err.code }));
474
+ logger().warn({ msg: "HttpError: " + err.message, err });
475
+ return;
476
+ } else {
477
+ logger().error({ msg: "Error: " + err.message, err });
478
+ }
479
+ res.writeHead(500, { "Content-Type": "application/json" });
480
+ res.write(JSON.stringify({ error: "Internal Server Error" }));
481
+ }
482
+ __name(handleHttpErrors, "handleHttpErrors");
470
483
 
471
484
  // src/facades.mts
472
485
  var import_neko_logger = require("@devbro/neko-logger");
@@ -481,7 +494,7 @@ __export(queue_exports, {
481
494
  DatabaseTransport: () => DatabaseTransport
482
495
  });
483
496
  __reExport(queue_exports, require("@devbro/neko-queue"));
484
- var import_neko_helper = require("@devbro/neko-helper");
497
+ var import_neko_helper2 = require("@devbro/neko-helper");
485
498
  var import_neko_context2 = require("@devbro/neko-context");
486
499
  var DatabaseTransport = class {
487
500
  static {
@@ -542,7 +555,7 @@ var DatabaseTransport = class {
542
555
  }, "processMessage");
543
556
  constructor(config3 = {}) {
544
557
  this.config = { ...this.config, ...config3 };
545
- this.repeater = (0, import_neko_helper.createRepeater)(
558
+ this.repeater = (0, import_neko_helper2.createRepeater)(
546
559
  this.processMessage,
547
560
  this.config.listen_interval * 1e3
548
561
  );
@@ -610,6 +623,24 @@ import_neko_queue.QueueTransportFactory.register("database", (opt) => {
610
623
  import_neko_queue.QueueTransportFactory.register("memory", (opt) => {
611
624
  return new import_neko_queue.MemoryTransport(opt);
612
625
  });
626
+ import_neko_queue.QueueTransportFactory.register("sqs", (opt) => {
627
+ return new import_neko_queue.AwsSqsTransport(opt);
628
+ });
629
+ import_neko_queue.QueueTransportFactory.register("amqp", (opt) => {
630
+ return new import_neko_queue.AmqpTransport(opt);
631
+ });
632
+ import_neko_queue.QueueTransportFactory.register("redis", (opt) => {
633
+ return new import_neko_queue.RedisTransport(opt);
634
+ });
635
+ import_neko_queue.QueueTransportFactory.register("async", (opt) => {
636
+ return new import_neko_queue.AsyncTransport();
637
+ });
638
+ import_neko_queue.QueueTransportFactory.register("azure_service_bus", (opt) => {
639
+ return new import_neko_queue.AzureServiceBusTransport(opt);
640
+ });
641
+ import_neko_queue.QueueTransportFactory.register("google_pubsub", (opt) => {
642
+ return new import_neko_queue.GooglePubSubTransport(opt);
643
+ });
613
644
  var CacheProviderFactory = class _CacheProviderFactory {
614
645
  static {
615
646
  __name(this, "CacheProviderFactory");
@@ -640,12 +671,24 @@ import_neko_storage.StorageProviderFactory.register("local", (opt) => {
640
671
  import_neko_storage.StorageProviderFactory.register("s3", (opt) => {
641
672
  return new import_neko_storage.AWSS3StorageProvider(opt);
642
673
  });
674
+ import_neko_storage.StorageProviderFactory.register("gcp", (opt) => {
675
+ return new import_neko_storage.GCPStorageProvider(opt);
676
+ });
677
+ import_neko_storage.StorageProviderFactory.register("azure", (opt) => {
678
+ return new import_neko_storage.AzureBlobStorageProvider(opt);
679
+ });
680
+ import_neko_storage.StorageProviderFactory.register("ftp", (opt) => {
681
+ return new import_neko_storage.FTPStorageProvider(opt);
682
+ });
683
+ import_neko_storage.StorageProviderFactory.register("sftp", (opt) => {
684
+ return new import_neko_storage.SFTPStorageProvider(opt);
685
+ });
643
686
 
644
687
  // src/facades.mts
645
688
  var import_neko_cache2 = require("@devbro/neko-cache");
646
689
  var import_neko_queue2 = require("@devbro/neko-queue");
647
- var router = (0, import_neko_helper2.createSingleton)(() => new Router());
648
- var scheduler = (0, import_neko_helper2.createSingleton)(() => {
690
+ var router = (0, import_neko_helper3.createSingleton)(() => new Router());
691
+ var scheduler = (0, import_neko_helper3.createSingleton)(() => {
649
692
  const rc = new import_neko_scheduler.Scheduler();
650
693
  rc.setErrorHandler((err, job) => {
651
694
  logger().error({
@@ -657,7 +700,7 @@ var scheduler = (0, import_neko_helper2.createSingleton)(() => {
657
700
  return rc;
658
701
  });
659
702
  var db = /* @__PURE__ */ __name((label = "default") => (0, import_neko_context3.ctx)().getOrThrow(["database", label]), "db");
660
- var storage = (0, import_neko_helper2.createSingleton)((label = "default") => {
703
+ var storage = (0, import_neko_helper3.createSingleton)((label = "default") => {
661
704
  let storage_config = import_neko_config.config.get(["storages", label].join("."));
662
705
  const provider = import_neko_storage2.StorageProviderFactory.create(
663
706
  storage_config.provider,
@@ -665,7 +708,7 @@ var storage = (0, import_neko_helper2.createSingleton)((label = "default") => {
665
708
  );
666
709
  return new import_neko_storage2.Storage(provider);
667
710
  });
668
- var cli = (0, import_neko_helper2.createSingleton)(() => {
711
+ var cli = (0, import_neko_helper3.createSingleton)(() => {
669
712
  const [node, app, ...args] = process.argv;
670
713
  return new import_clipanion.Cli({
671
714
  binaryLabel: `My Application`,
@@ -673,24 +716,13 @@ var cli = (0, import_neko_helper2.createSingleton)(() => {
673
716
  binaryVersion: `1.0.0`
674
717
  });
675
718
  });
676
- var httpServer = (0, import_neko_helper2.createSingleton)(() => {
719
+ var httpServer = (0, import_neko_helper3.createSingleton)(() => {
677
720
  const server = new http_exports.HttpServer();
678
- server.setErrorHandler(async (err, req, res) => {
679
- if (err instanceof http_exports.HttpError) {
680
- res.writeHead(err.statusCode, { "Content-Type": "application/json" });
681
- res.end(JSON.stringify({ message: err.message, error: err.code }));
682
- logger().warn({ msg: "HttpError: " + err.message, err });
683
- return;
684
- } else {
685
- logger().error({ msg: "Error: " + err.message, err });
686
- }
687
- res.writeHead(500, { "Content-Type": "" });
688
- res.end(JSON.stringify({ error: "Internal Server Error" }));
689
- });
721
+ server.setErrorHandler(handleHttpErrors);
690
722
  server.setRouter(router());
691
723
  return server;
692
724
  });
693
- var logger = (0, import_neko_helper2.createSingleton)((label) => {
725
+ var logger = (0, import_neko_helper3.createSingleton)((label) => {
694
726
  const logger_config = import_neko_config.config.get(["loggers", label].join("."));
695
727
  const rc = new import_neko_logger.Logger(logger_config);
696
728
  rc.setExtrasFunction((message) => {
@@ -699,7 +731,7 @@ var logger = (0, import_neko_helper2.createSingleton)((label) => {
699
731
  });
700
732
  return rc;
701
733
  });
702
- var mailer = (0, import_neko_helper2.createSingleton)((label) => {
734
+ var mailer = (0, import_neko_helper3.createSingleton)((label) => {
703
735
  const mailer_config = import_neko_config.config.get(["mailer", label].join("."));
704
736
  const provider = import_neko_mailer2.MailerProviderFactory.create(
705
737
  mailer_config.provider,
@@ -708,7 +740,7 @@ var mailer = (0, import_neko_helper2.createSingleton)((label) => {
708
740
  const rc = new import_neko_mailer2.Mailer(provider);
709
741
  return rc;
710
742
  });
711
- var queue = (0, import_neko_helper2.createSingleton)((label) => {
743
+ var queue = (0, import_neko_helper3.createSingleton)((label) => {
712
744
  const queue_config = import_neko_config.config.get(["queues", label].join("."));
713
745
  if (!queue_config) {
714
746
  throw new Error(`Queue configuration for '${label}' not found`);
@@ -719,7 +751,7 @@ var queue = (0, import_neko_helper2.createSingleton)((label) => {
719
751
  );
720
752
  return new import_neko_queue2.QueueConnection(provider);
721
753
  });
722
- var cache = (0, import_neko_helper2.createSingleton)((label) => {
754
+ var cache = (0, import_neko_helper3.createSingleton)((label) => {
723
755
  const cache_config = import_neko_config.config.get(["caches", label].join("."));
724
756
  if (!cache_config) {
725
757
  throw new Error(`Cache configuration for '${label}' not found`);
@@ -77,6 +77,7 @@ var MiddlewareFactory = class {
77
77
  };
78
78
 
79
79
  // ../neko-router/dist/CompiledRoute.mjs
80
+ var import_neko_helper = require("@devbro/neko-helper");
80
81
  var CompiledRoute = class {
81
82
  static {
82
83
  __name(this, "CompiledRoute");
@@ -97,7 +98,7 @@ var CompiledRoute = class {
97
98
  for (const middleware of [...this.globalMiddlewares, ...this.route.getMiddlewares()]) {
98
99
  if (middleware instanceof Middleware) {
99
100
  this.middlewares.push(middleware);
100
- } else if (this.isClass(middleware)) {
101
+ } else if ((0, import_neko_helper.isClass)(middleware)) {
101
102
  this.middlewares.push(middleware.getInstance({}));
102
103
  } else if (typeof middleware === "function") {
103
104
  this.middlewares.push(MiddlewareFactory.create(middleware));
@@ -106,13 +107,8 @@ var CompiledRoute = class {
106
107
  }
107
108
  }
108
109
  }
109
- isClass(func) {
110
- return typeof func === "function" && /^class\s/.test(Function.prototype.toString.call(func));
111
- }
112
110
  async run() {
113
- let rc = await this.runMiddlewares(this.middlewares, this.request, this.response);
114
- this.response.end();
115
- return rc;
111
+ return await this.runMiddlewares(this.middlewares, this.request, this.response);
116
112
  }
117
113
  prepareOutputJsonFormat(obj) {
118
114
  function traverse(value) {
@@ -246,7 +242,7 @@ var Route = class {
246
242
  i = start;
247
243
  } else if (char === "*") {
248
244
  let start = i + 1;
249
- while (start < path3.length && /[a-zA-Z0-9_\.]/.test(path3[start])) {
245
+ while (start < path3.length && /[a-zA-Z0-9_]/.test(path3[start])) {
250
246
  start++;
251
247
  }
252
248
  tokens.push({ type: "WILDCARD", value: path3.slice(i + 1, start) });
@@ -457,7 +453,7 @@ var Router = class {
457
453
 
458
454
  // src/facades.mts
459
455
  var import_neko_scheduler = require("@devbro/neko-scheduler");
460
- var import_neko_helper2 = require("@devbro/neko-helper");
456
+ var import_neko_helper3 = require("@devbro/neko-helper");
461
457
  var import_neko_context3 = require("@devbro/neko-context");
462
458
  var import_neko_storage2 = require("@devbro/neko-storage");
463
459
  var import_neko_mailer2 = require("@devbro/neko-mailer");
@@ -466,7 +462,24 @@ var import_clipanion = require("clipanion");
466
462
 
467
463
  // src/http.mts
468
464
  var http_exports = {};
465
+ __export(http_exports, {
466
+ handleHttpErrors: () => handleHttpErrors
467
+ });
468
+ var import_neko_http = require("@devbro/neko-http");
469
469
  __reExport(http_exports, require("@devbro/neko-http"));
470
+ async function handleHttpErrors(err, req, res) {
471
+ if (err instanceof import_neko_http.HttpError) {
472
+ res.writeHead(err.statusCode, { "Content-Type": "application/json" });
473
+ res.write(JSON.stringify({ message: err.message, error: err.code }));
474
+ logger().warn({ msg: "HttpError: " + err.message, err });
475
+ return;
476
+ } else {
477
+ logger().error({ msg: "Error: " + err.message, err });
478
+ }
479
+ res.writeHead(500, { "Content-Type": "application/json" });
480
+ res.write(JSON.stringify({ error: "Internal Server Error" }));
481
+ }
482
+ __name(handleHttpErrors, "handleHttpErrors");
470
483
 
471
484
  // src/facades.mts
472
485
  var import_neko_logger = require("@devbro/neko-logger");
@@ -481,7 +494,7 @@ __export(queue_exports, {
481
494
  DatabaseTransport: () => DatabaseTransport
482
495
  });
483
496
  __reExport(queue_exports, require("@devbro/neko-queue"));
484
- var import_neko_helper = require("@devbro/neko-helper");
497
+ var import_neko_helper2 = require("@devbro/neko-helper");
485
498
  var import_neko_context2 = require("@devbro/neko-context");
486
499
  var DatabaseTransport = class {
487
500
  static {
@@ -542,7 +555,7 @@ var DatabaseTransport = class {
542
555
  }, "processMessage");
543
556
  constructor(config3 = {}) {
544
557
  this.config = { ...this.config, ...config3 };
545
- this.repeater = (0, import_neko_helper.createRepeater)(
558
+ this.repeater = (0, import_neko_helper2.createRepeater)(
546
559
  this.processMessage,
547
560
  this.config.listen_interval * 1e3
548
561
  );
@@ -610,6 +623,24 @@ import_neko_queue.QueueTransportFactory.register("database", (opt) => {
610
623
  import_neko_queue.QueueTransportFactory.register("memory", (opt) => {
611
624
  return new import_neko_queue.MemoryTransport(opt);
612
625
  });
626
+ import_neko_queue.QueueTransportFactory.register("sqs", (opt) => {
627
+ return new import_neko_queue.AwsSqsTransport(opt);
628
+ });
629
+ import_neko_queue.QueueTransportFactory.register("amqp", (opt) => {
630
+ return new import_neko_queue.AmqpTransport(opt);
631
+ });
632
+ import_neko_queue.QueueTransportFactory.register("redis", (opt) => {
633
+ return new import_neko_queue.RedisTransport(opt);
634
+ });
635
+ import_neko_queue.QueueTransportFactory.register("async", (opt) => {
636
+ return new import_neko_queue.AsyncTransport();
637
+ });
638
+ import_neko_queue.QueueTransportFactory.register("azure_service_bus", (opt) => {
639
+ return new import_neko_queue.AzureServiceBusTransport(opt);
640
+ });
641
+ import_neko_queue.QueueTransportFactory.register("google_pubsub", (opt) => {
642
+ return new import_neko_queue.GooglePubSubTransport(opt);
643
+ });
613
644
  var CacheProviderFactory = class _CacheProviderFactory {
614
645
  static {
615
646
  __name(this, "CacheProviderFactory");
@@ -640,12 +671,24 @@ import_neko_storage.StorageProviderFactory.register("local", (opt) => {
640
671
  import_neko_storage.StorageProviderFactory.register("s3", (opt) => {
641
672
  return new import_neko_storage.AWSS3StorageProvider(opt);
642
673
  });
674
+ import_neko_storage.StorageProviderFactory.register("gcp", (opt) => {
675
+ return new import_neko_storage.GCPStorageProvider(opt);
676
+ });
677
+ import_neko_storage.StorageProviderFactory.register("azure", (opt) => {
678
+ return new import_neko_storage.AzureBlobStorageProvider(opt);
679
+ });
680
+ import_neko_storage.StorageProviderFactory.register("ftp", (opt) => {
681
+ return new import_neko_storage.FTPStorageProvider(opt);
682
+ });
683
+ import_neko_storage.StorageProviderFactory.register("sftp", (opt) => {
684
+ return new import_neko_storage.SFTPStorageProvider(opt);
685
+ });
643
686
 
644
687
  // src/facades.mts
645
688
  var import_neko_cache2 = require("@devbro/neko-cache");
646
689
  var import_neko_queue2 = require("@devbro/neko-queue");
647
- var router = (0, import_neko_helper2.createSingleton)(() => new Router());
648
- var scheduler = (0, import_neko_helper2.createSingleton)(() => {
690
+ var router = (0, import_neko_helper3.createSingleton)(() => new Router());
691
+ var scheduler = (0, import_neko_helper3.createSingleton)(() => {
649
692
  const rc = new import_neko_scheduler.Scheduler();
650
693
  rc.setErrorHandler((err, job) => {
651
694
  logger().error({
@@ -657,7 +700,7 @@ var scheduler = (0, import_neko_helper2.createSingleton)(() => {
657
700
  return rc;
658
701
  });
659
702
  var db = /* @__PURE__ */ __name((label = "default") => (0, import_neko_context3.ctx)().getOrThrow(["database", label]), "db");
660
- var storage = (0, import_neko_helper2.createSingleton)((label = "default") => {
703
+ var storage = (0, import_neko_helper3.createSingleton)((label = "default") => {
661
704
  let storage_config = import_neko_config.config.get(["storages", label].join("."));
662
705
  const provider = import_neko_storage2.StorageProviderFactory.create(
663
706
  storage_config.provider,
@@ -665,7 +708,7 @@ var storage = (0, import_neko_helper2.createSingleton)((label = "default") => {
665
708
  );
666
709
  return new import_neko_storage2.Storage(provider);
667
710
  });
668
- var cli = (0, import_neko_helper2.createSingleton)(() => {
711
+ var cli = (0, import_neko_helper3.createSingleton)(() => {
669
712
  const [node, app, ...args] = process.argv;
670
713
  return new import_clipanion.Cli({
671
714
  binaryLabel: `My Application`,
@@ -673,24 +716,13 @@ var cli = (0, import_neko_helper2.createSingleton)(() => {
673
716
  binaryVersion: `1.0.0`
674
717
  });
675
718
  });
676
- var httpServer = (0, import_neko_helper2.createSingleton)(() => {
719
+ var httpServer = (0, import_neko_helper3.createSingleton)(() => {
677
720
  const server = new http_exports.HttpServer();
678
- server.setErrorHandler(async (err, req, res) => {
679
- if (err instanceof http_exports.HttpError) {
680
- res.writeHead(err.statusCode, { "Content-Type": "application/json" });
681
- res.end(JSON.stringify({ message: err.message, error: err.code }));
682
- logger().warn({ msg: "HttpError: " + err.message, err });
683
- return;
684
- } else {
685
- logger().error({ msg: "Error: " + err.message, err });
686
- }
687
- res.writeHead(500, { "Content-Type": "" });
688
- res.end(JSON.stringify({ error: "Internal Server Error" }));
689
- });
721
+ server.setErrorHandler(handleHttpErrors);
690
722
  server.setRouter(router());
691
723
  return server;
692
724
  });
693
- var logger = (0, import_neko_helper2.createSingleton)((label) => {
725
+ var logger = (0, import_neko_helper3.createSingleton)((label) => {
694
726
  const logger_config = import_neko_config.config.get(["loggers", label].join("."));
695
727
  const rc = new import_neko_logger.Logger(logger_config);
696
728
  rc.setExtrasFunction((message) => {
@@ -699,7 +731,7 @@ var logger = (0, import_neko_helper2.createSingleton)((label) => {
699
731
  });
700
732
  return rc;
701
733
  });
702
- var mailer = (0, import_neko_helper2.createSingleton)((label) => {
734
+ var mailer = (0, import_neko_helper3.createSingleton)((label) => {
703
735
  const mailer_config = import_neko_config.config.get(["mailer", label].join("."));
704
736
  const provider = import_neko_mailer2.MailerProviderFactory.create(
705
737
  mailer_config.provider,
@@ -708,7 +740,7 @@ var mailer = (0, import_neko_helper2.createSingleton)((label) => {
708
740
  const rc = new import_neko_mailer2.Mailer(provider);
709
741
  return rc;
710
742
  });
711
- var queue = (0, import_neko_helper2.createSingleton)((label) => {
743
+ var queue = (0, import_neko_helper3.createSingleton)((label) => {
712
744
  const queue_config = import_neko_config.config.get(["queues", label].join("."));
713
745
  if (!queue_config) {
714
746
  throw new Error(`Queue configuration for '${label}' not found`);
@@ -719,7 +751,7 @@ var queue = (0, import_neko_helper2.createSingleton)((label) => {
719
751
  );
720
752
  return new import_neko_queue2.QueueConnection(provider);
721
753
  });
722
- var cache = (0, import_neko_helper2.createSingleton)((label) => {
754
+ var cache = (0, import_neko_helper3.createSingleton)((label) => {
723
755
  const cache_config = import_neko_config.config.get(["caches", label].join("."));
724
756
  if (!cache_config) {
725
757
  throw new Error(`Cache configuration for '${label}' not found`);
@@ -1232,6 +1232,7 @@ var MiddlewareFactory = class {
1232
1232
  };
1233
1233
 
1234
1234
  // ../neko-router/dist/CompiledRoute.mjs
1235
+ var import_neko_helper = require("@devbro/neko-helper");
1235
1236
  var CompiledRoute = class {
1236
1237
  static {
1237
1238
  __name(this, "CompiledRoute");
@@ -1252,7 +1253,7 @@ var CompiledRoute = class {
1252
1253
  for (const middleware of [...this.globalMiddlewares, ...this.route.getMiddlewares()]) {
1253
1254
  if (middleware instanceof Middleware) {
1254
1255
  this.middlewares.push(middleware);
1255
- } else if (this.isClass(middleware)) {
1256
+ } else if ((0, import_neko_helper.isClass)(middleware)) {
1256
1257
  this.middlewares.push(middleware.getInstance({}));
1257
1258
  } else if (typeof middleware === "function") {
1258
1259
  this.middlewares.push(MiddlewareFactory.create(middleware));
@@ -1261,13 +1262,8 @@ var CompiledRoute = class {
1261
1262
  }
1262
1263
  }
1263
1264
  }
1264
- isClass(func) {
1265
- return typeof func === "function" && /^class\s/.test(Function.prototype.toString.call(func));
1266
- }
1267
1265
  async run() {
1268
- let rc = await this.runMiddlewares(this.middlewares, this.request, this.response);
1269
- this.response.end();
1270
- return rc;
1266
+ return await this.runMiddlewares(this.middlewares, this.request, this.response);
1271
1267
  }
1272
1268
  prepareOutputJsonFormat(obj) {
1273
1269
  function traverse(value) {
@@ -1401,7 +1397,7 @@ var Route = class {
1401
1397
  i = start;
1402
1398
  } else if (char === "*") {
1403
1399
  let start = i + 1;
1404
- while (start < path3.length && /[a-zA-Z0-9_\.]/.test(path3[start])) {
1400
+ while (start < path3.length && /[a-zA-Z0-9_]/.test(path3[start])) {
1405
1401
  start++;
1406
1402
  }
1407
1403
  tokens.push({ type: "WILDCARD", value: path3.slice(i + 1, start) });
@@ -1612,7 +1608,7 @@ var Router = class {
1612
1608
 
1613
1609
  // src/facades.mts
1614
1610
  var import_neko_scheduler = require("@devbro/neko-scheduler");
1615
- var import_neko_helper2 = require("@devbro/neko-helper");
1611
+ var import_neko_helper3 = require("@devbro/neko-helper");
1616
1612
  var import_neko_context3 = require("@devbro/neko-context");
1617
1613
  var import_neko_storage2 = require("@devbro/neko-storage");
1618
1614
  var import_neko_mailer2 = require("@devbro/neko-mailer");
@@ -1621,7 +1617,24 @@ var import_clipanion = require("clipanion");
1621
1617
 
1622
1618
  // src/http.mts
1623
1619
  var http_exports = {};
1620
+ __export(http_exports, {
1621
+ handleHttpErrors: () => handleHttpErrors
1622
+ });
1623
+ var import_neko_http = require("@devbro/neko-http");
1624
1624
  __reExport(http_exports, require("@devbro/neko-http"));
1625
+ async function handleHttpErrors(err, req, res) {
1626
+ if (err instanceof import_neko_http.HttpError) {
1627
+ res.writeHead(err.statusCode, { "Content-Type": "application/json" });
1628
+ res.write(JSON.stringify({ message: err.message, error: err.code }));
1629
+ logger().warn({ msg: "HttpError: " + err.message, err });
1630
+ return;
1631
+ } else {
1632
+ logger().error({ msg: "Error: " + err.message, err });
1633
+ }
1634
+ res.writeHead(500, { "Content-Type": "application/json" });
1635
+ res.write(JSON.stringify({ error: "Internal Server Error" }));
1636
+ }
1637
+ __name(handleHttpErrors, "handleHttpErrors");
1625
1638
 
1626
1639
  // src/facades.mts
1627
1640
  var import_neko_logger = require("@devbro/neko-logger");
@@ -1636,7 +1649,7 @@ __export(queue_exports, {
1636
1649
  DatabaseTransport: () => DatabaseTransport
1637
1650
  });
1638
1651
  __reExport(queue_exports, require("@devbro/neko-queue"));
1639
- var import_neko_helper = require("@devbro/neko-helper");
1652
+ var import_neko_helper2 = require("@devbro/neko-helper");
1640
1653
  var import_neko_context2 = require("@devbro/neko-context");
1641
1654
  var DatabaseTransport = class {
1642
1655
  static {
@@ -1697,7 +1710,7 @@ var DatabaseTransport = class {
1697
1710
  }, "processMessage");
1698
1711
  constructor(config3 = {}) {
1699
1712
  this.config = { ...this.config, ...config3 };
1700
- this.repeater = (0, import_neko_helper.createRepeater)(
1713
+ this.repeater = (0, import_neko_helper2.createRepeater)(
1701
1714
  this.processMessage,
1702
1715
  this.config.listen_interval * 1e3
1703
1716
  );
@@ -1765,6 +1778,24 @@ import_neko_queue.QueueTransportFactory.register("database", (opt) => {
1765
1778
  import_neko_queue.QueueTransportFactory.register("memory", (opt) => {
1766
1779
  return new import_neko_queue.MemoryTransport(opt);
1767
1780
  });
1781
+ import_neko_queue.QueueTransportFactory.register("sqs", (opt) => {
1782
+ return new import_neko_queue.AwsSqsTransport(opt);
1783
+ });
1784
+ import_neko_queue.QueueTransportFactory.register("amqp", (opt) => {
1785
+ return new import_neko_queue.AmqpTransport(opt);
1786
+ });
1787
+ import_neko_queue.QueueTransportFactory.register("redis", (opt) => {
1788
+ return new import_neko_queue.RedisTransport(opt);
1789
+ });
1790
+ import_neko_queue.QueueTransportFactory.register("async", (opt) => {
1791
+ return new import_neko_queue.AsyncTransport();
1792
+ });
1793
+ import_neko_queue.QueueTransportFactory.register("azure_service_bus", (opt) => {
1794
+ return new import_neko_queue.AzureServiceBusTransport(opt);
1795
+ });
1796
+ import_neko_queue.QueueTransportFactory.register("google_pubsub", (opt) => {
1797
+ return new import_neko_queue.GooglePubSubTransport(opt);
1798
+ });
1768
1799
  var CacheProviderFactory = class _CacheProviderFactory {
1769
1800
  static {
1770
1801
  __name(this, "CacheProviderFactory");
@@ -1795,12 +1826,24 @@ import_neko_storage.StorageProviderFactory.register("local", (opt) => {
1795
1826
  import_neko_storage.StorageProviderFactory.register("s3", (opt) => {
1796
1827
  return new import_neko_storage.AWSS3StorageProvider(opt);
1797
1828
  });
1829
+ import_neko_storage.StorageProviderFactory.register("gcp", (opt) => {
1830
+ return new import_neko_storage.GCPStorageProvider(opt);
1831
+ });
1832
+ import_neko_storage.StorageProviderFactory.register("azure", (opt) => {
1833
+ return new import_neko_storage.AzureBlobStorageProvider(opt);
1834
+ });
1835
+ import_neko_storage.StorageProviderFactory.register("ftp", (opt) => {
1836
+ return new import_neko_storage.FTPStorageProvider(opt);
1837
+ });
1838
+ import_neko_storage.StorageProviderFactory.register("sftp", (opt) => {
1839
+ return new import_neko_storage.SFTPStorageProvider(opt);
1840
+ });
1798
1841
 
1799
1842
  // src/facades.mts
1800
1843
  var import_neko_cache2 = require("@devbro/neko-cache");
1801
1844
  var import_neko_queue2 = require("@devbro/neko-queue");
1802
- var router = (0, import_neko_helper2.createSingleton)(() => new Router());
1803
- var scheduler = (0, import_neko_helper2.createSingleton)(() => {
1845
+ var router = (0, import_neko_helper3.createSingleton)(() => new Router());
1846
+ var scheduler = (0, import_neko_helper3.createSingleton)(() => {
1804
1847
  const rc = new import_neko_scheduler.Scheduler();
1805
1848
  rc.setErrorHandler((err, job) => {
1806
1849
  logger().error({
@@ -1812,7 +1855,7 @@ var scheduler = (0, import_neko_helper2.createSingleton)(() => {
1812
1855
  return rc;
1813
1856
  });
1814
1857
  var db = /* @__PURE__ */ __name((label = "default") => (0, import_neko_context3.ctx)().getOrThrow(["database", label]), "db");
1815
- var storage = (0, import_neko_helper2.createSingleton)((label = "default") => {
1858
+ var storage = (0, import_neko_helper3.createSingleton)((label = "default") => {
1816
1859
  let storage_config = import_neko_config.config.get(["storages", label].join("."));
1817
1860
  const provider = import_neko_storage2.StorageProviderFactory.create(
1818
1861
  storage_config.provider,
@@ -1820,7 +1863,7 @@ var storage = (0, import_neko_helper2.createSingleton)((label = "default") => {
1820
1863
  );
1821
1864
  return new import_neko_storage2.Storage(provider);
1822
1865
  });
1823
- var cli = (0, import_neko_helper2.createSingleton)(() => {
1866
+ var cli = (0, import_neko_helper3.createSingleton)(() => {
1824
1867
  const [node, app, ...args] = process.argv;
1825
1868
  return new import_clipanion.Cli({
1826
1869
  binaryLabel: `My Application`,
@@ -1828,24 +1871,13 @@ var cli = (0, import_neko_helper2.createSingleton)(() => {
1828
1871
  binaryVersion: `1.0.0`
1829
1872
  });
1830
1873
  });
1831
- var httpServer = (0, import_neko_helper2.createSingleton)(() => {
1874
+ var httpServer = (0, import_neko_helper3.createSingleton)(() => {
1832
1875
  const server = new http_exports.HttpServer();
1833
- server.setErrorHandler(async (err, req, res) => {
1834
- if (err instanceof http_exports.HttpError) {
1835
- res.writeHead(err.statusCode, { "Content-Type": "application/json" });
1836
- res.end(JSON.stringify({ message: err.message, error: err.code }));
1837
- logger().warn({ msg: "HttpError: " + err.message, err });
1838
- return;
1839
- } else {
1840
- logger().error({ msg: "Error: " + err.message, err });
1841
- }
1842
- res.writeHead(500, { "Content-Type": "" });
1843
- res.end(JSON.stringify({ error: "Internal Server Error" }));
1844
- });
1876
+ server.setErrorHandler(handleHttpErrors);
1845
1877
  server.setRouter(router());
1846
1878
  return server;
1847
1879
  });
1848
- var logger = (0, import_neko_helper2.createSingleton)((label) => {
1880
+ var logger = (0, import_neko_helper3.createSingleton)((label) => {
1849
1881
  const logger_config = import_neko_config.config.get(["loggers", label].join("."));
1850
1882
  const rc = new import_neko_logger.Logger(logger_config);
1851
1883
  rc.setExtrasFunction((message) => {
@@ -1854,7 +1886,7 @@ var logger = (0, import_neko_helper2.createSingleton)((label) => {
1854
1886
  });
1855
1887
  return rc;
1856
1888
  });
1857
- var mailer = (0, import_neko_helper2.createSingleton)((label) => {
1889
+ var mailer = (0, import_neko_helper3.createSingleton)((label) => {
1858
1890
  const mailer_config = import_neko_config.config.get(["mailer", label].join("."));
1859
1891
  const provider = import_neko_mailer2.MailerProviderFactory.create(
1860
1892
  mailer_config.provider,
@@ -1863,7 +1895,7 @@ var mailer = (0, import_neko_helper2.createSingleton)((label) => {
1863
1895
  const rc = new import_neko_mailer2.Mailer(provider);
1864
1896
  return rc;
1865
1897
  });
1866
- var queue = (0, import_neko_helper2.createSingleton)((label) => {
1898
+ var queue = (0, import_neko_helper3.createSingleton)((label) => {
1867
1899
  const queue_config = import_neko_config.config.get(["queues", label].join("."));
1868
1900
  if (!queue_config) {
1869
1901
  throw new Error(`Queue configuration for '${label}' not found`);
@@ -1874,7 +1906,7 @@ var queue = (0, import_neko_helper2.createSingleton)((label) => {
1874
1906
  );
1875
1907
  return new import_neko_queue2.QueueConnection(provider);
1876
1908
  });
1877
- var cache = (0, import_neko_helper2.createSingleton)((label) => {
1909
+ var cache = (0, import_neko_helper3.createSingleton)((label) => {
1878
1910
  const cache_config = import_neko_config.config.get(["caches", label].join("."));
1879
1911
  if (!cache_config) {
1880
1912
  throw new Error(`Cache configuration for '${label}' not found`);